1 | /** |
2 | * Copyright 2005-2011 Steve McDuff d-duff@users.sourceforge.net |
3 | * |
4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
5 | * you may not use this file except in compliance with the License. |
6 | * You may obtain a copy of the License at |
7 | * |
8 | * http://www.apache.org/licenses/LICENSE-2.0 |
9 | * |
10 | * Unless required by applicable law or agreed to in writing, software |
11 | * distributed under the License is distributed on an "AS IS" BASIS, |
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
13 | * See the License for the specific language governing permissions and |
14 | * limitations under the License. |
15 | */ |
16 | package org.deduced.viewer.web.shared; |
17 | |
18 | /** |
19 | * Ordered Widget Model is used by ordered widget lists to store the ordering |
20 | * information and a link to the widget itself. |
21 | * |
22 | * @author Steve McDuff |
23 | * |
24 | */ |
25 | public class OrderedWidgetModel extends OrderedModel implements ModelContainer |
26 | { |
27 | |
28 | /** |
29 | * serialVersionUID |
30 | */ |
31 | private static final long serialVersionUID = -7507577994255921212L; |
32 | /** |
33 | * the ordered widget |
34 | */ |
35 | private WidgetModel widget; |
36 | |
37 | /** |
38 | * |
39 | * OrderedWidgetModel constructor |
40 | */ |
41 | public OrderedWidgetModel() |
42 | { |
43 | |
44 | } |
45 | |
46 | /** |
47 | * (non-JSDoc) |
48 | * |
49 | * @see org.deduced.viewer.web.shared.Model#registerChildModels() |
50 | */ |
51 | @Override |
52 | protected void registerChildModels() |
53 | { |
54 | registerChildModel(getWidget(), this); |
55 | super.registerChildModels(); |
56 | } |
57 | |
58 | /** |
59 | * (non-JSDoc) |
60 | * |
61 | * @see org.deduced.viewer.web.shared.OrderedModel#propertyChanged(org.deduced.viewer.web.shared.ChangeEvent) |
62 | */ |
63 | @Override |
64 | public void propertyChanged( |
65 | ChangeEvent event) |
66 | { |
67 | if (Utilities.equals(event.getName(), "component")) |
68 | { |
69 | WidgetModel newWidget = (WidgetModel) event.getSerializableValue(); |
70 | updateWidget(newWidget); |
71 | } |
72 | else |
73 | { |
74 | super.propertyChanged(event); |
75 | } |
76 | } |
77 | |
78 | /** |
79 | * update Widget |
80 | * |
81 | * @param newWidget the new widget to use |
82 | */ |
83 | public void updateWidget( |
84 | WidgetModel newWidget) |
85 | { |
86 | setWidget(updateModel(newWidget, getWidget(), this)); |
87 | notifyParentThatModelChanged(); |
88 | } |
89 | |
90 | /** |
91 | * set the Widget |
92 | * |
93 | * @param newWidget the displayed widget |
94 | */ |
95 | public void setWidget( |
96 | WidgetModel newWidget) |
97 | { |
98 | widget = newWidget; |
99 | } |
100 | |
101 | /** |
102 | * delete the Widget |
103 | */ |
104 | private void deleteWidget() |
105 | { |
106 | WidgetModel currentWidget = getWidget(); |
107 | if (currentWidget != null) |
108 | { |
109 | currentWidget.delete(); |
110 | setWidget(null); |
111 | } |
112 | } |
113 | |
114 | /** |
115 | * (non-JSDoc) |
116 | * |
117 | * @see org.deduced.viewer.web.shared.Model#deleteChildModels() |
118 | */ |
119 | @Override |
120 | protected void deleteChildModels() |
121 | { |
122 | deleteWidget(); |
123 | super.deleteChildModels(); |
124 | } |
125 | |
126 | /** |
127 | * @return the widget |
128 | */ |
129 | public WidgetModel getWidget() |
130 | { |
131 | return widget; |
132 | } |
133 | |
134 | /** |
135 | * (non-JSDoc) |
136 | * |
137 | * @see org.deduced.viewer.web.shared.OrderedModel#getOrderedValue() |
138 | */ |
139 | @Override |
140 | public Object getOrderedValue() |
141 | { |
142 | return widget; |
143 | } |
144 | |
145 | /** |
146 | * (non-JSDoc) |
147 | * |
148 | * @see org.deduced.viewer.web.shared.ModelContainer#modelChanged(org.deduced.viewer.web.shared.Model) |
149 | */ |
150 | @Override |
151 | public void modelChanged( |
152 | Model model) |
153 | { |
154 | notifyParentThatModelChanged(); |
155 | } |
156 | } |