Coverage Report - org.kuali.student.common.ui.client.configurable.mvc.Configurer
 
Classes in this File Line Coverage Branch Coverage Complexity
Configurer
0%
0/47
0%
0/4
1.083
 
 1  
 package org.kuali.student.common.ui.client.configurable.mvc;
 2  
 
 3  
 import org.kuali.student.common.assembly.data.Metadata;
 4  
 import org.kuali.student.common.assembly.data.ModelDefinition;
 5  
 import org.kuali.student.common.assembly.data.QueryPath;
 6  
 import org.kuali.student.common.ui.client.application.Application;
 7  
 import org.kuali.student.common.ui.client.configurable.mvc.sections.Section;
 8  
 import org.kuali.student.common.ui.client.widgets.field.layout.element.MessageKeyInfo;
 9  
 
 10  
 import com.google.gwt.user.client.ui.Widget;
 11  
 
 12  
 /**
 13  
  * A configurer defines the configuration of screens in KS, in particular this is where you add views,
 14  
  * sections, and fields to a LayoutController preferably passed in in an configurer's implementation.
 15  
  * This abstract class contains helper methods to do this.
 16  
  * 
 17  
  * @author Kuali Student Team
 18  
  *
 19  
  */
 20  0
 public abstract class Configurer {
 21  
     protected ModelDefinition modelDefinition;
 22  0
     protected String type = "";
 23  
     //FIXME: WJG: I think state should be removed from the configurer
 24  0
     protected String state = "";
 25  0
     protected String nextState = "";
 26  0
     protected String groupName = "";
 27  
 
 28  
     /**
 29  
      * Sets the modelDefinition which is the metadata backing the fields to be configured,
 30  
      * this needs to be set before adding any fields in the configurer
 31  
      * @param modelDefinition
 32  
      */
 33  
     public void setModelDefinition(ModelDefinition modelDefinition){
 34  0
         this.modelDefinition = modelDefinition;
 35  0
     }
 36  
 
 37  
     public ModelDefinition getModelDefinition() {
 38  0
         return modelDefinition;
 39  
     }
 40  
 
 41  
     /**
 42  
      * Generates a message info to be used in your field descriptor to get the label for the field.
 43  
      * Used by the field descriptor with the application context to determine the label to show based on
 44  
      * the labelKey
 45  
      * @param labelKey key of the message - must match a message in your messages (stored in the db)
 46  
      * @return
 47  
      */
 48  
     public MessageKeyInfo generateMessageInfo(String labelKey) {
 49  0
         return new MessageKeyInfo(groupName, type, state, labelKey);
 50  
     }
 51  
     
 52  
     /**
 53  
      * Gets the string corresponding to the label key passed in from the application messages
 54  
      * @param labelKey
 55  
      * @return
 56  
      */
 57  
     public String getLabel(String labelKey) {
 58  0
         return Application.getApplicationContext().getUILabel(groupName, type, state, labelKey);
 59  
     }
 60  
     
 61  
     public String getLabel(String labelKey, String fieldKey) {
 62  0
         String parentPath = Application.getApplicationContext().getParentPath();
 63  0
         QueryPath path = QueryPath.concat(parentPath, fieldKey);
 64  0
         Metadata metadata = modelDefinition.getMetadata(path);
 65  
         
 66  0
         return Application.getApplicationContext().getUILabel(groupName, type, state, labelKey, metadata);
 67  
     }
 68  
 
 69  
     /**
 70  
      * Gets a section title which is an h1 element using the label key passed to retrieve the corresponding
 71  
      * message
 72  
      * @param labelKey
 73  
      * @return
 74  
      */
 75  
     protected SectionTitle getH1Title(String labelKey) {
 76  0
         return SectionTitle.generateH1Title(getLabel(labelKey));
 77  
     }
 78  
 
 79  
     /**
 80  
      * Gets a section title which is an h1 element using the label key passed to retrieve the corresponding
 81  
      * message
 82  
      * @param labelKey
 83  
      * @return
 84  
      */
 85  
     protected SectionTitle getH2Title(String labelKey) {
 86  0
         return SectionTitle.generateH2Title(getLabel(labelKey));
 87  
     }
 88  
 
 89  
     /**
 90  
      * Gets a section title which is an h1 element using the label key passed to retrieve the corresponding
 91  
      * message
 92  
      * @param labelKey
 93  
      * @return
 94  
      */
 95  
     protected SectionTitle getH3Title(String labelKey) {
 96  0
         return SectionTitle.generateH3Title(getLabel(labelKey));
 97  
     }
 98  
 
 99  
     /**
 100  
      * Gets a section title which is an h1 element using the label key passed to retrieve the corresponding
 101  
      * message
 102  
      * @param labelKey
 103  
      * @return
 104  
      */
 105  
     protected SectionTitle getH4Title(String labelKey) {
 106  0
         return SectionTitle.generateH4Title(getLabel(labelKey));
 107  
     }
 108  
 
 109  
     /**
 110  
      * Gets a section title which is an h1 element using the label key passed to retrieve the corresponding
 111  
      * message
 112  
      * @param labelKey
 113  
      * @return
 114  
      */
 115  
     protected SectionTitle getH5Title(String labelKey) {
 116  0
         return SectionTitle.generateH5Title(getLabel(labelKey));
 117  
     }
 118  
 
 119  
     /**
 120  
      * Adds a field with the field key specified to the passed in section.  
 121  
      * Returns the generated FieldDescriptor.  The field will have no label in this case.
 122  
      * The widget will be auto generated in field descriptor based on the field's metadata in the
 123  
      * model definition defined in this configurer - using the default widget factory.  The fieldKey passed
 124  
      * in MUST match a logical path in the metadata (ex. proposal/proposalTitle, etc.)
 125  
      * 
 126  
      * Note: It also is acceptable to not use this helper method and add the FieldDescriptor directly
 127  
      * to the section
 128  
      * 
 129  
      * @param section
 130  
      * @param fieldKey
 131  
      * @return
 132  
      */
 133  
     public FieldDescriptor addField(Section section, String fieldKey) {
 134  0
         return addField(section, fieldKey, null, null, null);
 135  
     }
 136  
     
 137  
     /**
 138  
      * Adds a field with the field key specified to the passed in section.  
 139  
      * Returns the generated FieldDescriptor.  Uses the message key provided to generate the field label.
 140  
      * The widget will be auto generated in field descriptor based on the field's metadata in the
 141  
      * model definition defined in this configurer - using the default widget factory.  The fieldKey passed
 142  
      * in MUST match a logical path in the metadata (ex. proposal/proposalTitle, etc.)
 143  
      * 
 144  
      * Note: It also is acceptable to not use this helper method and add the FieldDescriptor directly
 145  
      * to the section
 146  
      * 
 147  
      * @param section
 148  
      * @param fieldKey
 149  
      * @param messageKey
 150  
      * @return
 151  
      */
 152  
     public FieldDescriptor addField(Section section, String fieldKey, MessageKeyInfo messageKey) {
 153  0
         return addField(section, fieldKey, messageKey, null, null);
 154  
     }
 155  
     
 156  
     /**
 157  
      * Adds a field with the field key specified to the passed in section.  
 158  
      * Returns the generated FieldDescriptor.  Uses the message key provided to generate the field label.
 159  
      * The widget is not autogenerated based on the metadata in the defined model definition, but instead
 160  
      * the passed in widget is used.  The widget must be a type that is compatible with the default bindings
 161  
      * (such as being a widget which implements HasText or HasValue), unless a custom binding is set on the
 162  
      * returned FieldDescriptor from this method manually.
 163  
      * 
 164  
      * Note: It also is acceptable to not use this helper method and add the FieldDescriptor directly
 165  
      * to the section
 166  
      * 
 167  
      * @param section
 168  
      * @param fieldKey
 169  
      * @param messageKey
 170  
      * @param widget
 171  
      * @return
 172  
      */
 173  
     public FieldDescriptor addField(Section section, String fieldKey, MessageKeyInfo messageKey, Widget widget) {
 174  0
         return addField(section, fieldKey, messageKey, widget, null);
 175  
     }
 176  
     
 177  
     /**
 178  
      * Adds a field with the field key specified to the passed in section.  
 179  
      * Returns the generated FieldDescriptor.  Uses the message key provided to generate the field label.
 180  
      * The widget will be auto generated in field descriptor based on the field's metadata in the
 181  
      * model definition defined in this configurer - using the default widget factory.  The fieldKey passed
 182  
      * in MUST match a logical path in the metadata (ex. proposal/proposalTitle, etc.).  The parentPath
 183  
      * will be concatenated onto the front of the fieldKey.
 184  
      * 
 185  
      * Note: It also is acceptable to not use this helper method and add the FieldDescriptor directly
 186  
      * to the section
 187  
      * 
 188  
      * @param section
 189  
      * @param fieldKey
 190  
      * @param messageKey
 191  
      * @param parentPath
 192  
      * @return
 193  
      */
 194  
     public FieldDescriptor addField(Section section, String fieldKey, MessageKeyInfo messageKey, String parentPath) {
 195  0
         return addField(section, fieldKey, messageKey, null, parentPath);
 196  
     }
 197  
     
 198  
     /**
 199  
      * Adds a field with the field key specified to the passed in section.  
 200  
      * Returns the generated FieldDescriptor.  Uses the message key provided to generate the field label.
 201  
      * The widget is not autogenerated based on the metadata in the defined model definition, but instead
 202  
      * the passed in widget is used.  The widget must be a type that is compatible with the default bindings
 203  
      * (such as being a widget which implements HasText or HasValue), unless a custom binding is set on the
 204  
      * returned FieldDescriptor from this method manually.  The parentPath
 205  
      * will be concatenated onto the front of the fieldKey.
 206  
      * 
 207  
      * Note: It also is acceptable to not use this helper method and add the FieldDescriptor directly
 208  
      * to the section
 209  
      * 
 210  
      * @param section
 211  
      * @param fieldKey
 212  
      * @param messageKey
 213  
      * @param widget
 214  
      * @param parentPath
 215  
      * @return
 216  
      */
 217  
     public FieldDescriptor addField(Section section, String fieldKey, MessageKeyInfo messageKey, Widget widget, String parentPath) {
 218  0
         QueryPath path = QueryPath.concat(parentPath, fieldKey);
 219  0
         Metadata meta = modelDefinition.getMetadata(path);
 220  
 
 221  0
         FieldDescriptor fd = new FieldDescriptor(path.toString(), messageKey, meta);
 222  0
         if (widget != null) {
 223  0
             fd.setFieldWidget(widget);
 224  
         }
 225  0
         section.addField(fd);
 226  0
         return fd;
 227  
     }
 228  
     
 229  
     /**
 230  
      * Read only variant of the corresponding addField method.  This method will generate the read only version
 231  
      * of the widget from the metadata found in the model definition that matches the fieldKey.
 232  
      * 
 233  
      * @param section
 234  
      * @param fieldKey
 235  
      * @return
 236  
      */
 237  
     public FieldDescriptor addReadOnlyField(Section section, String fieldKey) {
 238  0
         return addReadOnlyField(section, fieldKey, null, null, null);
 239  
     }    
 240  
     
 241  
     /**
 242  
      * Read only variant of the corresponding addField method.  This method will generate the read only version
 243  
      * of the widget from the metadata found in the model definition that matches the fieldKey.
 244  
      * 
 245  
      * @param section
 246  
      * @param fieldKey
 247  
      * @param messageKey
 248  
      * @return
 249  
      */
 250  
     public FieldDescriptor addReadOnlyField(Section section, String fieldKey, MessageKeyInfo messageKey) {
 251  0
         return addReadOnlyField(section, fieldKey, messageKey, null, null);
 252  
     }
 253  
     
 254  
     /**
 255  
      * Read only variant of the corresponding addField method.  Uses widget passed in.
 256  
      * 
 257  
      * @param section
 258  
      * @param fieldKey
 259  
      * @param messageKey
 260  
      * @param widget
 261  
      * @return
 262  
      */
 263  
     public FieldDescriptor addReadOnlyField(Section section, String fieldKey, MessageKeyInfo messageKey, Widget widget) {
 264  0
         return addReadOnlyField(section, fieldKey, messageKey, widget, null);
 265  
     }
 266  
     
 267  
     /**
 268  
      * Read only variant of the corresponding addField method.  This method will generate the read only version
 269  
      * of the widget from the metadata found in the model definition that matches the fieldKey.
 270  
      * 
 271  
      * @param section
 272  
      * @param fieldKey
 273  
      * @param messageKey
 274  
      * @param parentPath
 275  
      * @return
 276  
      */
 277  
     public FieldDescriptor addReadOnlyField(Section section, String fieldKey, MessageKeyInfo messageKey, String parentPath) {
 278  0
         return addReadOnlyField(section, fieldKey, messageKey, null, parentPath);
 279  
     }
 280  
     
 281  
     /**
 282  
      * Read only variant of the corresponding addField method.  Uses widget passed in.
 283  
      * 
 284  
      * @param section
 285  
      * @param fieldKey
 286  
      * @param messageKey
 287  
      * @param widget
 288  
      * @param parentPath
 289  
      * @return
 290  
      */
 291  
     public FieldDescriptor addReadOnlyField(Section section, String fieldKey, MessageKeyInfo messageKey, Widget widget, String parentPath) {
 292  0
         QueryPath path = QueryPath.concat(parentPath, fieldKey);
 293  0
         Metadata meta = modelDefinition.getMetadata(path);
 294  
 
 295  0
         FieldDescriptor fd = new FieldDescriptorReadOnly(path.toString(), messageKey, meta);
 296  0
         if (widget != null) {                                               
 297  0
             fd.setFieldWidget(widget);
 298  
         }
 299  0
         section.addField(fd);
 300  0
         return fd;
 301  
     }
 302  
 
 303  
     /**
 304  
      * The initial state of the objects for the screen
 305  
      * 
 306  
      * @return
 307  
      */
 308  
     public String getState() {
 309  0
                 return state;
 310  
         }
 311  
 
 312  
         public void setState(String state) {
 313  0
                 this.state = state;
 314  0
         }
 315  
 
 316  
         public String getNextState() {
 317  0
                 return nextState;
 318  
         }
 319  
 
 320  
         public void setNextState(String nextState) {
 321  0
                 this.nextState = nextState;
 322  0
         }       
 323  
 }