Coverage Report - org.kuali.student.common.ui.client.configurable.mvc.Configurer
 
Classes in this File Line Coverage Branch Coverage Complexity
Configurer
0%
0/36
0%
0/4
1.105
 
 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  0
     protected String state = "";
 24  0
     protected String groupName = "";
 25  
 //    public abstract void configure(ConfigurableLayout layout);
 26  
     /**
 27  
      * Sets the modelDefinition which is the metadata backing the fields to be configured,
 28  
      * this needs to be set before adding any fields in the configurer
 29  
      * @param modelDefinition
 30  
      */
 31  
     public void setModelDefinition(ModelDefinition modelDefinition){
 32  0
         this.modelDefinition = modelDefinition;
 33  0
     }
 34  
 
 35  
     public ModelDefinition getModelDefinition() {
 36  0
         return modelDefinition;
 37  
     }
 38  
 
 39  
     /**
 40  
      * Generates a message info to be used in your field descriptor to get the label for the field.
 41  
      * Used by the field descriptor with the application context to determine the label to show based on
 42  
      * the labelKey
 43  
      * @param labelKey key of the message - must match a message in your messages (stored in the db)
 44  
      * @return
 45  
      */
 46  
     protected MessageKeyInfo generateMessageInfo(String labelKey) {
 47  0
         return new MessageKeyInfo(groupName, type, state, labelKey);
 48  
     }
 49  
     
 50  
     /**
 51  
      * Gets the string corresponding to the label key passed in from the application messages
 52  
      * @param labelKey
 53  
      * @return
 54  
      */
 55  
     protected String getLabel(String labelKey) {
 56  0
         return Application.getApplicationContext().getUILabel(groupName, type, state, labelKey);
 57  
     }
 58  
 
 59  
     /**
 60  
      * Gets a section title which is an h1 element using the label key passed to retrieve the corresponding
 61  
      * message
 62  
      * @param labelKey
 63  
      * @return
 64  
      */
 65  
     protected SectionTitle getH1Title(String labelKey) {
 66  0
         return SectionTitle.generateH1Title(getLabel(labelKey));
 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 getH2Title(String labelKey) {
 76  0
         return SectionTitle.generateH2Title(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 getH3Title(String labelKey) {
 86  0
         return SectionTitle.generateH3Title(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 getH4Title(String labelKey) {
 96  0
         return SectionTitle.generateH4Title(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 getH5Title(String labelKey) {
 106  0
         return SectionTitle.generateH5Title(getLabel(labelKey));
 107  
     }
 108  
 
 109  
     /**
 110  
      * Adds a field with the field key specified to the passed in section.  
 111  
      * Returns the generated FieldDescriptor.  The field will have no label in this case.
 112  
      * The widget will be auto generated in field descriptor based on the field's metadata in the
 113  
      * model definition defined in this configurer - using the default widget factory.  The fieldKey passed
 114  
      * in MUST match a logical path in the metadata (ex. proposal/proposalTitle, etc.)
 115  
      * 
 116  
      * Note: It also is acceptable to not use this helper method and add the FieldDescriptor directly
 117  
      * to the section
 118  
      * 
 119  
      * @param section
 120  
      * @param fieldKey
 121  
      * @return
 122  
      */
 123  
     public FieldDescriptor addField(Section section, String fieldKey) {
 124  0
         return addField(section, fieldKey, null, null, null);
 125  
     }
 126  
     
 127  
     /**
 128  
      * Adds a field with the field key specified to the passed in section.  
 129  
      * Returns the generated FieldDescriptor.  Uses the message key provided to generate the field label.
 130  
      * The widget will be auto generated in field descriptor based on the field's metadata in the
 131  
      * model definition defined in this configurer - using the default widget factory.  The fieldKey passed
 132  
      * in MUST match a logical path in the metadata (ex. proposal/proposalTitle, etc.)
 133  
      * 
 134  
      * Note: It also is acceptable to not use this helper method and add the FieldDescriptor directly
 135  
      * to the section
 136  
      * 
 137  
      * @param section
 138  
      * @param fieldKey
 139  
      * @param messageKey
 140  
      * @return
 141  
      */
 142  
     public FieldDescriptor addField(Section section, String fieldKey, MessageKeyInfo messageKey) {
 143  0
         return addField(section, fieldKey, messageKey, null, null);
 144  
     }
 145  
     
 146  
     /**
 147  
      * Adds a field with the field key specified to the passed in section.  
 148  
      * Returns the generated FieldDescriptor.  Uses the message key provided to generate the field label.
 149  
      * The widget is not autogenerated based on the metadata in the defined model definition, but instead
 150  
      * the passed in widget is used.  The widget must be a type that is compatible with the default bindings
 151  
      * (such as being a widget which implements HasText or HasValue), unless a custom binding is set on the
 152  
      * returned FieldDescriptor from this method manually.
 153  
      * 
 154  
      * Note: It also is acceptable to not use this helper method and add the FieldDescriptor directly
 155  
      * to the section
 156  
      * 
 157  
      * @param section
 158  
      * @param fieldKey
 159  
      * @param messageKey
 160  
      * @param widget
 161  
      * @return
 162  
      */
 163  
     public FieldDescriptor addField(Section section, String fieldKey, MessageKeyInfo messageKey, Widget widget) {
 164  0
         return addField(section, fieldKey, messageKey, widget, null);
 165  
     }
 166  
     
 167  
     /**
 168  
      * Adds a field with the field key specified to the passed in section.  
 169  
      * Returns the generated FieldDescriptor.  Uses the message key provided to generate the field label.
 170  
      * The widget will be auto generated in field descriptor based on the field's metadata in the
 171  
      * model definition defined in this configurer - using the default widget factory.  The fieldKey passed
 172  
      * in MUST match a logical path in the metadata (ex. proposal/proposalTitle, etc.).  The parentPath
 173  
      * will be concatenated onto the front of the fieldKey.
 174  
      * 
 175  
      * Note: It also is acceptable to not use this helper method and add the FieldDescriptor directly
 176  
      * to the section
 177  
      * 
 178  
      * @param section
 179  
      * @param fieldKey
 180  
      * @param messageKey
 181  
      * @param parentPath
 182  
      * @return
 183  
      */
 184  
     public FieldDescriptor addField(Section section, String fieldKey, MessageKeyInfo messageKey, String parentPath) {
 185  0
         return addField(section, fieldKey, messageKey, null, parentPath);
 186  
     }
 187  
     
 188  
     /**
 189  
      * Adds a field with the field key specified to the passed in section.  
 190  
      * Returns the generated FieldDescriptor.  Uses the message key provided to generate the field label.
 191  
      * The widget is not autogenerated based on the metadata in the defined model definition, but instead
 192  
      * the passed in widget is used.  The widget must be a type that is compatible with the default bindings
 193  
      * (such as being a widget which implements HasText or HasValue), unless a custom binding is set on the
 194  
      * returned FieldDescriptor from this method manually.  The parentPath
 195  
      * will be concatenated onto the front of the fieldKey.
 196  
      * 
 197  
      * Note: It also is acceptable to not use this helper method and add the FieldDescriptor directly
 198  
      * to the section
 199  
      * 
 200  
      * @param section
 201  
      * @param fieldKey
 202  
      * @param messageKey
 203  
      * @param widget
 204  
      * @param parentPath
 205  
      * @return
 206  
      */
 207  
     public FieldDescriptor addField(Section section, String fieldKey, MessageKeyInfo messageKey, Widget widget, String parentPath) {
 208  0
         QueryPath path = QueryPath.concat(parentPath, fieldKey);
 209  0
         Metadata meta = modelDefinition.getMetadata(path);
 210  
 
 211  0
         FieldDescriptor fd = new FieldDescriptor(path.toString(), messageKey, meta);
 212  0
         if (widget != null) {
 213  0
             fd.setFieldWidget(widget);
 214  
         }
 215  0
         section.addField(fd);
 216  0
         return fd;
 217  
     }
 218  
     
 219  
     /**
 220  
      * Read only variant of the corresponding addField method.  This method will generate the read only version
 221  
      * of the widget from the metadata found in the model definition that matches the fieldKey.
 222  
      * 
 223  
      * @param section
 224  
      * @param fieldKey
 225  
      * @return
 226  
      */
 227  
     public FieldDescriptor addReadOnlyField(Section section, String fieldKey) {
 228  0
         return addReadOnlyField(section, fieldKey, null, null, null);
 229  
     }    
 230  
     
 231  
     /**
 232  
      * Read only variant of the corresponding addField method.  This method will generate the read only version
 233  
      * of the widget from the metadata found in the model definition that matches the fieldKey.
 234  
      * 
 235  
      * @param section
 236  
      * @param fieldKey
 237  
      * @param messageKey
 238  
      * @return
 239  
      */
 240  
     public FieldDescriptor addReadOnlyField(Section section, String fieldKey, MessageKeyInfo messageKey) {
 241  0
         return addReadOnlyField(section, fieldKey, messageKey, null, null);
 242  
     }
 243  
     
 244  
     /**
 245  
      * Read only variant of the corresponding addField method.  Uses widget passed in.
 246  
      * 
 247  
      * @param section
 248  
      * @param fieldKey
 249  
      * @param messageKey
 250  
      * @param widget
 251  
      * @return
 252  
      */
 253  
     public FieldDescriptor addReadOnlyField(Section section, String fieldKey, MessageKeyInfo messageKey, Widget widget) {
 254  0
         return addReadOnlyField(section, fieldKey, messageKey, widget, null);
 255  
     }
 256  
     
 257  
     /**
 258  
      * Read only variant of the corresponding addField method.  This method will generate the read only version
 259  
      * of the widget from the metadata found in the model definition that matches the fieldKey.
 260  
      * 
 261  
      * @param section
 262  
      * @param fieldKey
 263  
      * @param messageKey
 264  
      * @param parentPath
 265  
      * @return
 266  
      */
 267  
     public FieldDescriptor addReadOnlyField(Section section, String fieldKey, MessageKeyInfo messageKey, String parentPath) {
 268  0
         return addReadOnlyField(section, fieldKey, messageKey, null, parentPath);
 269  
     }
 270  
     
 271  
     /**
 272  
      * Read only variant of the corresponding addField method.  Uses widget passed in.
 273  
      * 
 274  
      * @param section
 275  
      * @param fieldKey
 276  
      * @param messageKey
 277  
      * @param widget
 278  
      * @param parentPath
 279  
      * @return
 280  
      */
 281  
     public FieldDescriptor addReadOnlyField(Section section, String fieldKey, MessageKeyInfo messageKey, Widget widget, String parentPath) {
 282  0
         QueryPath path = QueryPath.concat(parentPath, fieldKey);
 283  0
         Metadata meta = modelDefinition.getMetadata(path);
 284  
 
 285  0
         FieldDescriptor fd = new FieldDescriptorReadOnly(path.toString(), messageKey, meta);
 286  0
         if (widget != null) {                                               
 287  0
             fd.setFieldWidget(widget);
 288  
         }
 289  0
         section.addField(fd);
 290  0
         return fd;
 291  
     }
 292  
 }