1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.student.common.ui.client.configurable.mvc.multiplicity;
17
18 import org.kuali.student.common.ui.client.widgets.KSButton;
19 import org.kuali.student.common.ui.client.widgets.KSLabel;
20 import org.kuali.student.common.ui.client.widgets.layout.VerticalFlowPanel;
21
22 import com.google.gwt.event.dom.client.ClickEvent;
23 import com.google.gwt.event.dom.client.ClickHandler;
24 import com.google.gwt.user.client.ui.HorizontalPanel;
25 import com.google.gwt.user.client.ui.Label;
26 import com.google.gwt.user.client.ui.Widget;
27
28
29
30
31
32
33
34
35
36
37 public class RemovableItemWithHeader extends MultiplicityItem {
38 private String itemLabel = "Item ";
39 private boolean useDeleteLabel = false;
40 private boolean loaded = false;
41 private KSLabel headerLabel;
42 private boolean readOnly=false;
43 protected VerticalFlowPanel itemPanel = new VerticalFlowPanel();
44
45 public RemovableItemWithHeader(){
46 initWidget(itemPanel);
47 }
48
49 public void onLoad(){
50 }
51
52 public void isReadOnly(boolean readOnly){
53 this.readOnly=readOnly;
54 }
55 private Widget generateRemoveWidget() {
56 ClickHandler ch = new ClickHandler() {
57 public void onClick(ClickEvent event) {
58 getRemoveCallback().exec(RemovableItemWithHeader.this);
59 }
60 };
61
62 Widget returnWidget;
63
64 if (useDeleteLabel) {
65 Label deleteLabel = new Label("Delete");
66 deleteLabel.addStyleName("KS-Multiplicity-Link-Label");
67 deleteLabel.addClickHandler(ch);
68 returnWidget = deleteLabel;
69 } else {
70 returnWidget = new KSButton("-", ch);
71 }
72
73 itemPanel.addStyleName("KS-Multiplicity-Item");
74
75 if(readOnly){
76 returnWidget.setVisible(false);
77 }
78 else{
79 returnWidget.setVisible(true);
80 }
81
82 return returnWidget;
83 }
84
85
86
87
88 @Override
89 public void clear() {
90 loaded = false;
91 }
92
93
94
95
96 @Override
97 public void redraw() {
98 Widget item = getItemWidget();
99 if (!loaded){
100 itemPanel.addStyleName("KS-Multiplicity-Item");
101
102 HorizontalPanel headerPanel = new HorizontalPanel();
103 headerPanel.addStyleName("KS-Multiplicity-Item-Header");
104 headerLabel = new KSLabel(itemLabel + " " + getItemKey());
105 headerPanel.add(headerLabel);
106 headerPanel.add(generateRemoveWidget());
107
108 itemPanel.add(headerPanel);
109 itemPanel.add(item);
110
111 loaded = true;
112 headerLabel.setText(itemLabel + " " + getItemKey());
113 }
114
115
116
117
118
119
120 }
121
122 public void setItemLabel(String itemLabel) {
123 this.itemLabel = itemLabel;
124 }
125
126 public void setUseDeleteLabel(boolean useDeleteLabel) {
127 this.useDeleteLabel = useDeleteLabel;
128 }
129
130 }