1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 package org.openflexo.gina.swing.utils;
40
41 import java.awt.BorderLayout;
42 import java.awt.Color;
43 import java.awt.Dimension;
44 import java.awt.event.ActionEvent;
45 import java.awt.event.ActionListener;
46 import java.util.logging.Level;
47
48 import javax.swing.JButton;
49
50 import org.openflexo.connie.DataBinding;
51 import org.openflexo.gina.model.FIBModelObject.FIBModelObjectImpl;
52 import org.openflexo.swing.ButtonsControlPanel;
53 import org.openflexo.toolbox.ToolBox;
54
55
56
57
58
59
60
61
62 @SuppressWarnings("serial")
63 public class BindingExpressionSelectorPanel extends AbstractBindingSelectorPanel {
64
65 private final BindingSelector bindingSelector;
66 protected ButtonsControlPanel _controlPanel;
67 protected JButton _applyButton;
68 protected JButton _cancelButton;
69 protected JButton _resetButton;
70 private BindingExpressionPanel _expressionPanel;
71
72
73
74
75 BindingExpressionSelectorPanel(BindingSelector bindingSelector) {
76 super();
77 this.bindingSelector = bindingSelector;
78 }
79
80 @Override
81 public void delete() {
82 if (_expressionPanel != null) {
83 _expressionPanel.delete();
84 _expressionPanel = null;
85 }
86 }
87
88 @Override
89 public Dimension getDefaultSize() {
90 return new Dimension(520, 250);
91 }
92
93 @Override
94 protected void init() {
95 setLayout(new BorderLayout());
96
97 _controlPanel = new ButtonsControlPanel() {
98 @Override
99 public String localizedForKeyAndButton(String key, JButton component) {
100 return FIBModelObjectImpl.GINA_LOCALIZATION.localizedForKey(key, component);
101 }
102 };
103 _applyButton = _controlPanel.addButton("apply", new ActionListener() {
104 @Override
105 public void actionPerformed(ActionEvent e) {
106 BindingExpressionSelectorPanel.this.bindingSelector.apply();
107 }
108 });
109 _cancelButton = _controlPanel.addButton("cancel", new ActionListener() {
110 @Override
111 public void actionPerformed(ActionEvent e) {
112 BindingExpressionSelectorPanel.this.bindingSelector.cancel();
113 }
114 });
115 _resetButton = _controlPanel.addButton("reset", new ActionListener() {
116 @Override
117 public void actionPerformed(ActionEvent e) {
118 BindingExpressionSelectorPanel.this.bindingSelector.getEditedObject().reset();
119 BindingExpressionSelectorPanel.this.bindingSelector.apply();
120 }
121 });
122
123 _controlPanel.applyFocusTraversablePolicyTo(_controlPanel, false);
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138 if (BindingSelector.LOGGER.isLoggable(Level.FINE)) {
139 BindingSelector.LOGGER.fine("init() called in BindingExpressionSelectorPanel with " + bindingSelector.getEditedObject()
140 + " expression=" + bindingSelector.getEditedObject().getExpression());
141 }
142
143 _expressionPanel = new BindingExpressionPanel(bindingSelector.getEditedObject()) {
144 @Override
145 protected void fireEditedExpressionChanged(DataBinding<?> expression) {
146
147 super.fireEditedExpressionChanged(expression);
148 bindingSelector.fireEditedObjectChanged();
149 updateStatus(expression);
150
151 }
152 };
153
154 add(_expressionPanel, BorderLayout.CENTER);
155 add(_controlPanel, BorderLayout.SOUTH);
156
157 update();
158 }
159
160 @Override
161 protected void processTabPressed() {
162
163
164 }
165
166 @Override
167 protected void processBackspace() {
168
169
170 }
171
172 @Override
173 protected void processDelete() {
174
175
176 }
177
178 @Override
179 protected void processDownPressed() {
180
181
182 }
183
184 @Override
185 protected void processEnterPressed() {
186
187
188 }
189
190 @Override
191 protected void processUpPressed() {
192
193
194 }
195
196 @Override
197 protected void synchronizePanelWithTextFieldValue(String textValue) {
198 }
199
200 @Override
201 protected void update() {
202 if (BindingSelector.LOGGER.isLoggable(Level.FINE)) {
203 BindingSelector.LOGGER.fine("update() called for BindingExpressionSelectorPanel");
204 }
205
206 _expressionPanel.setEditedExpression(bindingSelector.getEditedObject());
207
208 updateStatus(bindingSelector.getEditedObject());
209
210 }
211
212 @Override
213 protected void updateStatus(DataBinding<?> bindingExpression) {
214
215 boolean isValid = bindingExpression.forceRevalidate();
216
217
218 _applyButton.setEnabled(bindingExpression != null && isValid);
219 if (bindingExpression != null && isValid) {
220 if (ToolBox.isMacOSLaf()) {
221 _applyButton.setSelected(true);
222 }
223 }
224 if (bindingExpression != null) {
225 bindingSelector.getTextField().setForeground(bindingExpression.isValid() ? Color.BLACK : Color.RED);
226 }
227 }
228
229 @Override
230 protected void fireBindableChanged() {
231 update();
232 }
233
234 @Override
235 protected void willApply() {
236 }
237 }