Coverage Report - org.kuali.student.core.statement.ui.client.widgets.rules.RuleNodeWidget
 
Classes in this File Line Coverage Branch Coverage Complexity
RuleNodeWidget
0%
0/81
0%
0/26
2.077
 
 1  
 /**
 2  
  * Copyright 2010 The Kuali Foundation Licensed under the
 3  
  * Educational Community License, Version 2.0 (the "License"); you may
 4  
  * not use this file except in compliance with the License. You may
 5  
  * obtain a copy of the License at
 6  
  *
 7  
  * http://www.osedu.org/licenses/ECL-2.0
 8  
  *
 9  
  * Unless required by applicable law or agreed to in writing,
 10  
  * software distributed under the License is distributed on an "AS IS"
 11  
  * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 12  
  * or implied. See the License for the specific language governing
 13  
  * permissions and limitations under the License.
 14  
  */
 15  
 
 16  
 package org.kuali.student.core.statement.ui.client.widgets.rules;
 17  
 
 18  
 import org.kuali.student.common.ui.client.widgets.KSLabel;
 19  
 import org.kuali.student.core.statement.ui.client.widgets.table.Node;
 20  
 
 21  
 import com.google.gwt.event.dom.client.ClickHandler;
 22  
 import com.google.gwt.event.shared.HandlerRegistration;
 23  
 import com.google.gwt.user.client.ui.CheckBox;
 24  
 import com.google.gwt.user.client.ui.FocusPanel;
 25  
 import com.google.gwt.user.client.ui.HTML;
 26  
 import com.google.gwt.user.client.ui.HorizontalPanel;
 27  
 import com.google.gwt.user.client.ui.VerticalPanel;
 28  
 
 29  
 public class RuleNodeWidget extends FocusPanel {
 30  
 
 31  
     //widgets
 32  
     private Node node;
 33  0
     private HTML html = new HTML();
 34  
     private HorizontalPanel checkBoxAndEdit;
 35  0
     private CheckBox checkBox = new CheckBox();
 36  0
     private KSLabel edit = new KSLabel("Edit");
 37  0
     private KSLabel toggle = new KSLabel("");
 38  
 
 39  
     //data
 40  
     private HandlerRegistration editClauseHandlerRegistration;
 41  
     private ClickHandler editClickHandler;
 42  0
     private boolean editMode = false;
 43  
     private boolean showCheckbox;
 44  
 
 45  0
     public RuleNodeWidget(Node n) {
 46  0
         init(n, true);
 47  0
     }
 48  
     
 49  0
     public RuleNodeWidget(Node n, boolean showControls) {
 50  0
         init(n, showControls);
 51  0
     }
 52  
     
 53  
     private void init(Node n, boolean showControls) {
 54  0
         node = n;
 55  0
         this.showCheckbox = showControls;
 56  0
         drawNode(n, null, -1, -1); 
 57  0
     }
 58  
     
 59  
     public void drawNode(Node n, RuleTable ruleTable, int rowIndex, int columnIndex) {
 60  0
         node = n;
 61  
 
 62  0
         if (!(node.getUserObject() instanceof Token)) {
 63  0
             super.setWidget(html);
 64  0
             html.setHTML(node.getUserObject().toString());
 65  0
             checkBox.setHTML(node.getUserObject().toString());
 66  0
             return;
 67  
         }
 68  
 
 69  0
         Token userObject = (Token) node.getUserObject();
 70  0
         String selectionStyle = (userObject.isCheckBoxOn() ? "KS-ReqComp-Selected" : "KS-ReqComp-DeSelected");
 71  
 
 72  
         //true if the node is AND/OR operator
 73  0
         if (userObject.isTokenOperator()) {
 74  0
             VerticalPanel checkBoxAndToggle = new VerticalPanel();
 75  0
             super.setWidget(checkBoxAndToggle);
 76  0
             this.addStyleName(userObject.isCheckBoxOn() ? "KS-Rules-Table-Cell-Selected" : "KS-Rules-Table-Cell-DeSelected");            
 77  0
             if (showCheckbox) {
 78  0
                 checkBoxAndToggle.add(checkBox); 
 79  
             }
 80  0
             toggle.setText(userObject.getType() == Token.Or ? Token.createOrToken().value.toUpperCase() : Token.createAndToken().value.toUpperCase());
 81  0
             toggle.addStyleName("KS-Rules-Table-Cell-ANDOR");
 82  0
             checkBoxAndToggle.add(toggle);
 83  0
             if (ruleTable != null) {
 84  0
                 ruleTable.getCellFormatter().setStyleName(rowIndex, columnIndex, selectionStyle);
 85  0
                 ruleTable.getCellFormatter().addStyleName(rowIndex, columnIndex, "KS-Toggle");
 86  
             }
 87  0
         } else { //we have a rule to display in this node 
 88  0
             checkBoxAndEdit = new HorizontalPanel();
 89  0
             HorizontalPanel tableCell = new HorizontalPanel();
 90  0
             super.setWidget(tableCell);
 91  0
             this.setStyleName(userObject.isCheckBoxOn() ? "KS-Rules-Table-Cell-Selected" : "KS-Rules-Table-Cell-DeSelected");
 92  0
             if (userObject.getTokenID() != null) {
 93  0
                 KSLabel rcLabel = new KSLabel(userObject.getTokenID());
 94  0
                 rcLabel.setStyleName("KS-Rules-Table-Cell-ID");
 95  0
                 tableCell.add(rcLabel);
 96  
             }            
 97  0
             tableCell.add(checkBoxAndEdit);
 98  
             
 99  0
             if (showCheckbox) {
 100  0
                 checkBoxAndEdit.add(checkBox);
 101  0
                 checkBox.setHTML(node.getUserObject().toString());
 102  
             } else {
 103  0
                 checkBoxAndEdit.add(new KSLabel(node.getUserObject().toString()));
 104  
             }
 105  0
             edit.addStyleName("KS-Rules-URL-Link");
 106  0
             checkBoxAndEdit.add(edit);
 107  0
             if (ruleTable != null) {
 108  0
                 checkBoxAndEdit.setStyleName(selectionStyle);
 109  
             }
 110  
             
 111  0
             html.addStyleName("KS-ReqComp-Panel");
 112  
         }
 113  
 
 114  0
         checkBox.setValue(userObject.isCheckBoxOn());
 115  0
         html.setHTML(node.getUserObject().toString());
 116  0
     }
 117  
 
 118  
     public boolean isSelected(){
 119  0
         return checkBox.getValue();
 120  
     }
 121  
 
 122  
     public boolean isShowCheckbox() {
 123  0
         return showCheckbox;
 124  
     }
 125  
 
 126  
     public void setShowCheckbox(boolean showCheckbox) {
 127  0
         this.showCheckbox = showCheckbox;
 128  0
     }
 129  
 
 130  
     public Node getNode() {
 131  0
         return node;
 132  
     }
 133  
 
 134  
     public void addEditClauseHandler(ClickHandler ch) {
 135  0
         editClickHandler = ch;
 136  0
         editClauseHandlerRegistration = edit.addClickHandler(ch);
 137  0
     }
 138  
 
 139  
     public void clearEditClauseHandler() {
 140  0
         if (editClauseHandlerRegistration != null) {
 141  0
             editClauseHandlerRegistration.removeHandler();
 142  0
             editClauseHandlerRegistration = null;
 143  
         }
 144  0
     }  
 145  
 
 146  
     public void setEnabled(boolean enabled) {
 147  0
         checkBox.setEnabled(enabled);
 148  0
         if (enabled) {
 149  0
             edit.removeStyleName("KS-Rules-URL-Link-Readonly");
 150  0
             edit.addStyleName("KS-Rules-URL-Link");
 151  0
             addEditClauseHandler(editClickHandler);
 152  
         } else {
 153  0
             edit.removeStyleName("KS-Rules-URL-Link");
 154  0
             edit.addStyleName("KS-Rules-URL-Link-Readonly");            
 155  0
             clearEditClauseHandler();
 156  
         }
 157  0
     }
 158  
 
 159  
     public boolean isEditMode() {
 160  0
         return editMode;
 161  
     }
 162  
 
 163  
     public void setEditMode(boolean editMode) {
 164  0
         this.editMode = editMode;
 165  0
     }
 166  
 }