Clover Coverage Report - KS Common UI 1.3.0-SNAPSHOT
Coverage timestamp: Wed Dec 31 1969 19:00:00 EST
../../../../../../../img/srcFileCovDistChart0.png 0% of files have more coverage
80   227   37   3.64
24   187   0.46   22
22     1.68  
1    
 
  KSItemLabel       Line # 27 80 0% 37 126 0% 0.0
 
No Tests
 
1    package org.kuali.student.common.ui.client.widgets;
2   
3    import java.util.ArrayList;
4    import java.util.List;
5   
6    import org.kuali.student.common.assembly.data.Data;
7    import org.kuali.student.common.assembly.data.Data.DataValue;
8    import org.kuali.student.common.assembly.data.Data.Value;
9    import org.kuali.student.common.ui.client.mvc.Callback;
10    import org.kuali.student.common.ui.client.mvc.HasDataValue;
11    import org.kuali.student.common.ui.client.util.Elements;
12    import org.kuali.student.common.ui.client.widgets.field.layout.element.AbbrButton;
13    import org.kuali.student.common.ui.client.widgets.field.layout.element.AbbrButton.AbbrButtonType;
14   
15    import com.google.gwt.event.dom.client.ClickEvent;
16    import com.google.gwt.event.dom.client.ClickHandler;
17    import com.google.gwt.event.logical.shared.CloseEvent;
18    import com.google.gwt.event.logical.shared.CloseHandler;
19    import com.google.gwt.event.logical.shared.HasCloseHandlers;
20    import com.google.gwt.event.shared.HandlerRegistration;
21    import com.google.gwt.user.client.ui.Anchor;
22    import com.google.gwt.user.client.ui.Composite;
23    import com.google.gwt.user.client.ui.FlowPanel;
24    import com.google.gwt.user.client.ui.HTMLPanel;
25    import com.google.gwt.user.client.ui.Panel;
26   
 
27    public class KSItemLabel extends Composite implements HasCloseHandlers<KSItemLabel>, HasDataValue {
28   
29    private final String id = HTMLPanel.createUniqueId();
30    private final String contentId = HTMLPanel.createUniqueId();
31    // private final String detaillsLinkId = HTMLPanel.createUniqueId();
32    private final String removeLinkId = HTMLPanel.createUniqueId();
33    private final String backgroundId = HTMLPanel.createUniqueId();
34    private final String PANEL_CONTENT_OPEN = "<span id='" + contentId + "'></span>";
35    private final String PANEL_CONTENT_REMOVE_LINK = "<span class='ks-selected-list-value-remove' id='" + removeLinkId + "'></span>";
36    // private final String PANEL_CONTENT_DETAILS = "<span class='gwt-Anchor' style='position: absolute; right: 25px; top: 1px;' id='" + detaillsLinkId + "'></span>";
37    private final String PANEL_CONTENT_BACKGROUND = "<div id='" + backgroundId + "' class='ks-selected-list-value-container'></div>";
38    private Panel mainPanel;
39    private HTMLPanel panel;
40    private AbbrButton delete = new AbbrButton(AbbrButtonType.DELETE);
41    private Anchor viewDetails = new Anchor("View");
42    private DataHelper dataHelper;
43    private Data data;
44    private List<Callback<Value>> valueChangeCallbacks =
45    new ArrayList<Callback<Value>>();
46    private String deletedKey;
47    // the instanceId is used to identify instances.
48    private static int classInstanceId = -1;
49    public int instanceId;
50   
 
51  0 toggle public KSItemLabel(boolean canEdit, DataHelper dataParser) {
52  0 init(canEdit, false, dataParser);
53    }
54   
 
55  0 toggle public KSItemLabel(boolean canEdit, boolean hasDetails, DataHelper dataParser) {
56  0 init(canEdit, hasDetails, dataParser);
57    }
58   
 
59  0 toggle private void init(boolean canEdit, boolean hasDetails, DataHelper dataParser) {
60  0 classInstanceId++;
61  0 instanceId = classInstanceId;
62  0 mainPanel = new FlowPanel();
63  0 mainPanel.setStyleName("ks-selected-list-value");
64  0 panel = new HTMLPanel(PANEL_CONTENT_OPEN + PANEL_CONTENT_BACKGROUND);
65  0 panel.getElement().setId(id);
66  0 this.dataHelper = dataParser;
67  0 mainPanel.add(panel);
68  0 if (hasDetails) {
69  0 viewDetails.getElement().getStyle().setProperty("position", "absolute");
70  0 viewDetails.getElement().getStyle().setProperty("right", "25px");
71  0 viewDetails.getElement().getStyle().setProperty("top", "1px");
72  0 mainPanel.add(viewDetails);
73    }
74  0 if(canEdit) {
75  0 delete.getElement().getStyle().setProperty("position", "absolute");
76  0 delete.getElement().getStyle().setProperty("right", "3px");
77  0 delete.getElement().getStyle().setProperty("top", "1px");
78  0 mainPanel.add(delete);
79  0 initDeleteHandlers();
80    }
81  0 String labelText = "";
82  0 panel.getElementById(contentId).setInnerText(labelText);
83  0 panel.setVisible(false);
84  0 mainPanel.setVisible(false);
85  0 super.initWidget(mainPanel);
86    }
87   
 
88  0 toggle @Override
89    public HandlerRegistration addCloseHandler(CloseHandler<KSItemLabel> handler) {
90  0 return addHandler(handler, CloseEvent.getType());
91    }
92   
 
93  0 toggle @Override
94    public void addValueChangeCallback(Callback<Value> callback) {
95  0 valueChangeCallbacks.add(callback);
96    }
97   
 
98  0 toggle private void callHandlers() {
99  0 if (valueChangeCallbacks != null) {
100    // MyGwtEvent myEvent = new MyGwtEvent(getValue());
101  0 for (Callback<Data.Value> handler : valueChangeCallbacks) {
102  0 handler.exec(getValue());
103    }
104    }
105    }
106   
 
107  0 toggle @Override
108    public Value getValue() {
109  0 DataValue result = new DataValue(data);
110  0 return result;
111    }
112   
 
113  0 toggle @Override
114    public void setValue(Value value) {
115  0 deletedKey = null;
116  0 if (value == null) {
117  0 this.data = null;
118    } else {
119  0 this.data = value.get();
120    }
121  0 callHandlers();
122  0 redraw();
123    }
124   
 
125  0 toggle public String getKey() {
126  0 return dataHelper.getKey(data);
127    }
128   
 
129  0 toggle public String getDisplayText() {
130  0 if (data == null) {
131  0 return null;
132    }
133  0 return dataHelper.parse(data);
134    }
135   
 
136  0 toggle private String nvl(String inString) {
137  0 return (inString == null)? "" : inString;
138    }
139   
 
140  0 toggle private void redraw() {
141  0 String labelText = null;
142  0 labelText = dataHelper.parse(data);
143  0 panel.getElementById(contentId).setInnerHTML(nvl(labelText));
144  0 panel.setVisible(true);
145  0 mainPanel.setVisible(true);
146    }
147   
 
148  0 toggle private void initDeleteHandlers() {
149    //DOM.sinkEvents(panel.getElementById(removeLinkId), Event.ONCLICK);
150  0 delete.addClickHandler(new ClickHandler() {
 
151  0 toggle @Override
152    public void onClick(ClickEvent event) {
153  0 doRemove();
154    }
155    });
156    }
157   
 
158  0 toggle public HandlerRegistration addShowDetailsHandler(ClickHandler clickHandler) {
159  0 return viewDetails.addClickHandler(clickHandler);
160    }
161   
 
162  0 toggle private void doRemove() {
163    // TODO
164    // selectedValues.remove(this);
165    // removedValues.add(this);
166    // valuesPanel.remove(this);
167  0 deletedKey = dataHelper.getKey(data);
168  0 data = null;
169  0 redraw();
170  0 callHandlers();
171  0 CloseEvent.fire(this, this);
172    }
173   
 
174  0 toggle public String getDeletedKey() {
175  0 return deletedKey;
176    }
177   
 
178  0 toggle public void setHighlighted(boolean highlighted) {
179  0 if (highlighted) {
180  0 Elements.fadeIn(panel.getElementById(backgroundId), 250, 100, new Elements.EmptyFadeCallback());
181    // Elements.fadeIn(mainPanel, 250, 100, new Elements.EmptyFadeCallback());
182    } else {
183  0 Elements.fadeOut(panel.getElementById(backgroundId), 1000, 0, new Elements.EmptyFadeCallback());
184    // Elements.fadeOut(mainPanel, 1000, 0, new Elements.EmptyFadeCallback());
185    }
186    }
187   
 
188  0 toggle public void removeHighlight(){
189  0 Elements.setOpacity(panel.getElementById(backgroundId), 0);
190    }
191   
 
192  0 toggle @Override
193    public boolean equals(Object obj) {
194  0 KSItemLabel item2 = null;
195  0 boolean result = false;
196  0 try {
197  0 item2 = (KSItemLabel) obj;
198    } catch (Exception e) {
199  0 return false;
200    }
201  0 if (item2 != null && nullSafeEquals(getKey(), item2.getKey()) &&
202    nullSafeEquals(getDisplayText(), item2.getDisplayText())) {
203  0 result = true;
204    }
205  0 return result;
206    }
207   
208   
209   
 
210  0 toggle private boolean nullSafeEquals(String str1, String str2) {
211  0 boolean result = false;
212  0 String tempStr1 = (str1 == null)? "" : str1;
213  0 String tempStr2 = (str2 == null)? "" : str2;
214  0 result = tempStr1.equals(tempStr2);
215  0 return result;
216    }
217   
 
218  0 toggle @Override
219    public int hashCode() {
220  0 String key = getKey();
221  0 String displayText = getDisplayText();
222  0 key = (key == null)? "" : key;
223  0 displayText = (displayText == null)? "" : displayText;
224  0 return key.hashCode() + displayText.hashCode();
225    }
226   
227    }