View Javadoc

1   /*
2    * Copyright 2007 The Kuali Foundation
3    *
4    * Licensed under the Educational Community License, Version 1.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    * http://www.opensource.org/licenses/ecl1.php
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.kuali.rice.krad.uif.widget;
17  
18  import org.kuali.rice.krad.uif.container.View;
19  import org.kuali.rice.krad.uif.core.BindingInfo;
20  import org.kuali.rice.krad.uif.core.Component;
21  import org.kuali.rice.krad.uif.field.AttributeField;
22  import org.kuali.rice.krad.uif.field.AttributeQuery;
23  
24  /**
25   * Widget that provides dynamic select options to the user as they
26   * are entering the value (also known as auto-complete)
27   *
28   * <p>
29   * Widget is backed by an <code>AttributeQuery</code> that provides
30   * the configuration for executing a query server side that will retrieve
31   * the valid option values.
32   * </p>
33   *
34   * @author Kuali Rice Team (rice.collab@kuali.org)
35   */
36  public class Suggest extends WidgetBase {
37      private static final long serialVersionUID = 7373706855319347225L;
38  
39      private AttributeQuery suggestQuery;
40      private String sourcePropertyName;
41  
42      public Suggest() {
43          super();
44      }
45  
46      /**
47       * The following actions are performed:
48       *
49       * <ul>
50       * <li>Adjusts the query field mappings on the query based on the binding configuration of the field</li>
51       * <li>TODO: determine query if render is true and query is not set</li>
52       * </ul>
53       *
54       * @see org.kuali.rice.krad.uif.core.ComponentBase#performFinalize(org.kuali.rice.krad.uif.container.View,
55       *      java.lang.Object, org.kuali.rice.krad.uif.core.Component)
56       */
57      @Override
58      public void performFinalize(View view, Object model, Component parent) {
59          super.performFinalize(view, model, parent);
60  
61          if (!isRender()) {
62              return;
63          }
64  
65          AttributeField field = (AttributeField) parent;
66          BindingInfo bindingInfo = field.getBindingInfo();
67  
68          // adjust from side on query field mapping to match parent fields path
69          suggestQuery.updateQueryFieldMapping(bindingInfo);
70      }
71  
72      /**
73       * Attribute query instance the will be executed to provide
74       * the suggest options
75       *
76       * @return AttributeQuery
77       */
78      public AttributeQuery getSuggestQuery() {
79          return suggestQuery;
80      }
81  
82      /**
83       * Setter for the suggest attribute query
84       *
85       * @param suggestQuery
86       */
87      public void setSuggestQuery(AttributeQuery suggestQuery) {
88          this.suggestQuery = suggestQuery;
89      }
90  
91      /**
92       * Name of the property on the query result object that provides
93       * the options for the suggest, values from this field will be
94       * collected and sent back on the result to provide as suggest options
95       *
96       * @return String source property name
97       */
98      public String getSourcePropertyName() {
99          return sourcePropertyName;
100     }
101 
102     /**
103      * Setter for the source property name
104      *
105      * @param sourcePropertyName
106      */
107     public void setSourcePropertyName(String sourcePropertyName) {
108         this.sourcePropertyName = sourcePropertyName;
109     }
110 }