1 package fr.ifremer.dali.ui.swing.content.config;
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 com.google.common.collect.Lists;
27 import fr.ifremer.dali.config.DaliConfiguration;
28 import fr.ifremer.dali.config.DaliConfigurationOption;
29 import fr.ifremer.dali.config.DaliSecuredConfigurationOption;
30 import fr.ifremer.dali.map.MapMode;
31 import fr.ifremer.dali.map.MapProjection;
32 import fr.ifremer.dali.ui.swing.DaliUIContext;
33 import fr.ifremer.dali.ui.swing.action.GoToPreviousScreenAction;
34 import fr.ifremer.dali.ui.swing.action.ReloadApplicationAction;
35 import fr.ifremer.dali.ui.swing.util.AbstractDaliUIHandler;
36 import fr.ifremer.dali.ui.swing.util.DaliUI;
37 import fr.ifremer.quadrige3.core.config.QuadrigeConfigurationOption;
38 import fr.ifremer.quadrige3.core.config.QuadrigeCoreConfigurationOption;
39 import fr.ifremer.quadrige3.core.security.QuadrigeUserAuthority;
40 import fr.ifremer.quadrige3.ui.swing.table.editor.DatePatternCellEditor;
41 import fr.ifremer.quadrige3.ui.swing.table.editor.EnumValueCellEditor;
42 import fr.ifremer.quadrige3.ui.swing.table.editor.NumberCellEditor;
43 import fr.ifremer.quadrige3.ui.swing.table.renderer.CheckBoxRenderer;
44 import fr.ifremer.quadrige3.ui.swing.table.renderer.EnumValueCellRenderer;
45 import jaxx.runtime.SwingUtil;
46 import jaxx.runtime.swing.config.ConfigUI;
47 import jaxx.runtime.swing.config.ConfigUIHelper;
48 import jaxx.runtime.swing.config.model.MainCallBackFinalizer;
49
50 import javax.swing.DefaultCellEditor;
51 import javax.swing.JComponent;
52 import javax.swing.JTextField;
53 import javax.swing.table.DefaultTableCellRenderer;
54 import java.awt.BorderLayout;
55 import java.util.List;
56
57 import static org.nuiton.i18n.I18n.n;
58 import static org.nuiton.i18n.I18n.t;
59
60
61
62
63
64
65 public class DaliConfigUIHandler extends AbstractDaliUIHandler<DaliUIContext, DaliConfigUI> {
66
67
68
69
70 private static final String CALLBACK_APPLICATION = "application";
71
72
73
74
75 private static final String CALLBACK_UI = "ui";
76
77 @Override
78 public void beforeInit(DaliConfigUI ui) {
79 super.beforeInit(ui);
80
81 ui.setContextValue(SwingUtil.createActionIcon("config"));
82 }
83
84
85
86
87 @Override
88 public void afterInit(DaliConfigUI ui) {
89
90 initUI(ui);
91
92 getContext().getSwingSession().addUnsavedRootComponentByName(ui.getName());
93
94 DaliConfiguration config = getConfig();
95
96 ConfigUIHelper helper = new ConfigUIHelper(config.getApplicationConfig(), config.getApplicationConfig(), config.getConfigFile());
97
98 helper.registerCallBack(
99 CALLBACK_UI, n("dali.config.action.reload.ui"),
100 SwingUtil.createActionIcon("reload-ui"),
101 this::reloadUI
102 ).registerCallBack(
103 CALLBACK_APPLICATION, n("dali.config.action.reload.application"),
104 SwingUtil.createActionIcon("reload-application"),
105 this::reloadApplication
106 );
107
108
109 helper.addCategory(n("dali.config.category.application"), n("dali.config.category.application.description"))
110 .addOption(DaliConfigurationOption.CONTROL_SURVEY_LOCATION_MINIMUM_DISTANCE_IN_METER)
111 .setOptionEditor(new NumberCellEditor<>(Integer.class, false, DaliUI.INT_6_DIGITS_PATTERN))
112 .setOptionShortLabel(t("dali.config.option.control.survey.location.minDistance.meter.shortLabel"));
113
114
115 List<QuadrigeUserAuthority> neededRoles = Lists.newArrayList(QuadrigeUserAuthority.ADMIN);
116 helper.addCategory(n("dali.config.category.data"), n("dali.config.category.data.description"), CALLBACK_APPLICATION)
117
118 .addOption(new DaliSecuredConfigurationOption(QuadrigeCoreConfigurationOption.AUTHENTICATION_INTRANET_SITE_URL, neededRoles))
119 .setOptionEditor(new DefaultCellEditor(new JTextField()))
120 .setOptionShortLabel(t("dali.config.option.authentication.intranet.site.url.shortLabel"))
121 .addOption(new DaliSecuredConfigurationOption(QuadrigeCoreConfigurationOption.AUTHENTICATION_EXTRANET_SITE_URL, neededRoles))
122 .setOptionShortLabel(t("dali.config.option.authentication.extranet.site.url.shortLabel"))
123 .addOption(new DaliSecuredConfigurationOption(QuadrigeConfigurationOption.SYNCHRONIZATION_SITE_URL, neededRoles))
124 .setOptionShortLabel(t("dali.config.option.synchronization.site.url.shortLabel"))
125 .addOption(new DaliSecuredConfigurationOption(DaliConfigurationOption.SITE_URL, neededRoles))
126 .setOptionShortLabel(t("dali.config.option.site.url.shortLabel"))
127 .addOption(new DaliSecuredConfigurationOption(QuadrigeCoreConfigurationOption.UPDATE_APPLICATION_URL, neededRoles))
128 .setOptionShortLabel(t("dali.config.option.update.application.url.shortLabel"))
129 .addOption(new DaliSecuredConfigurationOption(QuadrigeCoreConfigurationOption.UPDATE_DATA_URL, neededRoles))
130 .setOptionShortLabel(t("dali.config.option.update.data.url.shortLabel"))
131 .addOption(new DaliSecuredConfigurationOption(DaliConfigurationOption.SISMER_WEBSITE_URL, neededRoles))
132 .setOptionShortLabel(t("dali.config.option.campaign.sismer.url.shortLabel"));
133
134
135 helper.addCategory(n("dali.config.category.ui"), n("dali.config.category.ui.description"), CALLBACK_UI)
136 .addOption(DaliConfigurationOption.COLOR_ALTERNATE_ROW)
137 .setOptionShortLabel(t("dali.config.option.ui.color.alternateRow.shortLabel"))
138 .addOption(DaliConfigurationOption.COLOR_SELECTED_ROW)
139 .setOptionShortLabel(t("dali.config.option.ui.color.selectedRow.shortLabel"))
140 .addOption(DaliConfigurationOption.COLOR_ROW_INVALID)
141 .setOptionShortLabel(t("dali.config.option.ui.color.rowInvalid.shortLabel"))
142 .addOption(DaliConfigurationOption.COLOR_ROW_READ_ONLY)
143 .setOptionShortLabel(t("dali.config.option.ui.color.rowReadOnly.shortLabel"))
144 .addOption(DaliConfigurationOption.COLOR_CELL_WITH_VALUE)
145 .setOptionShortLabel(t("dali.config.option.ui.color.cellWithValue.shortLabel"))
146 .addOption(DaliConfigurationOption.COLOR_COMPUTED_WEIGHTS)
147 .setOptionShortLabel(t("dali.config.option.ui.color.computedWeights.shortLabel"))
148 .addOption(DaliConfigurationOption.COLOR_BLOCKING_LAYER)
149 .setOptionShortLabel(t("dali.config.option.ui.color.blockingLayer.shortLabel"))
150 .addOption(DaliConfigurationOption.COLOR_SELECTED_CELL)
151 .setOptionShortLabel(t("dali.config.option.ui.color.selectedCell.shortLabel"))
152 .addOption(DaliConfigurationOption.COLOR_UNUSED_EDITOR_BACKGROUND)
153 .setOptionShortLabel(t("dali.config.option.ui.color.unusedEditorBackground.shortLabel"))
154 .addOption(DaliConfigurationOption.DATE_FORMAT).setOptionEditor(new DatePatternCellEditor())
155 .setOptionShortLabel(t("dali.config.option.ui.dateFormat.shortLabel"))
156 .addOption(DaliConfigurationOption.DATE_TIME_FORMAT).setOptionEditor(new DatePatternCellEditor())
157 .setOptionShortLabel(t("dali.config.option.ui.dateTimeFormat.shortLabel"))
158 .addOption(DaliConfigurationOption.TABLES_CHECKBOX).setOptionRenderer(new CheckBoxRenderer())
159 .setOptionShortLabel(t("dali.config.option.ui.table.showCheckbox.shortLabel"));
160
161
162 helper.addCategory(n("dali.config.category.map"), n("dali.config.category.map.description"), CALLBACK_UI)
163 .addOption(DaliConfigurationOption.MAP_BASE_LAYER_DEFAULT)
164 .setOptionShortLabel(t("dali.config.option.survey.map.baseLayer.default.shortLabel"))
165 .setOptionEditor(new EnumValueCellEditor(MapMode.class))
166 .setOptionRenderer(new EnumValueCellRenderer(MapMode.class))
167 .addOption(DaliConfigurationOption.MAP_PROJECTION_CODE)
168 .setOptionShortLabel(t("dali.config.option.survey.map.projection.code.shortLabel"))
169 .setOptionEditor(new EnumValueCellEditor(MapProjection.class))
170 .setOptionRenderer(new EnumValueCellRenderer(MapProjection.class))
171
172
173 .addOption(DaliConfigurationOption.MAP_SEXTANT_WMTS_URL)
174 .setOptionShortLabel(t("dali.config.option.survey.map.sextantWMTS.url.shortLabel"))
175 .setOptionEditor(new DefaultCellEditor(new JTextField())).setOptionRenderer(new DefaultTableCellRenderer())
176 .addOption(DaliConfigurationOption.MAP_OSM_URL)
177 .setOptionShortLabel(t("dali.config.option.survey.map.openStreetMap.url.shortLabel"))
178 .addOption(DaliConfigurationOption.MAP_OTM_URL)
179 .setOptionShortLabel(t("dali.config.option.survey.map.openTopoMap.url.shortLabel"))
180 .addOption(DaliConfigurationOption.MAP_CARTO_BASE_URL)
181 .setOptionShortLabel(t("dali.config.option.survey.map.cartoBase.url.shortLabel"))
182 .addOption(DaliConfigurationOption.MAP_SATELLITE_URL)
183 .setOptionShortLabel(t("dali.config.option.survey.map.satellite.url.shortLabel"))
184 .addOption(DaliConfigurationOption.MAP_MAX_SELECTION)
185 .setOptionShortLabel(t("dali.config.option.survey.map.maxSelection.shortLabel"))
186 ;
187
188
189 helper.addCategory(n("dali.config.category.technical"), n("dali.config.category.technical.description"), CALLBACK_APPLICATION)
190 .addOption(DaliConfigurationOption.BASEDIR)
191 .setOptionShortLabel(t("dali.config.option.basedir.shortLabel"))
192 .addOption(QuadrigeConfigurationOption.DATA_DIRECTORY)
193 .setOptionShortLabel(t("dali.config.option.data.directory.shortLabel"))
194 .addOption(QuadrigeConfigurationOption.TMP_DIRECTORY)
195 .setOptionShortLabel(t("dali.config.option.tmp.directory.shortLabel"))
196 .addOption(QuadrigeConfigurationOption.I18N_DIRECTORY)
197 .setOptionShortLabel(t("dali.config.option.i18n.directory.shortLabel"))
198 .addOption(DaliConfigurationOption.HELP_DIRECTORY)
199 .setOptionShortLabel(t("dali.config.option.help.directory.shortLabel"))
200 .addOption(QuadrigeCoreConfigurationOption.CONFIG_DIRECTORY)
201 .setOptionShortLabel(t("dali.config.option.config.directory.shortLabel"))
202 .addOption(QuadrigeConfigurationOption.JDBC_URL)
203 .setOptionShortLabel(t("quadrige3.config.option.persistence.jdbc.url.shortLabel"))
204 .addOption(QuadrigeConfigurationOption.DB_DIRECTORY)
205 .setOptionShortLabel(t("quadrige3.config.option.persistence.db.directory.shortLabel"))
206 .addOption(QuadrigeConfigurationOption.DB_BACKUP_DIRECTORY)
207 .setOptionShortLabel(t("quadrige3.config.option.persistence.db.backup.directory.shortLabel"))
208 .addOption(DaliConfigurationOption.DB_BACKUP_EXTERNAL_DIRECTORY)
209 .setOptionShortLabel(t("dali.config.option.persistence.db.backup.external.directory.shortLabel"))
210 .addOption(QuadrigeConfigurationOption.DB_ATTACHMENT_DIRECTORY)
211 .setOptionShortLabel(t("quadrige3.config.option.persistence.db.attachment.directory.shortLabel"))
212 .addOption(QuadrigeConfigurationOption.DB_CACHE_DIRECTORY)
213 .setOptionShortLabel(t("quadrige3.config.option.persistence.db.cache.directory.shortLabel"))
214 .addOption(DaliConfigurationOption.UI_CONFIG_FILE)
215 .setOptionShortLabel(t("dali.config.option.ui.config.file.shortLabel"));
216
217 helper.setFinalizer(new MainCallBackFinalizer(CALLBACK_APPLICATION));
218
219 helper.setCloseAction(() -> getContext().getActionEngine().runInternalAction(
220 DaliConfigUIHandler.this,
221 GoToPreviousScreenAction.class));
222 ConfigUI configUI = helper.buildUI(
223 getUI(),
224 n("dali.config.category.application"));
225
226 configUI.getHandler().setTopContainer(getUI());
227 getUI().add(configUI, BorderLayout.CENTER);
228 }
229
230
231
232
233 @Override
234 protected JComponent getComponentToFocus() {
235 return getUI();
236 }
237
238
239
240
241 private void reloadApplication() {
242 ReloadApplicationAction action = getContext().getActionFactory().createLogicAction(this, ReloadApplicationAction.class);
243 getContext().getActionEngine().runAction(action);
244 }
245
246
247
248
249 private void reloadUI() {
250 getContext().getMainUI().getHandler().reloadUI();
251 }
252
253 }