1 package fr.ifremer.quadrige2.ui.swing.common.synchro;
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 import fr.ifremer.quadrige2.ui.swing.common.ApplicationUIUtil;
27 import fr.ifremer.quadrige2.ui.swing.common.component.wrapeditor.WrapEditorKit;
28 import fr.ifremer.quadrige2.ui.swing.common.AbstractUIHandler;
29 import fr.ifremer.quadrige2.ui.swing.common.model.ProgressionModel;
30 import org.apache.commons.logging.Log;
31 import org.apache.commons.logging.LogFactory;
32
33 import javax.swing.SwingUtilities;
34 import javax.swing.text.EditorKit;
35 import java.beans.PropertyChangeEvent;
36 import java.beans.PropertyChangeListener;
37
38 import static org.nuiton.i18n.I18n.t;
39
40
41
42
43
44
45
46 public class SynchroUIHandler extends AbstractUIHandler<SynchroUIContext, SynchroUI> {
47
48 private static final Log log = LogFactory.getLog(SynchroUIHandler.class);
49
50
51 public static final String REPORT_CARD = "reportCard";
52
53 public static final String DATE_CHOICE_CARD = "dateChoiceCard";
54
55 public static final String PROGRESS_CARD = "progressCard";
56
57 public static final String VALID_APPLY_CARD = "validApplyCard";
58
59 public static final String VALID_START_CARD = "validStartCard";
60
61 protected final PropertyChangeListener progressionListener = new PropertyChangeListener() {
62 @Override
63 public void propertyChange(PropertyChangeEvent evt) {
64
65 String propertyName = evt.getPropertyName();
66 if (null != propertyName) {
67 switch (propertyName) {
68 case ProgressionModel.PROPERTY_MESSAGE:
69
70 if (getModel().isServerSide()) {
71 ui.getStatusSideLabel().setText(t("quadrige2.synchro.status.serverSide.label"));
72 }
73 else {
74 ui.getStatusSideLabel().setText(t("quadrige2.synchro.status.label"));
75 }
76
77 ui.getStatusLabel().setText(ApplicationUIUtil.getHtmlString((String) evt.getNewValue()));
78 break;
79 case ProgressionModel.PROPERTY_TOTAL:
80
81 ui.getProgressBar().setMaximum((Integer) evt.getNewValue());
82 break;
83 case ProgressionModel.PROPERTY_CURRENT:
84
85 ui.getProgressBar().setValue((Integer) evt.getNewValue());
86 break;
87 case ProgressionModel.PROPERTY_INDETERMINATE:
88
89 ui.getProgressBar().setIndeterminate((boolean) evt.getNewValue());
90 break;
91 }
92 }
93 }
94 };
95
96
97 @Override
98 public void beforeInit(SynchroUI ui) {
99 super.beforeInit(ui);
100
101 SynchroUIContext model = new SynchroUIContext(getContext());
102 ui.setContextValue(model);
103
104 model.getProgressionModel().addPropertyChangeListener(progressionListener);
105
106 }
107
108
109 @Override
110 public void afterInit(SynchroUI ui) {
111 initUI(ui);
112
113
114
115
116
117
118
119 report(t("quadrige2.synchro.report.idle"));
120
121 }
122
123
124
125
126 public void showDateChoicePopup() {
127 if (!DATE_CHOICE_CARD.equals(getUI().getSynchroPanelLayout().getSelected())) {
128 getUI().getSynchroPanelLayout().setSelected(DATE_CHOICE_CARD);
129 pack();
130 }
131 showPopup();
132 }
133
134
135
136
137 public void showProgressCard() {
138 if (!PROGRESS_CARD.equals(getUI().getSynchroPanelLayout().getSelected())) {
139 getUI().getSynchroPanelLayout().setSelected(PROGRESS_CARD);
140 pack();
141 }
142 }
143
144
145
146
147 public void showValidApplyPopup() {
148 if (!VALID_APPLY_CARD.equals(getUI().getSynchroPanelLayout().getSelected())) {
149 getUI().getSynchroPanelLayout().setSelected(VALID_APPLY_CARD);
150
151
152 if (getModel().isImportData()) {
153 getUI().getApplyLabel().setText(t("quadrige2.synchro.valid.apply.data.label"));
154 } else {
155 getUI().getApplyLabel().setText(t("quadrige2.synchro.valid.apply.label"));
156 }
157
158 pack();
159 }
160 showPopup();
161 }
162
163
164
165
166 public void showValidStartPopup() {
167 if (!VALID_START_CARD.equals(getUI().getSynchroPanelLayout().getSelected())) {
168 getUI().getSynchroPanelLayout().setSelected(VALID_START_CARD);
169 pack();
170 }
171 showPopup();
172 }
173
174
175
176
177 public void showReportCard() {
178 if (!REPORT_CARD.equals(getUI().getSynchroPanelLayout().getSelected())) {
179 getUI().getSynchroPanelLayout().setSelected(REPORT_CARD);
180 pack();
181 }
182 }
183
184
185
186
187 public void clearDataDates() {
188 getModel().setImportDataStartDate(null);
189 getModel().setImportDataEndDate(null);
190 }
191
192
193
194
195
196
197
198 public void report(String report, boolean showPopup) {
199
200 getUI().getReportTextPane().setText(ApplicationUIUtil.getHtmlString(report));
201
202 showReportCard();
203 if (showPopup) {
204 showPopup();
205 }
206 }
207
208
209
210
211
212
213 public void report(String report) {
214
215 report(report, true);
216 }
217
218
219
220
221 public void cancelSynchro() {
222
223 hidePopup();
224
225 if (getModel().getDirection() == SynchroDirection.IMPORT) {
226 getModel().resetImportContext();
227
228 getModel().saveImportContext(true, false);
229 }
230
231 else if (getModel().getDirection() == SynchroDirection.EXPORT) {
232 getModel().resetExportContext();
233 getModel().saveExportContext();
234 }
235
236
237 else {
238 getModel().resetExportContext();
239 getModel().resetImportContext();
240 }
241
242 }
243
244
245
246
247 public void showPopup() {
248 if (getPopup() != null) {
249 SwingUtilities.invokeLater(new Runnable() {
250
251 @Override
252 public void run() {
253 getPopup().showPopup();
254 }
255 });
256
257 }
258 }
259
260
261
262
263 public void hidePopup() {
264 if (getPopup() != null) {
265 getPopup().hidePopup();
266 }
267 }
268
269 private SynchroWidget getPopup() {
270 if (getContext() != null && getContext().getMainUI() != null) {
271 return getContext().getMainUI().getSynchroWidget();
272 }
273 return null;
274 }
275
276 private void pack() {
277 if (getPopup() != null) {
278 getPopup().pack();
279 }
280 }
281
282
283
284
285
286
287 public EditorKit getNewWrapEditorKit() {
288 return new WrapEditorKit();
289 }
290
291 }