1 package fr.ifremer.reefdb.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.quadrige3.core.config.QuadrigeConfigurationOption;
28 import fr.ifremer.quadrige3.core.config.QuadrigeCoreConfigurationOption;
29 import fr.ifremer.quadrige3.core.security.QuadrigeUserAuthority;
30 import fr.ifremer.quadrige3.ui.swing.table.editor.DatePatternCellEditor;
31 import fr.ifremer.quadrige3.ui.swing.table.renderer.CheckBoxRenderer;
32 import fr.ifremer.reefdb.config.ReefDbConfiguration;
33 import fr.ifremer.reefdb.config.ReefDbConfigurationOption;
34 import fr.ifremer.reefdb.config.ReefDbReadOnlyConfigurationOption;
35 import fr.ifremer.reefdb.config.ReefDbSecuredConfigurationOption;
36 import fr.ifremer.reefdb.ui.swing.ReefDbUIContext;
37 import fr.ifremer.reefdb.ui.swing.action.GoToPreviousScreenAction;
38 import fr.ifremer.reefdb.ui.swing.action.ReloadApplicationAction;
39 import fr.ifremer.reefdb.ui.swing.util.AbstractReefDbUIHandler;
40 import jaxx.runtime.SwingUtil;
41 import jaxx.runtime.swing.config.ConfigUI;
42 import jaxx.runtime.swing.config.ConfigUIHelper;
43 import jaxx.runtime.swing.config.model.MainCallBackFinalizer;
44 import org.apache.commons.logging.Log;
45 import org.apache.commons.logging.LogFactory;
46
47 import javax.swing.DefaultCellEditor;
48 import javax.swing.JComponent;
49 import javax.swing.JTextField;
50 import java.awt.BorderLayout;
51 import java.util.List;
52
53 import static org.nuiton.i18n.I18n.n;
54 import static org.nuiton.i18n.I18n.t;
55
56
57
58
59
60
61 public class ReefDbConfigUIHandler extends AbstractReefDbUIHandler<ReefDbUIContext, ReefDbConfigUI> {
62
63
64
65
66 private static final Log LOG = LogFactory.getLog(ReefDbConfigUIHandler.class);
67
68
69
70
71 public static final String CALLBACK_APPLICATION = "application";
72
73
74
75
76 public static final String CALLBACK_UI = "ui";
77
78
79
80 @Override
81 public void beforeInit(ReefDbConfigUI ui) {
82 super.beforeInit(ui);
83
84 ui.setContextValue(SwingUtil.createActionIcon("config"));
85
86 }
87
88
89
90
91 @Override
92 public void afterInit(ReefDbConfigUI ui) {
93
94 initUI(ui);
95
96 getContext().getSwingSession().addUnsavedRootComponentByName(ui.getName());
97
98 ReefDbConfiguration config = getConfig();
99
100 ConfigUIHelper helper = new ConfigUIHelper(config.getApplicationConfig(), config.getApplicationConfig(), config.getConfigFile());
101
102 helper.registerCallBack(
103 CALLBACK_UI, n("reefdb.config.action.reload.ui"),
104 SwingUtil.createActionIcon("reload-ui"),
105 this::reloadUI
106 ).registerCallBack(
107 CALLBACK_APPLICATION, n("reefdb.config.action.reload.application"),
108 SwingUtil.createActionIcon("reload-application"),
109 this::reloadApplication
110 )
111
112
113
114
115
116
117
118
119
120 ;
121
122
123
124
125
126
127
128
129
130
131
132
133
134 List<QuadrigeUserAuthority> neededRoles = Lists.newArrayList(QuadrigeUserAuthority.LOCAL_ADMIN, QuadrigeUserAuthority.ADMIN);
135 helper.addCategory(n("reefdb.config.category.data"),
136 n("reefdb.config.category.data.description"),
137 CALLBACK_APPLICATION)
138
139 .addOption(new ReefDbSecuredConfigurationOption(QuadrigeCoreConfigurationOption.AUTHENTICATION_INTRANET_SITE_URL, neededRoles))
140 .setOptionEditor(new DefaultCellEditor(new JTextField()))
141 .setOptionShortLabel(t("reefdb.config.option.authentication.intranet.site.url.shortLabel"))
142 .addOption(new ReefDbSecuredConfigurationOption(QuadrigeCoreConfigurationOption.AUTHENTICATION_EXTRANET_SITE_URL, neededRoles))
143 .setOptionShortLabel(t("reefdb.config.option.authentication.extranet.site.url.shortLabel"))
144 .addOption(new ReefDbSecuredConfigurationOption(QuadrigeConfigurationOption.SYNCHRONIZATION_SITE_URL, neededRoles))
145 .setOptionShortLabel(t("reefdb.config.option.synchronization.site.url.shortLabel"))
146 .addOption(new ReefDbReadOnlyConfigurationOption(ReefDbConfigurationOption.PMFM_ID_DEPTH_VALUES))
147 .setOptionShortLabel(t("reefdb.config.option.pmfm.id.depthValues.shortLabel"))
148 .addOption(new ReefDbReadOnlyConfigurationOption(ReefDbConfigurationOption.PMFM_IDS_TRANSITION_LENGTH))
149 .setOptionShortLabel(t("reefdb.config.option.pmfm.ids.transitionLength.shortLabel"))
150 ;
151
152
153 helper.addCategory(n("reefdb.config.category.ui"),
154 n("reefdb.config.category.ui.description"),
155 CALLBACK_UI)
156 .addOption(ReefDbConfigurationOption.COLOR_ALTERNATE_ROW)
157 .setOptionShortLabel(t("reefdb.config.option.ui.color.alternateRow.shortLabel"))
158 .addOption(ReefDbConfigurationOption.COLOR_SELECTED_ROW)
159 .setOptionShortLabel(t("reefdb.config.option.ui.color.selectedRow.shortLabel"))
160 .addOption(ReefDbConfigurationOption.COLOR_ROW_INVALID)
161 .setOptionShortLabel(t("reefdb.config.option.ui.color.rowInvalid.shortLabel"))
162 .addOption(ReefDbConfigurationOption.COLOR_ROW_READ_ONLY)
163 .setOptionShortLabel(t("reefdb.config.option.ui.color.rowReadOnly.shortLabel"))
164 .addOption(ReefDbConfigurationOption.COLOR_CELL_WITH_VALUE)
165 .setOptionShortLabel(t("reefdb.config.option.ui.color.cellWithValue.shortLabel"))
166 .addOption(ReefDbConfigurationOption.COLOR_COMPUTED_WEIGHTS)
167 .setOptionShortLabel(t("reefdb.config.option.ui.color.computedWeights.shortLabel"))
168 .addOption(ReefDbConfigurationOption.COLOR_BLOCKING_LAYER)
169 .setOptionShortLabel(t("reefdb.config.option.ui.color.blockingLayer.shortLabel"))
170 .addOption(ReefDbConfigurationOption.COLOR_SELECTED_CELL)
171 .setOptionShortLabel(t("reefdb.config.option.ui.color.selectedCell.shortLabel"))
172 .addOption(ReefDbConfigurationOption.DATE_FORMAT).setOptionEditor(new DatePatternCellEditor())
173 .setOptionShortLabel(t("reefdb.config.option.ui.dateFormat.shortLabel"))
174 .addOption(ReefDbConfigurationOption.DATE_TIME_FORMAT).setOptionEditor(new DatePatternCellEditor())
175 .setOptionShortLabel(t("reefdb.config.option.ui.dateTimeFormat.shortLabel"))
176 .addOption(ReefDbConfigurationOption.TABLES_CHECKBOX).setOptionRenderer(new CheckBoxRenderer())
177 .setOptionShortLabel(t("reefdb.config.option.ui.table.showCheckbox.shortLabel"));
178
179
180
181
182
183
184
185
186
187
188 helper.addCategory(n("reefdb.config.category.technical"),
189 n("reefdb.config.category.technical.description"), CALLBACK_APPLICATION)
190 .addOption(ReefDbConfigurationOption.BASEDIR)
191 .setOptionShortLabel(t("reefdb.config.option.basedir.shortLabel"))
192 .addOption(QuadrigeConfigurationOption.DATA_DIRECTORY)
193 .setOptionShortLabel(t("reefdb.config.option.data.directory.shortLabel"))
194 .addOption(QuadrigeConfigurationOption.TMP_DIRECTORY)
195 .setOptionShortLabel(t("reefdb.config.option.tmp.directory.shortLabel"))
196 .addOption(QuadrigeConfigurationOption.I18N_DIRECTORY)
197 .setOptionShortLabel(t("reefdb.config.option.i18n.directory.shortLabel"))
198 .addOption(ReefDbConfigurationOption.HELP_DIRECTORY)
199 .setOptionShortLabel(t("reefdb.config.option.help.directory.shortLabel"))
200 .addOption(QuadrigeCoreConfigurationOption.CONFIG_DIRECTORY)
201 .setOptionShortLabel(t("reefdb.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(ReefDbConfigurationOption.DB_BACKUP_EXTERNAL_DIRECTORY)
209 .setOptionShortLabel(t("reefdb.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(ReefDbConfigurationOption.UI_CONFIG_FILE)
215 .setOptionShortLabel(t("reefdb.config.option.ui.config.file.shortLabel"))
216 .addOption(ReefDbConfigurationOption.SITE_URL)
217 .setOptionShortLabel(t("reefdb.config.option.site.url.shortLabel"))
218 .addOption(QuadrigeCoreConfigurationOption.UPDATE_APPLICATION_URL)
219 .setOptionShortLabel(t("reefdb.config.option.update.application.url.shortLabel"))
220 .addOption(QuadrigeCoreConfigurationOption.UPDATE_DATA_URL)
221 .setOptionShortLabel(t("reefdb.config.option.update.data.url.shortLabel"));
222
223
224 helper.setFinalizer(new MainCallBackFinalizer(CALLBACK_APPLICATION));
225
226 helper.setCloseAction(() -> getContext().getActionEngine().runInternalAction(
227 ReefDbConfigUIHandler.this,
228 GoToPreviousScreenAction.class));
229 ConfigUI configUI = helper.buildUI(
230 getUI(),
231 n("reefdb.config.category.data"));
232
233
234 configUI.getHandler().setTopContainer(getUI());
235 getUI().add(configUI, BorderLayout.CENTER);
236 }
237
238
239
240
241 @Override
242 protected JComponent getComponentToFocus() {
243 return getUI();
244 }
245
246
247
248
249 protected void reloadApplication() {
250 ReloadApplicationAction action = getContext().getActionFactory().createLogicAction(this, ReloadApplicationAction.class);
251 getContext().getActionEngine().runAction(action);
252 }
253
254
255
256
257 protected void reloadUI() {
258 getContext().getMainUI().getHandler().reloadUI();
259 }
260
261
262
263
264
265
266 }