Observe-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- 7199 discussions
[Git][ultreiaio/ird-observe][develop] Fix navigation tree scrollPane and his jaxx design
by Tony CHEMIT 05 Apr '18
by Tony CHEMIT 05 Apr '18
05 Apr '18
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
4d78fa47 by Tony CHEMIT at 2018-04-05T21:21:34Z
Fix navigation tree scrollPane and his jaxx design
- - - - -
21 changed files:
- client/src/main/java/fr/ird/observe/client/ui/ObserveMainUI.jaxx
- client/src/main/java/fr/ird/observe/client/ui/ObserveMainUIInitializer.java
- client/src/main/java/fr/ird/observe/client/ui/actions/content/CloseAndCreateUIAction.java
- client/src/main/java/fr/ird/observe/client/ui/actions/content/CloseOpenUIAction.java
- client/src/main/java/fr/ird/observe/client/ui/actions/content/GoDownUIAction.java
- client/src/main/java/fr/ird/observe/client/ui/actions/content/GoUpUIAction.java
- client/src/main/java/fr/ird/observe/client/ui/actions/content/MoveActivityLonglinesUIAction.java
- client/src/main/java/fr/ird/observe/client/ui/actions/content/MoveActivitySeinesUIAction.java
- client/src/main/java/fr/ird/observe/client/ui/actions/content/MoveMultipleDataUIActionSupport.java
- client/src/main/java/fr/ird/observe/client/ui/actions/content/MoveRoutesUIAction.java
- client/src/main/java/fr/ird/observe/client/ui/actions/content/MoveSingleDataUIActionSupport.java
- client/src/main/java/fr/ird/observe/client/ui/actions/content/MoveTripUIAction.java
- client/src/main/java/fr/ird/observe/client/ui/actions/content/MoveTripsUIAction.java
- client/src/main/java/fr/ird/observe/client/ui/actions/content/ReOpenUIAction.java
- client/src/main/java/fr/ird/observe/client/ui/actions/content/ResetEditUIAction.java
- client/src/main/java/fr/ird/observe/client/ui/actions/content/SelectNodeUIAction.java
- client/src/main/java/fr/ird/observe/client/ui/actions/main/global/ChangeFocusGlobalUIAction.java
- client/src/main/java/fr/ird/observe/client/ui/actions/main/menu/navigation/GotoActionSupport.java
- client/src/main/java/fr/ird/observe/client/ui/actions/main/menu/storage/ReloadStorageAction.java
- client/src/main/java/fr/ird/observe/client/ui/content/ContentUIHandler.java
- client/src/main/java/fr/ird/observe/client/ui/content/ref/ReferenceHomeUIHandler.java
Changes:
=====================================
client/src/main/java/fr/ird/observe/client/ui/ObserveMainUI.jaxx
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/ObserveMainUI.jaxx
+++ b/client/src/main/java/fr/ird/observe/client/ui/ObserveMainUI.jaxx
@@ -78,9 +78,6 @@
fr.ird.observe.client.ui.content.ContentUIManager
fr.ird.observe.client.ui.content.ObserveActionMap
fr.ird.observe.client.ui.tree.navigation.NavigationUI
- fr.ird.observe.client.ui.tree.navigation.NavigationTree
- fr.ird.observe.client.ui.tree.navigation.NavigationTreeModel
- fr.ird.observe.client.ui.tree.navigation.NavigationTreeModel
fr.ird.observe.client.ui.util.UIHelper
fr.ird.observe.client.ui.util.ObserveBlockingLayerUI
@@ -255,7 +252,6 @@ protected void finalize() throws Throwable {
<JXTitledPanel id='navigationView'>
<NavigationUI id="navigationUI" initializer="new NavigationUI((JAXXContext)this)"/>
- <NavigationTree id="navigation" initializer="navigationUI.getTree()"/>
</JXTitledPanel>
<!-- right : (content + messages) -->
=====================================
client/src/main/java/fr/ird/observe/client/ui/ObserveMainUIInitializer.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/ObserveMainUIInitializer.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/ObserveMainUIInitializer.java
@@ -153,7 +153,7 @@ public class ObserveMainUIInitializer {
// set fullscreen propery on main ui
ui.getGraphicsConfiguration().getDevice().setFullScreenWindow(config.isFullScreen() ? ui : null);
- new ObserveNavigationTreeShowPopupAction(ui.getNavigation(), ui.getNavigationUI(), ui.getNavigationPopup());
+ new ObserveNavigationTreeShowPopupAction(ui.getNavigationUI().getTree(), ui.getNavigationUI(), ui.getNavigationPopup());
return ui;
}
@@ -180,7 +180,7 @@ public class ObserveMainUIInitializer {
log.debug("No open Data source.");
return;
}
- if (ui.getNavigation().isSelectionEmpty()) {
+ if (ui.getNavigationUI().getTree().isSelectionEmpty()) {
log.debug("No selection, show empty panel...");
boolean foundEmptySelection = false;
@@ -260,12 +260,12 @@ public class ObserveMainUIInitializer {
JComponent focusOwner;
if (ui.getFocusOwner() == ui) {
focusOnNavigation = true;
- focusOwner = ui.getNavigation();
+ focusOwner = ui.getNavigationUI().getTree();
} else {
focusOwner = (JComponent) ui.getFocusOwner();
if (focusOwner != null) {
- if (ui.getNavigation().equals(focusOwner)) {
+ if (ui.getNavigationUI().getTree().equals(focusOwner)) {
focusOnNavigation = true;
}
if (ui.getNavigationUI().equals(focusOwner)) {
@@ -277,7 +277,7 @@ public class ObserveMainUIInitializer {
if (!focusOnNavigation) {
Container focusOwnerParent = focusOwner.getParent();
while (focusOwnerParent != null) {
- if (ui.getNavigation().equals(focusOwnerParent)) {
+ if (ui.getNavigationUI().getTree().equals(focusOwnerParent)) {
focusOnNavigation = true;
break;
}
@@ -337,7 +337,7 @@ public class ObserveMainUIInitializer {
oldMode = ui.getModel().getMode();
- ids = ui.getNavigation().getSelectedIds();
+ ids = ui.getNavigationUI().getTree().getSelectedIds();
ErrorDialogUI.init(null);
@@ -368,7 +368,7 @@ public class ObserveMainUIInitializer {
if (oldMode == ObserveUIMode.DB) {
// on met à jour le modèle de navigation
- NavigationTreeModel treeModel = ui.getNavigation().getTreeModel();
+ NavigationTreeModel treeModel = ui.getNavigationUI().getTree().getTreeModel();
treeModel.load(config);
treeModel.populate();
@@ -378,7 +378,7 @@ public class ObserveMainUIInitializer {
// selection du noeud d'ouverture (le noeud precedemment selectionne,
// ou le noeud le plus ouvert
// ou le premier program si aucune donnée ouverte)
- ui.getNavigation().selectInitialNode();
+ ui.getNavigationUI().getTree().selectInitialNode();
}
// show ui
@@ -405,7 +405,7 @@ public class ObserveMainUIInitializer {
// ajout d'un ecouteur sur la navigation pour toujours mettre la scrollbar
// tout à droite a chaque selection
- ui.getNavigation().addTreeSelectionListener(this::changeNavigationNode);
+ ui.getNavigationUI().getTree().addTreeSelectionListener(this::changeNavigationNode);
SwingValidatorUtil.installUI(ui.getErrorTable(), new ObserveValidatorMessageTableRenderer());
@@ -433,12 +433,12 @@ public class ObserveMainUIInitializer {
}
};
ui.getNavigationView().addMouseListener(mouseAdapter);
- ui.getNavigation().addMouseListener(mouseAdapter);
+ ui.getNavigationUI().getTree().addMouseListener(mouseAdapter);
ui.getNavigationUI().addMouseListener(mouseAdapter);
init(ui.getSplitpane());
init(ui.getSplitpane2());
- init(ui.getNavigation());
+ init(ui.getNavigationUI().getTree());
ui.getNavigationView().setRightDecoration(ui.getNavigationUI().getToolbar());
// ui.getNavigationView().addComponentListener(new ComponentAdapter() {
@@ -555,7 +555,7 @@ public class ObserveMainUIInitializer {
ui.getContextValue(SwingValidatorMessageTableModel.class).clear();
// clean tree model
- NavigationTree tree = ui.getNavigation();
+ NavigationTree tree = ui.getNavigationUI().getTree();
tree.clearModel();
progressModel.incrementsCurrentStep();
@@ -574,7 +574,7 @@ public class ObserveMainUIInitializer {
*/
public void loadNavigationUI(ProgressModel progressModel) {
- NavigationTree tree = ui.getNavigation();
+ NavigationTree tree = ui.getNavigationUI().getTree();
NavigationTreeModel treeModel = tree.getTreeModel();
treeModel.populate();
=====================================
client/src/main/java/fr/ird/observe/client/ui/actions/content/CloseAndCreateUIAction.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/actions/content/CloseAndCreateUIAction.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/actions/content/CloseAndCreateUIAction.java
@@ -78,7 +78,7 @@ public class CloseAndCreateUIAction extends AbstractContentUIAction {
return;
}
- NavigationTree tree = getMainUI().getNavigation();
+ NavigationTree tree = getMainUI().getNavigationUI().getTree();
boolean wasCollapsed = isOpenActivityNodeCollapsed(tree, dataContext);
@@ -120,7 +120,7 @@ public class CloseAndCreateUIAction extends AbstractContentUIAction {
return;
}
- NavigationTree tree = getMainUI().getNavigation();
+ NavigationTree tree = getMainUI().getNavigationUI().getTree();
boolean wasCollapsed = isOpenActivityNodeCollapsed(tree, dataContext);
=====================================
client/src/main/java/fr/ird/observe/client/ui/actions/content/CloseOpenUIAction.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/actions/content/CloseOpenUIAction.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/actions/content/CloseOpenUIAction.java
@@ -102,7 +102,7 @@ public class CloseOpenUIAction extends AbstractContentUIAction {
private void closeData(ObserveSwingApplicationContext applicationContext, ContentUI<?, ?> ui, String id) {
- NavigationTree tree = getMainUI().getNavigation();
+ NavigationTree tree = getMainUI().getNavigationUI().getTree();
NavigationTreeNodeSupport selectedNode = tree.getSelectedNode();
NavigationTreeNodeSupport node = tree.getChild(selectedNode, id);
=====================================
client/src/main/java/fr/ird/observe/client/ui/actions/content/GoDownUIAction.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/actions/content/GoDownUIAction.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/actions/content/GoDownUIAction.java
@@ -71,7 +71,7 @@ public class GoDownUIAction extends AbstractContentUIAction {
public void updateAction(JAXXObject ui, AbstractButton editor) {
ObserveMainUI mainUI = getMainUI();
- NavigationTree tree = getMainUI().getNavigation();
+ NavigationTree tree = getMainUI().getNavigationUI().getTree();
JPopupMenu scopePopup = mainUI.getScopeDownPopup();
SelectNodeUIAction action = (SelectNodeUIAction) mainUI.getObserveActionMap().get(SelectNodeUIAction.ACTION_NAME);
=====================================
client/src/main/java/fr/ird/observe/client/ui/actions/content/GoUpUIAction.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/actions/content/GoUpUIAction.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/actions/content/GoUpUIAction.java
@@ -73,7 +73,7 @@ public class GoUpUIAction extends AbstractContentUIAction {
@Override
public void updateAction(JAXXObject ui, AbstractButton editor) {
- NavigationTree treeHelper = getMainUI().getNavigation();
+ NavigationTree treeHelper = getMainUI().getNavigationUI().getTree();
NavigationTreeNodeSupport<?> node;
=====================================
client/src/main/java/fr/ird/observe/client/ui/actions/content/MoveActivityLonglinesUIAction.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/actions/content/MoveActivityLonglinesUIAction.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/actions/content/MoveActivityLonglinesUIAction.java
@@ -73,7 +73,7 @@ public class MoveActivityLonglinesUIAction extends MoveMultipleDataUIActionSuppo
ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get();
ObserveOpenDataManager openDataManager = applicationContext.getOpenDataManager();
- NavigationTree treeHelper = getMainUI().getNavigation();
+ NavigationTree treeHelper = getMainUI().getNavigationUI().getTree();
NavigationTreeNodeSupport oldTripLonglineNode = oldActivitiesNode.getParent();
NavigationTreeNodeSupport programNode = oldTripLonglineNode.getParent();
=====================================
client/src/main/java/fr/ird/observe/client/ui/actions/content/MoveActivitySeinesUIAction.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/actions/content/MoveActivitySeinesUIAction.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/actions/content/MoveActivitySeinesUIAction.java
@@ -73,7 +73,7 @@ public class MoveActivitySeinesUIAction extends MoveMultipleDataUIActionSupport<
ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get();
ObserveOpenDataManager openDataManager = applicationContext.getOpenDataManager();
- NavigationTree treeHelper = getMainUI().getNavigation();
+ NavigationTree treeHelper = getMainUI().getNavigationUI().getTree();
NavigationTreeNodeSupport oldRouteNode = oldParentNode.getParent();
NavigationTreeNodeSupport routesNode = oldRouteNode.getParent();
=====================================
client/src/main/java/fr/ird/observe/client/ui/actions/content/MoveMultipleDataUIActionSupport.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/actions/content/MoveMultipleDataUIActionSupport.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/actions/content/MoveMultipleDataUIActionSupport.java
@@ -71,7 +71,7 @@ public abstract class MoveMultipleDataUIActionSupport<U extends ContentListUI<?,
@SuppressWarnings("unchecked") U ui = (U) ui1;
- NavigationTree treeHelper = getMainUI().getNavigation();
+ NavigationTree treeHelper = getMainUI().getNavigationUI().getTree();
NavigationTreeNodeSupport node = treeHelper.getSelectedNode();
NavigationTreeNodeSupport oldParentNode = node.getParent().isRoot() ? node : node.getParent();
=====================================
client/src/main/java/fr/ird/observe/client/ui/actions/content/MoveRoutesUIAction.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/actions/content/MoveRoutesUIAction.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/actions/content/MoveRoutesUIAction.java
@@ -72,7 +72,7 @@ public class MoveRoutesUIAction extends MoveMultipleDataUIActionSupport<RoutesUI
void updateUI(RoutesUI ui, NavigationTreeNodeSupport oldRoutesNode, String tripSeineId, ImmutableSet<String> routeIds, List<Integer> positions) {
ObserveOpenDataManager openDataManager = getOpenDataManager();
- NavigationTree treeHelper = getMainUI().getNavigation();
+ NavigationTree treeHelper = getMainUI().getNavigationUI().getTree();
NavigationTreeNodeSupport oldTripSeineNode = oldRoutesNode.getParent();
NavigationTreeNodeSupport programNode = oldTripSeineNode.getParent();
=====================================
client/src/main/java/fr/ird/observe/client/ui/actions/content/MoveSingleDataUIActionSupport.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/actions/content/MoveSingleDataUIActionSupport.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/actions/content/MoveSingleDataUIActionSupport.java
@@ -50,7 +50,7 @@ public abstract class MoveSingleDataUIActionSupport extends UIActionSupport {
@Override
public final void actionPerformed(ActionEvent e) {
- NavigationTree treeHelper = getMainUI().getNavigation();
+ NavigationTree treeHelper = getMainUI().getNavigationUI().getTree();
NavigationTreeNodeSupport node = treeHelper.getSelectedNode();
NavigationTreeNodeSupport oldParentNode = node.getParent().getParent().equals(node.getRoot()) ? node.getParent() : node.getParent().getParent();
Optional<String> optionalNewParentId = getNewParentId(getMainUI(), oldParentNode);
@@ -62,7 +62,7 @@ public abstract class MoveSingleDataUIActionSupport extends UIActionSupport {
private void apply(NavigationTreeNodeSupport oldParentNode, String dataId, String newParentId) {
- NavigationTree treeHelper = getMainUI().getNavigation();
+ NavigationTree treeHelper = getMainUI().getNavigationUI().getTree();
NavigationTreeNodeSupport node = treeHelper.getSelectedNode();
NavigationTreeNodeSupport grandParentNode = oldParentNode.getParent();
=====================================
client/src/main/java/fr/ird/observe/client/ui/actions/content/MoveTripUIAction.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/actions/content/MoveTripUIAction.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/actions/content/MoveTripUIAction.java
@@ -94,7 +94,7 @@ public abstract class MoveTripUIAction extends MoveSingleDataUIActionSupport {
static Optional<String> chooseNewProgram(ObserveMainUI mainUI, GearType gearType, String oldProgramId) {
- NavigationTree treeHelper = mainUI.getNavigation();
+ NavigationTree treeHelper = mainUI.getNavigationUI().getTree();
// racine
NavigationTreeNodeSupport rootNode = treeHelper.getRootNode();
=====================================
client/src/main/java/fr/ird/observe/client/ui/actions/content/MoveTripsUIAction.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/actions/content/MoveTripsUIAction.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/actions/content/MoveTripsUIAction.java
@@ -77,7 +77,7 @@ public abstract class MoveTripsUIAction<U extends ContentListUI<?, ?, ?, ?>> ext
ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get();
ObserveOpenDataManager openDataManager = applicationContext.getOpenDataManager();
- NavigationTree treeHelper = getMainUI().getNavigation();
+ NavigationTree treeHelper = getMainUI().getNavigationUI().getTree();
NavigationTreeNodeSupport rootNode = treeHelper.getRootNode();
NavigationTreeNodeSupport newProgramNode = treeHelper.getChild(rootNode, newParentId);
=====================================
client/src/main/java/fr/ird/observe/client/ui/actions/content/ReOpenUIAction.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/actions/content/ReOpenUIAction.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/actions/content/ReOpenUIAction.java
@@ -70,7 +70,7 @@ public class ReOpenUIAction extends AbstractContentUIAction {
String id = selectedData.getId();
- NavigationTree tree = getMainUI().getNavigation();
+ NavigationTree tree = getMainUI().getNavigationUI().getTree();
NavigationTreeNodeSupport selectedNode = tree.getSelectedNode();
NavigationTreeNodeSupport node = tree.getChild(selectedNode, id);
=====================================
client/src/main/java/fr/ird/observe/client/ui/actions/content/ResetEditUIAction.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/actions/content/ResetEditUIAction.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/actions/content/ResetEditUIAction.java
@@ -57,7 +57,7 @@ public class ResetEditUIAction extends AbstractContentUIAction {
if (ui.getModel().isCreatingMode()) {
ui.stopEdit();
- NavigationTree tree = getMainUI().getNavigation();
+ NavigationTree tree = getMainUI().getNavigationUI().getTree();
NavigationTreeNodeSupport parentNode = tree.getSelectedNode().getParent();
tree.removeNode(tree.getSelectedNode());
tree.selectNode(parentNode);
=====================================
client/src/main/java/fr/ird/observe/client/ui/actions/content/SelectNodeUIAction.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/actions/content/SelectNodeUIAction.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/actions/content/SelectNodeUIAction.java
@@ -92,6 +92,6 @@ public class SelectNodeUIAction extends AbstractContentUIAction {
NavigationTreeNodeSupport node = (NavigationTreeNodeSupport) source.getClientProperty(NODE);
Objects.requireNonNull(node);
- SwingUtilities.invokeLater(() -> getMainUI().getNavigation().selectNode(node));
+ SwingUtilities.invokeLater(() -> getMainUI().getNavigationUI().getTree().selectNode(node));
}
}
=====================================
client/src/main/java/fr/ird/observe/client/ui/actions/main/global/ChangeFocusGlobalUIAction.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/actions/main/global/ChangeFocusGlobalUIAction.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/actions/main/global/ChangeFocusGlobalUIAction.java
@@ -76,7 +76,7 @@ public class ChangeFocusGlobalUIAction extends UIActionSupport {
log.info("Focus to navigation");
}
getMainUI().getModel().setFocusOnNavigation(true);
- focusComponent = getMainUI().getNavigation();
+ focusComponent = getMainUI().getNavigationUI().getTree();
}
SwingUtilities.invokeLater(focusComponent::requestFocusInWindow);
=====================================
client/src/main/java/fr/ird/observe/client/ui/actions/main/menu/navigation/GotoActionSupport.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/actions/main/menu/navigation/GotoActionSupport.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/actions/main/menu/navigation/GotoActionSupport.java
@@ -89,7 +89,7 @@ public abstract class GotoActionSupport extends MenuActionSupport {
return;
}
- NavigationTree navigation = getMainUI().getNavigation();
+ NavigationTree navigation = getMainUI().getNavigationUI().getTree();
getNodeToSelect(navigation, dataContext).ifPresent(navigation::selectNode);
=====================================
client/src/main/java/fr/ird/observe/client/ui/actions/main/menu/storage/ReloadStorageAction.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/actions/main/menu/storage/ReloadStorageAction.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/actions/main/menu/storage/ReloadStorageAction.java
@@ -82,7 +82,7 @@ public class ReloadStorageAction extends MenuActionSupport {
ui.getModel().setBusy(false);
- Object[] ids = ui.getNavigation().getSelectedIds();
+ Object[] ids = ui.getNavigationUI().getTree().getSelectedIds();
try {
=====================================
client/src/main/java/fr/ird/observe/client/ui/content/ContentUIHandler.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/content/ContentUIHandler.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/content/ContentUIHandler.java
@@ -222,7 +222,7 @@ public abstract class ContentUIHandler<E extends IdDto, U extends ContentUI<E, U
}
public static NavigationTree getNavigationTree() {
- return ObserveSwingApplicationContext.get().getMainUI().getNavigation();
+ return ObserveSwingApplicationContext.get().getMainUI().getNavigationUI().getTree();
}
/**
@@ -444,10 +444,10 @@ public abstract class ContentUIHandler<E extends IdDto, U extends ContentUI<E, U
if (focusOnNavigation) {
SwingUtilities.invokeLater(() -> {
Component focusOwner = mainUI.getFocusOwner();
- if (!mainUI.getNavigation().equals(focusOwner)) {
+ if (!mainUI.getNavigationUI().getTree().equals(focusOwner)) {
SwingUtilities.invokeLater(() -> {
- mainUI.getNavigation().requestFocusInWindow();
+ mainUI.getNavigationUI().getTree().requestFocusInWindow();
log.debug("Focus old owner: " + focusOwner);
log.debug("Focus new owner: " + mainUI.getFocusOwner());
=====================================
client/src/main/java/fr/ird/observe/client/ui/content/ref/ReferenceHomeUIHandler.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/content/ref/ReferenceHomeUIHandler.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/content/ref/ReferenceHomeUIHandler.java
@@ -68,7 +68,7 @@ public class ReferenceHomeUIHandler extends ContentUIHandler<ProgramDto, Referen
JPanel panel = ui.getBody();
String nodeName = ui.getModel().getNodeName();
- NavigationTree navigation = ObserveSwingApplicationContext.get().getMainUI().getNavigation();
+ NavigationTree navigation = ObserveSwingApplicationContext.get().getMainUI().getNavigationUI().getTree();
NavigationTreeNodeSupport<?> referentialNode = navigation.getReferentialNode(nodeName);
for (Class<? extends ReferentialDto> type : ui.getModel().getTypes()) {
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/4d78fa47e770d7c68d510a5ee8d…
---
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/4d78fa47e770d7c68d510a5ee8d…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][feature/v8_maquette] Ajout de la donnée observe_longline.SampleLogbook (see #913) Maquettage
by Tony CHEMIT 04 Apr '18
by Tony CHEMIT 04 Apr '18
04 Apr '18
Tony CHEMIT pushed to branch feature/v8_maquette at ultreiaio / ird-observe
Commits:
2dc500e7 by Tony CHEMIT at 2018-04-04T18:08:41Z
Ajout de la donnée observe_longline.SampleLogbook (see #913) Maquettage
- - - - -
30 changed files:
- client/src/main/java/fr/ird/observe/client/ui/content/ContentUIHandler.java
- client/src/main/java/fr/ird/observe/client/ui/content/ContentUIModel.java
- client/src/main/java/fr/ird/observe/client/ui/content/data/longline/LandingUI.jcss
- + client/src/main/java/fr/ird/observe/client/ui/content/data/longline/SampleLogbookUI.jaxx
- + client/src/main/java/fr/ird/observe/client/ui/content/data/longline/SampleLogbookUI.jcss
- + client/src/main/java/fr/ird/observe/client/ui/content/data/longline/SampleLogbookUIHandler.java
- + client/src/main/java/fr/ird/observe/client/ui/content/data/longline/SampleLogbookUIModel.java
- + client/src/main/java/fr/ird/observe/client/ui/content/data/longline/SamplePartLogbookUI.jaxx
- + client/src/main/java/fr/ird/observe/client/ui/content/data/longline/SamplePartLogbookUI.jcss
- + client/src/main/java/fr/ird/observe/client/ui/content/data/longline/SamplePartLogbookUIHandler.java
- + client/src/main/java/fr/ird/observe/client/ui/content/data/longline/SamplePartLogbookUIModel.java
- client/src/main/java/fr/ird/observe/client/ui/content/table/ContentTableModel.java
- client/src/main/java/fr/ird/observe/client/ui/tree/navigation/nodes/longline/ActivityLonglineNavigationTreeNode.java
- + client/src/main/java/fr/ird/observe/client/ui/tree/navigation/nodes/longline/ActivitySampleLogbookLonglineNavigationTreeNode.java
- client/src/main/java/fr/ird/observe/client/ui/tree/navigation/nodes/longline/TripLonglineNavigationTreeNode.java
- + client/src/main/java/fr/ird/observe/client/ui/tree/navigation/nodes/longline/TripSampleLogbookLonglineNavigationTreeNode.java
- client/src/main/resources/i18n/client_en_GB.properties
- client/src/main/resources/i18n/client_es_ES.properties
- client/src/main/resources/i18n/client_fr_FR.properties
- + dto/src/main/java/fr/ird/observe/dto/data/longline/SampleLogbookDto.java
- dto/src/main/java/fr/ird/observe/dto/decoration/DecoratorService.java
- dto/src/main/models/Observe.model
- dto/src/main/resources/i18n/dto_en_GB.properties
- dto/src/main/resources/i18n/dto_es_ES.properties
- dto/src/main/resources/i18n/dto_fr_FR.properties
- + persistence/src/main/java/fr/ird/observe/binder/data/longline/SampleLogbookEntityDtoBinder.java
- + persistence/src/main/java/fr/ird/observe/binder/data/longline/SamplePartLogbookEntityDtoBinder.java
- + validation/src/main/resources/fr/ird/observe/dto/data/longline/SampleLogbookDto-create-error-validation.xml
- + validation/src/main/resources/fr/ird/observe/dto/data/longline/SampleLogbookDto-update-error-validation.xml
- + validation/src/main/resources/fr/ird/observe/dto/data/longline/SamplePartLogbookDto-update-error-validation.xml
The diff was not included because it is too large.
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/2dc500e7dae6137fa34b5d6d868…
---
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/2dc500e7dae6137fa34b5d6d868…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][develop] Deleted 4 commits: Ajout de la donnée observe_longline.ActivityLogbook (See #907) Maquettage
by Tony CHEMIT 03 Apr '18
by Tony CHEMIT 03 Apr '18
03 Apr '18
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
WARNING: The push did not contain any new commits, but force pushed to delete the commits and changes below.
Deleted commits:
30fedc4d by Tony CHEMIT at 2018-04-03T20:13:33Z
Ajout de la donnée observe_longline.ActivityLogbook (See #907) Maquettage
- - - - -
e6646c3e by Tony CHEMIT at 2018-04-03T20:13:33Z
Ajout de la donnée observe_longline.SetLogbook (See #909)
- - - - -
018ebdbf by Tony CHEMIT at 2018-04-03T20:13:33Z
Ajout de la donnée observe_longline.CatchLogbook (See #911) Maquettage
- - - - -
355b9469 by Tony CHEMIT at 2018-04-03T20:13:33Z
update i18n (see #911, see #907, see #909)
- - - - -
15 changed files:
- + client/src/main/java/fr/ird/observe/client/ui/content/data/longline/ActivityLonglineLogbookUI.jaxx
- + client/src/main/java/fr/ird/observe/client/ui/content/data/longline/ActivityLonglineLogbookUI.jcss
- + client/src/main/java/fr/ird/observe/client/ui/content/data/longline/ActivityLonglineLogbookUIHandler.java
- + client/src/main/java/fr/ird/observe/client/ui/content/data/longline/ActivityLonglineLogbookUIModel.java
- + client/src/main/java/fr/ird/observe/client/ui/content/data/longline/CatchLonglineLogbookUI.jaxx
- + client/src/main/java/fr/ird/observe/client/ui/content/data/longline/CatchLonglineLogbookUI.jcss
- + client/src/main/java/fr/ird/observe/client/ui/content/data/longline/CatchLonglineLogbookUIHandler.java
- + client/src/main/java/fr/ird/observe/client/ui/content/data/longline/CatchLonglineLogbookUIModel.java
- + client/src/main/java/fr/ird/observe/client/ui/content/data/longline/SetLonglineLogbookUI.jaxx
- + client/src/main/java/fr/ird/observe/client/ui/content/data/longline/SetLonglineLogbookUI.jcss
- + client/src/main/java/fr/ird/observe/client/ui/content/data/longline/SetLonglineLogbookUIHandler.java
- + client/src/main/java/fr/ird/observe/client/ui/content/data/longline/SetLonglineLogbookUIModel.java
- client/src/main/resources/i18n/client_en_GB.properties
- client/src/main/resources/i18n/client_es_ES.properties
- client/src/main/resources/i18n/client_fr_FR.properties
Changes:
=====================================
client/src/main/java/fr/ird/observe/client/ui/content/data/longline/ActivityLonglineLogbookUI.jaxx
=====================================
--- /dev/null
+++ b/client/src/main/java/fr/ird/observe/client/ui/content/data/longline/ActivityLonglineLogbookUI.jaxx
@@ -0,0 +1,192 @@
+<!--
+ #%L
+ ObServe :: Client
+ %%
+ Copyright (C) 2008 - 2017 IRD, Code Lutin, Ultreia.io
+ %%
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as
+ published by the Free Software Foundation, either version 3 of the
+ License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with this program. If not, see
+ <http://www.gnu.org/licenses/gpl-3.0.html>.
+ #L%
+ -->
+
+<fr.ird.observe.client.ui.content.open.ContentOpenableUI
+ i18nFormat="observe.common.ActivityLonglineDto.%s"
+ superGenericType='ActivityLonglineDto, ActivityLonglineLogbookUI'
+ contentTitle='{n("observe.common.ActivityLonglineDto.title")}'>
+
+ <style source="../../Common.jcss"/>
+
+ <import>
+ fr.ird.observe.dto.data.longline.ActivityLonglineDto
+ fr.ird.observe.dto.data.longline.ActivityLonglineReference
+ fr.ird.observe.dto.data.longline.SetLonglineDto
+ fr.ird.observe.dto.referential.FpaZoneReference
+ fr.ird.observe.dto.referential.longline.VesselActivityLonglineReference
+ fr.ird.observe.dto.referential.seine.WindReference
+ fr.ird.observe.dto.referential.DataQualityReference
+
+ fr.ird.observe.client.ui.actions.content.AddActivityLonglineSetUIAction
+ fr.ird.observe.client.ui.actions.content.DeleteDataUIAction
+ fr.ird.observe.client.ui.actions.main.global.DeleteDataGlobalUIAction
+ fr.ird.observe.client.ui.actions.main.global.OpenDataGlobalUIAction
+ fr.ird.observe.client.ui.actions.main.global.CloseDataGlobalUIAction
+ fr.ird.observe.client.ui.actions.main.global.NewNextDataGlobalUIAction
+ fr.ird.observe.client.ui.util.JComment
+
+ org.nuiton.jaxx.widgets.temperature.TemperatureFormat
+ org.nuiton.jaxx.widgets.temperature.TemperatureEditor
+ org.nuiton.jaxx.widgets.temperature.TemperatureEditorConfig
+
+ org.nuiton.jaxx.widgets.number.NumberEditor
+ org.nuiton.jaxx.widgets.select.BeanComboBox
+
+ org.nuiton.jaxx.widgets.datetime.DateTimeEditor
+ org.nuiton.jaxx.widgets.gis.absolute.CoordinatesEditor
+
+ java.awt.Dimension
+
+ static fr.ird.observe.client.ui.util.UIHelper.getStringValue
+ static org.nuiton.i18n.I18n.n
+ </import>
+
+ <!-- model -->
+ <ActivityLonglineLogbookUIModel id='model'/>
+
+ <!-- edit bean -->
+ <ActivityLonglineDto id='bean'/>
+
+ <!-- validator -->
+ <BeanValidator id='validator' autoField='true' beanClass='fr.ird.observe.dto.data.longline.ActivityLonglineDto'
+ errorTableModel='{getErrorTableModel()}' context='create'>
+
+ <field name='longitude' component='coordinatesEditor'/>
+ <field name='latitude' component='coordinatesEditor'/>
+ <field name='quadrant' component='coordinatesEditor'/>
+
+ </BeanValidator>
+
+ <!-- formulaire -->
+ <JPanel id="body">
+ <Table fill='both' constraints="BorderLayout.CENTER">
+
+ <!-- date - time -->
+ <row>
+ <cell columns="2" weightx="1">
+ <DateTimeEditor id='timeStamp' constructorParams='this'/>
+ </cell>
+ </row>
+
+ <!-- position -->
+ <row>
+ <cell columns="2" weightx="1">
+ <CoordinatesEditor id='coordinatesEditor' constructorParams='this'/>
+ </cell>
+ </row>
+
+ <!-- activity vessel -->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='vesselActivityLonglineLabel'/>
+ </cell>
+ <cell anchor='east' fill="both">
+ <BeanComboBox id='vesselActivityLongline' genericType='VesselActivityLonglineReference'
+ constructorParams='this'/>
+ </cell>
+ </row>
+
+ <!--zone FPA-->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='fpaZoneLabel'/>
+ </cell>
+ <cell anchor='east' fill="both">
+ <BeanComboBox id='fpaZone' genericType='FpaZoneReference' constructorParams='this'/>
+ </cell>
+ </row>
+
+ <!-- vitesse vessel -->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='vesselSpeedLabel'/>
+ </cell>
+ <cell anchor='east' weightx="1" fill="both">
+ <NumberEditor id='vesselSpeed' constructorParams='this' styleClass="float2"/>
+ </cell>
+ </row>
+
+ <!-- température de surface -->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='seaSurfaceTemperatureLabel'/>
+ </cell>
+ <cell anchor='east' fill="both">
+ <TemperatureEditor id='seaSurfaceTemperature' constructorParams='this'/>
+ </cell>
+ </row>
+
+ <!-- vent beaufort -->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='windLabel'/>
+ </cell>
+ <cell anchor='east' fill="both">
+ <BeanComboBox id='wind' genericType='WindReference' constructorParams='this'/>
+ </cell>
+ </row>
+
+ <!-- dataQuality -->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='dataQualityLabel'/>
+ </cell>
+ <cell anchor='east' weightx="1" fill="both">
+ <BeanComboBox id='dataQuality' genericType='DataQualityReference' constructorParams='this'/>
+ </cell>
+ </row>
+
+ <!-- activité observation -->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='relatedObservedActivityLabel'/>
+ </cell>
+ <cell anchor='east' fill="both">
+ <BeanComboBox id='relatedObservedActivity' genericType='ActivityLonglineReference' constructorParams='this'/>
+ </cell>
+ </row>
+
+ <!-- comment -->
+ <row>
+ <cell columns='2' weighty="1">
+ <JComment id="comment"/>
+ </cell>
+ </row>
+ </Table>
+ </JPanel>
+
+ <!-- surcharge des actions (pour appliquer la css specifique) -->
+ <JButton id='delete'/>
+ <JButton id='reopen'/>
+ <JButton id='close'/>
+ <JButton id='closeAndCreate'/>
+ <JButton id='actionDown'/>
+
+ <Table id='extraActions' fill="both" weightx="1" insets='2'>
+ <row>
+ <cell weightx="0.5" fill="both">
+ <JButton id='addSet'/>
+ </cell>
+ </row>
+ </Table>
+
+</fr.ird.observe.client.ui.content.open.ContentOpenableUI>
=====================================
client/src/main/java/fr/ird/observe/client/ui/content/data/longline/ActivityLonglineLogbookUI.jcss
=====================================
--- /dev/null
+++ b/client/src/main/java/fr/ird/observe/client/ui/content/data/longline/ActivityLonglineLogbookUI.jcss
@@ -0,0 +1,99 @@
+/*
+ * #%L
+ * ObServe :: Client
+ * %%
+ * Copyright (C) 2008 - 2017 IRD, Code Lutin, Ultreia.io
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+#model {
+ editable:true;
+ modified:{validator.isChanged()};
+ valid:{validator.isValid()};
+}
+
+#body {
+ layout:{new BorderLayout()};
+}
+
+#extraActions {
+ visible:{model.isUpdatingMode()};
+}
+
+#timeStamp {
+ propertyDate:{ActivityLonglineDto.PROPERTY_TIME_STAMP};
+ propertyDayDate:{ActivityLonglineUIModel.PROPERTY_DATE};
+ propertyTimeDate:{ActivityLonglineUIModel.PROPERTY_TIME};
+ date:{bean.getTimeStamp()};
+}
+
+#coordinatesEditor {
+ propertyLatitude:{ActivityLonglineDto.PROPERTY_LATITUDE};
+ propertyLongitude:{ActivityLonglineDto.PROPERTY_LONGITUDE};
+ propertyQuadrant:{ActivityLonglineDto.PROPERTY_QUADRANT};
+}
+
+#vesselActivityLongline {
+ property:{ActivityLonglineDto.PROPERTY_VESSEL_ACTIVITY_LONGLINE};
+ selectedItem:{bean.getVesselActivityLongline()};
+ enabled:{!model.isUpdatingMode()};
+}
+
+#fpaZone {
+ property:{ActivityLonglineDto.PROPERTY_FPA_ZONE};
+ selectedItem:{bean.getFpaZone()};
+}
+
+#seaSurfaceTemperature {
+ format:{TemperatureFormat.C};
+ storageTemperature:{bean.getSeaSurfaceTemperature()};
+}
+
+#dataQuality {
+ property:{ActivityLonglineDto.PROPERTY_DATA_QUALITY};
+ selectedItem:{bean.getDataQuality()};
+}
+
+#reopen {
+ _toolTipText:{t("observe.common.ActivityDto.action.reopen.tip")};
+}
+
+#close {
+ enabled:{!model.isModified() && (model.isHistoricalData() || model.isValid())};
+ _toolTipText:{t("observe.common.ActivityDto.action.close.tip")};
+}
+
+#closeAndCreate {
+ _globalAction:{NewNextDataGlobalUIAction.ACTION_NAME};
+ enabled:{!model.isModified() && (model.isHistoricalData() || model.isValid())};
+ _text:{t("observe.common.ActivityDto.action.closeAndCreate")};
+ _toolTipText:{t("observe.common.ActivityDto.action.closeAndCreate.tip")};
+}
+
+#delete {
+ _globalAction:{DeleteDataGlobalUIAction.ACTION_NAME};
+ _toolTipText:{t("observe.common.ActivityDto.action.delete.tip")};
+}
+
+#addSet {
+ actionIcon:add;
+ text:"observe.common.ActivityLonglineDto.action.addSet";
+ toolTipText:"observe.common.ActivityLonglineDto.action.addSet.tip";
+ enabled:{!model.isModified() && model.isValid() && model.isSetOperation() && ! bean.isHasSetLongline()};
+ _observeAction:{AddActivityLonglineSetUIAction.ACTION_NAME};
+
+}
=====================================
client/src/main/java/fr/ird/observe/client/ui/content/data/longline/ActivityLonglineLogbookUIHandler.java
=====================================
--- /dev/null
+++ b/client/src/main/java/fr/ird/observe/client/ui/content/data/longline/ActivityLonglineLogbookUIHandler.java
@@ -0,0 +1,306 @@
+package fr.ird.observe.client.ui.content.data.longline;
+
+/*
+ * #%L
+ * ObServe :: Client
+ * %%
+ * Copyright (C) 2008 - 2017 IRD, Code Lutin, Ultreia.io
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ird.observe.client.ObserveSwingApplicationContext;
+import fr.ird.observe.client.db.ClientDataContext;
+import fr.ird.observe.client.db.constants.DataContextType;
+import fr.ird.observe.client.ui.content.ContentMode;
+import fr.ird.observe.client.ui.content.ContentUIModel;
+import fr.ird.observe.client.ui.content.open.ContentOpenableUIHandler;
+import fr.ird.observe.client.validation.ClientValidationContext;
+import fr.ird.observe.dto.data.longline.ActivityLonglineDto;
+import fr.ird.observe.dto.data.longline.ActivityLonglineHelper;
+import fr.ird.observe.dto.data.longline.TripLonglineDto;
+import fr.ird.observe.dto.form.Form;
+import fr.ird.observe.dto.reference.DataDtoReference;
+import fr.ird.observe.dto.result.TripChildSaveResultDto;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.jaxx.runtime.spi.UIHandler;
+import org.nuiton.validator.NuitonValidatorScope;
+
+import javax.swing.SwingUtilities;
+import java.util.Optional;
+
+import static org.nuiton.i18n.I18n.n;
+import static org.nuiton.i18n.I18n.t;
+
+/**
+ * Created on 8/29/14.
+ *
+ * @author Tony Chemit - dev(a)tchemit.fr
+ * @since 3.7
+ */
+class ActivityLonglineLogbookUIHandler extends ContentOpenableUIHandler<ActivityLonglineDto, ActivityLonglineLogbookUI> implements UIHandler<ActivityLonglineLogbookUI> {
+
+ /** Logger */
+ private static final Log log = LogFactory.getLog(ActivityLonglineLogbookUIHandler.class);
+
+ ActivityLonglineLogbookUIHandler() {
+ super(DataContextType.TripLongline, DataContextType.ActivityLongline, n("observe.common.ActivityLonglineDto.message.not.open"));
+ }
+
+ @Override
+ protected boolean doOpenData() {
+ boolean result = getOpenDataManager().canOpenActivityLongline(getSelectedParentId());
+ if (result) {
+ String setLonglineId = Optional.ofNullable(getBean().getSetLongline()).map(DataDtoReference::getId).orElse(null);
+ getOpenDataManager().openActivityLongline(getSelectedParentId(), getSelectedId(), setLonglineId);
+
+ }
+ return result;
+ }
+
+ @Override
+ public boolean doCloseData() {
+ boolean result = getOpenDataManager().isOpenActivityLongline(getSelectedId());
+ if (result) {
+ getOpenDataManager().closeActivityLongline(getSelectedId());
+ }
+ return result;
+ }
+
+ @Override
+ protected ContentMode getContentMode(ClientDataContext dataContext) {
+
+ String activityId = getSelectedId();
+
+ if (activityId == null) {
+
+ // mode creation
+ return ContentMode.CREATE;
+ }
+
+ // l'activity existe en base
+ if (getOpenDataManager().isOpenActivityLongline(getSelectedId())) {
+
+ // l'activity est ouverte, donc modifiable
+ return ContentMode.UPDATE;
+ }
+
+ ActivityLonglineLogbookUI ui = getUi();
+
+ // l'activity n'est pas ouverte, donc pas éditable
+ if (!getOpenDataManager().isOpenTripLongline(getSelectedParentId())) {
+
+ // la marée n'est pas ouverte
+ addMessage(ui,
+ NuitonValidatorScope.INFO,
+ getTypeI18nKey(TripLonglineDto.class),
+ t("observe.common.TripLonglineDto.message.not.open"));
+
+ if (getModel().isHistoricalData()) {
+
+ addInfoMessage(t("observe.common.DataDto.message.historical.data"));
+ }
+
+ } else {
+
+ // seule l'activity n'est pas ouverte
+ addInfoMessage(t(closeMessage));
+ }
+
+ return ContentMode.READ;
+ }
+
+ @Override
+ public void openUI() {
+ super.openUI();
+
+ getUi().getCoordinatesEditor().resetModel();
+
+ String tripId = getSelectedParentId();
+ String activityId = getSelectedId();
+
+ if (log.isInfoEnabled()) {
+ log.info(prefix + "tripId = " + tripId);
+ log.info(prefix + "activityId = " + activityId);
+ }
+
+ ContentMode mode = computeContentMode();
+ if (log.isInfoEnabled()) {
+ log.info(prefix + "content mode " + mode);
+ }
+ ActivityLonglineDto bean = getBean();
+
+ boolean create = activityId == null;
+
+ Form<ActivityLonglineDto> form;
+ if (create) {
+
+ // create mode
+ form = getActivityLonglineService().preCreate(tripId);
+
+ } else {
+
+ // update mode
+ form = getActivityLonglineService().loadForm(activityId);
+
+ }
+
+ setContentMode(mode);
+
+ loadReferentialReferenceSetsInModel(form);
+
+ getModel().setForm(form);
+ ActivityLonglineHelper.copyActivityLonglineDto(form.getObject(), bean);
+
+ if (log.isDebugEnabled()) {
+ log.debug(" long - lat = " + bean.getLongitude() + " - " + bean.getLatitude());
+ }
+ finalizeOpenUI(mode, create);
+
+ // Mise à jour du composant de coordonnées
+ // 1. Mise à jour latitude/longitude:
+ getUi().getCoordinatesEditor().setLatitudeAndLongitude(bean.getLatitude(), bean.getLongitude());
+
+ // 2. Mise à jour du quadrant :
+ // Si le bean de données contient un quadrant, on met simplement à jour le composant de coordonnées pour sélectionner le quadrant voulu
+ // sinon, on réinitialise les quadrants du composant afin qu'aucun d'eux ne soit sélectionné (par exemple dans le cas de la création de la première activité d'une marée)
+ if (bean.getQuadrant() == null) {
+ getUi().getCoordinatesEditor().resetQuadrant();
+ } else {
+ getUi().getCoordinatesEditor().setQuadrant(bean.getQuadrant());
+ }
+
+ // on annule la modification engendree par ce binding
+ getModel().setModified(create);
+ }
+
+ @Override
+ public void startEditUI(String... binding) {
+ ActivityLonglineLogbookUI ui = getUi();
+
+ ContentUIModel<ActivityLonglineDto> model = getModel();
+
+ boolean create = model.getMode() == ContentMode.CREATE;
+ String contextName = getValidatorContextName(model.getMode());
+ ui.getValidator().setContext(contextName);
+ if (create) {
+ addMessage(ui,
+ NuitonValidatorScope.INFO,
+ getTypeI18nKey(ActivityLonglineDto.class),
+ t("observe.common.ActivityLonglineDto.message.creating"));
+ } else {
+ addMessage(ui,
+ NuitonValidatorScope.INFO,
+ getTypeI18nKey(ActivityLonglineDto.class),
+ t("observe.common.ActivityLonglineDto.message.updating"));
+ }
+
+ super.startEditUI(
+ ActivityLonglineLogbookUI.BINDING_TIME_STAMP_DATE,
+ ActivityLonglineLogbookUI.BINDING_SEA_SURFACE_TEMPERATURE_STORAGE_TEMPERATURE,
+ ActivityLonglineLogbookUI.BINDING_COMMENT_MODEL,
+ ActivityLonglineLogbookUI.BINDING_VESSEL_ACTIVITY_LONGLINE_SELECTED_ITEM,
+ ActivityLonglineLogbookUI.BINDING_FPA_ZONE_SELECTED_ITEM,
+ ActivityLonglineLogbookUI.BINDING_CLOSE_ENABLED,
+ ActivityLonglineLogbookUI.BINDING_CLOSE_AND_CREATE_ENABLED);
+ model.setModified(create);
+ }
+
+ @Override
+ protected void prepareValidationContext() {
+ super.prepareValidationContext();
+
+ ClientValidationContext validationContext = ObserveSwingApplicationContext.get().getValidationContext();
+ validationContext.setCoordinatesEditor("coordinate", getUi().getCoordinatesEditor());
+
+ }
+
+ @Override
+ protected boolean doSave(ActivityLonglineDto bean) {
+
+ boolean notPersisted = bean.isNotPersisted();
+
+ String tripId = getSelectedParentId();
+
+ TripChildSaveResultDto saveResult = getActivityLonglineService().save(tripId, getModel().getBean());
+ saveResult.toDto(bean);
+
+ setUpdateMareeNodeTag(saveResult.isTripEndDateUpdated());
+
+ obtainChildPosition(bean);
+
+ if (notPersisted) {
+ // ouverture de l'activité après création
+ getOpenDataManager().openActivityLongline(getSelectedParentId(), bean.getId(), null);
+
+ if (ActivityLonglineHelper.FISHING_OPERATION_ID.equals(bean.getVesselActivityLongline().getId())) {
+
+ // création de l'opération de pêche
+ SwingUtilities.invokeLater(() -> getUi().getAddSet().doClick());
+ }
+ }
+
+ return true;
+ }
+
+ @Override
+ protected int getOpenablePosition(String parentId, ActivityLonglineDto bean) {
+ return getActivityLonglineService().getActivityLonglinePositionInTripLongline(parentId, bean.getId());
+ }
+
+ @Override
+ protected boolean doDelete(ActivityLonglineDto bean) {
+
+ if (askToDelete(bean)) {
+ return false;
+ }
+ if (log.isInfoEnabled()) {
+ log.info("Will delete Activity " + bean.getId());
+ }
+
+ String tripId = getSelectedParentId();
+ boolean wasTripEndDateUpdated = getActivityLonglineService().delete(tripId, bean.getId());
+ if (log.isInfoEnabled()) {
+ log.info("Delete done for Activity " + bean.getId());
+ }
+ getOpenDataManager().closeActivityLongline(bean.getId());
+
+ setUpdateMareeNodeTag(wasTripEndDateUpdated);
+ return true;
+
+ }
+
+ @Override
+ protected void afterSave(boolean refresh) {
+ super.afterSave(refresh);
+ repaintTripNode();
+ }
+
+ @Override
+ protected void afterDelete() {
+ super.afterDelete();
+ repaintTripNode();
+ }
+
+ @Override
+ protected boolean obtainCanReopen(boolean create) {
+
+ return !create && getOpenDataManager().canOpenActivityLongline(getSelectedParentId());
+
+ }
+
+}
=====================================
client/src/main/java/fr/ird/observe/client/ui/content/data/longline/ActivityLonglineLogbookUIModel.java
=====================================
--- /dev/null
+++ b/client/src/main/java/fr/ird/observe/client/ui/content/data/longline/ActivityLonglineLogbookUIModel.java
@@ -0,0 +1,88 @@
+package fr.ird.observe.client.ui.content.data.longline;
+
+/*
+ * #%L
+ * ObServe :: Client
+ * %%
+ * Copyright (C) 2008 - 2017 IRD, Code Lutin, Ultreia.io
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ird.observe.client.ui.content.open.ContentOpenableUIModel;
+import fr.ird.observe.dto.data.longline.ActivityLonglineDto;
+import fr.ird.observe.dto.referential.longline.VesselActivityLonglineHelper;
+import fr.ird.observe.dto.referential.longline.VesselActivityLonglineReference;
+import org.nuiton.util.DateUtil;
+
+import java.util.Date;
+
+/**
+ * Created on 9/26/14.
+ *
+ * @author Tony Chemit - dev(a)tchemit.fr
+ * @since XXX
+ */
+public class ActivityLonglineLogbookUIModel extends ContentOpenableUIModel<ActivityLonglineDto> {
+
+ private static final long serialVersionUID = 1L;
+
+ public static final String PROPERTY_SET_OPERATION = "setOperation";
+
+ public static final String PROPERTY_DATE = "date";
+
+ public static final String PROPERTY_TIME = "time";
+
+ public ActivityLonglineLogbookUIModel() {
+ super(ActivityLonglineDto.class);
+
+ getBean().addPropertyChangeListener(ActivityLonglineDto.PROPERTY_VESSEL_ACTIVITY_LONGLINE, evt -> {
+ boolean oldValue = VesselActivityLonglineHelper.isSetOperation((VesselActivityLonglineReference) evt.getOldValue());
+ boolean newValue = VesselActivityLonglineHelper.isSetOperation((VesselActivityLonglineReference) evt.getNewValue());
+ firePropertyChange(PROPERTY_SET_OPERATION, oldValue, newValue);
+ });
+ }
+
+ public boolean isSetOperation() {
+ return VesselActivityLonglineHelper.isSetOperation(bean.getVesselActivityLongline());
+ }
+
+ public Date getDate() {
+ Date timeStamp = bean.getTimeStamp();
+ return timeStamp == null ? null : DateUtil.getDay(timeStamp);
+ }
+
+ public Date getTime() {
+ Date timeStamp = bean.getTimeStamp();
+ return timeStamp == null ? null : DateUtil.getTime(timeStamp, false, false);
+ }
+
+ public void setDate(Date date) {
+ Date timeStamp = bean.getTimeStamp();
+ if (timeStamp != null) {
+ Date dateAndTime = date == null ? timeStamp : DateUtil.getDateAndTime(date, timeStamp, true, false);
+ bean.setTimeStamp(dateAndTime);
+ }
+ }
+
+ public void setTime(Date time) {
+ Date timeStamp = bean.getTimeStamp();
+ if (timeStamp != null) {
+ Date dateAndTime = time == null ? timeStamp : DateUtil.getDateAndTime(timeStamp, time, false, false);
+ bean.setTimeStamp(dateAndTime);
+ }
+ }
+}
=====================================
client/src/main/java/fr/ird/observe/client/ui/content/data/longline/CatchLonglineLogbookUI.jaxx
=====================================
--- /dev/null
+++ b/client/src/main/java/fr/ird/observe/client/ui/content/data/longline/CatchLonglineLogbookUI.jaxx
@@ -0,0 +1,282 @@
+<!--
+ #%L
+ ObServe :: Client
+ %%
+ Copyright (C) 2008 - 2017 IRD, Code Lutin, Ultreia.io
+ %%
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as
+ published by the Free Software Foundation, either version 3 of the
+ License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with this program. If not, see
+ <http://www.gnu.org/licenses/gpl-3.0.html>.
+ #L%
+ -->
+
+<fr.ird.observe.client.ui.content.table.ContentTableUI
+ i18nFormat="observe.common.CatchLonglineDto.%s"
+ superGenericType='SetLonglineCatchDto, CatchLonglineDto, CatchLonglineLogbookUI'
+ contentTitle='{n("observe.common.CatchLonglineDto.title")}'
+ newEntryText='{n("observe.common.CatchLonglineDto.action.new")}'
+ newEntryTip='{n("observe.common.CatchLonglineDto.action.new.tip")}'
+ saveNewEntryText='{n("observe.common.CatchLonglineDto.action.create")}'
+ saveNewEntryTip='{n("observe.common.CatchLonglineDto.action.create.tip")}'>
+
+ <style source="../CommonTable.jcss"/>
+
+ <import>
+ fr.ird.observe.dto.data.longline.BasketReference
+ fr.ird.observe.dto.data.longline.BranchlineDto
+ fr.ird.observe.dto.data.longline.BranchlineReference
+ fr.ird.observe.dto.data.longline.CatchLonglineDto
+ fr.ird.observe.dto.data.longline.SectionReference
+ fr.ird.observe.dto.data.longline.SetLonglineCatchDto
+ fr.ird.observe.dto.referential.SpeciesReference
+ fr.ird.observe.dto.referential.SexReference
+ fr.ird.observe.dto.referential.longline.BaitHaulingStatusReference
+ fr.ird.observe.dto.referential.longline.CatchFateLonglineReference
+ fr.ird.observe.dto.referential.longline.HealthnessReference
+ fr.ird.observe.dto.referential.longline.HookPositionReference
+ fr.ird.observe.dto.referential.longline.MaturityStatusReference
+ fr.ird.observe.dto.referential.longline.StomacFullnessReference
+ fr.ird.observe.client.constants.CatchAcquisitionMode
+ fr.ird.observe.client.ui.content.table.*
+ fr.ird.observe.client.ui.util.BooleanEditor
+ fr.ird.observe.client.ui.util.JComment
+
+ org.nuiton.jaxx.widgets.number.NumberEditor
+ org.nuiton.jaxx.widgets.select.BeanComboBox
+ org.nuiton.jaxx.widgets.select.FilterableDoubleList
+ org.nuiton.jaxx.widgets.datetime.DateTimeEditor
+ org.nuiton.jaxx.widgets.datetime.TimeEditor
+
+ java.awt.Dimension
+
+ java.util.Collection
+
+ org.apache.commons.lang3.BooleanUtils
+
+ static fr.ird.observe.client.ui.util.UIHelper.getStringValue
+ static org.nuiton.i18n.I18n.n
+ </import>
+
+ <!-- model -->
+ <CatchLonglineLogbookUIModel id='model'/>
+
+ <!-- edit bean -->
+ <SetLonglineCatchDto id='bean'/>
+
+ <!-- table edit bean -->
+ <CatchLonglineDto id='tableEditBean'/>
+
+ <!-- table model -->
+ <ContentTableModel id='tableModel' genericType='SetLonglineCatchDto, CatchLonglineDto'/>
+
+ <!-- edit branchline -->
+ <BranchlineDto id='branchlineBean' initializer='new BranchlineDto()'/>
+
+ <!-- le validateur de l'écran -->
+ <BeanValidator id='validator' context='update'
+ beanClass='fr.ird.observe.dto.data.longline.SetLonglineCatchDto'
+ errorTableModel='{getErrorTableModel()}'>
+ </BeanValidator>
+
+ <!-- le validateur d'une entrée de tableau -->
+ <BeanValidator id='validatorTable' autoField='true' context='update'
+ beanClass='fr.ird.observe.dto.data.longline.CatchLonglineDto'
+ errorTableModel='{getErrorTableModel()}'
+ parentValidator='{validator}'/>
+
+ <JPopupMenu id='catchLonglinesPopup'>
+ <JMenuItem id='moveCatchLonglineUp' onActionPerformed='getHandler().moveCatchLonglineUp()'/>
+ <JMenuItem id='moveCatchLonglineDown' onActionPerformed='getHandler().moveCatchLonglineDown()'/>
+ </JPopupMenu>
+
+ <ButtonGroup id='acquisitionModeGroup'
+ onStateChanged='getHandler().updateCatchAcquisitionMode((CatchAcquisitionMode) acquisitionModeGroup.getSelectedValue())'/>
+
+ <Table id='editorPanel' fill='both' insets='0'>
+ <row>
+ <cell weightx="1" weighty="1">
+ <JTabbedPane id='mainTabbedPane'>
+ <tab id='caracteristicTab' computeI18n="">
+ <Table id='editForm' fill='both' insets='1'>
+
+ <row>
+ <cell columns="4">
+ <JPanel layout="{new GridLayout()}">
+
+ <!-- acquisition Mode -->
+ <JPanel id='acquisitionModePanel'>
+ <JRadioButton id='acquisitionModeIndividual'/>
+ <JRadioButton id='acquisitionModeGrouped'/>
+ </JPanel>
+
+ </JPanel>
+ </cell>
+ </row>
+
+ <!-- speciesCatch -->
+ <!-- tagNumber -->
+ <row>
+ <cell>
+ <JLabel id='speciesCatchLabel'/>
+ </cell>
+ <cell weightx='1' anchor='east'>
+ <BeanComboBox id='speciesCatch' genericType='SpeciesReference' constructorParams='this'/>
+ </cell>
+ <cell anchor='west'>
+ <JLabel id='tagNumberLabel'/>
+ </cell>
+ <cell anchor='east' weightx="1" fill="both">
+ <JPanel layout='{new BorderLayout()}'>
+ <JToolBar id='tagNumberToolbar' constraints='BorderLayout.WEST'>
+ <JButton id='resetTagNumber' styleClass='resetButton'/>
+ </JToolBar>
+ <JTextField id='tagNumber' constraints='BorderLayout.CENTER'/>
+ </JPanel>
+ </cell>
+ </row>
+
+ <!-- count -->
+ <row>
+ <cell>
+ <JLabel id='countLabel'/>
+ </cell>
+ <cell weightx='1' anchor='east'>
+ <NumberEditor id='count' constructorParams='this' styleClass="int6"/>
+ </cell>
+ </row>
+
+ <!-- count -->
+ <!-- total weight -->
+ <row>
+ <cell>
+ <JLabel id='totalWeightLabel'/>
+ </cell>
+ <cell weightx='1' anchor='east'>
+ <NumberEditor id='totalWeight' constructorParams='this' styleClass="float3"/>
+ </cell>
+ <cell>
+ <JLabel id='weightDeterminationMethodLabel'/>
+ </cell>
+ <cell weightx='1' anchor='east'>
+ <BeanComboBox id='weightDeterminationMethod' constructorParams='this' genericType='HealthnessReference'/>
+ </cell>
+ </row>
+
+
+ <!-- catch healthness -->
+ <row>
+ <cell>
+ <JLabel id='catchHealthnessLabel'/>
+ </cell>
+ <cell weightx='1' anchor='east'>
+ <BeanComboBox id='catchHealthness' constructorParams='this' genericType='HealthnessReference'/>
+ </cell>
+ </row>
+
+ <!-- catch fate -->
+ <!-- discard healthness -->
+ <row>
+ <cell>
+ <JLabel id='catchFateLonglineLabel'/>
+ </cell>
+ <cell weightx='1' anchor='east'>
+ <BeanComboBox id='catchFateLongline' constructorParams='this' genericType='CatchFateLonglineReference'/>
+ </cell>
+ <cell>
+ <JLabel id='discardHealthnessLabel'/>
+ </cell>
+ <cell weightx='1' anchor='east'>
+ <BeanComboBox id='discardHealthness' constructorParams='this' genericType='HealthnessReference'/>
+ </cell>
+ </row>
+
+ <!-- onBordDataProcessing -->
+ <row>
+ <cell>
+ <JLabel id='onBordDataProcessingLabel'/>
+ </cell>
+ <cell weightx='1' anchor='east'>
+ <BeanComboBox id='onBordDataProcessing' constructorParams='this' genericType='CatchFateLonglineReference'/>
+ </cell>
+ <cell anchor='east' weightx="1" fill="both">
+ <JPanel layout='{new BorderLayout()}'>
+ <JToolBar id='photoReferencesToolbar' constraints='BorderLayout.WEST'>
+ <JButton id='resetPhotoReferences' styleClass='resetButton'/>
+ </JToolBar>
+ <JTextField id='photoReferences' constraints='BorderLayout.CENTER'/>
+ </JPanel>
+ </cell>
+ </row>
+ </Table>
+ </tab>
+
+ <tab id='depredatedTab' computeI18n="">
+
+ <Table id='depredatedForm' fill='both' insets='1'>
+
+ <!-- depredated -->
+ <row>
+ <cell anchor='west' fill="both">
+ <JCheckBox id='depredated' styleClass="i18n"/>
+ </cell>
+ </row>
+
+ <!-- beatDiameter -->
+ <row>
+ <cell>
+ <JLabel id='beatDiameterLabel'/>
+ </cell>
+ <cell weightx='1' anchor='east'>
+ <NumberEditor id='beatDiameter' constructorParams='this' styleClass="float3"/>
+ </cell>
+ </row>
+ <!-- countDepredated -->
+ <row>
+ <cell>
+ <JLabel id='countDepredatedLabel'/>
+ </cell>
+ <cell weightx='1' anchor='east'>
+ <NumberEditor id='countDepredated' constructorParams='this' styleClass="float3"/>
+ </cell>
+ </row>
+ <!-- depredatedProportion -->
+ <row>
+ <cell>
+ <JLabel id='depredatedProportionLabel'/>
+ </cell>
+ <cell weightx='1' anchor='east'>
+ <NumberEditor id='depredatedProportion' constructorParams='this' styleClass="float3"/>
+ </cell>
+ </row>
+
+ <!-- predator -->
+ <row>
+ <cell columns="2" fill="both" weighty="0.7">
+ <JScrollPane id='predatorPane'>
+ <FilterableDoubleList id='predator' genericType='SpeciesReference'/>
+ </JScrollPane>
+ </cell>
+ </row>
+
+ </Table>
+ </tab>
+ </JTabbedPane>
+ </cell>
+ </row>
+ <row>
+ <cell weighty='1'>
+ <JComment id="comment"/>
+ </cell>
+ </row>
+ </Table>
+</fr.ird.observe.client.ui.content.table.ContentTableUI>
\ No newline at end of file
=====================================
client/src/main/java/fr/ird/observe/client/ui/content/data/longline/CatchLonglineLogbookUI.jcss
=====================================
--- /dev/null
+++ b/client/src/main/java/fr/ird/observe/client/ui/content/data/longline/CatchLonglineLogbookUI.jcss
@@ -0,0 +1,360 @@
+/*
+ * #%L
+ * ObServe :: Client
+ * %%
+ * Copyright (C) 2008 - 2017 IRD, Code Lutin, Ultreia.io
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+.i18nBranchline {
+ computeI18n:"observe.common.BranchlineDto.%s"
+}
+
+#model {
+ valid:{validator.isValid() && validatorTable.isValid()};
+ canSaveRow:{validatorTable.isChanged() && validatorTable.isValid() };
+ canResetRow:{validatorTable.isChanged()};
+}
+
+#moveCatchLonglineUp {
+ text: "observe.common.CatchLonglineDto.action.moveCatchLonglineUp";
+ toolTipText: "observe.common.CatchLonglineDto.action.moveCatchLonglineUp.tip";
+ actionIcon: go-up;
+}
+
+#moveCatchLonglineDown {
+ text: "observe.common.CatchLonglineDto.action.moveCatchLonglineDown";
+ toolTipText: "observe.common.CatchLonglineDto.action.moveCatchLonglineDown.tip";
+ actionIcon: go-down;
+}
+
+
+/* ***************************************************************************** */
+/* CARACTERISTIC TAB ********************************************************** */
+/* ***************************************************************************** */
+
+#caracteristicTab {
+ icon:{handler.getErrorIconIfFalse(model.isCaracteristicsTabValid())};
+}
+
+#acquisitionModeGroup {
+ selectedValue:{CatchAcquisitionMode.valueOf(tableEditBean.getAcquisitionMode())};
+}
+
+#acquisitionModePanel {
+ border:{new TitledBorder(t("observe.common.CatchLonglineDto.acquisitionMode"))};
+ layout:{new GridLayout(0,1)};
+}
+
+#acquisitionModeIndividual {
+ buttonGroup:acquisitionModeGroup;
+ value:{CatchAcquisitionMode.INDIVIDUAL};
+ text:{CatchAcquisitionMode.INDIVIDUAL.toString()};
+ selected:{tableEditBean.getAcquisitionMode() == 0};
+ enabled:{!tableModel.isEditable() || tableModel.isCreate()};
+}
+
+#acquisitionModeGrouped {
+ buttonGroup:acquisitionModeGroup;
+ value:{CatchAcquisitionMode.GROUPED};
+ text:{CatchAcquisitionMode.GROUPED.toString()};
+ selected:{tableEditBean.getAcquisitionMode() == 1};
+ enabled:{!tableModel.isEditable() || tableModel.isCreate()};
+}
+
+#locationOnLonglinePanel {
+ border:{new TitledBorder(t("observe.common.CatchLonglineDto.locationOnLongline"))};
+}
+
+#section {
+ property:{CatchLonglineDto.PROPERTY_SECTION};
+ selectedItem:{tableEditBean.getSection()};
+ force:true;
+ _listNoLoad:{true};
+}
+
+#basket {
+ property:{CatchLonglineDto.PROPERTY_BASKET};
+ selectedItem:{tableEditBean.getBasket()};
+ _listNoLoad:{true};
+}
+
+#branchline {
+ property:{CatchLonglineDto.PROPERTY_BRANCHLINE};
+ selectedItem:{tableEditBean.getBranchline()};
+ _listNoLoad:{true};
+}
+
+#speciesCatch {
+ property:{CatchLonglineDto.PROPERTY_SPECIES_CATCH};
+ selectedItem:{tableEditBean.getSpeciesCatch()};
+}
+
+#resetPhotoReferences {
+ toolTipText:"observe.common.CatchLonglineDto.action.reset.photoReferences.tip";
+ _resetTablePropertyName:{CatchLonglineDto.PROPERTY_PHOTO_REFERENCES};
+}
+
+#photoReferences {
+ text:{getStringValue(tableEditBean.getPhotoReferences())};
+ _tablePropertyName:{CatchLonglineDto.PROPERTY_PHOTO_REFERENCES};
+}
+
+#resetTagNumber {
+ toolTipText:"observe.common.DataDto.action.resetTagNumber";
+ _resetTablePropertyName:{CatchLonglineDto.PROPERTY_TAG_NUMBER};
+ enabled:{tableEditBean.getAcquisitionMode() == 0};
+}
+
+#tagNumber {
+ text:{getStringValue(tableEditBean.getTagNumber())};
+ _tablePropertyName:{CatchLonglineDto.PROPERTY_TAG_NUMBER};
+ enabled:{tableEditBean.getAcquisitionMode() == 0};
+}
+
+#count {
+ property:{CatchLonglineDto.PROPERTY_COUNT};
+ numberValue:{tableEditBean.getCount()};
+}
+
+#totalWeight {
+ property:{CatchLonglineDto.PROPERTY_TOTAL_WEIGHT};
+ numberValue:{tableEditBean.getTotalWeight()};
+}
+
+#hookWhenDiscarded {
+ _tablePropertyName:{CatchLonglineDto.PROPERTY_HOOK_WHEN_DISCARDED};
+ booleanValue:{tableEditBean.getHookWhenDiscarded()};
+}
+
+#catchFateLongline {
+ property:{CatchLonglineDto.PROPERTY_CATCH_FATE_LONGLINE};
+ selectedItem:{tableEditBean.getCatchFateLongline()};
+}
+
+#catchHealthness {
+ property:{CatchLonglineDto.PROPERTY_CATCH_HEALTHNESS};
+ selectedItem:{tableEditBean.getCatchHealthness()};
+}
+
+#discardHealthness {
+ property:{CatchLonglineDto.PROPERTY_DISCARD_HEALTHNESS};
+ selectedItem:{tableEditBean.getDiscardHealthness()};
+}
+
+#catchFateLongline {
+ property:{CatchLonglineDto.PROPERTY_CATCH_FATE_LONGLINE};
+ selectedItem:{tableEditBean.getCatchFateLongline()};
+}
+
+#hookPosition {
+ property:{CatchLonglineDto.PROPERTY_HOOK_POSITION};
+ selectedItem:{tableEditBean.getHookPosition()};
+}
+
+#comment {
+ title:"observe.common.CatchLonglineDto.comment";
+}
+
+/* ***************************************************************************** */
+/* DEPREDATED TAB ************************************************************* */
+/* ***************************************************************************** */
+
+#depredatedFormTab {
+ icon:{handler.getErrorIconIfFalse(model.isDepredatedTabValid())};
+}
+
+#beatDiameter {
+ property:{CatchLonglineDto.PROPERTY_BEAT_DIAMETER};
+ numberValue:{tableEditBean.getBeatDiameter()};
+}
+
+#depredated {
+ horizontalTextPosition:{JCheckBox.LEFT};
+ _tablePropertyName:{CatchLonglineDto.PROPERTY_DEPREDATED};
+ selected:{BooleanUtils.isTrue(tableEditBean.getDepredated())};
+}
+
+#predatorPane {
+ minimumSize:{new Dimension(10,150)};
+}
+
+#predator {
+ property: predator;
+ selected:{(Collection)tableEditBean.getPredator()};
+ showListLabel: true;
+ universeLabel:{t("observe.common.CatchLonglineDto.availablePredator")};
+ selectedLabel:{t("observe.common.CatchLonglineDto.selectedPredator")};
+}
+
+/* ***************************************************************************** */
+/* FOOD AND SEXUAL TAB ******************************************************** */
+/* ***************************************************************************** */
+
+#foodAndSexualFormTab {
+ icon:{handler.getErrorIconIfFalse(model.isFoodAndSexualTabValid())};
+}
+
+#foodAndSexualForm {
+ border:{new TitledBorder( (String) null)};
+}
+
+#sex {
+ property:{CatchLonglineDto.PROPERTY_SEX};
+ selectedItem:{tableEditBean.getSex()};
+}
+
+#stomacFullness {
+ property:{CatchLonglineDto.PROPERTY_STOMAC_FULLNESS};
+ selectedItem:{tableEditBean.getStomacFullness()};
+}
+
+#maturityStatus {
+ property:{CatchLonglineDto.PROPERTY_MATURITY_STATUS};
+ selectedItem:{tableEditBean.getMaturityStatus()};
+}
+
+#gonadeWeight {
+ property:{CatchLonglineDto.PROPERTY_GONADE_WEIGHT};
+ numberValue:{tableEditBean.getGonadeWeight()};
+}
+
+/* ***************************************************************************** */
+/* SIZE MEASURES TAB ********************************************************** */
+/* ***************************************************************************** */
+
+#sizeMeasuresFormTab {
+ icon:{handler.getErrorIconIfFalse(sizeMeasuresTableModel.isValid())};
+}
+
+#sizeMeasuresTable {
+ model: {sizeMeasuresTableModel};
+}
+
+#addSizeMeasure {
+ text: "observe.common.CatchLonglineDto.action.addSizeMeasure";
+ toolTipText: "observe.common.CatchLonglineDto.action.addSizeMeasure.tip";
+ actionIcon: add;
+}
+
+#deleteSelectedSizeMeasure {
+ text: "observe.common.CatchLonglineDto.action.deleteSelectedSizeMeasure";
+ toolTipText: "observe.common.CatchLonglineDto.action.deleteSelectedSizeMeasure.tip";
+ actionIcon: delete;
+}
+
+/* ***************************************************************************** */
+/* WEIGHT MEASURES TAB ******************************************************** */
+/* ***************************************************************************** */
+
+#weightMeasuresFormTab {
+ icon:{handler.getErrorIconIfFalse(weightMeasuresTableModel.isValid())};
+}
+
+#weightMeasuresTable {
+ model: {weightMeasuresTableModel};
+}
+
+#addWeightMeasure {
+ text: "observe.common.CatchLonglineDto.action.addWeightMeasure";
+ toolTipText: "observe.common.CatchLonglineDto.action.addWeightMeasure.tip";
+ actionIcon: add;
+}
+
+#deleteSelectedWeightMeasure {
+ text: "observe.common.CatchLonglineDto.action.deleteSelectedWeightMeasure";
+ toolTipText: "observe.common.CatchLonglineDto.action.deleteSelectedWeightMeasure.tip";
+ actionIcon: delete;
+}
+
+/* ***************************************************************************** */
+/* BRANCHLINE TAB ************************************************************* */
+/* ***************************************************************************** */
+
+#branchlineFormTab {
+ icon:{handler.getErrorIconIfFalse(model.isBranchlineTabValid())};
+ enabled:{!tableModel.isCreate() && tableEditBean.getBranchline() != null};
+}
+
+#branchlineForm {
+ border:{new TitledBorder( (String) null)};
+ visible:{!tableModel.isCreate() && tableEditBean.getBranchline() != null};
+}
+
+#depthRecorder {
+ horizontalTextPosition:{JCheckBox.LEFT};
+ _branchlineBeanPropertyName:{BranchlineDto.PROPERTY_DEPTH_RECORDER};
+ selected:{BooleanUtils.isTrue(branchlineBean.getDepthRecorder())};
+}
+
+#hookLost {
+ horizontalTextPosition:{JCheckBox.LEFT};
+ _branchlineBeanPropertyName:{BranchlineDto.PROPERTY_HOOK_LOST};
+ selected:{BooleanUtils.isTrue(branchlineBean.getHookLost())};
+}
+
+#traceCutOff {
+ horizontalTextPosition:{JCheckBox.LEFT};
+ _branchlineBeanPropertyName:{BranchlineDto.PROPERTY_TRACE_CUT_OFF};
+ selected:{BooleanUtils.isTrue(branchlineBean.getTraceCutOff())};
+}
+
+#timer {
+ horizontalTextPosition:{JCheckBox.LEFT};
+ _branchlineBeanPropertyName:{BranchlineDto.PROPERTY_TIMER};
+ selected:{BooleanUtils.isTrue(branchlineBean.getTimer())};
+}
+
+#timeSinceContact {
+ propertyTime:{CatchLonglineUIModel.PROPERTY_BRANCHLINE_TIME_SINCE_CONTACT};
+ bean:{model};
+ enabled:{BooleanUtils.isTrue(branchlineBean.getTimer())};
+ time:{model.getBranchlineTimeSinceContact()};
+ showTimeEditorSlider:false;
+}
+
+#timerTimeOnBoard {
+ date:{branchlineBean.getTimerTimeOnBoard()};
+ propertyDate: {BranchlineDto.PROPERTY_TIMER_TIME_ON_BOARD};
+ bean:{branchlineBean};
+ showTimeEditorSlider:false;
+ enabled:{BooleanUtils.isTrue(branchlineBean.getTimer())};
+}
+
+#baitHaulingStatus {
+ property:{BranchlineDto.PROPERTY_BAIT_HAULING_STATUS};
+ bean:{branchlineBean};
+ selectedItem:{branchlineBean.getBaitHaulingStatus()};
+}
+
+#branchlineActions {
+ visible:{tableModel.isEditable()};
+}
+
+#resetBranchline {
+ text:"observe.common.CatchLonglineDto.resetBranchline";
+ toolTipText:"observe.common.CatchLonglineDto.resetBranchline.tip";
+ actionIcon:"revert";
+ enabled:{branchlineValidator.isChanged()};
+}
+
+#saveBranchline{
+ text:"observe.common.CatchLonglineDto.saveBranchline";
+ toolTipText:"observe.common.CatchLonglineDto.saveBranchline.tip";
+ actionIcon:"save";
+ enabled:{branchlineValidator.isChanged() && branchlineValidator.isValid()};
+}
=====================================
client/src/main/java/fr/ird/observe/client/ui/content/data/longline/CatchLonglineLogbookUIHandler.java
=====================================
--- /dev/null
+++ b/client/src/main/java/fr/ird/observe/client/ui/content/data/longline/CatchLonglineLogbookUIHandler.java
@@ -0,0 +1,508 @@
+package fr.ird.observe.client.ui.content.data.longline;
+
+/*
+ * #%L
+ * ObServe :: Client
+ * %%
+ * Copyright (C) 2008 - 2017 IRD, Code Lutin, Ultreia.io
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ird.observe.client.ObserveSwingApplicationContext;
+import fr.ird.observe.client.constants.CatchAcquisitionMode;
+import fr.ird.observe.client.db.constants.DataContextType;
+import fr.ird.observe.client.ui.content.ContentUIModel;
+import fr.ird.observe.client.ui.content.table.ContentTableModel;
+import fr.ird.observe.client.ui.content.table.ContentTableUIHandler;
+import fr.ird.observe.client.ui.content.table.ContentTableUIInitializer;
+import fr.ird.observe.client.ui.tree.navigation.NavigationTree;
+import fr.ird.observe.client.ui.tree.navigation.nodes.NavigationTreeNodeSupport;
+import fr.ird.observe.client.ui.tree.navigation.nodes.longline.TripLonglineNavigationTreeNode;
+import fr.ird.observe.client.ui.util.UIHelper;
+import fr.ird.observe.client.ui.util.table.AutotSelectRowAndShowPopupActionSupport;
+import fr.ird.observe.dto.data.longline.BranchlineDto;
+import fr.ird.observe.dto.data.longline.CatchLonglineDto;
+import fr.ird.observe.dto.data.longline.SetLonglineCatchDto;
+import fr.ird.observe.dto.data.longline.TripLonglineReference;
+import fr.ird.observe.dto.form.Form;
+import fr.ird.observe.dto.form.FormDefinition;
+import fr.ird.observe.dto.reference.DtoReferenceCollection;
+import fr.ird.observe.dto.referential.SpeciesDto;
+import fr.ird.observe.dto.referential.SpeciesReference;
+import fr.ird.observe.dto.referential.longline.CatchFateLonglineReference;
+import fr.ird.observe.dto.referential.longline.HealthnessReference;
+import fr.ird.observe.dto.result.SaveResultDto;
+import fr.ird.observe.spi.DtoModelHelper;
+import org.apache.commons.lang3.BooleanUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.jaxx.runtime.spi.UIHandler;
+import org.nuiton.jaxx.validator.swing.SwingValidatorMessage;
+import org.nuiton.jaxx.validator.swing.SwingValidatorMessageTableModel;
+import org.nuiton.validator.NuitonValidatorScope;
+
+import javax.swing.JComponent;
+import javax.swing.JPopupMenu;
+import javax.swing.JScrollPane;
+import javax.swing.JTable;
+import javax.swing.event.TableModelListener;
+import javax.swing.table.DefaultTableCellRenderer;
+import java.beans.PropertyChangeListener;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Optional;
+import java.util.Set;
+
+import static org.nuiton.i18n.I18n.n;
+import static org.nuiton.i18n.I18n.t;
+
+/**
+ * Created on 9/11/14.
+ *
+ * @author Tony Chemit - dev(a)tchemit.fr
+ * @since 3.7
+ */
+public class CatchLonglineLogbookUIHandler extends ContentTableUIHandler<SetLonglineCatchDto, CatchLonglineDto, CatchLonglineLogbookUI> implements UIHandler<CatchLonglineLogbookUI> {
+
+ /** Logger */
+ private static final Log log = LogFactory.getLog(CatchLonglineLogbookUIHandler.class);
+ private static final String GROUPED_TRIP_TYPE_ID = "fr.ird.observe.entities.referentiel.longline.TripType#1239832686136#0.1";
+ // Compute valid state of tab from the error table
+ protected final TableModelListener computeTabValidStateListener;
+ private final PropertyChangeListener catchFateChanged;
+ private final PropertyChangeListener depredatedChanged;
+
+ CatchLonglineLogbookUIHandler() {
+ super(DataContextType.SetLongline);
+ computeTabValidStateListener = e -> {
+
+ SwingValidatorMessageTableModel source = (SwingValidatorMessageTableModel) e.getSource();
+ computeTabValidState(source);
+
+ };
+ catchFateChanged = evt -> onCatchFateChanged((CatchFateLonglineReference) evt.getNewValue());
+ depredatedChanged = evt -> onDepredatedChanged((Boolean) evt.getNewValue(), (CatchLonglineDto) evt.getSource());
+
+ addReferentialFilter(CatchLonglineDto.PROPERTY_SPECIES_CATCH, (ReferentialReferencesFilter<SpeciesDto, SpeciesReference>) incomingReferences -> {
+ String speciesListId = ObserveSwingApplicationContext.get().getConfig().getSpeciesListLonglineCatchId();
+ String tripLonglineId = getDataContext().getSelectedTripLonglineId();
+ List<SpeciesReference> result = getTripLonglineService().getSpeciesByListAndTrip(tripLonglineId, speciesListId).toList();
+ return DtoReferenceCollection.filterEnabled(result);
+ });
+
+ addReferentialFilter(CatchLonglineDto.PROPERTY_PREDATOR, (ReferentialReferencesFilter<SpeciesDto, SpeciesReference>) incomingReferences -> {
+ String speciesListId = ObserveSwingApplicationContext.get().getConfig().getSpeciesListLonglineDepredatorId();
+ String tripLonglineId = getDataContext().getSelectedTripLonglineId();
+ List<SpeciesReference> result = getTripLonglineService().getSpeciesByListAndTrip(tripLonglineId, speciesListId).toList();
+ return DtoReferenceCollection.filterEnabled(result);
+ });
+ }
+
+ @Override
+ public CatchLonglineLogbookUIModel getModel() {
+ return (CatchLonglineLogbookUIModel) super.getModel();
+ }
+
+ @Override
+ public void afterInit(CatchLonglineLogbookUI ui) {
+
+ ContentTableUIInitializer<SetLonglineCatchDto, CatchLonglineDto, CatchLonglineLogbookUI> uiInitializer = new ContentTableUIInitializer<>(ui);
+ uiInitializer.initUI();
+
+ ui.setTitle(t(updateTitle(ui.getContentTitle())));
+ updateTitle(getModel().getMode());
+
+ installFocusTraversalPolicy();
+
+ CatchLonglineLogbookUIModel model = ui.getModel();
+
+ model.addPropertyChangeListener(ContentUIModel.PROPERTY_FORM, evt -> updateUiWithReferenceSetsFromModel());
+ }
+
+ @Override
+ public void openUI() {
+
+ if (log.isInfoEnabled()) {
+ log.info("OpenUI: " + getModel());
+ }
+
+ super.openUI();
+
+ // To be sure always remove listener (could prevent some leaks)
+ getUi().getErrorTableModel().removeTableModelListener(computeTabValidStateListener);
+ // listen messages to see if required to add
+ getUi().getErrorTableModel().addTableModelListener(computeTabValidStateListener);
+
+ SwingValidatorMessageTableModel errorTableModel = getUi().getErrorTableModel();
+ computeTabValidState(errorTableModel);
+
+ }
+
+ void updateCatchAcquisitionMode(CatchAcquisitionMode newMode) {
+
+ if (log.isDebugEnabled()) {
+ log.debug("Change CatchAcquisitionMode " + newMode);
+ }
+ if (newMode == null) {
+
+ // mode null (cela peut arriver avec les bindings)
+ return;
+ }
+
+ CatchLonglineLogbookUI ui = getUi();
+
+ boolean createMode = ui.getTableModel().isCreate();
+
+ CatchLonglineDto editBean = ui.getTableEditBean();
+
+ switch (newMode) {
+
+ case GROUPED:
+
+ if (createMode) {
+
+ editBean.setTotalWeight(null);
+ editBean.setCount(null);
+ editBean.setHookPosition(null);
+
+ }
+
+ break;
+
+ case INDIVIDUAL:
+
+ if (createMode) {
+
+ // on positionne le count à 1 (seule valeur possible)
+ editBean.setCount(1);
+
+ }
+
+ break;
+ }
+
+ boolean isGrouped = CatchAcquisitionMode.GROUPED.equals(newMode);
+
+ ui.getTotalWeight().setEnabled(isGrouped);
+ ui.getCount().setEnabled(isGrouped);
+
+ if (createMode) {
+
+ // on propage le mode de saisie dans le bean
+ editBean.setAcquisitionMode(newMode.ordinal());
+
+ }
+ }
+
+ @Override
+ protected void onSelectedRowChanged(int editingRow, CatchLonglineDto bean, boolean create) {
+
+ if (log.isInfoEnabled()) {
+ log.info("Selected row changed: " + editingRow + ", create? " + create);
+ }
+
+ CatchLonglineLogbookUI ui = getUi();
+
+ CatchLonglineTableModel tableModel = getTableModel();
+
+ if (!tableModel.isEditable()) {
+ return;
+ }
+
+ JComponent requestFocus;
+
+ CatchAcquisitionMode acquisitionModeEnum;
+
+ if (tableModel.isCreate()) {
+
+ // go back to first pane
+ ui.getMainTabbedPane().setSelectedIndex(0);
+
+ NavigationTree treeHelper = getNavigationTree();
+ NavigationTreeNodeSupport selectedNode = treeHelper.getSelectedNode();
+ while (!(selectedNode instanceof TripLonglineNavigationTreeNode)) {
+ selectedNode = selectedNode.getParent();
+ }
+ TripLonglineReference tripReference = ((TripLonglineNavigationTreeNode) selectedNode).getData();
+ String tripTypeId = tripReference.getTripTypeId();
+ if (log.isInfoEnabled()) {
+ log.info("Use tripId: " + tripTypeId);
+ }
+ acquisitionModeEnum = GROUPED_TRIP_TYPE_ID.equals(tripTypeId) ? CatchAcquisitionMode.GROUPED : CatchAcquisitionMode.INDIVIDUAL;
+
+ ui.getPredator().setEnabled(false);
+ ui.getDiscardHealthness().setEnabled(false);
+ ui.getBeatDiameter().setEnabled(false);
+
+ requestFocus = ui.getSpeciesCatch();
+
+ } else {
+
+ int acquisitionMode = bean.getAcquisitionMode();
+
+ acquisitionModeEnum = CatchAcquisitionMode.valueOf(acquisitionMode);
+
+ if (acquisitionModeEnum.equals(CatchAcquisitionMode.GROUPED)) {
+
+ requestFocus = ui.getCount();
+
+ } else {
+
+ requestFocus = ui.getCatchHealthness();
+
+ }
+
+ //FIXME Voir si pas besoin aussi de relancer les binding (catchFateChanged, branchlineChanged) ?
+ onDepredatedChanged(bean.getDepredated(), bean);
+
+ }
+
+ ui.getAcquisitionModeGroup().setSelectedValue(null);
+ ui.getAcquisitionModeGroup().setSelectedValue(acquisitionModeEnum);
+
+ bean.removePropertyChangeListener(CatchLonglineDto.PROPERTY_CATCH_FATE_LONGLINE, catchFateChanged);
+ bean.addPropertyChangeListener(CatchLonglineDto.PROPERTY_CATCH_FATE_LONGLINE, catchFateChanged);
+
+ bean.removePropertyChangeListener(CatchLonglineDto.PROPERTY_DEPREDATED, depredatedChanged);
+ bean.addPropertyChangeListener(CatchLonglineDto.PROPERTY_DEPREDATED, depredatedChanged);
+
+ UIHelper.askFocus(requestFocus);
+
+ }
+
+ @Override
+ protected void initTableUI(DefaultTableCellRenderer renderer) {
+
+ CatchLonglineLogbookUI ui = getUi();
+ {
+ // init main table
+
+ JTable table = ui.getTable();
+
+ UIHelper.setI18nTableHeaderRenderer(
+ table,
+
+ n("observe.common.CatchLonglineDto.table.speciesCatch"),
+ n("observe.common.CatchLonglineDto.table.speciesCatch.tip"),
+ n("observe.common.CatchLonglineDto.table.acquisitionMode"),
+ n("observe.common.CatchLonglineDto.table.acquisitionMode.tip"),
+ n("observe.common.CatchLonglineDto.table.count"),
+ n("observe.common.CatchLonglineDto.table.count.tip"),
+ n("observe.common.CatchLonglineDto.table.catchHealthness"),
+ n("observe.common.CatchLonglineDto.table.catchHealthness.tip"),
+ n("observe.common.CatchLonglineDto.table.catchFateLongline"),
+ n("observe.common.CatchLonglineDto.table.catchFateLongline.tip"),
+ n("observe.common.CatchLonglineDto.table.discardHealthness"),
+ n("observe.common.CatchLonglineDto.table.discardHealthness.tip"),
+ n("observe.common.CatchLonglineDto.table.depredated"),
+ n("observe.common.CatchLonglineDto.table.depredated.tip"),
+ n("observe.common.CatchLonglineDto.table.comment"),
+ n("observe.common.CatchLonglineDto.table.comment.tip"));
+
+
+ UIHelper.setTableColumnRenderer(table, 0, UIHelper.newReferentialReferenceDecorateTableCellRenderer(renderer, SpeciesReference.class));
+ UIHelper.setTableColumnRenderer(table, 1, UIHelper.newEnumTableCellRenderer(renderer, CatchAcquisitionMode.class));
+ UIHelper.setTableColumnRenderer(table, 2, UIHelper.newEmptyNumberTableCellRenderer(renderer));
+ UIHelper.setTableColumnRenderer(table, 3, UIHelper.newReferentialReferenceDecorateTableCellRenderer(renderer, HealthnessReference.class));
+ UIHelper.setTableColumnRenderer(table, 4, UIHelper.newReferentialReferenceDecorateTableCellRenderer(renderer, CatchFateLonglineReference.class));
+ UIHelper.setTableColumnRenderer(table, 5, UIHelper.newReferentialReferenceDecorateTableCellRenderer(renderer, HealthnessReference.class));
+ UIHelper.setTableColumnRenderer(table, 6, UIHelper.newBooleanTableCellRenderer(renderer));
+ UIHelper.setTableColumnRenderer(table, 7, UIHelper.newStringTableCellRenderer(renderer, 10, true));
+
+ new CatchLonglinesAutotSelectRowAndShowPopupAction(ui, ui.getTableScrollPane(), table, ui.getCatchLonglinesPopup());
+
+ }
+
+ getTableModel().addPropertyChangeListener(ContentTableModel.CREATE_PROPERTY, evt -> {
+ Boolean oldValue = (Boolean) evt.getOldValue();
+ Boolean newValue = (Boolean) evt.getNewValue();
+ setTableModelCreate(oldValue, newValue);
+ });
+ }
+
+ @Override
+ protected String getEditBeanIdToLoad() {
+ return getDataContext().getSelectedSetLonglineId();
+ }
+
+ @Override
+ protected void doPersist(SetLonglineCatchDto bean) {
+ SaveResultDto saveResult = getSetLonglineCatchService().save(bean);
+ bean.setLastUpdateDate(saveResult.getLastUpdateDate());
+ }
+
+ @Override
+ protected boolean prepareSave(SetLonglineCatchDto editBean, List<CatchLonglineDto> objets) throws Exception {
+ boolean doSave = super.prepareSave(editBean, objets);
+ if (doSave) {
+ editBean.setCatchLongline(objets);
+ }
+ return doSave;
+ }
+
+ @Override
+ protected void loadEditBean(String beanId) {
+
+ Form<SetLonglineCatchDto> form = getSetLonglineCatchService().loadForm(beanId);
+
+ CatchLonglineLogbookUIModel model = getModel();
+
+ // On supprime l'entrée sélectionnée dans le tableau
+ getTableModel().setSelectedRow(-1);
+
+ loadReferentialReferenceSetsInModel(form);
+
+ Optional<FormDefinition<BranchlineDto>> optionalFormDefinition = DtoModelHelper.getOptionalFormDefinition(BranchlineDto.class);
+ optionalFormDefinition.ifPresent(branchlineDtoFormDefinition -> loadReferentialReferenceSetsInModel(branchlineDtoFormDefinition, false));
+
+ model.setForm(form);
+ }
+
+ @Override
+ protected void closeSafeUI() {
+
+ if (log.isInfoEnabled()) {
+ log.info("CloseUI: " + getModel());
+ }
+ super.closeSafeUI();
+
+ // remove listener
+ getUi().getErrorTableModel().removeTableModelListener(computeTabValidStateListener);
+
+ }
+
+ private void setTableModelCreate(Boolean oldValue, Boolean newValue) {
+
+ if (BooleanUtils.isTrue(oldValue) && BooleanUtils.isFalse(newValue)) {
+
+ // just save a row
+ // reload acquisition mode (will rebind some stuff)
+
+ CatchAcquisitionMode acquisitionModeEnum = (CatchAcquisitionMode) getUi().getAcquisitionModeGroup().getSelectedValue();
+
+ getUi().getAcquisitionModeGroup().setSelectedValue(null);
+ getUi().getAcquisitionModeGroup().setSelectedValue(acquisitionModeEnum);
+
+ }
+
+ }
+
+ private void onCatchFateChanged(CatchFateLonglineReference newValue) {
+
+ CatchLonglineLogbookUI ui = getUi();
+
+ if (newValue == null || !"fr.ird.observe.entities.referentiel.longline.CatchFateLongline#1239832686125#0.3".equals(newValue.getId())) {
+
+ // not discarded
+ ui.getDiscardHealthness().setEnabled(false);
+
+ getTableEditBean().setHookWhenDiscarded(null);
+ getTableEditBean().setDiscardHealthness(null);
+
+ } else {
+
+ // discarded
+ ui.getDiscardHealthness().setEnabled(true);
+ }
+
+ }
+
+ private void onDepredatedChanged(Boolean newValue, CatchLonglineDto tableEditBean) {
+
+ CatchLonglineLogbookUI ui = getUi();
+
+ if (BooleanUtils.isTrue(newValue)) {
+
+ // depredated
+ ui.getBeatDiameter().setEnabled(true);
+ ui.getPredator().setEnabled(true);
+
+ } else {
+
+ // not depredated
+ ui.getBeatDiameter().setEnabled(false);
+ ui.getPredator().setEnabled(false);
+ tableEditBean.setBeatDiameter(null);
+ tableEditBean.setPredator(null);
+
+ }
+
+ }
+
+ protected void computeTabValidState(SwingValidatorMessageTableModel errorTableModel) {
+
+ Set<String> errorProperties = new HashSet<>();
+ int rowCount = errorTableModel.getRowCount();
+ for (int i = 0; i < rowCount; i++) {
+
+ SwingValidatorMessage row = errorTableModel.getRow(i);
+ if (NuitonValidatorScope.ERROR.equals(row.getScope())) {
+ errorProperties.add(row.getField());
+ }
+ }
+
+ boolean caracteristicsTabValid = !errorProperties.removeAll(CatchLonglineLogbookUIModel.CARACTERISTIC_TAB_PROPERTIES);
+ boolean depredatedTabValid = !errorProperties.removeAll(CatchLonglineLogbookUIModel.DEPREDATED_TAB_PROPERTIES);
+
+ CatchLonglineLogbookUIModel model = getModel();
+
+ model.setCaracteristicsTabValid(caracteristicsTabValid);
+ model.setDepredatedTabValid(depredatedTabValid);
+ }
+
+ @Override
+ protected CatchLonglineTableModel getTableModel() {
+ return (CatchLonglineTableModel) super.getTableModel();
+ }
+
+ public void moveCatchLonglineUp() {
+ int selectedRow = getUi().getTable().getSelectedRow();
+ getTableModel().moveUp(selectedRow);
+ }
+
+ public void moveCatchLonglineDown() {
+ int selectedRow = getUi().getTable().getSelectedRow();
+ getTableModel().moveDown(selectedRow);
+ }
+
+ static class CatchLonglinesAutotSelectRowAndShowPopupAction extends AutotSelectRowAndShowPopupActionSupport {
+
+ private final CatchLonglineLogbookUI ui;
+
+ CatchLonglinesAutotSelectRowAndShowPopupAction(CatchLonglineLogbookUI ui,
+ JScrollPane pane,
+ JTable table,
+ JPopupMenu popup) {
+ super(pane, table, popup);
+ this.ui = ui;
+ }
+
+ @Override
+ protected void beforeOpenPopup(int modelRowIndex, int modelColumnIndex) {
+
+ CatchLonglineTableModel model = (CatchLonglineTableModel) getTable().getModel();
+
+ boolean canMoveUp = !ui.getModel().isCanSaveRow() && modelRowIndex > 0;
+ boolean canMoveDown = !ui.getModel().isCanSaveRow() && modelRowIndex < model.getRowCount() - 1;
+
+ ui.getMoveCatchLonglineUp().setEnabled(canMoveUp);
+ ui.getMoveCatchLonglineDown().setEnabled(canMoveDown);
+
+ }
+
+ }
+}
=====================================
client/src/main/java/fr/ird/observe/client/ui/content/data/longline/CatchLonglineLogbookUIModel.java
=====================================
--- /dev/null
+++ b/client/src/main/java/fr/ird/observe/client/ui/content/data/longline/CatchLonglineLogbookUIModel.java
@@ -0,0 +1,152 @@
+package fr.ird.observe.client.ui.content.data.longline;
+
+/*
+ * #%L
+ * ObServe :: Client
+ * %%
+ * Copyright (C) 2008 - 2017 IRD, Code Lutin, Ultreia.io
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.collect.ImmutableSet;
+import fr.ird.observe.client.ui.content.table.ContentTableMeta;
+import fr.ird.observe.client.ui.content.table.ContentTableModel;
+import fr.ird.observe.client.ui.content.table.ContentTableUIModel;
+import fr.ird.observe.client.ui.content.table.ObserveContentTableUI;
+import fr.ird.observe.dto.data.longline.CatchLonglineDto;
+import fr.ird.observe.dto.data.longline.SetLonglineCatchDto;
+import org.nuiton.util.beans.Binder;
+import org.nuiton.util.beans.BinderModelBuilder;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * Created on 9/26/14.
+ *
+ * @author Tony Chemit - dev(a)tchemit.fr
+ * @since 3.7
+ */
+public class CatchLonglineLogbookUIModel extends ContentTableUIModel<SetLonglineCatchDto, CatchLonglineDto> {
+
+ public static final String PROPERTY_CARACTERISTICS_TAB_VALID = "caracteristicsTabValid";
+
+ public static final String PROPERTY_DEPREDATED_TAB_VALID = "depredatedTabValid";
+
+ public static final Set<String> CARACTERISTIC_TAB_PROPERTIES =
+ ImmutableSet.<String>builder().add(CatchLonglineDto.PROPERTY_SPECIES_CATCH,
+ CatchLonglineDto.PROPERTY_PHOTO_REFERENCES,
+ CatchLonglineDto.PROPERTY_COUNT,
+ CatchLonglineDto.PROPERTY_TOTAL_WEIGHT,
+ CatchLonglineDto.PROPERTY_CATCH_HEALTHNESS,
+ CatchLonglineDto.PROPERTY_HOOK_POSITION,
+ CatchLonglineDto.PROPERTY_CATCH_FATE_LONGLINE,
+ CatchLonglineDto.PROPERTY_DISCARD_HEALTHNESS,
+ CatchLonglineDto.PROPERTY_TAG_NUMBER,
+ CatchLonglineDto.PROPERTY_HOOK_WHEN_DISCARDED).build();
+
+ public static final Set<String> DEPREDATED_TAB_PROPERTIES =
+ ImmutableSet.<String>builder().add(CatchLonglineDto.PROPERTY_DEPREDATED,
+ CatchLonglineDto.PROPERTY_BEAT_DIAMETER,
+ CatchLonglineDto.PROPERTY_PREDATOR).build();
+
+
+ private static final long serialVersionUID = 1L;
+
+ protected boolean caracteristicsTabValid;
+
+ protected boolean depredatedTabValid;
+
+ public CatchLonglineLogbookUIModel(CatchLonglineUI ui) {
+ super(SetLonglineCatchDto.class,
+ CatchLonglineDto.class,
+ new String[]{
+ SetLonglineCatchDto.PROPERTY_CATCH_LONGLINE
+ },
+ new String[]{CatchLonglineDto.PROPERTY_SPECIES_CATCH,
+ CatchLonglineDto.PROPERTY_ACQUISITION_MODE,
+ CatchLonglineDto.PROPERTY_COUNT,
+ CatchLonglineDto.PROPERTY_CATCH_HEALTHNESS,
+ CatchLonglineDto.PROPERTY_CATCH_FATE_LONGLINE,
+ CatchLonglineDto.PROPERTY_DISCARD_HEALTHNESS,
+ CatchLonglineDto.PROPERTY_DEPREDATED,
+ CatchLonglineDto.PROPERTY_NUMBER,
+ CatchLonglineDto.PROPERTY_HOME_ID,
+ CatchLonglineDto.PROPERTY_HOOK_POSITION,
+ CatchLonglineDto.PROPERTY_HOOK_WHEN_DISCARDED,
+ CatchLonglineDto.PROPERTY_MATURITY_STATUS,
+ CatchLonglineDto.PROPERTY_PHOTO_REFERENCES,
+ CatchLonglineDto.PROPERTY_SEX,
+ CatchLonglineDto.PROPERTY_PREDATOR,
+ CatchLonglineDto.PROPERTY_STOMAC_FULLNESS,
+ CatchLonglineDto.PROPERTY_TOTAL_WEIGHT,
+ CatchLonglineDto.PROPERTY_BEAT_DIAMETER,
+ CatchLonglineDto.PROPERTY_GONADE_WEIGHT,
+ CatchLonglineDto.PROPERTY_TAG_NUMBER,
+ CatchLonglineDto.PROPERTY_COMMENT
+ });
+
+ List<ContentTableMeta<CatchLonglineDto>> metas = Arrays.asList(
+ ContentTableModel.newTableMeta(CatchLonglineDto.class, CatchLonglineDto.PROPERTY_SPECIES_CATCH, false),
+ ContentTableModel.newTableMeta(CatchLonglineDto.class, CatchLonglineDto.PROPERTY_ACQUISITION_MODE, false),
+ ContentTableModel.newTableMeta(CatchLonglineDto.class, CatchLonglineDto.PROPERTY_COUNT, false),
+ ContentTableModel.newTableMeta(CatchLonglineDto.class, CatchLonglineDto.PROPERTY_CATCH_HEALTHNESS, false),
+ ContentTableModel.newTableMeta(CatchLonglineDto.class, CatchLonglineDto.PROPERTY_CATCH_FATE_LONGLINE, false),
+ ContentTableModel.newTableMeta(CatchLonglineDto.class, CatchLonglineDto.PROPERTY_DISCARD_HEALTHNESS, false),
+ ContentTableModel.newTableMeta(CatchLonglineDto.class, CatchLonglineDto.PROPERTY_DEPREDATED, false),
+ ContentTableModel.newTableMeta(CatchLonglineDto.class, CatchLonglineDto.PROPERTY_COMMENT, false));
+
+ initModel(ui, metas);
+
+ }
+
+ public boolean isCaracteristicsTabValid() {
+ return caracteristicsTabValid;
+ }
+
+ public void setCaracteristicsTabValid(boolean caracteristicsTabValid) {
+ this.caracteristicsTabValid = caracteristicsTabValid;
+ firePropertyChange(PROPERTY_CARACTERISTICS_TAB_VALID, null, caracteristicsTabValid);
+ }
+
+ public boolean isDepredatedTabValid() {
+ return depredatedTabValid;
+ }
+
+ public void setDepredatedTabValid(boolean depredatedTabValid) {
+ this.depredatedTabValid = depredatedTabValid;
+ firePropertyChange(PROPERTY_DEPREDATED_TAB_VALID, null, depredatedTabValid);
+ }
+
+ @Override
+ protected CatchLonglineTableModel createTableModel(ObserveContentTableUI<SetLonglineCatchDto, CatchLonglineDto, ?> ui, List<ContentTableMeta<CatchLonglineDto>> contentTableMetas) {
+ return new CatchLonglineTableModel(ui, contentTableMetas);
+ }
+
+ @Override
+ protected BinderModelBuilder<CatchLonglineDto, CatchLonglineDto> prepareChildLoador(String binderName) {
+
+ BinderModelBuilder<CatchLonglineDto, CatchLonglineDto> builder = super.prepareChildLoador(binderName);
+
+ builder.addCollectionStrategy(Binder.CollectionStrategy.duplicate, CatchLonglineDto.PROPERTY_PREDATOR);
+
+ return builder;
+
+ }
+
+}
=====================================
client/src/main/java/fr/ird/observe/client/ui/content/data/longline/SetLonglineLogbookUI.jaxx
=====================================
--- /dev/null
+++ b/client/src/main/java/fr/ird/observe/client/ui/content/data/longline/SetLonglineLogbookUI.jaxx
@@ -0,0 +1,452 @@
+<!--
+ #%L
+ ObServe :: Client
+ %%
+ Copyright (C) 2008 - 2017 IRD, Code Lutin, Ultreia.io
+ %%
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as
+ published by the Free Software Foundation, either version 3 of the
+ License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with this program. If not, see
+ <http://www.gnu.org/licenses/gpl-3.0.html>.
+ #L%
+ -->
+
+<fr.ird.observe.client.ui.content.ContentUI
+ i18nFormat="observe.common.SetLonglineDto.%s"
+ superGenericType='SetLonglineDto, SetLonglineLogbookUI'
+ contentTitle='{n("observe.common.SetLonglineDto.title")}'>
+
+ <import>
+ fr.ird.observe.dto.data.longline.SetLonglineDto
+ fr.ird.observe.dto.referential.longline.SettingShapeReference
+ fr.ird.observe.dto.referential.longline.LineTypeReference
+ fr.ird.observe.dto.referential.longline.LightsticksTypeReference
+ fr.ird.observe.dto.referential.longline.LightsticksColorReference
+
+ fr.ird.observe.client.ui.actions.content.DeleteDataUIAction
+ fr.ird.observe.client.ui.actions.content.ResetEditUIAction
+ fr.ird.observe.client.ui.actions.content.SaveEditUIAction
+ fr.ird.observe.client.ui.actions.main.global.DeleteDataGlobalUIAction
+ fr.ird.observe.client.ui.actions.main.global.NewNextDataGlobalUIAction
+ fr.ird.observe.client.ui.actions.main.global.ResetDataGlobalUIAction
+ fr.ird.observe.client.ui.actions.main.global.SaveDataGlobalUIAction
+
+ fr.ird.observe.client.ui.content.ContentUIModel
+ fr.ird.observe.client.ui.util.BooleanEditor
+ fr.ird.observe.client.ui.util.JComment
+
+ org.nuiton.jaxx.widgets.number.NumberEditor
+ org.nuiton.jaxx.widgets.select.BeanComboBox
+ org.nuiton.jaxx.widgets.gis.absolute.CoordinatesEditor
+ org.nuiton.jaxx.widgets.datetime.DateTimeEditor
+
+ org.apache.commons.lang3.BooleanUtils
+
+ java.awt.Dimension
+
+ static fr.ird.observe.client.ui.util.UIHelper.getStringValue
+ static org.nuiton.i18n.I18n.n
+ </import>
+
+ <style source="../../Common.jcss"/>
+
+ <!-- model -->
+ <SetLonglineLogbookUIModel id='model'/>
+
+ <!-- edit bean -->
+ <SetLonglineDto id='bean'/>
+
+ <!-- validator -->
+ <BeanValidator id='validator' autoField='true' context='update'
+ beanClass='fr.ird.observe.dto.data.longline.SetLonglineDto'
+ errorTableModel='{getErrorTableModel()}'>
+
+ <field name='settingStartLongitude' component='settingStartCoordinates'/>
+ <field name='settingStartLatitude' component='settingStartCoordinates'/>
+ <field name='settingStartQuadrant' component='settingStartCoordinates'/>
+
+ <field name='settingEndLongitude' component='settingEndCoordinates'/>
+ <field name='settingEndLatitude' component='settingEndCoordinates'/>
+ <field name='settingEndQuadrant' component='settingEndCoordinates'/>
+
+ <field name='haulingStartLongitude' component='haulingStartCoordinates'/>
+ <field name='haulingStartLatitude' component='haulingStartCoordinates'/>
+ <field name='haulingStartQuadrant' component='haulingStartCoordinates'/>
+
+ <field name='haulingEndLongitude' component='haulingEndCoordinates'/>
+ <field name='haulingEndLatitude' component='haulingEndCoordinates'/>
+ <field name='haulingEndQuadrant' component='haulingEndCoordinates'/>
+
+ </BeanValidator>
+
+ <!-- formulaire -->
+ <JPanel id="body" layout='{new BorderLayout()}'>
+
+ <Table insets="0" fill="both" constraints='BorderLayout.CENTER'>
+ <row>
+ <cell anchor="north">
+ <JTabbedPane id='mainTabbedPane'>
+ <tab id='settingTab' computeI18n="">
+ <JPanel layout='{new BorderLayout()}'>
+ <Table fill='both' constraints='BorderLayout.NORTH'>
+
+ <!-- homeId -->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='homeIdLabel'/>
+ </cell>
+ <cell anchor='east' weightx="1" fill="both">
+ <JPanel layout='{new BorderLayout()}'>
+ <JToolBar id='homeIdToolbar' constraints='BorderLayout.WEST'>
+ <JButton id='resetHomeId' constraints='BorderLayout.WEST' styleClass='resetButton'/>
+ </JToolBar>
+ <JTextField id='homeId' constraints='BorderLayout.CENTER'/>
+ </JPanel>
+ </cell>
+ </row>
+ <!-- number -->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='numberLabel'/>
+ </cell>
+ <cell columns="2" weightx="1" fill="both">
+ <NumberEditor id='number' constructorParams='this' styleClass="int6"/>
+ </cell>
+ </row>
+ <!-- setting shape -->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='settingShapeLabel'/>
+ </cell>
+ <cell columns="3" fill="both">
+ <BeanComboBox id='settingShape' constructorParams='this' genericType='SettingShapeReference'/>
+ </cell>
+ </row>
+ <row>
+ <cell columns="2">
+ <Table insets="0" fill='both'>
+ <!-- setting start timeStamp -->
+ <row>
+ <cell weightx="1">
+ <DateTimeEditor id='settingStartTimeStamp' constructorParams='this'/>
+ </cell>
+ </row>
+
+ <!-- setting start position -->
+ <row>
+ <cell anchor="east">
+ <CoordinatesEditor id='settingStartCoordinates' constructorParams='this'/>
+ </cell>
+ </row>
+
+ <!-- setting end timeStamp -->
+ <row>
+ <cell>
+ <DateTimeEditor id='settingEndTimeStamp' constructorParams='this'/>
+ </cell>
+ </row>
+
+ <!-- setting end position -->
+ <row>
+ <cell anchor="east">
+ <CoordinatesEditor id='settingEndCoordinates' constructorParams='this'/>
+ </cell>
+ </row>
+ </Table>
+ </cell>
+ </row>
+ </Table>
+ </JPanel>
+
+ </tab>
+
+ <tab id='settingCaracteristicsTab' computeI18n="">
+ <Table fill='both'>
+
+ <!-- setting vessel speed -->
+ <row>
+ <cell>
+ <JLabel id='settingVesselSpeedLabel'/>
+ </cell>
+ <cell columns="3">
+ <NumberEditor id='settingVesselSpeed' constructorParams='this' styleClass="float3"/>
+ </cell>
+ </row>
+ <!-- time between hooks -->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='timeBetweenHooksLabel'/>
+ </cell>
+ <cell fill='both' weightx="1" columns="3">
+ <NumberEditor id='timeBetweenHooks' constructorParams='this' styleClass="long10"/>
+ </cell>
+ </row>
+ <!-- total line length -->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='totalLineLengthLabel'/>
+ </cell>
+ <cell fill='both' weightx="1" columns="3">
+ <NumberEditor id='totalLineLength' constructorParams='this' styleClass="long10"/>
+ </cell>
+ </row>
+ <!-- basket line length -->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='basketLineLengthLabel'/>
+ </cell>
+ <cell fill='both' weightx="1" columns="3">
+ <NumberEditor id='basketLineLength' constructorParams='this' styleClass="long10"/>
+ </cell>
+ </row>
+ <!-- lengthBetweenBranchlines -->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='lengthBetweenBranchlinesLabel'/>
+ </cell>
+ <cell fill='both' weightx="1" columns="3">
+ <NumberEditor id='lengthBetweenBranchlines' constructorParams='this' styleClass="long10"/>
+ </cell>
+ </row>
+
+ <!-- shooter used -->
+ <!-- shooter speed -->
+ <row>
+ <cell anchor="east">
+ <JCheckBox id='shooterUsed' styleClass="i18n"/>
+ </cell>
+ <cell>
+ <JLabel id='shooterSpeedLabel'/>
+ </cell>
+ <cell columns="2">
+ <NumberEditor id='shooterSpeed' constructorParams='this' styleClass="float3"/>
+ </cell>
+ </row>
+ <!-- max depth targeted (m) -->
+ <row>
+ <cell>
+ <JLabel id='maxDepthTargetedLabel'/>
+ </cell>
+ <cell columns="3">
+ <NumberEditor id='maxDepthTargeted' constructorParams='this' styleClass="int6"/>
+ </cell>
+ </row>
+ <!-- total section count -->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='totalSectionsCountLabel'/>
+ </cell>
+ <cell fill='both' weightx="1" columns="3">
+ <NumberEditor id='totalSectionsCount' constructorParams='this' styleClass="int6"/>
+ </cell>
+ </row>
+ <!-- basket per section count -->
+ <!-- total basket count -->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='basketsPerSectionCountLabel'/>
+ </cell>
+ <cell fill='both' weightx="1">
+ <NumberEditor id='basketsPerSectionCount' constructorParams='this' styleClass="int6"/>
+ </cell>
+ <cell anchor='west'>
+ <JLabel id='totalBasketsCountLabel'/>
+ </cell>
+ <cell fill='both' weightx="1">
+ <NumberEditor id='totalBasketsCount' constructorParams='this' styleClass="int6"/>
+ </cell>
+ </row>
+ <!-- branchlines per basket count -->
+ <!-- total hooks count -->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='branchlinesPerBasketCountLabel'/>
+ </cell>
+ <cell fill='both' weightx="1">
+ <NumberEditor id='branchlinesPerBasketCount' constructorParams='this' styleClass="int6"/>
+ </cell>
+ <cell anchor='west'>
+ <JLabel id='totalHooksCountLabel'/>
+ </cell>
+ <cell fill='both' weightx="1">
+ <NumberEditor id='totalHooksCount' constructorParams='this' styleClass="int6"/>
+ </cell>
+ </row>
+ <!-- line type -->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='lineTypeLabel'/>
+ </cell>
+ <cell columns="3">
+ <BeanComboBox id='lineType' constructorParams='this' genericType='LineTypeReference'/>
+ </cell>
+ </row>
+ <!-- weighted swivels -->
+ <!-- swivels weights -->
+ <row>
+ <cell anchor="east">
+ <JCheckBox id='weightedSwivel' styleClass="i18n"/>
+ </cell>
+ <cell anchor="west">
+ <JLabel id='swivelWeightLabel'/>
+ </cell>
+ <cell columns="2">
+ <NumberEditor id='swivelWeight' constructorParams='this' styleClass="float3"/>
+ </cell>
+ </row>
+
+ <!-- weighted snaps -->
+ <!-- snap weights -->
+ <row>
+ <cell anchor='east'>
+ <JCheckBox id='weightedSnap' styleClass="i18n"/>
+ </cell>
+ <cell>
+ <JLabel id='snapWeightLabel'/>
+ </cell>
+ <cell columns="2">
+ <NumberEditor id='snapWeight' constructorParams='this' styleClass="float3"/>
+ </cell>
+ </row>
+ <!-- monitored -->
+ <row>
+ <cell anchor='east'>
+ <JCheckBox id='monitored' styleClass="i18n"/>
+ </cell>
+ </row>
+ </Table>
+ </tab>
+
+ <tab id='lightstickssTab' computeI18n="">
+ <JPanel layout='{new BorderLayout()}'>
+ <Table fill='both' constraints='BorderLayout.NORTH'>
+ <!-- lightsticksUsed -->
+ <row>
+ <cell anchor='east'>
+ <JCheckBox id='lightsticksUsed' styleClass="i18n"/>
+ </cell>
+ </row>
+ <!-- lightsticks per basket count -->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='lightsticksPerBasketCountLabel'/>
+ </cell>
+ <cell fill='both' weightx="1" columns="3">
+ <NumberEditor id='lightsticksPerBasketCount' constructorParams='this' styleClass="int6"/>
+ </cell>
+ </row>
+ <!-- lightsticks type -->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='lightsticksTypeLabel'/>
+ </cell>
+ <cell columns="3">
+ <BeanComboBox id='lightsticksType' constructorParams='this' genericType='LightsticksTypeReference'/>
+ </cell>
+ </row>
+ <!-- lightsticks color -->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='lightsticksColorLabel'/>
+ </cell>
+ <cell columns="3">
+ <BeanComboBox id='lightsticksColor' constructorParams='this' genericType='LightsticksColorReference'/>
+ </cell>
+ </row>
+ </Table>
+ </JPanel>
+ </tab>
+
+ <tab id='haulingTab' computeI18n="">
+
+ <JPanel layout='{new BorderLayout()}'>
+ <Table fill='both' constraints='BorderLayout.NORTH'>
+
+ <!-- hauling same direction as setting -->
+ <row>
+ <cell>
+ <JLabel id='haulingDirectionSameAsSettingLabel'/>
+ </cell>
+ <cell>
+ <BooleanEditor id='haulingDirectionSameAsSetting'/>
+ </cell>
+ </row>
+
+ <!-- hauling start timeStamp -->
+ <row>
+ <cell columns="2" weightx="1">
+ <DateTimeEditor id='haulingStartTimeStamp' constructorParams='this'/>
+ </cell>
+ </row>
+
+ <!-- hauling start position -->
+ <row>
+ <cell columns="2" anchor='east'>
+ <CoordinatesEditor id='haulingStartCoordinates' constructorParams='this'/>
+ </cell>
+ </row>
+
+ <!-- hauling end timeStamp -->
+ <row>
+ <cell columns="2" weightx="1">
+ <DateTimeEditor id='haulingEndTimeStamp' constructorParams='this'/>
+ </cell>
+ </row>
+
+ <!-- hauling end position -->
+ <row>
+ <cell columns="2" anchor='east'>
+ <CoordinatesEditor id='haulingEndCoordinates' constructorParams='this'/>
+ </cell>
+ </row>
+
+ <row>
+ <!-- hauling breaks -->
+ <cell anchor="west">
+ <JLabel id='haulingBreaksLabel'/>
+ </cell>
+ <cell weightx="1" fill="both">
+ <NumberEditor id='haulingBreaks' constructorParams='this' styleClass="int6"/>
+ </cell>
+ </row>
+ </Table>
+ </JPanel>
+ </tab>
+ </JTabbedPane>
+ </cell>
+ </row>
+
+ <row>
+ <cell fill="both" weighty="1" weightx="1">
+ <JComment id="comment"/>
+ </cell>
+ </row>
+
+ </Table>
+ </JPanel>
+
+ <!-- actions -->
+ <Table id="actions" fill='both' weightx='1' insets='0'>
+ <row>
+ <cell weightx="0.5" fill="both">
+ <JButton id='reset'/>
+ </cell>
+ <cell weightx="0.5">
+ <JButton id='save'/>
+ </cell>
+ <cell weightx="0.5">
+ <JButton id='delete'/>
+ </cell>
+ </row>
+ </Table>
+
+</fr.ird.observe.client.ui.content.ContentUI>
=====================================
client/src/main/java/fr/ird/observe/client/ui/content/data/longline/SetLonglineLogbookUI.jcss
=====================================
--- /dev/null
+++ b/client/src/main/java/fr/ird/observe/client/ui/content/data/longline/SetLonglineLogbookUI.jcss
@@ -0,0 +1,254 @@
+/*
+ * #%L
+ * ObServe :: Client
+ * %%
+ * Copyright (C) 2008 - 2017 IRD, Code Lutin, Ultreia.io
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+#model {
+ editable:true;
+ modified:{validator.isChanged()};
+ valid:{validator.isValid()};
+ enabled:{!model.isReadingMode()};
+}
+
+/* ***************************************************************************** */
+/* SETTING TAB **************************************************************** */
+/* ***************************************************************************** */
+
+#settingTab {
+ icon:{handler.getErrorIconIfFalse(model.isSettingTabValid())};
+}
+
+#homeId {
+ text: {getStringValue(bean.getHomeId())};
+ _propertyName: {SetLonglineDto.PROPERTY_HOME_ID};
+}
+
+#resetHomeId {
+ _resetPropertyName: {SetLonglineDto.PROPERTY_HOME_ID};
+ toolTipText:"observe.common.SetLonglineDto.action.reset.homeId.tip";
+}
+
+#number {
+ property: {SetLonglineDto.PROPERTY_NUMBER};
+ numberValue:{bean.getNumber()};
+}
+
+#settingStartTimeStamp {
+ date:{bean.getSettingStartTimeStamp()};
+ propertyDate: {SetLonglineDto.PROPERTY_SETTING_START_TIME_STAMP};
+}
+
+#settingStartCoordinates {
+ propertyLatitude:{SetLonglineDto.PROPERTY_SETTING_START_LATITUDE};
+ propertyLongitude:{SetLonglineDto.PROPERTY_SETTING_START_LONGITUDE};
+ propertyQuadrant:{SetLonglineDto.PROPERTY_SETTING_START_QUADRANT};
+ latitude:{bean.getSettingStartLatitude()};
+ longitude:{bean.getSettingStartLongitude()};
+ quadrant:{bean.getSettingStartQuadrant()};
+}
+
+#settingEndTimeStamp {
+ date:{bean.getSettingEndTimeStamp()};
+ propertyDate: {SetLonglineDto.PROPERTY_SETTING_END_TIME_STAMP};
+}
+
+#settingEndCoordinates {
+ propertyLatitude:{SetLonglineDto.PROPERTY_SETTING_END_LATITUDE};
+ propertyLongitude:{SetLonglineDto.PROPERTY_SETTING_END_LONGITUDE};
+ propertyQuadrant:{SetLonglineDto.PROPERTY_SETTING_END_QUADRANT};
+ latitude:{bean.getSettingEndLatitude()};
+ longitude:{bean.getSettingEndLongitude()};
+ quadrant:{bean.getSettingEndQuadrant()};
+}
+
+/* ***************************************************************************** */
+/* SETTING CARACTERISTICS TAB ************************************************* */
+/* ***************************************************************************** */
+
+#settingCaracteristicsTab {
+ icon:{handler.getErrorIconIfFalse(model.isSettingCaracteristicsTabValid())};
+}
+
+#settingVesselSpeed {
+ property:{SetLonglineDto.PROPERTY_SETTING_VESSEL_SPEED};
+ numberValue:{bean.getSettingVesselSpeed()};
+}
+
+#shooterUsed {
+ horizontalTextPosition:{JCheckBox.LEFT};
+ _propertyName:{SetLonglineDto.PROPERTY_SHOOTER_USED};
+ selected:{BooleanUtils.isTrue(bean.getShooterUsed())};
+}
+
+#shooterSpeed {
+ enabled:{BooleanUtils.isTrue(bean.getShooterUsed())};
+ property:{SetLonglineDto.PROPERTY_SHOOTER_SPEED};
+ numberValue:{bean.getShooterSpeed()};
+}
+
+#settingShape {
+ property:{SetLonglineDto.PROPERTY_SETTING_SHAPE};
+ selectedItem:{bean.getSettingShape()};
+}
+
+#weightedSwivel {
+ horizontalTextPosition:{JCheckBox.LEFT};
+ _propertyName:{SetLonglineDto.PROPERTY_WEIGHTED_SWIVEL};
+ selected:{BooleanUtils.isTrue(bean.getWeightedSwivel())};
+}
+
+#swivelWeight {
+ enabled:{BooleanUtils.isTrue(bean.getWeightedSwivel())};
+ property:{SetLonglineDto.PROPERTY_SWIVEL_WEIGHT};
+ numberValue:{bean.getSwivelWeight()};
+}
+
+#weightedSnap {
+ horizontalTextPosition:{JCheckBox.LEFT};
+ _propertyName:{SetLonglineDto.PROPERTY_WEIGHTED_SNAP};
+ selected:{BooleanUtils.isTrue(bean.getWeightedSnap())};
+}
+
+#snapWeight {
+ enabled:{BooleanUtils.isTrue(bean.getWeightedSnap())};
+ property:{SetLonglineDto.PROPERTY_SNAP_WEIGHT};
+ numberValue:{bean.getSnapWeight()};
+}
+
+#lineType {
+ property:{SetLonglineDto.PROPERTY_LINE_TYPE};
+ selectedItem:{bean.getLineType()};
+}
+
+#maxDepthTargeted {
+ property:{SetLonglineDto.PROPERTY_MAX_DEPTH_TARGETED};
+ numberValue:{bean.getMaxDepthTargeted()};
+}
+
+#monitored {
+ horizontalTextPosition:{JCheckBox.LEFT};
+ _propertyName:{SetLonglineDto.PROPERTY_MONITORED};
+ selected:{BooleanUtils.isTrue(bean.getMonitored())};
+}
+
+#lightsticksType {
+ property:{SetLonglineDto.PROPERTY_LIGHTSTICKS_TYPE};
+ selectedItem:{bean.getLightsticksType()};
+ enabled:{bean.getLightsticksPerBasketCount() !=null && bean.getLightsticksPerBasketCount() > 0};
+}
+
+#lightsticksColor {
+ property:{SetLonglineDto.PROPERTY_LIGHTSTICKS_COLOR};
+ selectedItem:{bean.getLightsticksColor()};
+ enabled:{bean.getLightsticksPerBasketCount() !=null && bean.getLightsticksPerBasketCount() > 0};
+}
+
+#timeBetweenHooks {
+ property:{SetLonglineDto.PROPERTY_TIME_BETWEEN_HOOKS};
+ numberValue:{bean.getTimeBetweenHooks()};
+}
+
+#lightsticksPerBasketCount {
+ property:{SetLonglineDto.PROPERTY_LIGHTSTICKS_PER_BASKET_COUNT};
+ numberValue:{bean.getLightsticksPerBasketCount()};
+}
+
+#basketsPerSectionCount {
+ property:{SetLonglineDto.PROPERTY_BASKETS_PER_SECTION_COUNT};
+ numberValue:{bean.getBasketsPerSectionCount()};
+}
+
+#totalBasketsCount {
+ property:{SetLonglineDto.PROPERTY_TOTAL_BASKETS_COUNT};
+ numberValue:{bean.getTotalBasketsCount()};
+}
+
+#branchlinesPerBasketCount {
+ property:{SetLonglineDto.PROPERTY_BRANCHLINES_PER_BASKET_COUNT};
+ numberValue:{bean.getBranchlinesPerBasketCount()};
+}
+
+#totalSectionsCount {
+ property:{SetLonglineDto.PROPERTY_TOTAL_SECTIONS_COUNT};
+ numberValue:{bean.getTotalSectionsCount()};
+}
+
+#totalHooksCount {
+ property:{SetLonglineDto.PROPERTY_TOTAL_HOOKS_COUNT};
+ numberValue:{bean.getTotalHooksCount()};
+}
+
+/* ***************************************************************************** */
+/* HAULING TAB **************************************************************** */
+/* ***************************************************************************** */
+
+#haulingTab {
+ icon:{handler.getErrorIconIfFalse(model.isHaulingTabValid())};
+}
+
+#haulingDirectionSameAsSetting {
+ booleanValue:{bean.getHaulingDirectionSameAsSetting()};
+ _propertyName: {SetLonglineDto.PROPERTY_HAULING_DIRECTION_SAME_AS_SETTING};
+}
+
+#haulingStartTimeStamp {
+ date:{bean.getHaulingStartTimeStamp()};
+ propertyDate: {SetLonglineDto.PROPERTY_HAULING_START_TIME_STAMP};
+}
+
+#haulingStartCoordinates {
+ propertyLatitude:{SetLonglineDto.PROPERTY_HAULING_START_LATITUDE};
+ propertyLongitude:{SetLonglineDto.PROPERTY_HAULING_START_LONGITUDE};
+ propertyQuadrant:{SetLonglineDto.PROPERTY_HAULING_START_QUADRANT};
+ latitude:{bean.getHaulingStartLatitude()};
+ longitude:{bean.getHaulingStartLongitude()};
+ quadrant:{bean.getHaulingStartQuadrant()};
+}
+
+#haulingEndTimeStamp {
+ date:{bean.getHaulingEndTimeStamp()};
+ propertyDate: {SetLonglineDto.PROPERTY_HAULING_END_TIME_STAMP};
+}
+
+#haulingEndCoordinates {
+ propertyLatitude:{SetLonglineDto.PROPERTY_HAULING_END_LATITUDE};
+ propertyLongitude:{SetLonglineDto.PROPERTY_HAULING_END_LONGITUDE};
+ propertyQuadrant:{SetLonglineDto.PROPERTY_HAULING_END_QUADRANT};
+ latitude:{bean.getHaulingEndLatitude()};
+ longitude:{bean.getHaulingEndLongitude()};
+ quadrant:{bean.getHaulingEndQuadrant()};
+}
+
+#haulingBreaks {
+ property:{SetLonglineDto.PROPERTY_HAULING_BREAKS};
+ numberValue:{bean.getHaulingBreaks()};
+}
+
+#delete {
+ _globalAction:{DeleteDataGlobalUIAction.ACTION_NAME};
+}
+
+#save {
+ _globalAction:{SaveDataGlobalUIAction.ACTION_NAME};
+}
+
+#reset {
+ _globalAction:{ResetDataGlobalUIAction.ACTION_NAME};
+}
=====================================
client/src/main/java/fr/ird/observe/client/ui/content/data/longline/SetLonglineLogbookUIHandler.java
=====================================
--- /dev/null
+++ b/client/src/main/java/fr/ird/observe/client/ui/content/data/longline/SetLonglineLogbookUIHandler.java
@@ -0,0 +1,495 @@
+package fr.ird.observe.client.ui.content.data.longline;
+
+/*
+ * #%L
+ * ObServe :: Client
+ * %%
+ * Copyright (C) 2008 - 2017 IRD, Code Lutin, Ultreia.io
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ird.observe.client.ObserveSwingApplicationContext;
+import fr.ird.observe.client.db.ClientDataContext;
+import fr.ird.observe.client.db.ObserveSwingDataSource;
+import fr.ird.observe.client.db.constants.DataContextType;
+import fr.ird.observe.client.ui.content.ContentMode;
+import fr.ird.observe.client.ui.content.ContentUIHandler;
+import fr.ird.observe.client.ui.content.ContentUIModel;
+import fr.ird.observe.client.ui.tree.navigation.NavigationTree;
+import fr.ird.observe.client.ui.tree.navigation.nodes.NavigationTreeNodeSupport;
+import fr.ird.observe.client.validation.ClientValidationContext;
+import fr.ird.observe.dto.data.longline.ActivityLonglineDto;
+import fr.ird.observe.dto.data.longline.SetLonglineDto;
+import fr.ird.observe.dto.data.longline.SetLonglineHelper;
+import fr.ird.observe.dto.data.longline.SetLonglineReference;
+import fr.ird.observe.dto.form.Form;
+import fr.ird.observe.dto.result.SaveResultDto;
+import fr.ird.observe.spi.DtoModelHelper;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.jaxx.runtime.spi.UIHandler;
+import org.nuiton.jaxx.validator.swing.SwingValidatorMessage;
+import org.nuiton.jaxx.validator.swing.SwingValidatorMessageTableModel;
+import org.nuiton.jaxx.validator.swing.SwingValidatorUtil;
+import org.nuiton.jaxx.widgets.gis.CoordinateFormat;
+import org.nuiton.jaxx.widgets.gis.absolute.CoordinatesEditorModel;
+import org.nuiton.jaxx.widgets.hidor.HidorButton;
+import org.nuiton.validator.NuitonValidatorScope;
+
+import javax.swing.event.TableModelListener;
+import java.beans.PropertyChangeListener;
+import java.util.HashSet;
+import java.util.Set;
+
+import static org.nuiton.i18n.I18n.t;
+
+/**
+ * Created on 9/1/14.
+ *
+ * @author Tony Chemit - dev(a)tchemit.fr
+ * @since 3.7
+ */
+public class SetLonglineLogbookUIHandler extends ContentUIHandler<SetLonglineDto, SetLonglineLogbookUI> implements UIHandler<SetLonglineLogbookUI> {
+
+ /** Logger */
+ private static final Log log = LogFactory.getLog(SetLonglineLogbookUIHandler.class);
+
+ // Compute valid state of tab from the error table
+ protected final TableModelListener computeTabValidStateListener;
+
+ // Change toogle target visible on all TimeEditors
+ private final PropertyChangeListener onToogleTimeEditorSliderChangedListener;
+
+ // Change toogle target visible on all TimeEditors
+ private final PropertyChangeListener onCoordinateFormatChangedListener;
+
+ private boolean toogleTimeEditorSliderIsChanging;
+
+ private boolean coordinateFormatChangedIsChanging;
+
+ SetLonglineLogbookUIHandler() {
+ super(DataContextType.ActivityLongline, DataContextType.SetLongline);
+ computeTabValidStateListener = e -> {
+
+ SwingValidatorMessageTableModel source = (SwingValidatorMessageTableModel) e.getSource();
+ computeTabValidState(source);
+
+ };
+ onToogleTimeEditorSliderChangedListener = evt -> {
+ Boolean newValue = (Boolean) evt.getNewValue();
+ onToogleTimeEditorSliderChanged(newValue);
+ };
+ onCoordinateFormatChangedListener = evt -> {
+ CoordinateFormat newValue = (CoordinateFormat) evt.getNewValue();
+ onCoordinateFormatChanged(newValue);
+ };
+ }
+
+ @Override
+ protected boolean computeCanWrite(ObserveSwingDataSource source) {
+ return source.canWriteData();
+ }
+
+ @Override
+ protected ContentMode getContentMode(ClientDataContext dataContext) {
+
+ String setId = getSelectedId();
+
+ if (setId == null) {
+
+ // mode creation
+ return ContentMode.CREATE;
+
+ }
+
+ if (getOpenDataManager().isOpenActivityLongline(dataContext.getSelectedActivityLonglineId())) {
+
+ // l'activité est ouverte, mode édition
+ return ContentMode.UPDATE;
+
+ }
+
+ // l'activité n'est pas ouverte, mode lecture
+ addMessage(getUi(),
+ NuitonValidatorScope.INFO,
+ getTypeI18nKey(ActivityLonglineDto.class),
+ t("observe.common.ActivityLonglineDto.message.not.open"));
+
+ return ContentMode.READ;
+
+ }
+
+ @Override
+ public void afterInit(SetLonglineLogbookUI ui) {
+ super.afterInit(ui);
+
+ ui.getSettingStartTimeStamp().getSliderHidor().addPropertyChangeListener(HidorButton.PROPERTY_TARGET_VISIBLE, onToogleTimeEditorSliderChangedListener);
+ ui.getSettingEndTimeStamp().getSliderHidor().addPropertyChangeListener(HidorButton.PROPERTY_TARGET_VISIBLE, onToogleTimeEditorSliderChangedListener);
+ ui.getHaulingStartTimeStamp().getSliderHidor().addPropertyChangeListener(HidorButton.PROPERTY_TARGET_VISIBLE, onToogleTimeEditorSliderChangedListener);
+ ui.getHaulingEndTimeStamp().getSliderHidor().addPropertyChangeListener(HidorButton.PROPERTY_TARGET_VISIBLE, onToogleTimeEditorSliderChangedListener);
+
+ ui.getSettingStartCoordinates().getModel().addPropertyChangeListener(CoordinatesEditorModel.PROPERTY_FORMAT, onCoordinateFormatChangedListener);
+ ui.getSettingEndCoordinates().getModel().addPropertyChangeListener(CoordinatesEditorModel.PROPERTY_FORMAT, onCoordinateFormatChangedListener);
+ ui.getHaulingStartCoordinates().getModel().addPropertyChangeListener(CoordinatesEditorModel.PROPERTY_FORMAT, onCoordinateFormatChangedListener);
+ ui.getHaulingEndCoordinates().getModel().addPropertyChangeListener(CoordinatesEditorModel.PROPERTY_FORMAT, onCoordinateFormatChangedListener);
+
+ }
+
+ @Override
+ public void openUI() {
+
+ getUi().getSettingStartCoordinates().resetModel();
+ getUi().getSettingEndCoordinates().resetModel();
+ getUi().getHaulingStartCoordinates().resetModel();
+ getUi().getHaulingEndCoordinates().resetModel();
+
+ if (log.isInfoEnabled()) {
+ log.info("OpenUI: " + getModel());
+ }
+ super.openUI();
+
+ String activityId = getSelectedParentId();
+ String setId = getSelectedId();
+
+ if (log.isInfoEnabled()) {
+ log.info("activityId = " + activityId);
+ log.info("setId = " + setId);
+ }
+ ContentMode mode = computeContentMode();
+
+ SetLonglineDto bean = getBean();
+
+ Form<SetLonglineDto> form;
+ if (setId == null) {
+
+ // create mode
+ form = getSetLonglineService().preCreate(activityId);
+
+ } else {
+
+ // update mode
+ form = getSetLonglineService().loadForm(setId);
+
+ }
+
+ loadReferentialReferenceSetsInModel(form);
+
+ getModel().setForm(form);
+ SetLonglineHelper.copySetLonglineDto(form.getObject(), bean);
+
+ // 1. Mise à jour latitude/longitude:
+ getUi().getSettingStartCoordinates().setLatitudeAndLongitude(bean.getSettingStartLatitude(), bean.getSettingStartLongitude());
+ // 2. Mise à jour du quadrant :
+ // Si le bean de données contient un quadrant, on met simplement à jour le composant de coordonnées pour sélectionner le quadrant voulu
+ // sinon, on réinitialise les quadrants du composant afin qu'aucun d'eux ne soit sélectionné (par exemple dans le cas de la création de la première activité d'une route)
+ if (bean.getSettingStartQuadrant() == null) {
+ getUi().getSettingStartCoordinates().resetQuadrant();
+ } else {
+ getUi().getSettingStartCoordinates().setQuadrant(bean.getSettingStartQuadrant());
+ }
+
+ // 1. Mise à jour latitude/longitude:
+ getUi().getSettingEndCoordinates().setLatitudeAndLongitude(bean.getSettingEndLatitude(), bean.getSettingEndLongitude());
+ // 2. Mise à jour du quadrant :
+ // Si le bean de données contient un quadrant, on met simplement à jour le composant de coordonnées pour sélectionner le quadrant voulu
+ // sinon, on réinitialise les quadrants du composant afin qu'aucun d'eux ne soit sélectionné (par exemple dans le cas de la création de la première activité d'une route)
+ if (bean.getSettingEndQuadrant() == null) {
+ getUi().getSettingEndCoordinates().resetQuadrant();
+ } else {
+ getUi().getSettingEndCoordinates().setQuadrant(bean.getSettingEndQuadrant());
+ }
+
+ // 1. Mise à jour latitude/longitude:
+ getUi().getHaulingStartCoordinates().setLatitudeAndLongitude(bean.getHaulingStartLatitude(), bean.getHaulingStartLongitude());
+ // 2. Mise à jour du quadrant :
+ // Si le bean de données contient un quadrant, on met simplement à jour le composant de coordonnées pour sélectionner le quadrant voulu
+ // sinon, on réinitialise les quadrants du composant afin qu'aucun d'eux ne soit sélectionné (par exemple dans le cas de la création de la première activité d'une route)
+ if (bean.getHaulingStartQuadrant() == null) {
+ getUi().getHaulingStartCoordinates().resetQuadrant();
+ } else {
+ getUi().getHaulingStartCoordinates().setQuadrant(bean.getHaulingStartQuadrant());
+ }
+
+ // 1. Mise à jour latitude/longitude:
+ getUi().getHaulingEndCoordinates().setLatitudeAndLongitude(bean.getHaulingEndLatitude(), bean.getHaulingEndLongitude());
+ // 2. Mise à jour du quadrant :
+ // Si le bean de données contient un quadrant, on met simplement à jour le composant de coordonnées pour sélectionner le quadrant voulu
+ // sinon, on réinitialise les quadrants du composant afin qu'aucun d'eux ne soit sélectionné (par exemple dans le cas de la création de la première activité d'une route)
+ if (bean.getHaulingEndQuadrant() == null) {
+ getUi().getHaulingEndCoordinates().resetQuadrant();
+ } else {
+ getUi().getHaulingEndCoordinates().setQuadrant(bean.getHaulingEndQuadrant());
+ }
+
+ // utilisation du mode requis
+ setContentMode(mode);
+
+ // To be sure always remove listener (could prevent some leaks)
+ getUi().getErrorTableModel().removeTableModelListener(computeTabValidStateListener);
+ // listen messages to see if required to add
+ getUi().getErrorTableModel().addTableModelListener(computeTabValidStateListener);
+
+ SwingValidatorMessageTableModel errorTableModel = getUi().getErrorTableModel();
+ computeTabValidState(errorTableModel);
+
+ if (mode != ContentMode.READ) {
+ getUi().startEdit(null);
+ }
+
+ }
+
+ @Override
+ protected void closeSafeUI() {
+
+ if (log.isInfoEnabled()) {
+ log.info("CloseUI: " + getModel());
+ }
+ super.closeSafeUI();
+
+ // remove listener
+ getUi().getErrorTableModel().removeTableModelListener(computeTabValidStateListener);
+
+ }
+
+ @Override
+ public void startEditUI(String... binding) {
+
+ ContentUIModel<SetLonglineDto> model = getModel();
+ boolean create = model.getMode() == ContentMode.CREATE;
+ String contextName = getValidatorContextName(model.getMode());
+ getUi().getValidator().setContext(contextName);
+ if (create) {
+ addInfoMessage(t("observe.common.SetLonglineDto.message.creating"));
+ } else {
+ addInfoMessage(t("observe.common.SetLonglineDto.message.updating"));
+ }
+
+ super.startEditUI(SetLonglineLogbookUI.BINDING_COMMENT_MODEL,
+
+ // setting tab
+ SetLonglineLogbookUI.BINDING_HOME_ID_TEXT,
+ SetLonglineLogbookUI.BINDING_NUMBER_NUMBER_VALUE,
+
+ SetLonglineLogbookUI.BINDING_SETTING_START_TIME_STAMP_DATE,
+ SetLonglineLogbookUI.BINDING_SETTING_START_COORDINATES_LATITUDE,
+ SetLonglineLogbookUI.BINDING_SETTING_START_COORDINATES_LONGITUDE,
+
+ SetLonglineLogbookUI.BINDING_SETTING_END_TIME_STAMP_DATE,
+ SetLonglineLogbookUI.BINDING_SETTING_END_COORDINATES_LATITUDE,
+ SetLonglineLogbookUI.BINDING_SETTING_END_COORDINATES_LONGITUDE,
+
+ // setting caracteristics tab
+ SetLonglineLogbookUI.BINDING_SETTING_VESSEL_SPEED_NUMBER_VALUE,
+ SetLonglineLogbookUI.BINDING_SHOOTER_USED_SELECTED,
+ SetLonglineLogbookUI.BINDING_SHOOTER_SPEED_NUMBER_VALUE,
+ SetLonglineLogbookUI.BINDING_TIME_BETWEEN_HOOKS_NUMBER_VALUE,
+ SetLonglineLogbookUI.BINDING_SETTING_SHAPE_SELECTED_ITEM,
+ SetLonglineLogbookUI.BINDING_WEIGHTED_SWIVEL_SELECTED,
+ SetLonglineLogbookUI.BINDING_SWIVEL_WEIGHT_NUMBER_VALUE,
+ SetLonglineLogbookUI.BINDING_WEIGHTED_SNAP_SELECTED,
+ SetLonglineLogbookUI.BINDING_SNAP_WEIGHT_NUMBER_VALUE,
+ SetLonglineLogbookUI.BINDING_LINE_TYPE_SELECTED_ITEM,
+ SetLonglineLogbookUI.BINDING_MAX_DEPTH_TARGETED_NUMBER_VALUE,
+ SetLonglineLogbookUI.BINDING_MONITORED_SELECTED,
+ SetLonglineLogbookUI.BINDING_LIGHTSTICKS_TYPE_SELECTED_ITEM,
+ SetLonglineLogbookUI.BINDING_LIGHTSTICKS_COLOR_SELECTED_ITEM,
+ SetLonglineLogbookUI.BINDING_LIGHTSTICKS_PER_BASKET_COUNT_NUMBER_VALUE,
+ SetLonglineLogbookUI.BINDING_BASKETS_PER_SECTION_COUNT_NUMBER_VALUE,
+ SetLonglineLogbookUI.BINDING_TOTAL_BASKETS_COUNT_NUMBER_VALUE,
+ SetLonglineLogbookUI.BINDING_BRANCHLINES_PER_BASKET_COUNT_NUMBER_VALUE,
+ SetLonglineLogbookUI.BINDING_TOTAL_SECTIONS_COUNT_NUMBER_VALUE,
+ SetLonglineLogbookUI.BINDING_TOTAL_HOOKS_COUNT_NUMBER_VALUE,
+
+ // hauling tab
+ SetLonglineLogbookUI.BINDING_HAULING_DIRECTION_SAME_AS_SETTING_BOOLEAN_VALUE,
+
+ SetLonglineLogbookUI.BINDING_HAULING_START_TIME_STAMP_DATE,
+ SetLonglineLogbookUI.BINDING_HAULING_START_COORDINATES_LATITUDE,
+ SetLonglineLogbookUI.BINDING_HAULING_START_COORDINATES_LONGITUDE,
+
+ SetLonglineLogbookUI.BINDING_HAULING_END_TIME_STAMP_DATE,
+ SetLonglineLogbookUI.BINDING_HAULING_END_COORDINATES_LATITUDE,
+ SetLonglineLogbookUI.BINDING_HAULING_END_COORDINATES_LONGITUDE,
+
+ SetLonglineLogbookUI.BINDING_HAULING_BREAKS_NUMBER_VALUE);
+
+ model.setModified(create);
+
+ }
+
+ @Override
+ protected boolean doSave(SetLonglineDto bean) {
+
+ String activityId = getSelectedParentId();
+
+ boolean notPersisted = bean.isNotPersisted();
+
+ SaveResultDto saveResult = getSetLonglineService().save(activityId, bean);
+ saveResult.toDto(bean);
+
+ if (notPersisted) {
+ getOpenDataManager().openSetLongline(activityId, bean.getId());
+ }
+
+ return true;
+
+ }
+
+ @Override
+ protected void afterSave(boolean refresh) {
+
+ super.afterSave(refresh);
+
+ SetLonglineDto bean = getBean();
+
+ SwingValidatorUtil.setValidatorChanged(getUi(), false);
+
+ NavigationTree treeHelper = getNavigationTree();
+
+ NavigationTreeNodeSupport node = treeHelper.getSelectedNode();
+ boolean create = node.getId() == null;
+
+ if (create) {
+
+ getModel().setMode(ContentMode.UPDATE);
+
+ // remove old node and recreate new node
+ NavigationTreeNodeSupport parentNode = node.getParent();
+ treeHelper.removeNode(node);
+
+ SetLonglineReference reference = DtoModelHelper.fromDataDto(SetLonglineDto.class).toReference(getDecoratorService().getReferentialLocale(), bean);
+ node = treeHelper.addSetLongline(parentNode, reference);
+
+ stopEditUI();
+ treeHelper.selectNode(node);
+
+ } else {
+
+ // select ancestor node
+ treeHelper.reloadSelectedNode(false, false);
+
+ }
+
+ }
+
+ @Override
+ protected boolean doDelete(SetLonglineDto bean) {
+
+ if (askToDelete(bean)) {
+ return false;
+ }
+
+ String activityId = getSelectedParentId();
+ getSetLonglineService().delete(activityId, bean.getId());
+
+ return true;
+
+ }
+
+ @Override
+ protected void prepareValidationContext() {
+ super.prepareValidationContext();
+
+ ClientValidationContext validationContext = ObserveSwingApplicationContext.get().getValidationContext();
+ validationContext.setCoordinatesEditor("haulingStart", getUi().getHaulingStartCoordinates());
+ validationContext.setCoordinatesEditor("haulingEnd", getUi().getHaulingEndCoordinates());
+ validationContext.setCoordinatesEditor("settingStart", getUi().getSettingStartCoordinates());
+ validationContext.setCoordinatesEditor("settingEnd", getUi().getSettingEndCoordinates());
+
+ }
+
+
+ protected void computeTabValidState(SwingValidatorMessageTableModel errorTableModel) {
+
+ Set<String> errorProperties = new HashSet<>();
+ int rowCount = errorTableModel.getRowCount();
+ for (int i = 0; i < rowCount; i++) {
+
+ SwingValidatorMessage row = errorTableModel.getRow(i);
+ if (NuitonValidatorScope.ERROR.equals(row.getScope())) {
+ errorProperties.add(row.getField());
+ }
+ }
+
+ boolean settingTabValid = !errorProperties.removeAll(SetLonglineLogbookUIModel.SETTING_TAB_PROPERTIES);
+ boolean settingCaracteristicsTabValid = !errorProperties.removeAll(SetLonglineLogbookUIModel.SETTING_CARACTERISTICS_TAB_PROPERTIES);
+ boolean haulingTabValid = !errorProperties.removeAll(SetLonglineLogbookUIModel.HAULING_TAB_PROPERTIES);
+
+ SetLonglineLogbookUIModel model = (SetLonglineLogbookUIModel) getModel();
+ model.setSettingTabValid(settingTabValid);
+ model.setSettingCaracteristicsTabValid(settingCaracteristicsTabValid);
+ model.setHaulingTabValid(haulingTabValid);
+
+ }
+
+ private void onToogleTimeEditorSliderChanged(boolean newValue) {
+
+ if (!toogleTimeEditorSliderIsChanging) {
+
+ toogleTimeEditorSliderIsChanging = true;
+
+ boolean selected = !newValue;
+
+ try {
+
+ getUi().getSettingStartTimeStamp().getSliderHidor().setSelected(selected);
+ getUi().getSettingStartTimeStamp().getSliderHidor().setTargetVisible(newValue);
+
+ getUi().getSettingEndTimeStamp().getSliderHidor().setSelected(selected);
+ getUi().getSettingEndTimeStamp().getSliderHidor().setTargetVisible(newValue);
+
+ getUi().getHaulingStartTimeStamp().getSliderHidor().setSelected(selected);
+ getUi().getHaulingStartTimeStamp().getSliderHidor().setTargetVisible(newValue);
+
+ getUi().getHaulingEndTimeStamp().getSliderHidor().setSelected(selected);
+ getUi().getHaulingEndTimeStamp().getSliderHidor().setTargetVisible(newValue);
+
+ } finally {
+
+ toogleTimeEditorSliderIsChanging = false;
+
+ }
+
+ }
+
+ }
+
+ private synchronized void onCoordinateFormatChanged(CoordinateFormat newValue) {
+
+ if (!coordinateFormatChangedIsChanging) {
+
+ coordinateFormatChangedIsChanging = true;
+
+ try {
+
+ getUi().getSettingStartCoordinates().setFormat(newValue);
+ getUi().getSettingEndCoordinates().setFormat(newValue);
+
+ getUi().getHaulingStartCoordinates().setFormat(newValue);
+ getUi().getHaulingEndCoordinates().setFormat(newValue);
+
+ } finally {
+
+ coordinateFormatChangedIsChanging = false;
+
+ }
+
+ }
+
+ }
+
+}
=====================================
client/src/main/java/fr/ird/observe/client/ui/content/data/longline/SetLonglineLogbookUIModel.java
=====================================
--- /dev/null
+++ b/client/src/main/java/fr/ird/observe/client/ui/content/data/longline/SetLonglineLogbookUIModel.java
@@ -0,0 +1,132 @@
+package fr.ird.observe.client.ui.content.data.longline;
+
+/*
+ * #%L
+ * ObServe :: Client
+ * %%
+ * Copyright (C) 2008 - 2017 IRD, Code Lutin, Ultreia.io
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.collect.ImmutableSet;
+import fr.ird.observe.client.ui.content.ContentUIModel;
+import fr.ird.observe.dto.data.longline.SetLonglineDto;
+
+import java.util.Set;
+
+/**
+ * Created on 9/28/14.
+ *
+ * @author Tony Chemit - dev(a)tchemit.fr
+ * @since XXX
+ */
+public class SetLonglineLogbookUIModel extends ContentUIModel<SetLonglineDto> {
+
+ public static final String PROPERTY_SETTING_TAB_VALID = "settingTabValid";
+
+ public static final String PROPERTY_SETTING_CARACTERISTICS_TAB_VALID = "settingCaracteristicsTabValid";
+
+ public static final String PROPERTY_HAULING_TAB_VALID = "haulingTabValid";
+
+ public static final Set<String> SETTING_TAB_PROPERTIES =
+ ImmutableSet.<String>builder().add(
+ SetLonglineDto.PROPERTY_HOME_ID,
+ SetLonglineDto.PROPERTY_NUMBER,
+ SetLonglineDto.PROPERTY_SETTING_START_TIME_STAMP,
+ SetLonglineDto.PROPERTY_SETTING_START_LATITUDE,
+ SetLonglineDto.PROPERTY_SETTING_START_LONGITUDE,
+ SetLonglineDto.PROPERTY_SETTING_END_TIME_STAMP,
+ SetLonglineDto.PROPERTY_SETTING_END_LATITUDE,
+ SetLonglineDto.PROPERTY_SETTING_END_LONGITUDE
+ ).build();
+
+ public static final Set<String> SETTING_CARACTERISTICS_TAB_PROPERTIES =
+ ImmutableSet.<String>builder().add(
+ SetLonglineDto.PROPERTY_SETTING_SHAPE,
+ SetLonglineDto.PROPERTY_LINE_TYPE,
+ SetLonglineDto.PROPERTY_LIGHTSTICKS_TYPE,
+ SetLonglineDto.PROPERTY_LIGHTSTICKS_COLOR,
+ SetLonglineDto.PROPERTY_SETTING_VESSEL_SPEED,
+ SetLonglineDto.PROPERTY_MAX_DEPTH_TARGETED,
+ SetLonglineDto.PROPERTY_SHOOTER_USED,
+ SetLonglineDto.PROPERTY_SHOOTER_SPEED,
+ SetLonglineDto.PROPERTY_WEIGHTED_SWIVEL,
+ SetLonglineDto.PROPERTY_SWIVEL_WEIGHT,
+ SetLonglineDto.PROPERTY_WEIGHTED_SNAP,
+ SetLonglineDto.PROPERTY_SNAP_WEIGHT,
+ SetLonglineDto.PROPERTY_MONITORED,
+ SetLonglineDto.PROPERTY_TIME_BETWEEN_HOOKS,
+ SetLonglineDto.PROPERTY_BASKETS_PER_SECTION_COUNT,
+ SetLonglineDto.PROPERTY_BRANCHLINES_PER_BASKET_COUNT,
+ SetLonglineDto.PROPERTY_LIGHTSTICKS_PER_BASKET_COUNT,
+ SetLonglineDto.PROPERTY_TOTAL_SECTIONS_COUNT,
+ SetLonglineDto.PROPERTY_TOTAL_BASKETS_COUNT,
+ SetLonglineDto.PROPERTY_TOTAL_HOOKS_COUNT
+ ).build();
+
+ public static final Set<String> HAULING_TAB_PROPERTIES =
+ ImmutableSet.<String>builder().add(
+ SetLonglineDto.PROPERTY_HAULING_DIRECTION_SAME_AS_SETTING,
+ SetLonglineDto.PROPERTY_HAULING_START_LATITUDE,
+ SetLonglineDto.PROPERTY_HAULING_START_LONGITUDE,
+ SetLonglineDto.PROPERTY_HAULING_START_TIME_STAMP,
+ SetLonglineDto.PROPERTY_HAULING_END_LATITUDE,
+ SetLonglineDto.PROPERTY_HAULING_END_LONGITUDE,
+ SetLonglineDto.PROPERTY_HAULING_END_TIME_STAMP,
+ SetLonglineDto.PROPERTY_HAULING_BREAKS
+ ).build();
+
+ private static final long serialVersionUID = 1L;
+
+ protected boolean settingTabValid;
+
+ protected boolean settingCaracteristicsTabValid;
+
+ protected boolean haulingTabValid;
+
+ public SetLonglineLogbookUIModel() {
+ super(SetLonglineDto.class);
+ }
+
+ public boolean isHaulingTabValid() {
+ return haulingTabValid;
+ }
+
+ public void setHaulingTabValid(boolean haulingTabValid) {
+ this.haulingTabValid = haulingTabValid;
+ firePropertyChange(PROPERTY_HAULING_TAB_VALID, null, haulingTabValid);
+ }
+
+ public boolean isSettingCaracteristicsTabValid() {
+ return settingCaracteristicsTabValid;
+ }
+
+ public void setSettingCaracteristicsTabValid(boolean settingCaracteristicsTabValid) {
+ this.settingCaracteristicsTabValid = settingCaracteristicsTabValid;
+ firePropertyChange(PROPERTY_SETTING_CARACTERISTICS_TAB_VALID, null, settingCaracteristicsTabValid);
+ }
+
+ public boolean isSettingTabValid() {
+ return settingTabValid;
+ }
+
+ public void setSettingTabValid(boolean settingTabValid) {
+ this.settingTabValid = settingTabValid;
+ firePropertyChange(PROPERTY_SETTING_TAB_VALID, null, settingTabValid);
+ }
+
+}
=====================================
client/src/main/resources/i18n/client_en_GB.properties
=====================================
--- a/client/src/main/resources/i18n/client_en_GB.properties
+++ b/client/src/main/resources/i18n/client_en_GB.properties
@@ -364,8 +364,11 @@ observe.common.ActivityLonglineDto.message.no.active.found.for.other.trip=No ope
observe.common.ActivityLonglineDto.message.nonForTrip=< No activity for current trip >
observe.common.ActivityLonglineDto.message.not.open=Activity is not opened, no edit possible.
observe.common.ActivityLonglineDto.message.updating=Updating an activity
+observe.common.ActivityLonglineDto.relatedObservedActivity=Observed activity
observe.common.ActivityLonglineDto.timeStamp=timestamp
observe.common.ActivityLonglineDto.titles=Activities
+observe.common.ActivityLonglineDto.vesselSpeed=Speed
+observe.common.ActivityLonglineDto.wind=Wind
observe.common.ActivitySeineDto.action.addFloatingObject=Add FAD
observe.common.ActivitySeineDto.action.addFloatingObject.tip=Add a FAD to the activity
observe.common.ActivitySeineDto.action.addSet=Add a Set
@@ -454,11 +457,14 @@ observe.common.CatchLonglineDto.availablePredator=Avaiable predators
observe.common.CatchLonglineDto.beatDiameter=Beat diameter
observe.common.CatchLonglineDto.branchlineTab=Branchline
observe.common.CatchLonglineDto.caracteristicTab=Caracteristics
+observe.common.CatchLonglineDto.countDepredated=\#TODO
observe.common.CatchLonglineDto.depredated=Depredated
+observe.common.CatchLonglineDto.depredatedProportion=\#TODO
observe.common.CatchLonglineDto.depredatedTab=Depredation
observe.common.CatchLonglineDto.foodAndSexualTab=Food and sexual maturity
observe.common.CatchLonglineDto.hookWhenDiscarded=Discarded with hook
observe.common.CatchLonglineDto.locationOnLongline=Location on longline
+observe.common.CatchLonglineDto.onBordDataProcessing=On bord data processing
observe.common.CatchLonglineDto.photoReferences=Photo references
observe.common.CatchLonglineDto.resetBranchline=Cancel
observe.common.CatchLonglineDto.resetBranchline.tip=Cancel any modification
@@ -490,6 +496,7 @@ observe.common.CatchLonglineDto.table.speciesCatch=Species
observe.common.CatchLonglineDto.table.speciesCatch.tip=Species
observe.common.CatchLonglineDto.tagNumber=Tag number
observe.common.CatchLonglineDto.totalWeight=Total weight (kg)
+observe.common.CatchLonglineDto.weightDeterminationMethod=Weight Determination method
observe.common.CatchLonglineDto.weightMeasuresTab=Weights
observe.common.DataDto.action.createEntry.tip=Create a new entry
observe.common.DataDto.action.deleteEntry.tip=Delete entry in edition
@@ -912,14 +919,20 @@ observe.common.SensorUsedDto.table.sensorType.tip=Sensor type
observe.common.SetDto.action.goToOpen.short=Open set
observe.common.SetDto.action.goToOpen.tip=Open set
observe.common.SetLonglineDto.action.reset.homeId.tip=Reset home id
+observe.common.SetLonglineDto.basketLineLength=\#TODO
observe.common.SetLonglineDto.haulingTab=Hauling
+observe.common.SetLonglineDto.lengthBetweenBranchlines=\#TODO
+observe.common.SetLonglineDto.lightsticksUsed=\#TODO
+observe.common.SetLonglineDto.lightstickssTab=\#TODO
observe.common.SetLonglineDto.message.creating=Creating fishing operation
observe.common.SetLonglineDto.message.updating=Updating fishing operation
observe.common.SetLonglineDto.monitored=Monitored
observe.common.SetLonglineDto.settingCaracteristicsTab=Caracteristics
observe.common.SetLonglineDto.settingTab=Setting
+observe.common.SetLonglineDto.shooterUsed=Shooter used
observe.common.SetLonglineDto.targetCatchCompositionEstimatedByObserver=Composition estimated by observer?
observe.common.SetLonglineDto.targetDiscardCatchCompositionEstimatedByObserver=Composition estimated by observer?
+observe.common.SetLonglineDto.totalLineLength=\#TODO
observe.common.SetLonglineDto.weightedSnap=Weighted snap
observe.common.SetLonglineDto.weightedSwivel=Weighted swivel
observe.common.SetLonglineGlobalCompositionDto.availableMitigationType=Available mitigations
=====================================
client/src/main/resources/i18n/client_es_ES.properties
=====================================
--- a/client/src/main/resources/i18n/client_es_ES.properties
+++ b/client/src/main/resources/i18n/client_es_ES.properties
@@ -364,8 +364,11 @@ observe.common.ActivityLonglineDto.message.no.active.found.for.other.trip=Ningun
observe.common.ActivityLonglineDto.message.nonForTrip=< Ninguna actividad por la marea actual >
observe.common.ActivityLonglineDto.message.not.open=La actividad no está abierta, imposible modificar.
observe.common.ActivityLonglineDto.message.updating=Se está modificando la actividad actual.
+observe.common.ActivityLonglineDto.relatedObservedActivity=\#TODO
observe.common.ActivityLonglineDto.timeStamp=Timestamp
observe.common.ActivityLonglineDto.titles=Actividades
+observe.common.ActivityLonglineDto.vesselSpeed=\#TODO
+observe.common.ActivityLonglineDto.wind=\#TODO
observe.common.ActivitySeineDto.action.addFloatingObject=Añadir un DCP
observe.common.ActivitySeineDto.action.addFloatingObject.tip=Añadir un objeto flotante a la actividad
observe.common.ActivitySeineDto.action.addSet=Añadir un lance
@@ -454,11 +457,14 @@ observe.common.CatchLonglineDto.availablePredator=Deprepadaores disponibles
observe.common.CatchLonglineDto.beatDiameter=Diametro de la mordedura
observe.common.CatchLonglineDto.branchlineTab=Arponcillo
observe.common.CatchLonglineDto.caracteristicTab=Características
+observe.common.CatchLonglineDto.countDepredated=\#TODO
observe.common.CatchLonglineDto.depredated=Victima de depredación
+observe.common.CatchLonglineDto.depredatedProportion=\#TODO
observe.common.CatchLonglineDto.depredatedTab=Depredación
observe.common.CatchLonglineDto.foodAndSexualTab=Alimentación y maturidad sexual
observe.common.CatchLonglineDto.hookWhenDiscarded=Echazado con el anzuelo
observe.common.CatchLonglineDto.locationOnLongline=Posición sobre la línea
+observe.common.CatchLonglineDto.onBordDataProcessing=On bord data processing \#TODO
observe.common.CatchLonglineDto.photoReferences=Referencias foto
observe.common.CatchLonglineDto.resetBranchline=Cancelar
observe.common.CatchLonglineDto.resetBranchline.tip=Cancelar las modificaciones sobre el arponcillo
@@ -490,6 +496,7 @@ observe.common.CatchLonglineDto.table.speciesCatch=Especie
observe.common.CatchLonglineDto.table.speciesCatch.tip=Especie
observe.common.CatchLonglineDto.tagNumber=Numéro d'échantillon \#TODO
observe.common.CatchLonglineDto.totalWeight=Peso total (kg)
+observe.common.CatchLonglineDto.weightDeterminationMethod=\#TODO
observe.common.CatchLonglineDto.weightMeasuresTab=Pesos (kg)
observe.common.DataDto.action.createEntry.tip=Crear una nueva entrada
observe.common.DataDto.action.deleteEntry.tip=Cancelar la edición de la entrada actual
@@ -912,14 +919,20 @@ observe.common.SensorUsedDto.table.sensorType.tip=Tipo de sensor
observe.common.SetDto.action.goToOpen.short=Lance abierto
observe.common.SetDto.action.goToOpen.tip=Acceder al lance abierto
observe.common.SetLonglineDto.action.reset.homeId.tip=Reiniciar el id de negocio
+observe.common.SetLonglineDto.basketLineLength=\#TODO
observe.common.SetLonglineDto.haulingTab=Arrastre
+observe.common.SetLonglineDto.lengthBetweenBranchlines=\#TODO
+observe.common.SetLonglineDto.lightsticksUsed=\#TODO
+observe.common.SetLonglineDto.lightstickssTab=\#TODO
observe.common.SetLonglineDto.message.creating=Lance en proceso de creación.
observe.common.SetLonglineDto.message.updating=La operación de pesca está en proceso de modificación.
observe.common.SetLonglineDto.monitored=Instrumentada
observe.common.SetLonglineDto.settingCaracteristicsTab=Características
observe.common.SetLonglineDto.settingTab=Calada
+observe.common.SetLonglineDto.shooterUsed=Shooter used \#TODO
observe.common.SetLonglineDto.targetCatchCompositionEstimatedByObserver=Composition estimée par l'observateur ? \#TODO
observe.common.SetLonglineDto.targetDiscardCatchCompositionEstimatedByObserver=Composition estimée par l'observateur ? \#TODO
+observe.common.SetLonglineDto.totalLineLength=Total line length (m) \#TODO
observe.common.SetLonglineDto.weightedSnap=Snap lesté
observe.common.SetLonglineDto.weightedSwivel=Émerillon lesté
observe.common.SetLonglineGlobalCompositionDto.availableMitigationType=Atenuaciónes disponibles
=====================================
client/src/main/resources/i18n/client_fr_FR.properties
=====================================
--- a/client/src/main/resources/i18n/client_fr_FR.properties
+++ b/client/src/main/resources/i18n/client_fr_FR.properties
@@ -364,8 +364,11 @@ observe.common.ActivityLonglineDto.message.no.active.found.for.other.trip=Aucune
observe.common.ActivityLonglineDto.message.nonForTrip=< Aucune activité pour la marée courante >
observe.common.ActivityLonglineDto.message.not.open=L'opération de pêche n'est pas ouverte, aucune modification possible.
observe.common.ActivityLonglineDto.message.updating=L'activité est en cours de modification.
+observe.common.ActivityLonglineDto.relatedObservedActivity=Activité observée
observe.common.ActivityLonglineDto.timeStamp=Horodatage
observe.common.ActivityLonglineDto.titles=Activités
+observe.common.ActivityLonglineDto.vesselSpeed=Vitesse du courant (nd)
+observe.common.ActivityLonglineDto.wind=Vent Beaufort
observe.common.ActivitySeineDto.action.addFloatingObject=Ajouter un DCP
observe.common.ActivitySeineDto.action.addFloatingObject.tip=Ajouter un objet flottant à l'activité
observe.common.ActivitySeineDto.action.addSet=Ajouter la calée
@@ -454,11 +457,14 @@ observe.common.CatchLonglineDto.availablePredator=Prédateurs disponibles
observe.common.CatchLonglineDto.beatDiameter=Diamètre de la morsure
observe.common.CatchLonglineDto.branchlineTab=Avançon
observe.common.CatchLonglineDto.caracteristicTab=Caractéristiques
+observe.common.CatchLonglineDto.countDepredated=Nombre déprédaté
observe.common.CatchLonglineDto.depredated=Victime de déprédation
+observe.common.CatchLonglineDto.depredatedProportion=Proportion déprédaté
observe.common.CatchLonglineDto.depredatedTab=Déprédation
observe.common.CatchLonglineDto.foodAndSexualTab=Alimentation et maturité sexuelle
observe.common.CatchLonglineDto.hookWhenDiscarded=Rejeté avec hameçon
observe.common.CatchLonglineDto.locationOnLongline=Position sur la ligne
+observe.common.CatchLonglineDto.onBordDataProcessing=Traitement effectué à bord
observe.common.CatchLonglineDto.photoReferences=Références photo
observe.common.CatchLonglineDto.resetBranchline=Annuler
observe.common.CatchLonglineDto.resetBranchline.tip=Annuler les modifications sur l'avançon
@@ -490,6 +496,7 @@ observe.common.CatchLonglineDto.table.speciesCatch=Espèce
observe.common.CatchLonglineDto.table.speciesCatch.tip=Espèce
observe.common.CatchLonglineDto.tagNumber=Id marque
observe.common.CatchLonglineDto.totalWeight=Poids total (kg)
+observe.common.CatchLonglineDto.weightDeterminationMethod=Méthode d'estimation
observe.common.CatchLonglineDto.weightMeasuresTab=Poids (kg)
observe.common.DataDto.action.createEntry.tip=Créer une nouvelle entrée
observe.common.DataDto.action.deleteEntry.tip=Supprimer l'entrée en cours d'édition
@@ -912,14 +919,20 @@ observe.common.SensorUsedDto.table.sensorType.tip=Type de capteur
observe.common.SetDto.action.goToOpen.short=Calée ouverte
observe.common.SetDto.action.goToOpen.tip=Accéder à la calée ouverte
observe.common.SetLonglineDto.action.reset.homeId.tip=Réinitialiser l'id métier
+observe.common.SetLonglineDto.basketLineLength=Longueur de la ligne par panier (m)
observe.common.SetLonglineDto.haulingTab=Virage
+observe.common.SetLonglineDto.lengthBetweenBranchlines=Distance entre avançons (m)
+observe.common.SetLonglineDto.lightsticksUsed=Utilisation des cyalumes ?
+observe.common.SetLonglineDto.lightstickssTab=Cyalumes
observe.common.SetLonglineDto.message.creating=L'opération de pêche est en cours de création.
observe.common.SetLonglineDto.message.updating=L'opération de pêche est en cours de modification.
observe.common.SetLonglineDto.monitored=Instrumentée
observe.common.SetLonglineDto.settingCaracteristicsTab=Caractéristiques
observe.common.SetLonglineDto.settingTab=Filage
+observe.common.SetLonglineDto.shooterUsed=Utilisation du shooter
observe.common.SetLonglineDto.targetCatchCompositionEstimatedByObserver=Composition estimée par l'observateur ?
observe.common.SetLonglineDto.targetDiscardCatchCompositionEstimatedByObserver=Composition estimée par l'observateur ?
+observe.common.SetLonglineDto.totalLineLength=Longueur totale de la ligne (m)
observe.common.SetLonglineDto.weightedSnap=Snap lesté
observe.common.SetLonglineDto.weightedSwivel=Émerillon lesté
observe.common.SetLonglineGlobalCompositionDto.availableMitigationType=Atténuations disponibles
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/0fb8cb2d7fde3846a306b71857…
---
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/0fb8cb2d7fde3846a306b71857…
You're receiving this email because of your account on gitlab.com.
1
0
03 Apr '18
Tony CHEMIT pushed new branch feature/v8_maquette at ultreiaio / ird-observe
---
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/tree/feature/v8_maquette
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][develop] 17 commits: Ajout du référentiel observe_common.DataQuality (Closes #895)
by Tony CHEMIT 03 Apr '18
by Tony CHEMIT 03 Apr '18
03 Apr '18
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
279f46d6 by Tony CHEMIT at 2018-04-03T20:13:24Z
Ajout du référentiel observe_common.DataQuality (Closes #895)
- - - - -
2d8494c8 by Tony CHEMIT at 2018-04-03T20:13:32Z
Correction des labels sur les enums avec methods
- - - - -
59c09cb4 by Tony CHEMIT at 2018-04-03T20:13:32Z
fix option type
- - - - -
20029748 by Tony CHEMIT at 2018-04-03T20:13:32Z
fix some references API
- - - - -
5627f267 by Tony CHEMIT at 2018-04-03T20:13:32Z
add more log levels in tests
- - - - -
1db069f0 by Tony CHEMIT at 2018-04-03T20:13:32Z
fix i18n typo
- - - - -
8b8b05cf by Tony CHEMIT at 2018-04-03T20:13:32Z
improve gis triggers (if not migration can't work since it will trigger the gis computation on each activity changed, and here we modify all activities...)
- - - - -
d944529b by Tony CHEMIT at 2018-04-03T20:13:32Z
improve longline position api (but still could be improved ?)
- - - - -
f799a4a0 by Tony CHEMIT at 2018-04-03T20:13:32Z
improve sql request api (requires now db version)
- - - - -
0718ae70 by Tony CHEMIT at 2018-04-03T20:13:32Z
optimize dependences + add missing license header
- - - - -
8156f85c by Tony CHEMIT at 2018-04-03T20:13:32Z
fix a template
- - - - -
27381abd by Tony CHEMIT at 2018-04-03T20:13:32Z
Amélioration de l'arbre de navigation
- - - - -
0fb8cb2d by Tony CHEMIT at 2018-04-03T20:13:32Z
Correction d'un appel a UIHelper.askUser
- - - - -
30fedc4d by Tony CHEMIT at 2018-04-03T20:13:33Z
Ajout de la donnée observe_longline.ActivityLogbook (See #907) Maquettage
- - - - -
e6646c3e by Tony CHEMIT at 2018-04-03T20:13:33Z
Ajout de la donnée observe_longline.SetLogbook (See #909)
- - - - -
018ebdbf by Tony CHEMIT at 2018-04-03T20:13:33Z
Ajout de la donnée observe_longline.CatchLogbook (See #911) Maquettage
- - - - -
355b9469 by Tony CHEMIT at 2018-04-03T20:13:33Z
update i18n (see #911, see #907, see #909)
- - - - -
30 changed files:
- client-configuration/pom.xml
- client-configuration/src/main/config/Client.ini
- client-configuration/src/main/java/fr/ird/observe/client/configuration/ClientConfig.java
- + client-configuration/src/main/java/fr/ird/observe/client/configuration/NavigationTreeConfig.java
- + client-configuration/src/main/java/fr/ird/observe/client/configuration/NavigationTreeConfigBean.java
- client-configuration/src/main/resources/i18n/client-configuration_en_GB.properties
- client-configuration/src/main/resources/i18n/client-configuration_es_ES.properties
- client-configuration/src/main/resources/i18n/client-configuration_fr_FR.properties
- client/pom.xml
- client/src/main/assembly/dist/obstuna-admin/extra/create-postgis-1-activity.sql → client/src/main/assembly/dist/obstuna-admin/extra/01_create-postgis-1-activity.sql
- client/src/main/assembly/dist/obstuna-admin/extra/create-postgis-2-harbour.sql → client/src/main/assembly/dist/obstuna-admin/extra/02_create-postgis-2-harbour.sql
- client/src/main/assembly/dist/obstuna-admin/extra/create-postgis-3-activity-seine.sql → client/src/main/assembly/dist/obstuna-admin/extra/03_create-postgis-3-activity-seine.sql
- client/src/main/assembly/dist/obstuna-admin/extra/create-postgis-4-activity-longine.sql → client/src/main/assembly/dist/obstuna-admin/extra/04_create-postgis-4-activity-longine.sql
- client/src/main/assembly/dist/obstuna-admin/extra/function_enhanced_sets_school_types.sql → client/src/main/assembly/dist/obstuna-admin/extra/05_function_enhanced_sets_school_types.sql
- client/src/main/ftl/dataSourceConnectionReport_en.ftl
- client/src/main/ftl/dataSourceConnectionReport_es.ftl
- client/src/main/ftl/dataSourceConnectionReport_fr.ftl
- client/src/main/java/fr/ird/observe/client/ui/ObserveKeyStrokes.java
- client/src/main/java/fr/ird/observe/client/ui/ObserveMainUI.jaxx
- client/src/main/java/fr/ird/observe/client/ui/ObserveMainUIInitializer.java
- client/src/main/java/fr/ird/observe/client/ui/actions/main/menu/admin/LaunchAdminActionSupport.java
- client/src/main/java/fr/ird/observe/client/ui/admin/AdminStep.java
- client/src/main/java/fr/ird/observe/client/ui/admin/AdminTabUIHandler.java
- client/src/main/java/fr/ird/observe/client/ui/admin/AdminUIHandler.java
- client/src/main/java/fr/ird/observe/client/ui/admin/resume/ShowResumeUIHandler.java
- client/src/main/java/fr/ird/observe/client/ui/admin/save/SaveLocalUIHandler.java
- client/src/main/java/fr/ird/observe/client/ui/admin/synchronize/data/DataSynchroModel.java
- client/src/main/java/fr/ird/observe/client/ui/admin/synchronize/referential/ng/ReferentialSynchroConfigUI.jaxx
- client/src/main/java/fr/ird/observe/client/ui/admin/synchronize/referential/ng/ReferentialSynchroConfigUI.jcss
- client/src/main/java/fr/ird/observe/client/ui/admin/synchronize/referential/ng/ReferentialSynchroModel.java
The diff was not included because it is too large.
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/cdbaa4e78c89734f40c43e7cc0…
---
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/cdbaa4e78c89734f40c43e7cc0…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][develop] Amélioration de l'arbre de navigation
by Tony CHEMIT 01 Apr '18
by Tony CHEMIT 01 Apr '18
01 Apr '18
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
cdbaa4e7 by Tony CHEMIT at 2018-04-01T13:39:24Z
Amélioration de l'arbre de navigation
- - - - -
27 changed files:
- client-configuration/pom.xml
- client-configuration/src/main/config/Client.ini
- client-configuration/src/main/java/fr/ird/observe/client/configuration/ClientConfig.java
- + client-configuration/src/main/java/fr/ird/observe/client/configuration/NavigationTreeConfig.java
- + client-configuration/src/main/java/fr/ird/observe/client/configuration/NavigationTreeConfigBean.java
- client-configuration/src/main/resources/i18n/client-configuration_en_GB.properties
- client-configuration/src/main/resources/i18n/client-configuration_es_ES.properties
- client-configuration/src/main/resources/i18n/client-configuration_fr_FR.properties
- client/pom.xml
- client/src/main/java/fr/ird/observe/client/ui/ObserveKeyStrokes.java
- client/src/main/java/fr/ird/observe/client/ui/ObserveMainUI.jaxx
- client/src/main/java/fr/ird/observe/client/ui/ObserveMainUIInitializer.java
- client/src/main/java/fr/ird/observe/client/ui/admin/synchronize/data/DataSynchroModel.java
- client/src/main/java/fr/ird/observe/client/ui/admin/synchronize/referential/ng/ReferentialSynchroConfigUI.jaxx
- client/src/main/java/fr/ird/observe/client/ui/admin/synchronize/referential/ng/ReferentialSynchroConfigUI.jcss
- client/src/main/java/fr/ird/observe/client/ui/content/ContentUIInitializer.java
- client/src/main/java/fr/ird/observe/client/ui/storage/tabs/RolesUI.jaxx
- client/src/main/java/fr/ird/observe/client/ui/storage/tabs/RolesUI.jcss
- − client/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationTreeHeader.jaxx
- client/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationTreeModel.java
- + client/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationUI.jaxx
- client/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationTreeHeader.jcss → client/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationUI.jcss
- client/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationTreeHeaderHandler.java → client/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationUIHandler.java
- client/src/main/resources/i18n/client_en_GB.properties
- client/src/main/resources/i18n/client_es_ES.properties
- client/src/main/resources/i18n/client_fr_FR.properties
- pom.xml
Changes:
=====================================
client-configuration/pom.xml
=====================================
--- a/client-configuration/pom.xml
+++ b/client-configuration/pom.xml
@@ -104,6 +104,14 @@
<groupId>io.ultreia.java4all.jaxx</groupId>
<artifactId>jaxx-widgets-gis</artifactId>
</dependency>
+ <dependency>
+ <groupId>io.ultreia.java4all.jaxx</groupId>
+ <artifactId>jaxx-widgets-temperature</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>io.ultreia.java4all</groupId>
+ <artifactId>java-bean</artifactId>
+ </dependency>
</dependencies>
=====================================
client-configuration/src/main/config/Client.ini
=====================================
--- a/client-configuration/src/main/config/Client.ini
+++ b/client-configuration/src/main/config/Client.ini
@@ -174,6 +174,11 @@ description = observe.config.h2.can.migrate.description
key = h2.canMigrate
type = Boolean
defaultValue = true
+[option h2CanEditReferential]
+description = observe.config.h2.can.editReferential.description
+key = h2.canEditReferential
+type = boolean
+defaultValue = false
[option h2ServerPort]
description = observe.config.h2.serverPort.description
@@ -501,6 +506,12 @@ key = ui.coordinate.format
type = org.nuiton.jaxx.widgets.gis.CoordinateFormat
defaultValue = "dmd"
+[option temperatureFormat]
+description = observe.config.temperature.format
+key = ui.temperature.format
+type = org.nuiton.jaxx.widgets.temperature.TemperatureFormat
+defaultValue = "C"
+
[option focusBorderColor]
description = observe.config.ui.focusBorderColor
key = ui.focusBorder.color
@@ -531,6 +542,30 @@ key = server.checkServerVersion
type = Boolean
defaultValue = true
+[option showSeineTrip]
+description = observe.config.ui.tree.showSeineTrip.description
+key = ui.tree.showSeineTrip
+type = Boolean
+defaultValue = true
+
+[option showLonglineTrip]
+description = observe.config.ui.tree.showLonglineTrip.description
+key = ui.tree.showLonglineTrip
+type = Boolean
+defaultValue = true
+
+[option showReferential]
+description = observe.config.ui.tree.showReferential.description
+key = ui.tree.showReferential
+type = Boolean
+defaultValue = true
+
+[option showEmptyProgram]
+description = observe.config.ui.tree.showEmptyProgram.description
+key = ui.tree.showEmptyProgram
+type = Boolean
+defaultValue = true
+
[action help]
description = observe.action.commandline.help
action = "fr.ird.observe.client.ObserveCLAction#help"
=====================================
client-configuration/src/main/java/fr/ird/observe/client/configuration/ClientConfig.java
=====================================
--- a/client-configuration/src/main/java/fr/ird/observe/client/configuration/ClientConfig.java
+++ b/client-configuration/src/main/java/fr/ird/observe/client/configuration/ClientConfig.java
@@ -8,12 +8,12 @@
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
@@ -30,6 +30,16 @@ import fr.ird.observe.client.constants.DbMode;
import fr.ird.observe.dto.FloatingObjectPreset;
import fr.ird.observe.dto.presets.RemoteDataSourceConfiguration;
import fr.ird.observe.dto.presets.ServerDataSourceConfiguration;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.config.ApplicationConfig;
+import org.nuiton.config.ArgumentsParserException;
+import org.nuiton.jaxx.widgets.gis.CoordinateFormat;
+import org.nuiton.jaxx.widgets.temperature.TemperatureFormat;
+import org.nuiton.version.Version;
+import org.nuiton.version.Versions;
+
import java.beans.PropertyChangeListener;
import java.io.File;
import java.nio.charset.StandardCharsets;
@@ -44,15 +54,6 @@ import java.util.LinkedList;
import java.util.List;
import java.util.Properties;
import java.util.Set;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.nuiton.config.ApplicationConfig;
-import org.nuiton.config.ArgumentsParserException;
-import org.nuiton.jaxx.widgets.gis.CoordinateFormat;
-import org.nuiton.version.Version;
-import org.nuiton.version.Versions;
-
import static org.nuiton.i18n.I18n.t;
@@ -62,52 +63,72 @@ import static org.nuiton.i18n.I18n.t;
* @author Tony Chemit - dev(a)tchemit.fr
* @since 1.0
*/
-public class ClientConfig extends GeneratedClientConfig {
+public class ClientConfig extends GeneratedClientConfig implements NavigationTreeConfig {
+ public static final String DB_NAME = "obstuna";
+ public static final List<ClientConfigOption> MAP_LAYERS = ImmutableList.of(
+ ClientConfigOption.MAP_LAYER1,
+ ClientConfigOption.MAP_LAYER2,
+ ClientConfigOption.MAP_LAYER3,
+ ClientConfigOption.MAP_LAYER4,
+ ClientConfigOption.MAP_LAYER5,
+ ClientConfigOption.MAP_LAYER6,
+ ClientConfigOption.MAP_LAYER7,
+ ClientConfigOption.MAP_LAYER8,
+ ClientConfigOption.MAP_LAYER9,
+ ClientConfigOption.MAP_LAYER10);
/** le pattern du fichier de sauvegarde d'une base locale */
private static final String BACKUP_DB_PATTERN = "obstuna-local-%1$tF--%1$tk-%1$tM-%1$tS.sql.gz";
-
- public static final String DB_NAME = "obstuna";
-
private static final String APPLICATION_VERSION = "application.version";
-
private static final String VERSION = "version";
-
private static final String PROPERTY_LOCAL_STORAGE_EXIST = "localStorageExist";
-
private static final String PROPERTY_INITIAL_DUMP_EXIST = "initialDumpExist";
-
private static final String PROPERTY_MAIN_STORAGE_OPENED = "mainStorageOpened";
-
/** Logger */
private static final Log log = LogFactory.getLog(ClientConfig.class);
-
private static final String DEFAULT_OBSERVE_SWING_CONFIGURATION_FILENAME = "observe-client.conf";
-
+ /**
+ * Liste des options qu'on ne peut pas sauvegarder (les mots de passes,
+ * les options d'admin pour les simples utilisateurs,...).
+ *
+ * @since 1.5
+ */
+ private final String[] unsavables = new String[]{
+// ClientConfigOption.OBSTUNA_PASSWORD.getKey(),
+ ClientConfigOption.H2_PASSWORD.getKey(),
+ ClientConfigOption.OBSTUNA_CAN_MIGRATE.getKey(),
+ };
+ //FIXME
+ private final ImmutableSet<String> longlinVesselTypeIds = ImmutableSet.copyOf(
+ Sets.newHashSet("fr.ird.observe.entities.referentiel.VesselType#1239832675735#0.044156847891821505",
+ "fr.ird.observe.entities.referentiel.VesselType#1239832675736#0.8708229847859869",
+ "fr.ird.observe.entities.referentiel.VesselType#1239832686137#0.1"));
+ private final ImmutableSet<String> seineVesselTypeIds = ImmutableSet.copyOf(
+ Sets.newHashSet("fr.ird.observe.entities.referentiel.VesselType#1239832675735#0.044156847891821505",
+ "fr.ird.observe.entities.referentiel.VesselType#1239832675735#0.307197212385357",
+ "fr.ird.observe.entities.referentiel.VesselType#1239832675735#0.7380146830307519",
+ "fr.ird.observe.entities.referentiel.VesselType#1239832675735#0.9086075071905084",
+ "fr.ird.observe.entities.referentiel.VesselType#1239832675737#0.43324169605639407"));
+ private final SimpleDateFormat dateFormat = new SimpleDateFormat();
/**
* un drapeau pour savoir s'il faut lancer l'interface graphique. Cette
* valeur peut être programmées lors des actions.
*/
private boolean displayMainUI = true;
-
/** drapeau pour savoir si une base locale existe */
private boolean localStorageExist;
-
/**
* drapeau pour savoir si le dump initial a ete chargée depuis la base
* centrale
*/
private boolean initialDumpExist;
-
/** drapeau pour savoir si une source de données est ouverte */
private boolean mainStorageOpened;
-
/**
* drapeau pour savoir si la source ouverte est locale (attention, lorsqu'il
* n'y a pas de storage d'ouvert, la valeur est null).
*/
private Boolean mainStorageOpenedLocal;
-
/**
* drapeau pour savoir si on peut utiliser des ui dans l'environnement.
* <p>
@@ -116,37 +137,12 @@ public class ClientConfig extends GeneratedClientConfig {
* trouvé.
*/
private boolean canUseUI = true;
-
/** La version de l'application */
private Version version;
-
/** Texte du copyright (calculé dynamiquement). */
private String copyrightText;
-
- /**
- * Liste des options qu'on ne peut pas sauvegarder (les mots de passes,
- * les options d'admin pour les simples utilisateurs,...).
- *
- * @since 1.5
- */
- private final String[] unsavables = new String[]{
-// ClientConfigOption.OBSTUNA_PASSWORD.getKey(),
- ClientConfigOption.H2_PASSWORD.getKey(),
- ClientConfigOption.OBSTUNA_CAN_MIGRATE.getKey(),
- };
-
- //FIXME
- private final ImmutableSet<String> longlinVesselTypeIds = ImmutableSet.copyOf(
- Sets.newHashSet("fr.ird.observe.entities.referentiel.VesselType#1239832675735#0.044156847891821505",
- "fr.ird.observe.entities.referentiel.VesselType#1239832675736#0.8708229847859869",
- "fr.ird.observe.entities.referentiel.VesselType#1239832686137#0.1"));
-
- private final ImmutableSet<String> seineVesselTypeIds = ImmutableSet.copyOf(
- Sets.newHashSet("fr.ird.observe.entities.referentiel.VesselType#1239832675735#0.044156847891821505",
- "fr.ird.observe.entities.referentiel.VesselType#1239832675735#0.307197212385357",
- "fr.ird.observe.entities.referentiel.VesselType#1239832675735#0.7380146830307519",
- "fr.ird.observe.entities.referentiel.VesselType#1239832675735#0.9086075071905084",
- "fr.ird.observe.entities.referentiel.VesselType#1239832675737#0.43324169605639407"));
+ private ImmutableList<ServerDataSourceConfiguration> serverDataSourceConfigurationList;
+ private ImmutableList<RemoteDataSourceConfiguration> remoteDataSourceConfigurationList;
public ClientConfig() {
this(DEFAULT_OBSERVE_SWING_CONFIGURATION_FILENAME);
@@ -217,6 +213,11 @@ public class ClientConfig extends GeneratedClientConfig {
return CoordinateFormat.valueOf(get().getOption(ClientConfigOption.COORDINATE_FORMAT.getKey()));
}
+ @Override
+ public TemperatureFormat getTemperatureFormat() {
+ return get().getOption(TemperatureFormat.class, ClientConfigOption.TEMPERATURE_FORMAT.getKey());
+ }
+
public String getCopyrightText() {
if (copyrightText == null) {
Date date = new Date();
@@ -232,6 +233,10 @@ public class ClientConfig extends GeneratedClientConfig {
return version;
}
+ private void setVersion(Version version) {
+ this.version = version;
+ }
+
public boolean isShowTimeEditorSlider() {
return isShowDateTimeEditorSlider();
}
@@ -244,24 +249,24 @@ public class ClientConfig extends GeneratedClientConfig {
return displayMainUI;
}
- public boolean isCanUseUI() {
- return canUseUI;
- }
-
- public boolean isLocalStorageExist() {
- return localStorageExist;
+ public void setDisplayMainUI(boolean b) {
+ displayMainUI = b;
}
- public boolean isInitialDumpExist() {
- return initialDumpExist;
+ public boolean isCanUseUI() {
+ return canUseUI;
}
- public boolean isMainStorageOpened() {
- return mainStorageOpened;
+ public void setCanUseUI(boolean canUseUI) {
+ this.canUseUI = canUseUI;
+ if (!canUseUI) {
+ // on ne pourra pas lancer l'ui principale
+ setDisplayMainUI(false);
+ }
}
- public Boolean getMainStorageOpenedLocal() {
- return mainStorageOpenedLocal;
+ public boolean isLocalStorageExist() {
+ return localStorageExist;
}
public void setLocalStorageExist(boolean newValue) {
@@ -270,12 +275,20 @@ public class ClientConfig extends GeneratedClientConfig {
firePropertyChange(PROPERTY_LOCAL_STORAGE_EXIST, newValue);
}
+ public boolean isInitialDumpExist() {
+ return initialDumpExist;
+ }
+
public void setInitialDumpExist(boolean newValue) {
initialDumpExist = newValue;
// always force propagation
firePropertyChange(PROPERTY_INITIAL_DUMP_EXIST, newValue);
}
+ public boolean isMainStorageOpened() {
+ return mainStorageOpened;
+ }
+
public void setMainStorageOpened(boolean newValue) {
mainStorageOpened = newValue;
if (!newValue) {
@@ -286,36 +299,16 @@ public class ClientConfig extends GeneratedClientConfig {
firePropertyChange(PROPERTY_MAIN_STORAGE_OPENED, newValue);
}
+ public Boolean getMainStorageOpenedLocal() {
+ return mainStorageOpenedLocal;
+ }
+
public void setMainStorageOpenedLocal(Boolean newValue) {
mainStorageOpenedLocal = newValue;
// always force propagation
firePropertyChange(PROPERTY_MAIN_STORAGE_OPENED + "Local", newValue);
}
- public void setDisplayMainUI(boolean b) {
- displayMainUI = b;
- }
-
- public void setCanUseUI(boolean canUseUI) {
- this.canUseUI = canUseUI;
- if (!canUseUI) {
- // on ne pourra pas lancer l'ui principale
- setDisplayMainUI(false);
- }
- }
-
- public static final List<ClientConfigOption> MAP_LAYERS = ImmutableList.of(
- ClientConfigOption.MAP_LAYER1,
- ClientConfigOption.MAP_LAYER2,
- ClientConfigOption.MAP_LAYER3,
- ClientConfigOption.MAP_LAYER4,
- ClientConfigOption.MAP_LAYER5,
- ClientConfigOption.MAP_LAYER6,
- ClientConfigOption.MAP_LAYER7,
- ClientConfigOption.MAP_LAYER8,
- ClientConfigOption.MAP_LAYER9,
- ClientConfigOption.MAP_LAYER10);
-
public List<File> getMapLayerFiles() {
List<File> layers = new LinkedList<>();
@@ -399,10 +392,6 @@ public class ClientConfig extends GeneratedClientConfig {
}
}
- private void setVersion(Version version) {
- this.version = version;
- }
-
public Set<String> getSeineVesselTypeIds() {
return seineVesselTypeIds;
}
@@ -429,10 +418,17 @@ public class ClientConfig extends GeneratedClientConfig {
return option == null ? new RemoteDataSourceConfiguration[0] : new Gson().fromJson(option, RemoteDataSourceConfiguration[].class);
}
+ @Override
+ public void setRemoteDataSourceConfigurations(RemoteDataSourceConfiguration[] configurations) {
+ String option = new Gson().toJson(configurations);
+ get().setOption(ClientConfigOption.REMOTE_DATA_SOURCE_CONFIGURATIONS.getKey(), option);
+ remoteDataSourceConfigurationList = null;
+ }
+
public void addRemoteDataSourceConfiguration(RemoteDataSourceConfiguration configuration) {
List<RemoteDataSourceConfiguration> remoteDataSourceConfigurations = new ArrayList<>(Arrays.asList(getRemoteDataSourceConfigurations()));
remoteDataSourceConfigurations.add(configuration);
- setRemoteDataSourceConfigurations(remoteDataSourceConfigurations.toArray(new RemoteDataSourceConfiguration[remoteDataSourceConfigurations.size()]));
+ setRemoteDataSourceConfigurations(remoteDataSourceConfigurations.toArray(new RemoteDataSourceConfiguration[0]));
saveForUser();
}
@@ -440,27 +436,17 @@ public class ClientConfig extends GeneratedClientConfig {
List<RemoteDataSourceConfiguration> remoteDataSourceConfigurations = new ArrayList<>(Arrays.asList(getRemoteDataSourceConfigurations()));
remoteDataSourceConfigurations.remove(configuration);
remoteDataSourceConfigurations.add(configuration);
- setRemoteDataSourceConfigurations(remoteDataSourceConfigurations.toArray(new RemoteDataSourceConfiguration[remoteDataSourceConfigurations.size()]));
+ setRemoteDataSourceConfigurations(remoteDataSourceConfigurations.toArray(new RemoteDataSourceConfiguration[0]));
saveForUser();
}
public void removeRemoteDataSourceConfiguration(RemoteDataSourceConfiguration configuration) {
List<RemoteDataSourceConfiguration> remoteDataSourceConfigurations = new ArrayList<>(Arrays.asList(getRemoteDataSourceConfigurations()));
remoteDataSourceConfigurations.remove(configuration);
- setRemoteDataSourceConfigurations(remoteDataSourceConfigurations.toArray(new RemoteDataSourceConfiguration[remoteDataSourceConfigurations.size()]));
+ setRemoteDataSourceConfigurations(remoteDataSourceConfigurations.toArray(new RemoteDataSourceConfiguration[0]));
saveForUser();
}
- @Override
- public void setRemoteDataSourceConfigurations(RemoteDataSourceConfiguration[] configurations) {
- String option = new Gson().toJson(configurations);
- get().setOption(ClientConfigOption.REMOTE_DATA_SOURCE_CONFIGURATIONS.getKey(), option);
- remoteDataSourceConfigurationList=null;
- }
-
- ImmutableList<ServerDataSourceConfiguration> serverDataSourceConfigurationList;
- ImmutableList<RemoteDataSourceConfiguration> remoteDataSourceConfigurationList;
-
public ImmutableList<RemoteDataSourceConfiguration> getRemoteDataSourceConfigurationList() {
if (remoteDataSourceConfigurationList == null) {
List<RemoteDataSourceConfiguration> configurations = new ArrayList<>(Arrays.asList(getRemoteDataSourceConfigurations()));
@@ -485,10 +471,17 @@ public class ClientConfig extends GeneratedClientConfig {
return option == null ? new ServerDataSourceConfiguration[0] : new Gson().fromJson(option, ServerDataSourceConfiguration[].class);
}
+ @Override
+ public void setServerDataSourceConfigurations(ServerDataSourceConfiguration[] configurations) {
+ String option = new Gson().toJson(configurations);
+ get().setOption(ClientConfigOption.SERVER_DATA_SOURCE_CONFIGURATIONS.getKey(), option);
+ serverDataSourceConfigurationList = null;
+ }
+
public void addServerDataSourceConfiguration(ServerDataSourceConfiguration configuration) {
List<ServerDataSourceConfiguration> remoteDataSourceConfigurations = new ArrayList<>(Arrays.asList(getServerDataSourceConfigurations()));
remoteDataSourceConfigurations.add(configuration);
- setServerDataSourceConfigurations(remoteDataSourceConfigurations.toArray(new ServerDataSourceConfiguration[remoteDataSourceConfigurations.size()]));
+ setServerDataSourceConfigurations(remoteDataSourceConfigurations.toArray(new ServerDataSourceConfiguration[0]));
saveForUser();
}
@@ -496,27 +489,18 @@ public class ClientConfig extends GeneratedClientConfig {
List<ServerDataSourceConfiguration> remoteDataSourceConfigurations = new ArrayList<>(Arrays.asList(getServerDataSourceConfigurations()));
remoteDataSourceConfigurations.remove(configuration);
remoteDataSourceConfigurations.add(configuration);
- setServerDataSourceConfigurations(remoteDataSourceConfigurations.toArray(new ServerDataSourceConfiguration[remoteDataSourceConfigurations.size()]));
+ setServerDataSourceConfigurations(remoteDataSourceConfigurations.toArray(new ServerDataSourceConfiguration[0]));
saveForUser();
}
public void removeServerDataSourceConfiguration(ServerDataSourceConfiguration configuration) {
List<ServerDataSourceConfiguration> serverDataSourceConfigurations = new ArrayList<>(Arrays.asList(getServerDataSourceConfigurations()));
serverDataSourceConfigurations.remove(configuration);
- setServerDataSourceConfigurations(serverDataSourceConfigurations.toArray(new ServerDataSourceConfiguration[serverDataSourceConfigurations.size()]));
+ setServerDataSourceConfigurations(serverDataSourceConfigurations.toArray(new ServerDataSourceConfiguration[0]));
saveForUser();
}
@Override
- public void setServerDataSourceConfigurations(ServerDataSourceConfiguration[] configurations) {
- String option = new Gson().toJson(configurations);
- get().setOption(ClientConfigOption.SERVER_DATA_SOURCE_CONFIGURATIONS.getKey(), option);
- serverDataSourceConfigurationList=null;
- }
-
- private final SimpleDateFormat dateFormat = new SimpleDateFormat();
-
- @Override
public Date getBuildDate() {
String dateStr = get().getOption(ClientConfigOption.BUILD_DATE.getKey());
try {
=====================================
client-configuration/src/main/java/fr/ird/observe/client/configuration/NavigationTreeConfig.java
=====================================
--- /dev/null
+++ b/client-configuration/src/main/java/fr/ird/observe/client/configuration/NavigationTreeConfig.java
@@ -0,0 +1,64 @@
+package fr.ird.observe.client.configuration;
+
+/*-
+ * #%L
+ * ObServe :: Client Configuration
+ * %%
+ * Copyright (C) 2008 - 2018 IRD, Code Lutin, Ultreia.io
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ird.observe.services.service.data.NavigationRequest;
+
+/**
+ * Created by tchemit on 01/04/2018.
+ *
+ * @author Tony Chemit - dev(a)tchemit.fr
+ */
+public interface NavigationTreeConfig {
+
+ boolean isShowSeineTrip();
+
+ void setShowSeineTrip(boolean showSeineTrip);
+
+ boolean isShowLonglineTrip();
+
+ void setShowLonglineTrip(boolean showLonglineTrip);
+
+ boolean isShowReferential();
+
+ void setShowReferential(boolean showReferential);
+
+ boolean isShowEmptyProgram();
+
+ void setShowEmptyProgram(boolean showEmptyProgram);
+
+ default NavigationRequest toRequest() {
+ NavigationRequest navigationRequest = new NavigationRequest();
+ navigationRequest.setLoadLongline(isShowLonglineTrip());
+ navigationRequest.setLoadSeine(isShowSeineTrip());
+ navigationRequest.setLoadEmptyProgram(isShowEmptyProgram());
+ return navigationRequest;
+ }
+
+ default void load(NavigationTreeConfig config) {
+ setShowEmptyProgram(config.isShowEmptyProgram());
+ setShowReferential(config.isShowReferential());
+ setShowLonglineTrip(config.isShowLonglineTrip());
+ setShowSeineTrip(config.isShowSeineTrip());
+ }
+}
=====================================
client-configuration/src/main/java/fr/ird/observe/client/configuration/NavigationTreeConfigBean.java
=====================================
--- /dev/null
+++ b/client-configuration/src/main/java/fr/ird/observe/client/configuration/NavigationTreeConfigBean.java
@@ -0,0 +1,87 @@
+package fr.ird.observe.client.configuration;
+
+/*-
+ * #%L
+ * ObServe :: Client Configuration
+ * %%
+ * Copyright (C) 2008 - 2018 IRD, Code Lutin, Ultreia.io
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import io.ultreia.java4all.bean.AbstractJavaBean;
+
+/**
+ * Created by tchemit on 01/04/2018.
+ *
+ * @author Tony Chemit - dev(a)tchemit.fr
+ */
+public class NavigationTreeConfigBean extends AbstractJavaBean implements NavigationTreeConfig {
+
+
+ private boolean showSeineTrip = true;
+ private boolean showLonglineTrip = true;
+ private boolean showReferential = true;
+ private boolean showEmptyProgram = true;
+
+ @Override
+ public boolean isShowSeineTrip() {
+ return showSeineTrip;
+ }
+
+ @Override
+ public void setShowSeineTrip(boolean showSeineTrip) {
+ boolean oldValue = isShowSeineTrip();
+ this.showSeineTrip = showSeineTrip;
+ firePropertyChange("showSeineTrip", oldValue, showSeineTrip);
+ }
+
+ @Override
+ public boolean isShowLonglineTrip() {
+ return showLonglineTrip;
+ }
+
+ @Override
+ public void setShowLonglineTrip(boolean showLonglineTrip) {
+ boolean oldValue = isShowLonglineTrip();
+ this.showLonglineTrip = showLonglineTrip;
+ firePropertyChange("showLonglineTrip", oldValue, showLonglineTrip);
+ }
+
+ @Override
+ public boolean isShowReferential() {
+ return showReferential;
+ }
+
+ @Override
+ public void setShowReferential(boolean showReferential) {
+ boolean oldValue = isShowReferential();
+ this.showReferential = showReferential;
+ firePropertyChange("showReferential", oldValue, showReferential);
+ }
+
+ @Override
+ public boolean isShowEmptyProgram() {
+ return showEmptyProgram;
+ }
+
+ @Override
+ public void setShowEmptyProgram(boolean showEmptyProgram) {
+ boolean oldValue = isShowEmptyProgram();
+ this.showEmptyProgram = showEmptyProgram;
+ firePropertyChange("showEmptyProgram", oldValue, showEmptyProgram);
+ }
+}
=====================================
client-configuration/src/main/resources/i18n/client-configuration_en_GB.properties
=====================================
--- a/client-configuration/src/main/resources/i18n/client-configuration_en_GB.properties
+++ b/client-configuration/src/main/resources/i18n/client-configuration_en_GB.properties
@@ -33,6 +33,7 @@ observe.config.defaultTmpDirectory.description=Default temporary directory used
observe.config.defaultValidationReportDirectory.description=Default validation report directory
observe.config.devMode=Dev mode
observe.config.floatingObjectPresets.description=Floating Objects references
+observe.config.h2.can.editReferential.description=Local database can edit referential
observe.config.h2.can.migrate.description=Flag to know if you can migrate h2 data sources
observe.config.h2.login.description=H2 Login
observe.config.h2.password.description=H2 Password
@@ -74,6 +75,7 @@ observe.config.speciesList.seine.objectSchoolEstimate=Species for object school
observe.config.speciesList.seine.schoolEstimate=Species for school esitmates
observe.config.speciesList.seine.targetCatch=Species for target catches
observe.config.swingSessionFile.description=Swing session file.
+observe.config.temperature.format=Default temperature format
observe.config.ui.autoPopupNumberEditor=Flag sets to true when number editor show automaticly popup
observe.config.ui.changeSynchroSrc=Flag sets to true if you can change local source in admin tasks
observe.config.ui.focusBorderColor=Color of the focus container border
@@ -85,6 +87,10 @@ observe.config.ui.showMnemonic=Show mnemonic on actions
observe.config.ui.showNumberEditorButton=Flag sets to true to show button to invoke popup on number's editors
observe.config.ui.showTimeEditorSlider=Show timer slider
observe.config.ui.storeRemoteStorage=Flag sets to true to store in config a remote connexion (except passwords)
+observe.config.ui.tree.showEmptyProgram.description=Show programs with no trip inside
+observe.config.ui.tree.showLonglineTrip.description=Show Longline trips
+observe.config.ui.tree.showReferential.description=Show Referential
+observe.config.ui.tree.showSeineTrip.description=Show Seine Trips
observe.config.ui.treeOpenNodes=Opened data from last session
observe.config.ui.treeSelectedNodes.description=Selected nodes on last data source
observe.config.validation.lengthWeightEnable=Force validation of species length max
=====================================
client-configuration/src/main/resources/i18n/client-configuration_es_ES.properties
=====================================
--- a/client-configuration/src/main/resources/i18n/client-configuration_es_ES.properties
+++ b/client-configuration/src/main/resources/i18n/client-configuration_es_ES.properties
@@ -33,6 +33,7 @@ observe.config.defaultTmpDirectory.description=Directorio temporal por defecto
observe.config.defaultValidationReportDirectory.description=Directorio por defecto de almacenamiento de los informes de validación
observe.config.devMode=Modo desarrollador
observe.config.floatingObjectPresets.description=Objets flottants de référence \#TODO
+observe.config.h2.can.editReferential.description=Local database can edit referential \#TODO
observe.config.h2.can.migrate.description=Autorizar la actualización de las bases locales (h2)
observe.config.h2.login.description=Login h2
observe.config.h2.password.description=Contraseña h2
@@ -74,6 +75,7 @@ observe.config.speciesList.seine.objectSchoolEstimate=Especies para las estimaci
observe.config.speciesList.seine.schoolEstimate=Especies para las estimaciones
observe.config.speciesList.seine.targetCatch=Especies par las capturas objetivo
observe.config.swingSessionFile.description=Fichier de sauvegarde des états des UI. \#TODO
+observe.config.temperature.format=Default temperature format \#TODO
observe.config.ui.autoPopupNumberEditor=Para mostrar automáticamente el editor numérico durante la edición de un número
observe.config.ui.changeSynchroSrc=Pour autoriser la sélection de la base source dans les opérations sur base
observe.config.ui.focusBorderColor=Couleur de la bordure de la zone qui a le focus \#TODO
@@ -85,6 +87,10 @@ observe.config.ui.showMnemonic=Afficher les racourcis clavier \#TODO
observe.config.ui.showNumberEditorButton=Para mostrar el botón que permite usar el editor numérico a la izquierda de cada campo numérico
observe.config.ui.showTimeEditorSlider=Para mostrar la regla de edición de las horas
observe.config.ui.storeRemoteStorage=Para activar la copia de seguridad de la configuración de la fuente de datos remota
+observe.config.ui.tree.showEmptyProgram.description=Show programs with no trip inside \#TODO
+observe.config.ui.tree.showLonglineTrip.description=Show Longline trips \#TODO
+observe.config.ui.tree.showReferential.description=Show Referential \#TODO
+observe.config.ui.tree.showSeineTrip.description=Show Seine Trips \#TODO
observe.config.ui.treeOpenNodes=Nudos abiertos del arbol abiertos cuando se cerró la base por última vez
observe.config.ui.treeSelectedNodes.description=Selected nodes on last data source \#TODO
observe.config.validation.lengthWeightEnable=Forcer la validation des bormes min/max de taille d'espèce \#TODO
=====================================
client-configuration/src/main/resources/i18n/client-configuration_fr_FR.properties
=====================================
--- a/client-configuration/src/main/resources/i18n/client-configuration_fr_FR.properties
+++ b/client-configuration/src/main/resources/i18n/client-configuration_fr_FR.properties
@@ -33,6 +33,7 @@ observe.config.defaultTmpDirectory.description=Le répertoire temporaire par dé
observe.config.defaultValidationReportDirectory.description=Le répertoire par défaut où sont stockés les rapports de validation
observe.config.devMode=Mode développeur
observe.config.floatingObjectPresets.description=Objets flottants de référence
+observe.config.h2.can.editReferential.description=Pour pouvoir éditer le référentiel d'une base locale
observe.config.h2.can.migrate.description=Autoriser la mise à jour des bases locales (H2)
observe.config.h2.login.description=L'identifiant H2
observe.config.h2.password.description=Le mot de passe H2
@@ -74,6 +75,7 @@ observe.config.speciesList.seine.objectSchoolEstimate=Espèces pour les estimati
observe.config.speciesList.seine.schoolEstimate=Espèces pour les estimations
observe.config.speciesList.seine.targetCatch=Espèces pour les captures cible
observe.config.swingSessionFile.description=Fichier de sauvegarde des états des UI.
+observe.config.temperature.format=Unité de température
observe.config.ui.autoPopupNumberEditor=Pour afficher automatiquement l'éditeur numérique lors de l'édition d'un nombre
observe.config.ui.changeSynchroSrc=Pour autoriser la sélection de la base source dans les opérations sur base
observe.config.ui.focusBorderColor=Couleur de la bordure de la zone qui a le focus
@@ -85,6 +87,10 @@ observe.config.ui.showMnemonic=Afficher les racourcis clavier
observe.config.ui.showNumberEditorButton=Pour afficher le bouton qui permet d'utiliser l'éditeur numérique à gauche de chaque champs numérique
observe.config.ui.showTimeEditorSlider=Pour afficher la réglette d'édition des heures
observe.config.ui.storeRemoteStorage=Pour activer la sauvegarde de la configuration de la source distante
+observe.config.ui.tree.showEmptyProgram.description=Voir les programmes sans marée
+observe.config.ui.tree.showLonglineTrip.description=Voir les marées Palangre
+observe.config.ui.tree.showReferential.description=Voir le référentiel
+observe.config.ui.tree.showSeineTrip.description=Voir les marées Senne
observe.config.ui.treeOpenNodes=Nœuds de l'arbre ouverts lors de la dernière fermeture de la base
observe.config.ui.treeSelectedNodes.description=Nœuds sélectionnés sur la dernière base ouverte
observe.config.validation.lengthWeightEnable=Forcer la validation des bormes min/max de taille d'espèce
=====================================
client/pom.xml
=====================================
--- a/client/pom.xml
+++ b/client/pom.xml
@@ -382,10 +382,20 @@
<artifactId>class-mapping</artifactId>
</dependency>
+ <dependency>
+ <groupId>io.ultreia.java4all</groupId>
+ <artifactId>java-lang</artifactId>
+ <scope>runtime</scope>
+ </dependency>
+
<!-- jaxx dependencies -->
<dependency>
<groupId>io.ultreia.java4all.jaxx</groupId>
+ <artifactId>jaxx-runtime-spi</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>io.ultreia.java4all.jaxx</groupId>
<artifactId>jaxx-runtime</artifactId>
</dependency>
<dependency>
=====================================
client/src/main/java/fr/ird/observe/client/ui/ObserveKeyStrokes.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/ObserveKeyStrokes.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/ObserveKeyStrokes.java
@@ -61,10 +61,11 @@ public abstract class ObserveKeyStrokes {
public static final KeyStroke KEY_STROKE_RELOAD_DEFAULT_CONFIGURATION = KeyStroke.getKeyStroke(KeyEvent.VK_R, InputEvent.ALT_MASK | InputEvent.SHIFT_MASK);
public static final KeyStroke KEY_STROKE_ESCAPE = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0);
public static final KeyStroke KEY_STROKE_ENTER = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0);
- public static final KeyStroke KEY_STROKE_SHOW_SEINE = KeyStroke.getKeyStroke("ctrl pressed F1");
- public static final KeyStroke KEY_STROKE_SHOW_LONGLINE = KeyStroke.getKeyStroke("ctrl pressed F2");
- public static final KeyStroke KEY_STROKE_SHOW_REFERENTIAL = KeyStroke.getKeyStroke("ctrl pressed F3");
- public static final KeyStroke KEY_STROKE_SHOW_EMPTY_PROGRAM = KeyStroke.getKeyStroke("ctrl pressed F4");
+ public static final KeyStroke KEY_STROKE_NAVIGATION_CONFIGURE = KeyStroke.getKeyStroke("ctrl pressed F1");
+ public static final KeyStroke KEY_STROKE_SHOW_SEINE = KeyStroke.getKeyStroke("ctrl pressed F2");
+ public static final KeyStroke KEY_STROKE_SHOW_LONGLINE = KeyStroke.getKeyStroke("ctrl pressed F3");
+ public static final KeyStroke KEY_STROKE_SHOW_REFERENTIAL = KeyStroke.getKeyStroke("ctrl pressed F4");
+ public static final KeyStroke KEY_STROKE_SHOW_EMPTY_PROGRAM = KeyStroke.getKeyStroke("ctrl pressed F5");
public static final KeyStroke KEY_STROKE_CONFIGURE_LOCAL_SOURCE = KeyStroke.getKeyStroke("ctrl pressed L");
public static final KeyStroke KEY_STROKE_CONFIGURE_REMOTE_SOURCE = KeyStroke.getKeyStroke("ctrl pressed R");
public static final KeyStroke KEY_STROKE_SAVE_TABLE_ENTRY = KeyStroke.getKeyStroke("ctrl pressed S");
=====================================
client/src/main/java/fr/ird/observe/client/ui/ObserveMainUI.jaxx
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/ObserveMainUI.jaxx
+++ b/client/src/main/java/fr/ird/observe/client/ui/ObserveMainUI.jaxx
@@ -77,8 +77,10 @@
fr.ird.observe.client.ui.content.ContentUIManager
fr.ird.observe.client.ui.content.ObserveActionMap
+ fr.ird.observe.client.ui.tree.navigation.NavigationUI
fr.ird.observe.client.ui.tree.navigation.NavigationTree
- fr.ird.observe.client.ui.tree.navigation.NavigationTreeHeader
+ fr.ird.observe.client.ui.tree.navigation.NavigationTreeModel
+ fr.ird.observe.client.ui.tree.navigation.NavigationTreeModel
fr.ird.observe.client.ui.util.UIHelper
fr.ird.observe.client.ui.util.ObserveBlockingLayerUI
@@ -252,10 +254,8 @@ protected void finalize() throws Throwable {
<!-- left : navigation -->
<JXTitledPanel id='navigationView'>
- <JScrollPane id='navigationScrollPane' columnHeaderView='{navigationTreeHeader}'>
- <NavigationTree id="navigation"/>
- <NavigationTreeHeader id='navigationTreeHeader' tree='{navigation}'/>
- </JScrollPane>
+ <NavigationUI id="navigationUI" initializer="new NavigationUI((JAXXContext)this)"/>
+ <NavigationTree id="navigation" initializer="navigationUI.getTree()"/>
</JXTitledPanel>
<!-- right : (content + messages) -->
=====================================
client/src/main/java/fr/ird/observe/client/ui/ObserveMainUIInitializer.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/ObserveMainUIInitializer.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/ObserveMainUIInitializer.java
@@ -6,15 +6,15 @@
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
+ * published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
+ *
+ * You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
* #L%
@@ -32,7 +32,6 @@ import fr.ird.observe.client.ui.content.ContentUIManager;
import fr.ird.observe.client.ui.content.ObserveActionMap;
import fr.ird.observe.client.ui.tree.ObserveNavigationTreeShowPopupAction;
import fr.ird.observe.client.ui.tree.navigation.NavigationTree;
-import fr.ird.observe.client.ui.tree.navigation.NavigationTreeHeader;
import fr.ird.observe.client.ui.tree.navigation.NavigationTreeModel;
import fr.ird.observe.client.ui.tree.navigation.nodes.NavigationTreeNodeSupport;
import fr.ird.observe.client.ui.tree.navigation.nodes.ReferenceNavigationTreeNodeSupport;
@@ -44,19 +43,14 @@ import fr.ird.observe.client.ui.util.UIHelper;
import fr.ird.observe.dto.decoration.DecoratorService;
import fr.ird.observe.dto.decoration.ObserveI18nDecoratorHelper;
import fr.ird.observe.dto.referential.ReferentialLocale;
-import java.awt.Component;
-import java.awt.Container;
-import java.awt.Cursor;
-import java.awt.Dimension;
-import java.awt.event.ComponentAdapter;
-import java.awt.event.ComponentEvent;
-import java.awt.event.KeyEvent;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Locale;
-import java.util.Objects;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.i18n.I18n;
+import org.nuiton.jaxx.runtime.context.JAXXInitialContext;
+import org.nuiton.jaxx.validator.swing.SwingValidatorMessageTableModel;
+import org.nuiton.jaxx.validator.swing.SwingValidatorUtil;
+import org.nuiton.jaxx.widgets.error.ErrorDialogUI;
+
import javax.swing.AbstractButton;
import javax.swing.JComponent;
import javax.swing.JSplitPane;
@@ -67,14 +61,16 @@ import javax.swing.border.Border;
import javax.swing.border.LineBorder;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.tree.TreePath;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.nuiton.i18n.I18n;
-import org.nuiton.jaxx.runtime.context.JAXXInitialContext;
-import org.nuiton.jaxx.validator.swing.SwingValidatorMessageTableModel;
-import org.nuiton.jaxx.validator.swing.SwingValidatorUtil;
-import org.nuiton.jaxx.widgets.error.ErrorDialogUI;
-
+import java.awt.Component;
+import java.awt.Container;
+import java.awt.Cursor;
+import java.awt.event.KeyEvent;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+import java.util.Objects;
import static fr.ird.observe.client.ui.content.ContentUIInitializer.OBSERVE_ACTION;
import static org.nuiton.i18n.I18n.t;
@@ -94,11 +90,87 @@ public class ObserveMainUIInitializer {
private static final String EMPTY_SELECTION = "emptySelection";
private final ObserveMainUI ui;
+ private Border focusBorder;
+ private Border noFocusBorder;
ObserveMainUIInitializer(ObserveMainUI ui) {
this.ui = ui;
}
+ /**
+ * Methode pour initialiser l'ui principale sans l'afficher.
+ *
+ * @param context le context applicatif
+ * @param config la configuration a utiliser
+ * @return l'ui instancie et initialisee mais non visible encore
+ */
+ public static ObserveMainUI initUI(ObserveSwingApplicationContext context, ClientConfig config) {
+
+ SwingValidatorMessageTableModel errorModel = new ObserveSwingValidatorMessageTableModel();
+
+ DecoratorService decoratorService = context.getDecoratorService();
+
+ boolean reloadDecorators = false;
+ Locale currentLocale = I18n.getDefaultLocale();
+ Locale configurationLocale = config.getLocale();
+ if (!configurationLocale.equals(currentLocale)) {
+ if (log.isInfoEnabled()) {
+ log.info("re-init I18n with locale " + configurationLocale);
+ }
+ I18n.setDefaultLocale(configurationLocale);
+ reloadDecorators = true;
+ }
+ if (!config.getDbLocale().equals(decoratorService.getReferentialLocale().getLocale())) {
+ if (log.isInfoEnabled()) {
+ log.info("re-init db with locale " + config.getDbLocale());
+ }
+ decoratorService.setReferentialLocale(ReferentialLocale.valueOf(config.getDbLocale()));
+
+ reloadDecorators = true;
+ }
+
+ if (reloadDecorators) {
+ if (log.isInfoEnabled()) {
+ log.info("reload decorators");
+ }
+ decoratorService.reload();
+ }
+
+ JAXXInitialContext tx = new JAXXInitialContext();
+ tx.add(context).add(errorModel);
+
+ // show main ui
+ ObserveMainUI ui = new ObserveMainUI(tx);
+ ui.setUndecorated(config.isFullScreen());
+
+ String title = t("observe.title.welcome.admin") + (" v " + config.getVersion());
+ ui.setTitle(title);
+
+ context.setMainUI(ui);
+
+ ErrorDialogUI.init(ui);
+
+ // set fullscreen propery on main ui
+ ui.getGraphicsConfiguration().getDevice().setFullScreenWindow(config.isFullScreen() ? ui : null);
+
+ new ObserveNavigationTreeShowPopupAction(ui.getNavigation(), ui.getNavigationUI(), ui.getNavigationPopup());
+
+ return ui;
+ }
+
+ public static void setMainUIVisible(ObserveSwingApplicationContext rootContext, ObserveMainUI ui, boolean replace) {
+
+ // force le redimensionnement du splitpane
+ ui.getSplitpane().revalidate();
+
+ // force le redimensionnement du splitpane2
+ ui.getSplitpane2().revalidate();
+
+ // affichage de l'interface graphique
+ SwingUtilities.invokeLater(() -> ui.setVisible(true));
+ rootContext.getSwingSessionHelper().addComponent(ui, replace);
+ }
+
private void changeNavigationNode(TreeSelectionEvent event) {
ObserveSwingDataSource source = ObserveSwingApplicationContext.get().getDataSourcesManager().getMainDataSource();
@@ -196,7 +268,7 @@ public class ObserveMainUIInitializer {
if (ui.getNavigation().equals(focusOwner)) {
focusOnNavigation = true;
}
- if (ui.getNavigationTreeHeader().equals(focusOwner)) {
+ if (ui.getNavigationUI().equals(focusOwner)) {
focusOnNavigation = true;
}
if (ui.getNavigationView().equals(focusOwner)) {
@@ -209,7 +281,7 @@ public class ObserveMainUIInitializer {
focusOnNavigation = true;
break;
}
- if (ui.getNavigationTreeHeader().equals(focusOwnerParent)) {
+ if (ui.getNavigationUI().equals(focusOwnerParent)) {
focusOnNavigation = true;
break;
}
@@ -243,67 +315,6 @@ public class ObserveMainUIInitializer {
}
/**
- * Methode pour initialiser l'ui principale sans l'afficher.
- *
- * @param context le context applicatif
- * @param config la configuration a utiliser
- * @return l'ui instancie et initialisee mais non visible encore
- */
- public static ObserveMainUI initUI(ObserveSwingApplicationContext context, ClientConfig config) {
-
- SwingValidatorMessageTableModel errorModel = new ObserveSwingValidatorMessageTableModel();
-
- DecoratorService decoratorService = context.getDecoratorService();
-
- boolean reloadDecorators = false;
- Locale currentLocale = I18n.getDefaultLocale();
- Locale configurationLocale = config.getLocale();
- if (!configurationLocale.equals(currentLocale)) {
- if (log.isInfoEnabled()) {
- log.info("re-init I18n with locale " + configurationLocale);
- }
- I18n.setDefaultLocale(configurationLocale);
- reloadDecorators = true;
- }
- if (!config.getDbLocale().equals(decoratorService.getReferentialLocale().getLocale())) {
- if (log.isInfoEnabled()) {
- log.info("re-init db with locale " + config.getDbLocale());
- }
- decoratorService.setReferentialLocale(ReferentialLocale.valueOf(config.getDbLocale()));
-
- reloadDecorators = true;
- }
-
- if (reloadDecorators) {
- if (log.isInfoEnabled()) {
- log.info("reload decorators");
- }
- decoratorService.reload();
- }
-
- JAXXInitialContext tx = new JAXXInitialContext();
- tx.add(context).add(errorModel);
-
- // show main ui
- ObserveMainUI ui = new ObserveMainUI(tx);
- ui.setUndecorated(config.isFullScreen());
-
- String title = t("observe.title.welcome.admin") + (" v " + config.getVersion());
- ui.setTitle(title);
-
- context.setMainUI(ui);
-
- ErrorDialogUI.init(ui);
-
- // set fullscreen propery on main ui
- ui.getGraphicsConfiguration().getDevice().setFullScreenWindow(config.isFullScreen() ? ui : null);
-
- new ObserveNavigationTreeShowPopupAction(ui.getNavigation(), ui.getNavigationScrollPane(), ui.getNavigationPopup());
-
- return ui;
- }
-
- /**
* Permet de recharger l'ui principale et de changer de le mode
* d'affichage.
*
@@ -358,11 +369,7 @@ public class ObserveMainUIInitializer {
// on met à jour le modèle de navigation
NavigationTreeModel treeModel = ui.getNavigation().getTreeModel();
- treeModel.setLoadSeine(ui.getNavigationTreeHeader().getShowSeine().isSelected());
- treeModel.setLoadLongline(ui.getNavigationTreeHeader().getShowLongline().isSelected());
- treeModel.setLoadReferential(ui.getNavigationTreeHeader().getShowReferential().isSelected());
- treeModel.setLoadEmptyProgram(ui.getNavigationTreeHeader().getShowEmptyProgram().isSelected());
-
+ treeModel.load(config);
treeModel.populate();
// on conserve les noeuds a reselectionner
@@ -378,19 +385,6 @@ public class ObserveMainUIInitializer {
setMainUIVisible(rootContext, ui, true);
}
- public static void setMainUIVisible(ObserveSwingApplicationContext rootContext, ObserveMainUI ui, boolean replace) {
-
- // force le redimensionnement du splitpane
- ui.getSplitpane().revalidate();
-
- // force le redimensionnement du splitpane2
- ui.getSplitpane2().revalidate();
-
- // affichage de l'interface graphique
- SwingUtilities.invokeLater(() -> ui.setVisible(true));
- rootContext.getSwingSessionHelper().addComponent(ui, replace);
- }
-
void initialize() {
ObserveActionMap actionMap = ui.getObserveActionMap();
@@ -440,43 +434,43 @@ public class ObserveMainUIInitializer {
};
ui.getNavigationView().addMouseListener(mouseAdapter);
ui.getNavigation().addMouseListener(mouseAdapter);
- ui.getNavigationTreeHeader().addMouseListener(mouseAdapter);
+ ui.getNavigationUI().addMouseListener(mouseAdapter);
init(ui.getSplitpane());
init(ui.getSplitpane2());
init(ui.getNavigation());
- ui.getNavigationView().setRightDecoration(ui.getNavigationTreeHeader().getToolbar());
- ui.getNavigationView().addComponentListener(new ComponentAdapter() {
-
- @Override
- public void componentResized(ComponentEvent e) {
-
- JComponent source = (JComponent) e.getSource();
-
- NavigationTreeHeader actions = ui.getNavigationTreeHeader();
-
- Dimension preferredLayoutSize = actions.getLayout().preferredLayoutSize(actions);
-
- Dimension showLonglineSize = actions.getShowLongline().getSize();
- Dimension showSeineSize = actions.getShowSeine().getSize();
- Dimension showReferential = actions.getShowReferential().getSize();
- Dimension showEmpty = actions.getShowEmptyProgram().getSize();
- int minWidth = 18 + (int) Math.max(showLonglineSize.getWidth() + showSeineSize.getWidth(), showReferential.getWidth() + showEmpty.getWidth());
- source.setMinimumSize(new Dimension(minWidth, (int) source.getSize().getHeight()));
- log.debug("Header resized to minumun: " + source.getMinimumSize());
-
- int maxWidth = ui.getNavigationView().getWidth() - 10;
-
- int currentWidth = (int) preferredLayoutSize.getWidth();
- int height = 32;
- if (currentWidth > maxWidth) {
- height += 32;
- }
- actions.setPreferredSize(new Dimension(maxWidth, height));
-
- }
- });
+ ui.getNavigationView().setRightDecoration(ui.getNavigationUI().getToolbar());
+// ui.getNavigationView().addComponentListener(new ComponentAdapter() {
+//
+// @Override
+// public void componentResized(ComponentEvent e) {
+//
+// JComponent source = (JComponent) e.getSource();
+//
+// NavigationTreeHeader actions = ui.getNavigationUI();
+//
+// Dimension preferredLayoutSize = actions.getLayout().preferredLayoutSize(actions);
+//
+// Dimension showLonglineSize = actions.getShowLongline().getSize();
+// Dimension showSeineSize = actions.getShowSeine().getSize();
+// Dimension showReferential = actions.getShowReferential().getSize();
+// Dimension showEmpty = actions.getShowEmptyProgram().getSize();
+// int minWidth = 18 + (int) Math.max(showLonglineSize.getWidth() + showSeineSize.getWidth(), showReferential.getWidth() + showEmpty.getWidth());
+// source.setMinimumSize(new Dimension(minWidth, (int) source.getSize().getHeight()));
+// log.debug("Header resized to minumun: " + source.getMinimumSize());
+//
+// int maxWidth = ui.getNavigationView().getWidth() - 10;
+//
+// int currentWidth = (int) preferredLayoutSize.getWidth();
+// int height = 32;
+// if (currentWidth > maxWidth) {
+// height += 32;
+// }
+// actions.setPreferredSize(new Dimension(maxWidth, height));
+//
+// }
+// });
}
protected void init(ObserveActionMap actionMap, AbstractButton editor) {
@@ -498,9 +492,6 @@ public class ObserveMainUIInitializer {
}
- private Border focusBorder;
- private Border noFocusBorder;
-
private Border getFocusBorder() {
if (focusBorder == null) {
focusBorder = new LineBorder(ObserveSwingApplicationContext.get().getConfig().getFocusBorderColor(), 3, true);
@@ -549,7 +540,7 @@ public class ObserveMainUIInitializer {
/**
* Nettoye des ui tout ce qui concerne un modèle de navigation.
- * <p>
+ *
* <b>Note:</b> cette méthode doit être appelée avant tout rechargement de modèle de naivgation.
*
* @param progressModel progress model to interact with ui
@@ -576,7 +567,7 @@ public class ObserveMainUIInitializer {
/**
* Charge dans l'ui un nouveau modèle de navigation.
- * <p>
+ *
* <b>Note:</b> cette méthode doit être appelée après tout rechargement de modèle de naivgation.
*
* @param progressModel the progress model to interact with ui
=====================================
client/src/main/java/fr/ird/observe/client/ui/admin/synchronize/data/DataSynchroModel.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/admin/synchronize/data/DataSynchroModel.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/admin/synchronize/data/DataSynchroModel.java
@@ -72,15 +72,15 @@ public class DataSynchroModel extends AdminActionModel {
super(AdminStep.DATA_SYNCHRONIZE);
// leftSelectionDataModel = new SelectionTreeModel();
-// leftSelectionDataModel.setLoadLongline(true);
-// leftSelectionDataModel.setLoadSeine(true);
-// leftSelectionDataModel.setLoadReferential(false);
+// leftSelectionDataModel.setShowLonglineTrip(true);
+// leftSelectionDataModel.setShowSeineTrip(true);
+// leftSelectionDataModel.setShowReferential(false);
// leftSelectionDataModel.setShowEmptyTrips(false);
//
// rightSelectionDataModel = new SelectionTreeModel();
-// rightSelectionDataModel.setLoadLongline(true);
-// rightSelectionDataModel.setLoadSeine(true);
-// rightSelectionDataModel.setLoadReferential(false);
+// rightSelectionDataModel.setShowLonglineTrip(true);
+// rightSelectionDataModel.setShowSeineTrip(true);
+// rightSelectionDataModel.setShowReferential(false);
// rightSelectionDataModel.setShowEmptyTrips(false);
tasks = new DefaultListModel<>();
=====================================
client/src/main/java/fr/ird/observe/client/ui/admin/synchronize/referential/ng/ReferentialSynchroConfigUI.jaxx
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/admin/synchronize/referential/ng/ReferentialSynchroConfigUI.jaxx
+++ b/client/src/main/java/fr/ird/observe/client/ui/admin/synchronize/referential/ng/ReferentialSynchroConfigUI.jaxx
@@ -33,6 +33,7 @@
fr.ird.observe.client.constants.ValidationModelMode
org.nuiton.validator.NuitonValidatorScope
+ org.nuiton.i18n.I18n
java.io.File
=====================================
client/src/main/java/fr/ird/observe/client/ui/admin/synchronize/referential/ng/ReferentialSynchroConfigUI.jcss
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/admin/synchronize/referential/ng/ReferentialSynchroConfigUI.jcss
+++ b/client/src/main/java/fr/ird/observe/client/ui/admin/synchronize/referential/ng/ReferentialSynchroConfigUI.jcss
@@ -24,7 +24,7 @@
layout:{new BorderLayout()};
}
#referentialSynchronizeConfigPanel {
- border:{new TitledBorder(t("observe.actions.synchro.referential.config.mode"))};
+ border:{new TitledBorder(I18n.t("observe.actions.synchro.referential.config.mode"))};
}
#synchronizeMode {
=====================================
client/src/main/java/fr/ird/observe/client/ui/content/ContentUIInitializer.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/content/ContentUIInitializer.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/content/ContentUIInitializer.java
@@ -415,7 +415,7 @@ public class ContentUIInitializer<E extends IdDto, UI extends ContentUI<E, UI>>
Action resetAction = new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
- beanComboBox.doActionPerformed__on__resetButton(null);
+ beanComboBox.getResetButton().doClick();
SwingUtilities.invokeLater(beanComboBox::grabFocus);
}
};
@@ -768,7 +768,7 @@ public class ContentUIInitializer<E extends IdDto, UI extends ContentUI<E, UI>>
list.init(decorator, new ArrayList<>(), new ArrayList<>());
JList<R> selectedList = list.getSelectedList();
- ListCellRenderer<? super R> renderer = selectedList.getCellRenderer();
+ ListCellRenderer renderer = selectedList.getCellRenderer();
selectedList.setCellRenderer(new DataReferenceListCellRenderer<>(renderer));
list.getUniverseList().setCellRenderer(new DataReferenceListCellRenderer<>(renderer));
@@ -795,7 +795,7 @@ public class ContentUIInitializer<E extends IdDto, UI extends ContentUI<E, UI>>
list.init(decorator, new ArrayList<>(), new ArrayList<>());
JList<R> selectedList = list.getSelectedList();
- ListCellRenderer<? super R> renderer = selectedList.getCellRenderer();
+ ListCellRenderer renderer = selectedList.getCellRenderer();
selectedList.setCellRenderer(new ReferentialReferenceListCellRenderer<>(renderer));
list.getUniverseList().setCellRenderer(new ReferentialReferenceListCellRenderer<>(renderer));
@@ -822,7 +822,7 @@ public class ContentUIInitializer<E extends IdDto, UI extends ContentUI<E, UI>>
list.init(decorator, Collections.emptyList());
JList<R> list1 = list.getList();
- ListCellRenderer<? super R> renderer = list1.getCellRenderer();
+ ListCellRenderer renderer = list1.getCellRenderer();
list1.setCellRenderer(new DataReferenceListCellRenderer<>(renderer));
}
@@ -847,7 +847,7 @@ public class ContentUIInitializer<E extends IdDto, UI extends ContentUI<E, UI>>
list.init(decorator, Collections.emptyList());
JList<R> list1 = list.getList();
- ListCellRenderer<? super R> renderer = list1.getCellRenderer();
+ ListCellRenderer renderer = list1.getCellRenderer();
list1.setCellRenderer(new ReferentialReferenceListCellRenderer<>(renderer));
}
=====================================
client/src/main/java/fr/ird/observe/client/ui/storage/tabs/RolesUI.jaxx
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/storage/tabs/RolesUI.jaxx
+++ b/client/src/main/java/fr/ird/observe/client/ui/storage/tabs/RolesUI.jaxx
@@ -30,6 +30,8 @@
fr.ird.observe.client.ui.storage.tabs.SecurityModel
fr.ird.observe.client.ui.storage.StorageStep
fr.ird.observe.client.ui.storage.StorageUIModel
+
+ org.nuiton.i18n.I18n
</import>
<StorageStep id='step' initializer='StorageStep.ROLES'/>
@@ -44,7 +46,7 @@
<script><![CDATA[
public String updateAdministrateur(String role) {
- return t("observe.storage.security.administrateur", role);
+ return I18n.t("observe.storage.security.administrateur", role);
}
]]>
</script>
=====================================
client/src/main/java/fr/ird/observe/client/ui/storage/tabs/RolesUI.jcss
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/storage/tabs/RolesUI.jcss
+++ b/client/src/main/java/fr/ird/observe/client/ui/storage/tabs/RolesUI.jcss
@@ -25,7 +25,7 @@
}
#administrateurPanel {
- border:{new TitledBorder(t("observe.storage.security.administrateur"))};
+ border:{new TitledBorder(I18n.t("observe.storage.security.administrateur"))};
layout:{new BorderLayout()};
}
@@ -43,13 +43,13 @@
}
#techniciens {
- border:{new TitledBorder(t("observe.storage.security.technicien"))};
+ border:{new TitledBorder(I18n.t("observe.storage.security.technicien"))};
}
#readers {
- border:{new TitledBorder(t("observe.storage.security.reader"))};
+ border:{new TitledBorder(I18n.t("observe.storage.security.reader"))};
}
#referentiels {
- border:{new TitledBorder(t("observe.storage.security.referentiel"))};
+ border:{new TitledBorder(I18n.t("observe.storage.security.referentiel"))};
}
=====================================
client/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationTreeHeader.jaxx deleted
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationTreeHeader.jaxx
+++ /dev/null
@@ -1,38 +0,0 @@
-<!--
- #%L
- ObServe :: Client
- %%
- Copyright (C) 2008 - 2017 IRD, Code Lutin, Ultreia.io
- %%
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as
- published by the Free Software Foundation, either version 3 of the
- License, or (at your option) any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public
- License along with this program. If not, see
- <http://www.gnu.org/licenses/gpl-3.0.html>.
- #L%
- -->
-<JPanel layout='{new FlowLayout(FlowLayout.LEFT, 2, 2)}'>
-
- <import>
- java.awt.FlowLayout
- </import>
-
- <JToggleButton id='showSeine' onActionPerformed="handler.tryToUpdateNavigationTree()"/>
- <JToggleButton id='showLongline' onActionPerformed="handler.tryToUpdateNavigationTree()"/>
- <JToggleButton id='showReferential' onActionPerformed="handler.tryToUpdateNavigationTree()"/>
- <JToggleButton id='showEmptyProgram' onActionPerformed="handler.tryToUpdateNavigationTree()"/>
-
- <NavigationTree id='tree' javaBean='new NavigationTree()'/>
-
- <JToolBar id='toolbar'>
- <JButton id='colapseAll' onActionPerformed='handler.collapseAll()'/>
- <JButton id='expandAll' onActionPerformed='handler.expandAll()'/>
- </JToolBar>
-
-</JPanel>
=====================================
client/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationTreeModel.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationTreeModel.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationTreeModel.java
@@ -10,18 +10,20 @@ package fr.ird.observe.client.ui.tree.navigation;
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
* #L%
*/
+import fr.ird.observe.client.configuration.ClientConfig;
+import fr.ird.observe.client.configuration.NavigationTreeConfigBean;
import fr.ird.observe.client.db.ObserveSwingDataSource;
import fr.ird.observe.client.ui.tree.navigation.nodes.NavigationTreeNodeSupport;
import fr.ird.observe.client.ui.tree.navigation.nodes.RootNavigationTreeNode;
@@ -33,19 +35,20 @@ import fr.ird.observe.client.ui.tree.navigation.nodes.referential.ReferentialsSe
import fr.ird.observe.client.ui.tree.navigation.nodes.seine.ProgramSeineNavigationTreeNode;
import fr.ird.observe.dto.data.longline.TripLonglineHelper;
import fr.ird.observe.dto.data.longline.TripLonglineReference;
-import fr.ird.observe.dto.referential.ProgramHelper;
-import fr.ird.observe.dto.referential.ProgramReference;
import fr.ird.observe.dto.data.seine.TripSeineHelper;
import fr.ird.observe.dto.data.seine.TripSeineReference;
+import fr.ird.observe.dto.referential.ProgramHelper;
+import fr.ird.observe.dto.referential.ProgramReference;
import fr.ird.observe.services.service.data.NavigationRequest;
import fr.ird.observe.services.service.data.NavigationResult;
import fr.ird.observe.services.service.data.NavigationService;
+
+import javax.swing.tree.DefaultTreeModel;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
-import javax.swing.tree.DefaultTreeModel;
/**
* Created on 14/11/16.
@@ -55,44 +58,50 @@ import javax.swing.tree.DefaultTreeModel;
*/
public class NavigationTreeModel extends DefaultTreeModel {
- private boolean loadSeine = true;
- private boolean loadLongline = true;
- private boolean loadReferential = true;
- private boolean loadEmptyProgram = true;
+ private final NavigationTreeConfigBean config;
- public NavigationTreeModel() {
+ NavigationTreeModel() {
super(new RootNavigationTreeNode());
+ config = new NavigationTreeConfigBean();
}
- public NavigationTreeNodeSupport<?> findNode(NavigationTreeNodeSupport<?> node, Object... ids) {
- NavigationTreeNodeSupport<?> result = null;
- for (Object id : ids) {
+ public NavigationTreeConfigBean getConfig() {
+ return config;
+ }
- if (id instanceof String) {
- result = node.findChildById((String) id);
- } else if (id instanceof Class) {
- result = node.findChildByType((Class) id);
+ @Override
+ public RootNavigationTreeNode getRoot() {
+ return (RootNavigationTreeNode) super.getRoot();
+ }
- }
- if (result == null) {
+ public <N extends NavigationTreeNodeSupport> void reload(N node) {
+ node.reload();
+ super.reload(node);
+ }
- // un des noeud n'a pas ete trouve, on sortReferential
- break;
+ public <N extends NavigationTreeNodeSupport> void open(N node) {
+ if (node instanceof WithChildsToReload) {
+ boolean updated = node.populateChilds();
+ if (updated) {
+ reload(node);
}
- node = result;
}
- return result;
}
- public NavigationTreeNodeSupport<?> findNodeByType(NavigationTreeNodeSupport<?> node, Class<?> nodeType) {
- return node.findChildByType(nodeType);
+ public void save(ClientConfig config) {
+ config.load(this.config);
+ config.saveForUser();
+ }
+
+ public void load(ClientConfig config) {
+ this.config.load(config);
}
public void populate() {
NavigationService navigationService = ObserveSwingDataSource.MAIN.getNavigationService();
- NavigationRequest navigationRequest = toNavigationRequest();
+ NavigationRequest navigationRequest = config.toRequest();
NavigationResult navigationResult = navigationService.getNavigation(navigationRequest);
List<ProgramReference> programs = new ArrayList<>(navigationResult.getPrograms());
@@ -119,75 +128,38 @@ public class NavigationTreeModel extends DefaultTreeModel {
ProgramSeineNavigationTreeNode programNode = new ProgramSeineNavigationTreeNode(program, references);
root.add(programNode);
}
-
}
- if (isLoadReferential()) {
+ if (config.isShowReferential()) {
root.add(new ReferentialsCommonNavigationTreeNode());
root.add(new ReferentialsLonglineNavigationTreeNode());
root.add(new ReferentialsSeineNavigationTreeNode());
}
-
setRoot(root);
}
- private NavigationRequest toNavigationRequest() {
- NavigationRequest navigationRequest = new NavigationRequest();
- navigationRequest.setLoadLongline(isLoadLongline());
- navigationRequest.setLoadSeine(isLoadSeine());
- navigationRequest.setLoadEmptyProgram(isLoadEmptyProgram());
- return navigationRequest;
- }
-
- @Override
- public RootNavigationTreeNode getRoot() {
- return (RootNavigationTreeNode) super.getRoot();
- }
-
- public boolean isLoadSeine() {
- return loadSeine;
- }
-
- public void setLoadSeine(boolean loadSeine) {
- this.loadSeine = loadSeine;
- }
-
- public boolean isLoadLongline() {
- return loadLongline;
- }
-
- public void setLoadLongline(boolean loadLongline) {
- this.loadLongline = loadLongline;
- }
-
- public boolean isLoadReferential() {
- return loadReferential;
- }
-
- public void setLoadReferential(boolean loadReferential) {
- this.loadReferential = loadReferential;
- }
-
- public boolean isLoadEmptyProgram() {
- return loadEmptyProgram;
- }
+ NavigationTreeNodeSupport<?> findNode(NavigationTreeNodeSupport<?> node, Object... ids) {
+ NavigationTreeNodeSupport<?> result = null;
+ for (Object id : ids) {
- public void setLoadEmptyProgram(boolean loadEmptyProgram) {
- this.loadEmptyProgram = loadEmptyProgram;
- }
+ if (id instanceof String) {
+ result = node.findChildById((String) id);
+ } else if (id instanceof Class) {
+ result = node.findChildByType((Class) id);
- public <N extends NavigationTreeNodeSupport> void reload(N node) {
- node.reload();
- super.reload(node);
- }
+ }
+ if (result == null) {
- public <N extends NavigationTreeNodeSupport> void open(N node) {
- if (node instanceof WithChildsToReload) {
- boolean updated = node.populateChilds();
- if (updated) {
- reload(node);
+ // un des noeud n'a pas ete trouve, on sortReferential
+ break;
}
+ node = result;
}
+ return result;
+ }
+
+ NavigationTreeNodeSupport<?> findNodeByType(NavigationTreeNodeSupport<?> node, Class<?> nodeType) {
+ return node.findChildByType(nodeType);
}
}
=====================================
client/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationUI.jaxx
=====================================
--- /dev/null
+++ b/client/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationUI.jaxx
@@ -0,0 +1,24 @@
+<JScrollPane id='navigationScrollPane' columnHeaderView='{toolbar}' viewportView="{tree}">
+
+ <import>
+ fr.ird.observe.client.configuration.NavigationTreeConfigBean
+ static org.nuiton.i18n.I18n.t
+ </import>
+ <NavigationTree id='tree' />
+ <NavigationTreeModel id='treeModel' javaBean='{tree.getTreeModel()}'/>
+ <NavigationTreeConfigBean id='navigationConfig' javaBean='treeModel.getConfig()'/>
+
+ <JPopupMenu id='configurePopup'>
+ <JCheckBoxMenuItem id='showSeineTrip' onActionPerformed="handler.tryToUpdateNavigationTree()"/>
+ <JCheckBoxMenuItem id='showLonglineTrip' onActionPerformed="handler.tryToUpdateNavigationTree()"/>
+ <JCheckBoxMenuItem id='showReferential' onActionPerformed="handler.tryToUpdateNavigationTree()"/>
+ <JCheckBoxMenuItem id='showEmptyProgram' onActionPerformed="handler.tryToUpdateNavigationTree()"/>
+ </JPopupMenu>
+
+ <JToolBar id='toolbar'>
+ <JButton id='colapseAll' onActionPerformed='handler.collapseAll()'/>
+ <JButton id='expandAll' onActionPerformed='handler.expandAll()'/>
+ <JToggleButton id='configure' onActionPerformed='handler.configure()'/>
+ </JToolBar>
+
+</JScrollPane>
=====================================
client/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationTreeHeader.jcss → client/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationUI.jcss
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationTreeHeader.jcss
+++ b/client/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationUI.jcss
@@ -8,36 +8,35 @@
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
* #L%
*/
-#showSeine {
- selected: {tree.getTreeModel().isLoadSeine()};
+#showSeineTrip {
+ selected: {navigationConfig.isShowSeineTrip()};
text:"observe.constant.ObserveModelType.PS";
toolTipText:"observe.constant.ObserveModelType.PS.description";
}
-#showLongline {
- selected: {tree.getTreeModel().isLoadLongline()};
+#showLonglineTrip {
+ selected: {navigationConfig.isShowLonglineTrip()};
text:"observe.constant.ObserveModelType.LL";
toolTipText:"observe.constant.ObserveModelType.LL.description";
}
#showReferential {
- selected: {tree.getTreeModel().isLoadReferential()};
+ selected: {navigationConfig.isShowReferential()};
text:"observe.constant.ObserveModelType.REF";
toolTipText:"observe.constant.ObserveModelType.REF.description";
}
-
#showEmptyProgram {
- selected: {tree.getTreeModel().isLoadEmptyProgram()};
+ selected: {navigationConfig.isShowEmptyProgram()};
text:"observe.constant.ObserveModelType.EMPTY";
toolTipText:"observe.constant.ObserveModelType.EMPTY.description";
}
@@ -61,3 +60,8 @@ JButton {
actionIcon:expand;
toolTipText:"observe.tree.action.expandAll.tip";
}
+
+#configure {
+ actionIcon:generate;
+ toolTipText:"observe.tree.action.configure.tip";
+}
=====================================
client/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationTreeHeaderHandler.java → client/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationUIHandler.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationTreeHeaderHandler.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationUIHandler.java
@@ -1,39 +1,11 @@
package fr.ird.observe.client.ui.tree.navigation;
-/*
- * #%L
- * ObServe :: Client
- * %%
- * Copyright (C) 2008 - 2017 IRD, Code Lutin, Ultreia.io
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
import fr.ird.observe.client.ObserveSwingApplicationContext;
+import fr.ird.observe.client.configuration.ClientConfig;
+import fr.ird.observe.client.configuration.NavigationTreeConfig;
import fr.ird.observe.client.ui.ObserveKeyStrokes;
-import fr.ird.observe.client.ui.util.UIHelper;
import fr.ird.observe.client.ui.tree.navigation.nodes.NavigationTreeNodeSupport;
-import fr.ird.observe.dto.referential.ProgramDto;
-import fr.ird.observe.dto.data.seine.TripSeineDto;
-import java.awt.Color;
-import java.awt.event.ActionEvent;
-import javax.swing.AbstractAction;
-import javax.swing.ActionMap;
-import javax.swing.InputMap;
-import javax.swing.JComponent;
+import fr.ird.observe.client.ui.util.UIHelper;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jdesktop.swingx.decorator.ColorHighlighter;
@@ -41,17 +13,29 @@ import org.jdesktop.swingx.search.Searchable;
import org.jdesktop.swingx.search.TreeSearchable;
import org.nuiton.jaxx.runtime.spi.UIHandler;
+import javax.swing.AbstractAction;
+import javax.swing.ActionMap;
+import javax.swing.InputMap;
+import javax.swing.JComponent;
+import javax.swing.JPopupMenu;
+import javax.swing.SwingUtilities;
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.event.ActionEvent;
+
/**
- * @author Samuel Maisonneuve- maisonneuve(a)codelutin.com
+ * Created by tchemit on 01/04/2018.
+ *
+ * @author Tony Chemit - dev(a)tchemit.fr
*/
-public class NavigationTreeHeaderHandler implements UIHandler<NavigationTreeHeader> {
+public class NavigationUIHandler implements UIHandler<NavigationUI> {
/** Logger */
- private static final Log log = LogFactory.getLog(NavigationTreeHeaderHandler.class);
+ private static final Log log = LogFactory.getLog(NavigationUIHandler.class);
- private NavigationTreeHeader ui;
+ private NavigationUI ui;
- public NavigationTreeHeader getUi() {
+ public NavigationUI getUi() {
return ui;
}
@@ -60,15 +44,15 @@ public class NavigationTreeHeaderHandler implements UIHandler<NavigationTreeHead
}
@Override
- public void beforeInit(NavigationTreeHeader ui) {
+ public void beforeInit(NavigationUI ui) {
this.ui = ui;
}
@Override
- public void afterInit(NavigationTreeHeader ui) {
+ public void afterInit(NavigationUI ui) {
- ui.getShowSeine().setIcon(UIHelper.getUIManagerIcon("navigation.referential.Program-16"));
- ui.getShowLongline().setIcon(UIHelper.getUIManagerIcon("navigation.referential.Program-16"));
+ ui.getShowSeineTrip().setIcon(UIHelper.getUIManagerIcon("navigation.referential.Program-16"));
+ ui.getShowLonglineTrip().setIcon(UIHelper.getUIManagerIcon("navigation.referential.Program-16"));
ui.getShowReferential().setIcon(UIHelper.getUIManagerIcon("navigation.referentiel-16"));
ui.getShowEmptyProgram().setIcon(UIHelper.getUIManagerIcon("navigation.data.seine.TripSeine-16"));
@@ -77,10 +61,16 @@ public class NavigationTreeHeaderHandler implements UIHandler<NavigationTreeHead
tree.setSearchable(searchable);
searchable.setMatchHighlighter(new ColorHighlighter(Color.YELLOW, Color.BLACK));
- ObserveKeyStrokes.addKeyStroke(ui.getShowSeine(), ObserveKeyStrokes.KEY_STROKE_SHOW_SEINE);
- ObserveKeyStrokes.addKeyStroke(ui.getShowLongline(), ObserveKeyStrokes.KEY_STROKE_SHOW_LONGLINE);
+ ObserveKeyStrokes.addKeyStroke(ui.getShowSeineTrip(), ObserveKeyStrokes.KEY_STROKE_SHOW_SEINE);
+ ObserveKeyStrokes.addKeyStroke(ui.getShowLonglineTrip(), ObserveKeyStrokes.KEY_STROKE_SHOW_LONGLINE);
ObserveKeyStrokes.addKeyStroke(ui.getShowReferential(), ObserveKeyStrokes.KEY_STROKE_SHOW_REFERENTIAL);
ObserveKeyStrokes.addKeyStroke(ui.getShowEmptyProgram(), ObserveKeyStrokes.KEY_STROKE_SHOW_EMPTY_PROGRAM);
+ ObserveKeyStrokes.addKeyStroke(ui.getConfigure(), ObserveKeyStrokes.KEY_STROKE_NAVIGATION_CONFIGURE);
+ //FIXME (no text, so no text after...)
+ ui.getConfigure().setText(null);
+ ClientConfig config = ObserveSwingApplicationContext.get().getConfig();
+ NavigationTreeModel treeModel = (NavigationTreeModel) tree.getModel();
+ treeModel.load(config);
InputMap inputMap = ui.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
ActionMap actionMap = ui.getActionMap();
@@ -88,32 +78,66 @@ public class NavigationTreeHeaderHandler implements UIHandler<NavigationTreeHead
actionMap.put("showSeine", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
- ui.getShowSeine().doClick();
+ if (ui.getConfigurePopup().isVisible()) {
+ ui.getShowSeineTrip().doClick();
+ }
+ ui.getConfigurePopup().setVisible(false);
}
});
inputMap.put(ObserveKeyStrokes.KEY_STROKE_SHOW_LONGLINE, "showLongline");
actionMap.put("showLongline", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
- ui.getShowLongline().doClick();
+ if (ui.getConfigurePopup().isVisible()) {
+ ui.getShowLonglineTrip().doClick();
+ }
+ ui.getConfigurePopup().setVisible(false);
}
});
inputMap.put(ObserveKeyStrokes.KEY_STROKE_SHOW_REFERENTIAL, "showReferential");
actionMap.put("showReferential", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
- ui.getShowReferential().doClick();
+ if (ui.getConfigurePopup().isVisible()) {
+ ui.getShowReferential().doClick();
+ }
+ ui.getConfigurePopup().setVisible(false);
}
});
inputMap.put(ObserveKeyStrokes.KEY_STROKE_SHOW_EMPTY_PROGRAM, "showEmptyProgram");
actionMap.put("showEmptyProgram", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
- ui.getShowEmptyProgram().doClick();
+ if (ui.getConfigurePopup().isVisible()) {
+ ui.getShowEmptyProgram().doClick();
+ }
+ ui.getConfigurePopup().setVisible(false);
+ }
+ });
+ inputMap.put(ObserveKeyStrokes.KEY_STROKE_NAVIGATION_CONFIGURE, "configure");
+ actionMap.put("configure", new AbstractAction() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ ui.getConfigure().doClick();
}
});
}
+ void configure() {
+ SwingUtilities.invokeLater(() -> {
+ JComponent c = ui.getConfigure();
+ JPopupMenu p = ui.getConfigurePopup();
+ if (p.isVisible()) {
+ p.setVisible(false);
+ return;
+ }
+ int width = ui.getParent().getWidth() - 5;
+ int height = p.getPreferredSize().height;
+ p.setPreferredSize(new Dimension(width, height));
+ p.show(c, (c.getWidth() == 0 ? 24 : c.getWidth()) - width + 2, c.getHeight());
+ });
+ }
+
public void search(String term) {
Searchable searchable = getTree().getSearchable();
@@ -121,7 +145,7 @@ public class NavigationTreeHeaderHandler implements UIHandler<NavigationTreeHead
}
- public void tryToUpdateNavigationTree() {
+ void tryToUpdateNavigationTree() {
boolean canContinue = ObserveSwingApplicationContext.get().getContentUIManager().closeSelectedContentUI();
@@ -137,23 +161,24 @@ public class NavigationTreeHeaderHandler implements UIHandler<NavigationTreeHead
}
tree.clearSelection();
- boolean showSeine = ui.getShowSeine().isSelected();
- boolean showLongline = ui.getShowLongline().isSelected();
+ boolean showSeine = ui.getShowSeineTrip().isSelected();
+ boolean showLongline = ui.getShowLonglineTrip().isSelected();
boolean showReferential = ui.getShowReferential().isSelected();
boolean showEmptyProgram = ui.getShowEmptyProgram().isSelected();
NavigationTreeModel treeModel = tree.getTreeModel();
- treeModel.setLoadSeine(showSeine);
- treeModel.setLoadLongline(showLongline);
- treeModel.setLoadReferential(showReferential);
- treeModel.setLoadEmptyProgram(showEmptyProgram);
-
+ NavigationTreeConfig navigationTreeConfig = treeModel.getConfig();
+ navigationTreeConfig.setShowSeineTrip(showSeine);
+ navigationTreeConfig.setShowLonglineTrip(showLongline);
+ navigationTreeConfig.setShowReferential(showReferential);
+ navigationTreeConfig.setShowEmptyProgram(showEmptyProgram);
+ treeModel.save(ObserveSwingApplicationContext.get().getConfig());
treeModel.populate();
-
//FIXME repositionner le nœud sélectionné
if (!treeModel.getRoot().isLeaf()) {
tree.setSelectionRow(0);
}
+ ui.getConfigure().setSelected(false);
}
public void collapseAll() {
=====================================
client/src/main/resources/i18n/client_en_GB.properties
=====================================
--- a/client/src/main/resources/i18n/client_en_GB.properties
+++ b/client/src/main/resources/i18n/client_en_GB.properties
@@ -1488,6 +1488,7 @@ observe.title.storage.info=Storage details
observe.title.unique.key=Unique keys used in a referentiel
observe.title.welcome.admin=ObServe
observe.tree.action.collapseAll.tip=Collapse all
+observe.tree.action.configure.tip=Configure
observe.tree.action.expandAll.tip=Expand all
observe.tree.action.selectAll.tip=Select All
observe.tree.action.unselectAll.tip=Unselect All
=====================================
client/src/main/resources/i18n/client_es_ES.properties
=====================================
--- a/client/src/main/resources/i18n/client_es_ES.properties
+++ b/client/src/main/resources/i18n/client_es_ES.properties
@@ -1488,6 +1488,7 @@ observe.title.storage.info=Información sobre la fuente de datos
observe.title.unique.key=Ids de negocio del referencial %1$s
observe.title.welcome.admin=ObServe
observe.tree.action.collapseAll.tip=Cerrar los nudos
+observe.tree.action.configure.tip=Configure \#TODO
observe.tree.action.expandAll.tip=Abrir los nudos
observe.tree.action.selectAll.tip=Seleccionar todo
observe.tree.action.unselectAll.tip=Deseleccionar todo
=====================================
client/src/main/resources/i18n/client_fr_FR.properties
=====================================
--- a/client/src/main/resources/i18n/client_fr_FR.properties
+++ b/client/src/main/resources/i18n/client_fr_FR.properties
@@ -1488,6 +1488,7 @@ observe.title.storage.info=Information sur la source de données
observe.title.unique.key=Clefs métier du référentiel %1$s
observe.title.welcome.admin=ObServe
observe.tree.action.collapseAll.tip=Tout grouper
+observe.tree.action.configure.tip=Configurer
observe.tree.action.expandAll.tip=Tout déplier
observe.tree.action.selectAll.tip=Tout sélectionner
observe.tree.action.unselectAll.tip=Tout désélectionner
=====================================
pom.xml
=====================================
--- a/pom.xml
+++ b/pom.xml
@@ -35,7 +35,7 @@
<packaging>pom</packaging>
<name>ObServe :: Pom</name>
- <description>Projet ObServe</description>
+ <description>Project ObServe</description>
<url>https://ultreiaio.gitlab.io/ird-observe</url>
<inceptionYear>2008</inceptionYear>
<organization>
@@ -142,10 +142,10 @@
<projectId>ird-observe</projectId>
<stageId>frirdobserve</stageId>
- <!-- dev version (for develop purpose -->
+ <!-- dev version -->
<devMode>true</devMode>
- <!--Modèle version-->
+ <!--persistence model version-->
<observe.model.version>7.0</observe.model.version>
<!-- build timestamp configuration -->
@@ -157,7 +157,7 @@
<!--<eugenePluginVersion>3.0-alpha-13</eugenePluginVersion>-->
<!--<processorPluginVersion>1.3</processorPluginVersion>-->
- <lib.version.java4all.jaxx>3.0-alpha-12</lib.version.java4all.jaxx>
+ <lib.version.java4all.jaxx>3.0-alpha-26</lib.version.java4all.jaxx>
<lib.version.nuiton.topia>3.3</lib.version.nuiton.topia>
<lib.version.nuiton.validation>3.1</lib.version.nuiton.validation>
<xworkVersion>2.3.34</xworkVersion>
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/cdbaa4e78c89734f40c43e7cc03…
---
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/cdbaa4e78c89734f40c43e7cc03…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][develop] Amélioration de l'arbre de navigation
by Tony CHEMIT 01 Apr '18
by Tony CHEMIT 01 Apr '18
01 Apr '18
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
2e66cbe9 by Tony CHEMIT at 2018-04-01T13:34:33Z
Amélioration de l'arbre de navigation
- - - - -
27 changed files:
- client-configuration/pom.xml
- client-configuration/src/main/config/Client.ini
- client-configuration/src/main/java/fr/ird/observe/client/configuration/ClientConfig.java
- + client-configuration/src/main/java/fr/ird/observe/client/configuration/NavigationTreeConfig.java
- + client-configuration/src/main/java/fr/ird/observe/client/configuration/NavigationTreeConfigBean.java
- client-configuration/src/main/resources/i18n/client-configuration_en_GB.properties
- client-configuration/src/main/resources/i18n/client-configuration_es_ES.properties
- client-configuration/src/main/resources/i18n/client-configuration_fr_FR.properties
- client/pom.xml
- client/src/main/java/fr/ird/observe/client/ui/ObserveKeyStrokes.java
- client/src/main/java/fr/ird/observe/client/ui/ObserveMainUI.jaxx
- client/src/main/java/fr/ird/observe/client/ui/ObserveMainUIInitializer.java
- client/src/main/java/fr/ird/observe/client/ui/admin/synchronize/data/DataSynchroModel.java
- client/src/main/java/fr/ird/observe/client/ui/admin/synchronize/referential/ng/ReferentialSynchroConfigUI.jaxx
- client/src/main/java/fr/ird/observe/client/ui/admin/synchronize/referential/ng/ReferentialSynchroConfigUI.jcss
- client/src/main/java/fr/ird/observe/client/ui/content/ContentUIInitializer.java
- client/src/main/java/fr/ird/observe/client/ui/storage/tabs/RolesUI.jaxx
- client/src/main/java/fr/ird/observe/client/ui/storage/tabs/RolesUI.jcss
- − client/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationTreeHeader.jaxx
- client/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationTreeModel.java
- + client/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationUI.jaxx
- client/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationTreeHeader.jcss → client/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationUI.jcss
- client/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationTreeHeaderHandler.java → client/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationUIHandler.java
- client/src/main/resources/i18n/client_en_GB.properties
- client/src/main/resources/i18n/client_es_ES.properties
- client/src/main/resources/i18n/client_fr_FR.properties
- pom.xml
Changes:
=====================================
client-configuration/pom.xml
=====================================
--- a/client-configuration/pom.xml
+++ b/client-configuration/pom.xml
@@ -104,6 +104,14 @@
<groupId>io.ultreia.java4all.jaxx</groupId>
<artifactId>jaxx-widgets-gis</artifactId>
</dependency>
+ <dependency>
+ <groupId>io.ultreia.java4all.jaxx</groupId>
+ <artifactId>jaxx-widgets-temperature</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>io.ultreia.java4all</groupId>
+ <artifactId>java-bean</artifactId>
+ </dependency>
</dependencies>
=====================================
client-configuration/src/main/config/Client.ini
=====================================
--- a/client-configuration/src/main/config/Client.ini
+++ b/client-configuration/src/main/config/Client.ini
@@ -174,6 +174,11 @@ description = observe.config.h2.can.migrate.description
key = h2.canMigrate
type = Boolean
defaultValue = true
+[option h2CanEditReferential]
+description = observe.config.h2.can.editReferential.description
+key = h2.canEditReferential
+type = boolean
+defaultValue = false
[option h2ServerPort]
description = observe.config.h2.serverPort.description
@@ -501,6 +506,12 @@ key = ui.coordinate.format
type = org.nuiton.jaxx.widgets.gis.CoordinateFormat
defaultValue = "dmd"
+[option temperatureFormat]
+description = observe.config.temperature.format
+key = ui.temperature.format
+type = org.nuiton.jaxx.widgets.temperature.TemperatureFormat
+defaultValue = "C"
+
[option focusBorderColor]
description = observe.config.ui.focusBorderColor
key = ui.focusBorder.color
@@ -531,6 +542,30 @@ key = server.checkServerVersion
type = Boolean
defaultValue = true
+[option showSeineTrip]
+description = observe.config.ui.tree.showSeineTrip.description
+key = ui.tree.showSeineTrip
+type = Boolean
+defaultValue = true
+
+[option showLonglineTrip]
+description = observe.config.ui.tree.showLonglineTrip.description
+key = ui.tree.showLonglineTrip
+type = Boolean
+defaultValue = true
+
+[option showReferential]
+description = observe.config.ui.tree.showReferential.description
+key = ui.tree.showReferential
+type = Boolean
+defaultValue = true
+
+[option showEmptyProgram]
+description = observe.config.ui.tree.showEmptyProgram.description
+key = ui.tree.showEmptyProgram
+type = Boolean
+defaultValue = true
+
[action help]
description = observe.action.commandline.help
action = "fr.ird.observe.client.ObserveCLAction#help"
=====================================
client-configuration/src/main/java/fr/ird/observe/client/configuration/ClientConfig.java
=====================================
--- a/client-configuration/src/main/java/fr/ird/observe/client/configuration/ClientConfig.java
+++ b/client-configuration/src/main/java/fr/ird/observe/client/configuration/ClientConfig.java
@@ -8,12 +8,12 @@
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
@@ -30,6 +30,16 @@ import fr.ird.observe.client.constants.DbMode;
import fr.ird.observe.dto.FloatingObjectPreset;
import fr.ird.observe.dto.presets.RemoteDataSourceConfiguration;
import fr.ird.observe.dto.presets.ServerDataSourceConfiguration;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.config.ApplicationConfig;
+import org.nuiton.config.ArgumentsParserException;
+import org.nuiton.jaxx.widgets.gis.CoordinateFormat;
+import org.nuiton.jaxx.widgets.temperature.TemperatureFormat;
+import org.nuiton.version.Version;
+import org.nuiton.version.Versions;
+
import java.beans.PropertyChangeListener;
import java.io.File;
import java.nio.charset.StandardCharsets;
@@ -44,15 +54,6 @@ import java.util.LinkedList;
import java.util.List;
import java.util.Properties;
import java.util.Set;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.nuiton.config.ApplicationConfig;
-import org.nuiton.config.ArgumentsParserException;
-import org.nuiton.jaxx.widgets.gis.CoordinateFormat;
-import org.nuiton.version.Version;
-import org.nuiton.version.Versions;
-
import static org.nuiton.i18n.I18n.t;
@@ -62,52 +63,72 @@ import static org.nuiton.i18n.I18n.t;
* @author Tony Chemit - dev(a)tchemit.fr
* @since 1.0
*/
-public class ClientConfig extends GeneratedClientConfig {
+public class ClientConfig extends GeneratedClientConfig implements NavigationTreeConfig {
+ public static final String DB_NAME = "obstuna";
+ public static final List<ClientConfigOption> MAP_LAYERS = ImmutableList.of(
+ ClientConfigOption.MAP_LAYER1,
+ ClientConfigOption.MAP_LAYER2,
+ ClientConfigOption.MAP_LAYER3,
+ ClientConfigOption.MAP_LAYER4,
+ ClientConfigOption.MAP_LAYER5,
+ ClientConfigOption.MAP_LAYER6,
+ ClientConfigOption.MAP_LAYER7,
+ ClientConfigOption.MAP_LAYER8,
+ ClientConfigOption.MAP_LAYER9,
+ ClientConfigOption.MAP_LAYER10);
/** le pattern du fichier de sauvegarde d'une base locale */
private static final String BACKUP_DB_PATTERN = "obstuna-local-%1$tF--%1$tk-%1$tM-%1$tS.sql.gz";
-
- public static final String DB_NAME = "obstuna";
-
private static final String APPLICATION_VERSION = "application.version";
-
private static final String VERSION = "version";
-
private static final String PROPERTY_LOCAL_STORAGE_EXIST = "localStorageExist";
-
private static final String PROPERTY_INITIAL_DUMP_EXIST = "initialDumpExist";
-
private static final String PROPERTY_MAIN_STORAGE_OPENED = "mainStorageOpened";
-
/** Logger */
private static final Log log = LogFactory.getLog(ClientConfig.class);
-
private static final String DEFAULT_OBSERVE_SWING_CONFIGURATION_FILENAME = "observe-client.conf";
-
+ /**
+ * Liste des options qu'on ne peut pas sauvegarder (les mots de passes,
+ * les options d'admin pour les simples utilisateurs,...).
+ *
+ * @since 1.5
+ */
+ private final String[] unsavables = new String[]{
+// ClientConfigOption.OBSTUNA_PASSWORD.getKey(),
+ ClientConfigOption.H2_PASSWORD.getKey(),
+ ClientConfigOption.OBSTUNA_CAN_MIGRATE.getKey(),
+ };
+ //FIXME
+ private final ImmutableSet<String> longlinVesselTypeIds = ImmutableSet.copyOf(
+ Sets.newHashSet("fr.ird.observe.entities.referentiel.VesselType#1239832675735#0.044156847891821505",
+ "fr.ird.observe.entities.referentiel.VesselType#1239832675736#0.8708229847859869",
+ "fr.ird.observe.entities.referentiel.VesselType#1239832686137#0.1"));
+ private final ImmutableSet<String> seineVesselTypeIds = ImmutableSet.copyOf(
+ Sets.newHashSet("fr.ird.observe.entities.referentiel.VesselType#1239832675735#0.044156847891821505",
+ "fr.ird.observe.entities.referentiel.VesselType#1239832675735#0.307197212385357",
+ "fr.ird.observe.entities.referentiel.VesselType#1239832675735#0.7380146830307519",
+ "fr.ird.observe.entities.referentiel.VesselType#1239832675735#0.9086075071905084",
+ "fr.ird.observe.entities.referentiel.VesselType#1239832675737#0.43324169605639407"));
+ private final SimpleDateFormat dateFormat = new SimpleDateFormat();
/**
* un drapeau pour savoir s'il faut lancer l'interface graphique. Cette
* valeur peut être programmées lors des actions.
*/
private boolean displayMainUI = true;
-
/** drapeau pour savoir si une base locale existe */
private boolean localStorageExist;
-
/**
* drapeau pour savoir si le dump initial a ete chargée depuis la base
* centrale
*/
private boolean initialDumpExist;
-
/** drapeau pour savoir si une source de données est ouverte */
private boolean mainStorageOpened;
-
/**
* drapeau pour savoir si la source ouverte est locale (attention, lorsqu'il
* n'y a pas de storage d'ouvert, la valeur est null).
*/
private Boolean mainStorageOpenedLocal;
-
/**
* drapeau pour savoir si on peut utiliser des ui dans l'environnement.
* <p>
@@ -116,37 +137,12 @@ public class ClientConfig extends GeneratedClientConfig {
* trouvé.
*/
private boolean canUseUI = true;
-
/** La version de l'application */
private Version version;
-
/** Texte du copyright (calculé dynamiquement). */
private String copyrightText;
-
- /**
- * Liste des options qu'on ne peut pas sauvegarder (les mots de passes,
- * les options d'admin pour les simples utilisateurs,...).
- *
- * @since 1.5
- */
- private final String[] unsavables = new String[]{
-// ClientConfigOption.OBSTUNA_PASSWORD.getKey(),
- ClientConfigOption.H2_PASSWORD.getKey(),
- ClientConfigOption.OBSTUNA_CAN_MIGRATE.getKey(),
- };
-
- //FIXME
- private final ImmutableSet<String> longlinVesselTypeIds = ImmutableSet.copyOf(
- Sets.newHashSet("fr.ird.observe.entities.referentiel.VesselType#1239832675735#0.044156847891821505",
- "fr.ird.observe.entities.referentiel.VesselType#1239832675736#0.8708229847859869",
- "fr.ird.observe.entities.referentiel.VesselType#1239832686137#0.1"));
-
- private final ImmutableSet<String> seineVesselTypeIds = ImmutableSet.copyOf(
- Sets.newHashSet("fr.ird.observe.entities.referentiel.VesselType#1239832675735#0.044156847891821505",
- "fr.ird.observe.entities.referentiel.VesselType#1239832675735#0.307197212385357",
- "fr.ird.observe.entities.referentiel.VesselType#1239832675735#0.7380146830307519",
- "fr.ird.observe.entities.referentiel.VesselType#1239832675735#0.9086075071905084",
- "fr.ird.observe.entities.referentiel.VesselType#1239832675737#0.43324169605639407"));
+ private ImmutableList<ServerDataSourceConfiguration> serverDataSourceConfigurationList;
+ private ImmutableList<RemoteDataSourceConfiguration> remoteDataSourceConfigurationList;
public ClientConfig() {
this(DEFAULT_OBSERVE_SWING_CONFIGURATION_FILENAME);
@@ -217,6 +213,11 @@ public class ClientConfig extends GeneratedClientConfig {
return CoordinateFormat.valueOf(get().getOption(ClientConfigOption.COORDINATE_FORMAT.getKey()));
}
+ @Override
+ public TemperatureFormat getTemperatureFormat() {
+ return get().getOption(TemperatureFormat.class, ClientConfigOption.TEMPERATURE_FORMAT.getKey());
+ }
+
public String getCopyrightText() {
if (copyrightText == null) {
Date date = new Date();
@@ -232,6 +233,10 @@ public class ClientConfig extends GeneratedClientConfig {
return version;
}
+ private void setVersion(Version version) {
+ this.version = version;
+ }
+
public boolean isShowTimeEditorSlider() {
return isShowDateTimeEditorSlider();
}
@@ -244,24 +249,24 @@ public class ClientConfig extends GeneratedClientConfig {
return displayMainUI;
}
- public boolean isCanUseUI() {
- return canUseUI;
- }
-
- public boolean isLocalStorageExist() {
- return localStorageExist;
+ public void setDisplayMainUI(boolean b) {
+ displayMainUI = b;
}
- public boolean isInitialDumpExist() {
- return initialDumpExist;
+ public boolean isCanUseUI() {
+ return canUseUI;
}
- public boolean isMainStorageOpened() {
- return mainStorageOpened;
+ public void setCanUseUI(boolean canUseUI) {
+ this.canUseUI = canUseUI;
+ if (!canUseUI) {
+ // on ne pourra pas lancer l'ui principale
+ setDisplayMainUI(false);
+ }
}
- public Boolean getMainStorageOpenedLocal() {
- return mainStorageOpenedLocal;
+ public boolean isLocalStorageExist() {
+ return localStorageExist;
}
public void setLocalStorageExist(boolean newValue) {
@@ -270,12 +275,20 @@ public class ClientConfig extends GeneratedClientConfig {
firePropertyChange(PROPERTY_LOCAL_STORAGE_EXIST, newValue);
}
+ public boolean isInitialDumpExist() {
+ return initialDumpExist;
+ }
+
public void setInitialDumpExist(boolean newValue) {
initialDumpExist = newValue;
// always force propagation
firePropertyChange(PROPERTY_INITIAL_DUMP_EXIST, newValue);
}
+ public boolean isMainStorageOpened() {
+ return mainStorageOpened;
+ }
+
public void setMainStorageOpened(boolean newValue) {
mainStorageOpened = newValue;
if (!newValue) {
@@ -286,36 +299,16 @@ public class ClientConfig extends GeneratedClientConfig {
firePropertyChange(PROPERTY_MAIN_STORAGE_OPENED, newValue);
}
+ public Boolean getMainStorageOpenedLocal() {
+ return mainStorageOpenedLocal;
+ }
+
public void setMainStorageOpenedLocal(Boolean newValue) {
mainStorageOpenedLocal = newValue;
// always force propagation
firePropertyChange(PROPERTY_MAIN_STORAGE_OPENED + "Local", newValue);
}
- public void setDisplayMainUI(boolean b) {
- displayMainUI = b;
- }
-
- public void setCanUseUI(boolean canUseUI) {
- this.canUseUI = canUseUI;
- if (!canUseUI) {
- // on ne pourra pas lancer l'ui principale
- setDisplayMainUI(false);
- }
- }
-
- public static final List<ClientConfigOption> MAP_LAYERS = ImmutableList.of(
- ClientConfigOption.MAP_LAYER1,
- ClientConfigOption.MAP_LAYER2,
- ClientConfigOption.MAP_LAYER3,
- ClientConfigOption.MAP_LAYER4,
- ClientConfigOption.MAP_LAYER5,
- ClientConfigOption.MAP_LAYER6,
- ClientConfigOption.MAP_LAYER7,
- ClientConfigOption.MAP_LAYER8,
- ClientConfigOption.MAP_LAYER9,
- ClientConfigOption.MAP_LAYER10);
-
public List<File> getMapLayerFiles() {
List<File> layers = new LinkedList<>();
@@ -399,10 +392,6 @@ public class ClientConfig extends GeneratedClientConfig {
}
}
- private void setVersion(Version version) {
- this.version = version;
- }
-
public Set<String> getSeineVesselTypeIds() {
return seineVesselTypeIds;
}
@@ -429,10 +418,17 @@ public class ClientConfig extends GeneratedClientConfig {
return option == null ? new RemoteDataSourceConfiguration[0] : new Gson().fromJson(option, RemoteDataSourceConfiguration[].class);
}
+ @Override
+ public void setRemoteDataSourceConfigurations(RemoteDataSourceConfiguration[] configurations) {
+ String option = new Gson().toJson(configurations);
+ get().setOption(ClientConfigOption.REMOTE_DATA_SOURCE_CONFIGURATIONS.getKey(), option);
+ remoteDataSourceConfigurationList = null;
+ }
+
public void addRemoteDataSourceConfiguration(RemoteDataSourceConfiguration configuration) {
List<RemoteDataSourceConfiguration> remoteDataSourceConfigurations = new ArrayList<>(Arrays.asList(getRemoteDataSourceConfigurations()));
remoteDataSourceConfigurations.add(configuration);
- setRemoteDataSourceConfigurations(remoteDataSourceConfigurations.toArray(new RemoteDataSourceConfiguration[remoteDataSourceConfigurations.size()]));
+ setRemoteDataSourceConfigurations(remoteDataSourceConfigurations.toArray(new RemoteDataSourceConfiguration[0]));
saveForUser();
}
@@ -440,27 +436,17 @@ public class ClientConfig extends GeneratedClientConfig {
List<RemoteDataSourceConfiguration> remoteDataSourceConfigurations = new ArrayList<>(Arrays.asList(getRemoteDataSourceConfigurations()));
remoteDataSourceConfigurations.remove(configuration);
remoteDataSourceConfigurations.add(configuration);
- setRemoteDataSourceConfigurations(remoteDataSourceConfigurations.toArray(new RemoteDataSourceConfiguration[remoteDataSourceConfigurations.size()]));
+ setRemoteDataSourceConfigurations(remoteDataSourceConfigurations.toArray(new RemoteDataSourceConfiguration[0]));
saveForUser();
}
public void removeRemoteDataSourceConfiguration(RemoteDataSourceConfiguration configuration) {
List<RemoteDataSourceConfiguration> remoteDataSourceConfigurations = new ArrayList<>(Arrays.asList(getRemoteDataSourceConfigurations()));
remoteDataSourceConfigurations.remove(configuration);
- setRemoteDataSourceConfigurations(remoteDataSourceConfigurations.toArray(new RemoteDataSourceConfiguration[remoteDataSourceConfigurations.size()]));
+ setRemoteDataSourceConfigurations(remoteDataSourceConfigurations.toArray(new RemoteDataSourceConfiguration[0]));
saveForUser();
}
- @Override
- public void setRemoteDataSourceConfigurations(RemoteDataSourceConfiguration[] configurations) {
- String option = new Gson().toJson(configurations);
- get().setOption(ClientConfigOption.REMOTE_DATA_SOURCE_CONFIGURATIONS.getKey(), option);
- remoteDataSourceConfigurationList=null;
- }
-
- ImmutableList<ServerDataSourceConfiguration> serverDataSourceConfigurationList;
- ImmutableList<RemoteDataSourceConfiguration> remoteDataSourceConfigurationList;
-
public ImmutableList<RemoteDataSourceConfiguration> getRemoteDataSourceConfigurationList() {
if (remoteDataSourceConfigurationList == null) {
List<RemoteDataSourceConfiguration> configurations = new ArrayList<>(Arrays.asList(getRemoteDataSourceConfigurations()));
@@ -485,10 +471,17 @@ public class ClientConfig extends GeneratedClientConfig {
return option == null ? new ServerDataSourceConfiguration[0] : new Gson().fromJson(option, ServerDataSourceConfiguration[].class);
}
+ @Override
+ public void setServerDataSourceConfigurations(ServerDataSourceConfiguration[] configurations) {
+ String option = new Gson().toJson(configurations);
+ get().setOption(ClientConfigOption.SERVER_DATA_SOURCE_CONFIGURATIONS.getKey(), option);
+ serverDataSourceConfigurationList = null;
+ }
+
public void addServerDataSourceConfiguration(ServerDataSourceConfiguration configuration) {
List<ServerDataSourceConfiguration> remoteDataSourceConfigurations = new ArrayList<>(Arrays.asList(getServerDataSourceConfigurations()));
remoteDataSourceConfigurations.add(configuration);
- setServerDataSourceConfigurations(remoteDataSourceConfigurations.toArray(new ServerDataSourceConfiguration[remoteDataSourceConfigurations.size()]));
+ setServerDataSourceConfigurations(remoteDataSourceConfigurations.toArray(new ServerDataSourceConfiguration[0]));
saveForUser();
}
@@ -496,27 +489,18 @@ public class ClientConfig extends GeneratedClientConfig {
List<ServerDataSourceConfiguration> remoteDataSourceConfigurations = new ArrayList<>(Arrays.asList(getServerDataSourceConfigurations()));
remoteDataSourceConfigurations.remove(configuration);
remoteDataSourceConfigurations.add(configuration);
- setServerDataSourceConfigurations(remoteDataSourceConfigurations.toArray(new ServerDataSourceConfiguration[remoteDataSourceConfigurations.size()]));
+ setServerDataSourceConfigurations(remoteDataSourceConfigurations.toArray(new ServerDataSourceConfiguration[0]));
saveForUser();
}
public void removeServerDataSourceConfiguration(ServerDataSourceConfiguration configuration) {
List<ServerDataSourceConfiguration> serverDataSourceConfigurations = new ArrayList<>(Arrays.asList(getServerDataSourceConfigurations()));
serverDataSourceConfigurations.remove(configuration);
- setServerDataSourceConfigurations(serverDataSourceConfigurations.toArray(new ServerDataSourceConfiguration[serverDataSourceConfigurations.size()]));
+ setServerDataSourceConfigurations(serverDataSourceConfigurations.toArray(new ServerDataSourceConfiguration[0]));
saveForUser();
}
@Override
- public void setServerDataSourceConfigurations(ServerDataSourceConfiguration[] configurations) {
- String option = new Gson().toJson(configurations);
- get().setOption(ClientConfigOption.SERVER_DATA_SOURCE_CONFIGURATIONS.getKey(), option);
- serverDataSourceConfigurationList=null;
- }
-
- private final SimpleDateFormat dateFormat = new SimpleDateFormat();
-
- @Override
public Date getBuildDate() {
String dateStr = get().getOption(ClientConfigOption.BUILD_DATE.getKey());
try {
=====================================
client-configuration/src/main/java/fr/ird/observe/client/configuration/NavigationTreeConfig.java
=====================================
--- /dev/null
+++ b/client-configuration/src/main/java/fr/ird/observe/client/configuration/NavigationTreeConfig.java
@@ -0,0 +1,64 @@
+package fr.ird.observe.client.configuration;
+
+/*-
+ * #%L
+ * ObServe :: Client Configuration
+ * %%
+ * Copyright (C) 2008 - 2018 IRD, Code Lutin, Ultreia.io
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ird.observe.services.service.data.NavigationRequest;
+
+/**
+ * Created by tchemit on 01/04/2018.
+ *
+ * @author Tony Chemit - dev(a)tchemit.fr
+ */
+public interface NavigationTreeConfig {
+
+ boolean isShowSeineTrip();
+
+ void setShowSeineTrip(boolean showSeineTrip);
+
+ boolean isShowLonglineTrip();
+
+ void setShowLonglineTrip(boolean showLonglineTrip);
+
+ boolean isShowReferential();
+
+ void setShowReferential(boolean showReferential);
+
+ boolean isShowEmptyProgram();
+
+ void setShowEmptyProgram(boolean showEmptyProgram);
+
+ default NavigationRequest toRequest() {
+ NavigationRequest navigationRequest = new NavigationRequest();
+ navigationRequest.setLoadLongline(isShowLonglineTrip());
+ navigationRequest.setLoadSeine(isShowSeineTrip());
+ navigationRequest.setLoadEmptyProgram(isShowEmptyProgram());
+ return navigationRequest;
+ }
+
+ default void load(NavigationTreeConfig config) {
+ setShowEmptyProgram(config.isShowEmptyProgram());
+ setShowReferential(config.isShowReferential());
+ setShowLonglineTrip(config.isShowLonglineTrip());
+ setShowSeineTrip(config.isShowSeineTrip());
+ }
+}
=====================================
client-configuration/src/main/java/fr/ird/observe/client/configuration/NavigationTreeConfigBean.java
=====================================
--- /dev/null
+++ b/client-configuration/src/main/java/fr/ird/observe/client/configuration/NavigationTreeConfigBean.java
@@ -0,0 +1,87 @@
+package fr.ird.observe.client.configuration;
+
+/*-
+ * #%L
+ * ObServe :: Client Configuration
+ * %%
+ * Copyright (C) 2008 - 2018 IRD, Code Lutin, Ultreia.io
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import io.ultreia.java4all.bean.AbstractJavaBean;
+
+/**
+ * Created by tchemit on 01/04/2018.
+ *
+ * @author Tony Chemit - dev(a)tchemit.fr
+ */
+public class NavigationTreeConfigBean extends AbstractJavaBean implements NavigationTreeConfig {
+
+
+ private boolean showSeineTrip = true;
+ private boolean showLonglineTrip = true;
+ private boolean showReferential = true;
+ private boolean showEmptyProgram = true;
+
+ @Override
+ public boolean isShowSeineTrip() {
+ return showSeineTrip;
+ }
+
+ @Override
+ public void setShowSeineTrip(boolean showSeineTrip) {
+ boolean oldValue = isShowSeineTrip();
+ this.showSeineTrip = showSeineTrip;
+ firePropertyChange("showSeineTrip", oldValue, showSeineTrip);
+ }
+
+ @Override
+ public boolean isShowLonglineTrip() {
+ return showLonglineTrip;
+ }
+
+ @Override
+ public void setShowLonglineTrip(boolean showLonglineTrip) {
+ boolean oldValue = isShowLonglineTrip();
+ this.showLonglineTrip = showLonglineTrip;
+ firePropertyChange("showLonglineTrip", oldValue, showLonglineTrip);
+ }
+
+ @Override
+ public boolean isShowReferential() {
+ return showReferential;
+ }
+
+ @Override
+ public void setShowReferential(boolean showReferential) {
+ boolean oldValue = isShowReferential();
+ this.showReferential = showReferential;
+ firePropertyChange("showReferential", oldValue, showReferential);
+ }
+
+ @Override
+ public boolean isShowEmptyProgram() {
+ return showEmptyProgram;
+ }
+
+ @Override
+ public void setShowEmptyProgram(boolean showEmptyProgram) {
+ boolean oldValue = isShowEmptyProgram();
+ this.showEmptyProgram = showEmptyProgram;
+ firePropertyChange("showEmptyProgram", oldValue, showEmptyProgram);
+ }
+}
=====================================
client-configuration/src/main/resources/i18n/client-configuration_en_GB.properties
=====================================
--- a/client-configuration/src/main/resources/i18n/client-configuration_en_GB.properties
+++ b/client-configuration/src/main/resources/i18n/client-configuration_en_GB.properties
@@ -33,6 +33,7 @@ observe.config.defaultTmpDirectory.description=Default temporary directory used
observe.config.defaultValidationReportDirectory.description=Default validation report directory
observe.config.devMode=Dev mode
observe.config.floatingObjectPresets.description=Floating Objects references
+observe.config.h2.can.editReferential.description=Local database can edit referential
observe.config.h2.can.migrate.description=Flag to know if you can migrate h2 data sources
observe.config.h2.login.description=H2 Login
observe.config.h2.password.description=H2 Password
@@ -74,6 +75,7 @@ observe.config.speciesList.seine.objectSchoolEstimate=Species for object school
observe.config.speciesList.seine.schoolEstimate=Species for school esitmates
observe.config.speciesList.seine.targetCatch=Species for target catches
observe.config.swingSessionFile.description=Swing session file.
+observe.config.temperature.format=Default temperature format
observe.config.ui.autoPopupNumberEditor=Flag sets to true when number editor show automaticly popup
observe.config.ui.changeSynchroSrc=Flag sets to true if you can change local source in admin tasks
observe.config.ui.focusBorderColor=Color of the focus container border
@@ -85,6 +87,10 @@ observe.config.ui.showMnemonic=Show mnemonic on actions
observe.config.ui.showNumberEditorButton=Flag sets to true to show button to invoke popup on number's editors
observe.config.ui.showTimeEditorSlider=Show timer slider
observe.config.ui.storeRemoteStorage=Flag sets to true to store in config a remote connexion (except passwords)
+observe.config.ui.tree.showEmptyProgram.description=Show programs with no trip inside
+observe.config.ui.tree.showLonglineTrip.description=Show Longline trips
+observe.config.ui.tree.showReferential.description=Show Referential
+observe.config.ui.tree.showSeineTrip.description=Show Seine Trips
observe.config.ui.treeOpenNodes=Opened data from last session
observe.config.ui.treeSelectedNodes.description=Selected nodes on last data source
observe.config.validation.lengthWeightEnable=Force validation of species length max
=====================================
client-configuration/src/main/resources/i18n/client-configuration_es_ES.properties
=====================================
--- a/client-configuration/src/main/resources/i18n/client-configuration_es_ES.properties
+++ b/client-configuration/src/main/resources/i18n/client-configuration_es_ES.properties
@@ -33,6 +33,7 @@ observe.config.defaultTmpDirectory.description=Directorio temporal por defecto
observe.config.defaultValidationReportDirectory.description=Directorio por defecto de almacenamiento de los informes de validación
observe.config.devMode=Modo desarrollador
observe.config.floatingObjectPresets.description=Objets flottants de référence \#TODO
+observe.config.h2.can.editReferential.description=Local database can edit referential \#TODO
observe.config.h2.can.migrate.description=Autorizar la actualización de las bases locales (h2)
observe.config.h2.login.description=Login h2
observe.config.h2.password.description=Contraseña h2
@@ -74,6 +75,7 @@ observe.config.speciesList.seine.objectSchoolEstimate=Especies para las estimaci
observe.config.speciesList.seine.schoolEstimate=Especies para las estimaciones
observe.config.speciesList.seine.targetCatch=Especies par las capturas objetivo
observe.config.swingSessionFile.description=Fichier de sauvegarde des états des UI. \#TODO
+observe.config.temperature.format=Default temperature format \#TODO
observe.config.ui.autoPopupNumberEditor=Para mostrar automáticamente el editor numérico durante la edición de un número
observe.config.ui.changeSynchroSrc=Pour autoriser la sélection de la base source dans les opérations sur base
observe.config.ui.focusBorderColor=Couleur de la bordure de la zone qui a le focus \#TODO
@@ -85,6 +87,10 @@ observe.config.ui.showMnemonic=Afficher les racourcis clavier \#TODO
observe.config.ui.showNumberEditorButton=Para mostrar el botón que permite usar el editor numérico a la izquierda de cada campo numérico
observe.config.ui.showTimeEditorSlider=Para mostrar la regla de edición de las horas
observe.config.ui.storeRemoteStorage=Para activar la copia de seguridad de la configuración de la fuente de datos remota
+observe.config.ui.tree.showEmptyProgram.description=Show programs with no trip inside \#TODO
+observe.config.ui.tree.showLonglineTrip.description=Show Longline trips \#TODO
+observe.config.ui.tree.showReferential.description=Show Referential \#TODO
+observe.config.ui.tree.showSeineTrip.description=Show Seine Trips \#TODO
observe.config.ui.treeOpenNodes=Nudos abiertos del arbol abiertos cuando se cerró la base por última vez
observe.config.ui.treeSelectedNodes.description=Selected nodes on last data source \#TODO
observe.config.validation.lengthWeightEnable=Forcer la validation des bormes min/max de taille d'espèce \#TODO
=====================================
client-configuration/src/main/resources/i18n/client-configuration_fr_FR.properties
=====================================
--- a/client-configuration/src/main/resources/i18n/client-configuration_fr_FR.properties
+++ b/client-configuration/src/main/resources/i18n/client-configuration_fr_FR.properties
@@ -33,6 +33,7 @@ observe.config.defaultTmpDirectory.description=Le répertoire temporaire par dé
observe.config.defaultValidationReportDirectory.description=Le répertoire par défaut où sont stockés les rapports de validation
observe.config.devMode=Mode développeur
observe.config.floatingObjectPresets.description=Objets flottants de référence
+observe.config.h2.can.editReferential.description=Pour pouvoir éditer le référentiel d'une base locale
observe.config.h2.can.migrate.description=Autoriser la mise à jour des bases locales (H2)
observe.config.h2.login.description=L'identifiant H2
observe.config.h2.password.description=Le mot de passe H2
@@ -74,6 +75,7 @@ observe.config.speciesList.seine.objectSchoolEstimate=Espèces pour les estimati
observe.config.speciesList.seine.schoolEstimate=Espèces pour les estimations
observe.config.speciesList.seine.targetCatch=Espèces pour les captures cible
observe.config.swingSessionFile.description=Fichier de sauvegarde des états des UI.
+observe.config.temperature.format=Unité de température
observe.config.ui.autoPopupNumberEditor=Pour afficher automatiquement l'éditeur numérique lors de l'édition d'un nombre
observe.config.ui.changeSynchroSrc=Pour autoriser la sélection de la base source dans les opérations sur base
observe.config.ui.focusBorderColor=Couleur de la bordure de la zone qui a le focus
@@ -85,6 +87,10 @@ observe.config.ui.showMnemonic=Afficher les racourcis clavier
observe.config.ui.showNumberEditorButton=Pour afficher le bouton qui permet d'utiliser l'éditeur numérique à gauche de chaque champs numérique
observe.config.ui.showTimeEditorSlider=Pour afficher la réglette d'édition des heures
observe.config.ui.storeRemoteStorage=Pour activer la sauvegarde de la configuration de la source distante
+observe.config.ui.tree.showEmptyProgram.description=Voir les programmes sans marée
+observe.config.ui.tree.showLonglineTrip.description=Voir les marées Palangre
+observe.config.ui.tree.showReferential.description=Voir le référentiel
+observe.config.ui.tree.showSeineTrip.description=Voir les marées Senne
observe.config.ui.treeOpenNodes=Nœuds de l'arbre ouverts lors de la dernière fermeture de la base
observe.config.ui.treeSelectedNodes.description=Nœuds sélectionnés sur la dernière base ouverte
observe.config.validation.lengthWeightEnable=Forcer la validation des bormes min/max de taille d'espèce
=====================================
client/pom.xml
=====================================
--- a/client/pom.xml
+++ b/client/pom.xml
@@ -382,10 +382,20 @@
<artifactId>class-mapping</artifactId>
</dependency>
+ <dependency>
+ <groupId>io.ultreia.java4all</groupId>
+ <artifactId>java-lang</artifactId>
+ <scope>runtime</scope>
+ </dependency>
+
<!-- jaxx dependencies -->
<dependency>
<groupId>io.ultreia.java4all.jaxx</groupId>
+ <artifactId>jaxx-runtime-spi</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>io.ultreia.java4all.jaxx</groupId>
<artifactId>jaxx-runtime</artifactId>
</dependency>
<dependency>
=====================================
client/src/main/java/fr/ird/observe/client/ui/ObserveKeyStrokes.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/ObserveKeyStrokes.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/ObserveKeyStrokes.java
@@ -61,10 +61,11 @@ public abstract class ObserveKeyStrokes {
public static final KeyStroke KEY_STROKE_RELOAD_DEFAULT_CONFIGURATION = KeyStroke.getKeyStroke(KeyEvent.VK_R, InputEvent.ALT_MASK | InputEvent.SHIFT_MASK);
public static final KeyStroke KEY_STROKE_ESCAPE = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0);
public static final KeyStroke KEY_STROKE_ENTER = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0);
- public static final KeyStroke KEY_STROKE_SHOW_SEINE = KeyStroke.getKeyStroke("ctrl pressed F1");
- public static final KeyStroke KEY_STROKE_SHOW_LONGLINE = KeyStroke.getKeyStroke("ctrl pressed F2");
- public static final KeyStroke KEY_STROKE_SHOW_REFERENTIAL = KeyStroke.getKeyStroke("ctrl pressed F3");
- public static final KeyStroke KEY_STROKE_SHOW_EMPTY_PROGRAM = KeyStroke.getKeyStroke("ctrl pressed F4");
+ public static final KeyStroke KEY_STROKE_NAVIGATION_CONFIGURE = KeyStroke.getKeyStroke("ctrl pressed F1");
+ public static final KeyStroke KEY_STROKE_SHOW_SEINE = KeyStroke.getKeyStroke("ctrl pressed F2");
+ public static final KeyStroke KEY_STROKE_SHOW_LONGLINE = KeyStroke.getKeyStroke("ctrl pressed F3");
+ public static final KeyStroke KEY_STROKE_SHOW_REFERENTIAL = KeyStroke.getKeyStroke("ctrl pressed F4");
+ public static final KeyStroke KEY_STROKE_SHOW_EMPTY_PROGRAM = KeyStroke.getKeyStroke("ctrl pressed F5");
public static final KeyStroke KEY_STROKE_CONFIGURE_LOCAL_SOURCE = KeyStroke.getKeyStroke("ctrl pressed L");
public static final KeyStroke KEY_STROKE_CONFIGURE_REMOTE_SOURCE = KeyStroke.getKeyStroke("ctrl pressed R");
public static final KeyStroke KEY_STROKE_SAVE_TABLE_ENTRY = KeyStroke.getKeyStroke("ctrl pressed S");
=====================================
client/src/main/java/fr/ird/observe/client/ui/ObserveMainUI.jaxx
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/ObserveMainUI.jaxx
+++ b/client/src/main/java/fr/ird/observe/client/ui/ObserveMainUI.jaxx
@@ -77,8 +77,10 @@
fr.ird.observe.client.ui.content.ContentUIManager
fr.ird.observe.client.ui.content.ObserveActionMap
+ fr.ird.observe.client.ui.tree.navigation.NavigationUI
fr.ird.observe.client.ui.tree.navigation.NavigationTree
- fr.ird.observe.client.ui.tree.navigation.NavigationTreeHeader
+ fr.ird.observe.client.ui.tree.navigation.NavigationTreeModel
+ fr.ird.observe.client.ui.tree.navigation.NavigationTreeModel
fr.ird.observe.client.ui.util.UIHelper
fr.ird.observe.client.ui.util.ObserveBlockingLayerUI
@@ -252,10 +254,8 @@ protected void finalize() throws Throwable {
<!-- left : navigation -->
<JXTitledPanel id='navigationView'>
- <JScrollPane id='navigationScrollPane' columnHeaderView='{navigationTreeHeader}'>
- <NavigationTree id="navigation"/>
- <NavigationTreeHeader id='navigationTreeHeader' tree='{navigation}'/>
- </JScrollPane>
+ <NavigationUI id="navigationUI" initializer="new NavigationUI((JAXXContext)this)"/>
+ <NavigationTree id="navigation" initializer="navigationUI.getTree()"/>
</JXTitledPanel>
<!-- right : (content + messages) -->
=====================================
client/src/main/java/fr/ird/observe/client/ui/ObserveMainUIInitializer.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/ObserveMainUIInitializer.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/ObserveMainUIInitializer.java
@@ -6,15 +6,15 @@
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
+ * published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
+ *
+ * You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
* #L%
@@ -32,7 +32,6 @@ import fr.ird.observe.client.ui.content.ContentUIManager;
import fr.ird.observe.client.ui.content.ObserveActionMap;
import fr.ird.observe.client.ui.tree.ObserveNavigationTreeShowPopupAction;
import fr.ird.observe.client.ui.tree.navigation.NavigationTree;
-import fr.ird.observe.client.ui.tree.navigation.NavigationTreeHeader;
import fr.ird.observe.client.ui.tree.navigation.NavigationTreeModel;
import fr.ird.observe.client.ui.tree.navigation.nodes.NavigationTreeNodeSupport;
import fr.ird.observe.client.ui.tree.navigation.nodes.ReferenceNavigationTreeNodeSupport;
@@ -44,19 +43,14 @@ import fr.ird.observe.client.ui.util.UIHelper;
import fr.ird.observe.dto.decoration.DecoratorService;
import fr.ird.observe.dto.decoration.ObserveI18nDecoratorHelper;
import fr.ird.observe.dto.referential.ReferentialLocale;
-import java.awt.Component;
-import java.awt.Container;
-import java.awt.Cursor;
-import java.awt.Dimension;
-import java.awt.event.ComponentAdapter;
-import java.awt.event.ComponentEvent;
-import java.awt.event.KeyEvent;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Locale;
-import java.util.Objects;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.i18n.I18n;
+import org.nuiton.jaxx.runtime.context.JAXXInitialContext;
+import org.nuiton.jaxx.validator.swing.SwingValidatorMessageTableModel;
+import org.nuiton.jaxx.validator.swing.SwingValidatorUtil;
+import org.nuiton.jaxx.widgets.error.ErrorDialogUI;
+
import javax.swing.AbstractButton;
import javax.swing.JComponent;
import javax.swing.JSplitPane;
@@ -67,14 +61,16 @@ import javax.swing.border.Border;
import javax.swing.border.LineBorder;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.tree.TreePath;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.nuiton.i18n.I18n;
-import org.nuiton.jaxx.runtime.context.JAXXInitialContext;
-import org.nuiton.jaxx.validator.swing.SwingValidatorMessageTableModel;
-import org.nuiton.jaxx.validator.swing.SwingValidatorUtil;
-import org.nuiton.jaxx.widgets.error.ErrorDialogUI;
-
+import java.awt.Component;
+import java.awt.Container;
+import java.awt.Cursor;
+import java.awt.event.KeyEvent;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+import java.util.Objects;
import static fr.ird.observe.client.ui.content.ContentUIInitializer.OBSERVE_ACTION;
import static org.nuiton.i18n.I18n.t;
@@ -94,11 +90,87 @@ public class ObserveMainUIInitializer {
private static final String EMPTY_SELECTION = "emptySelection";
private final ObserveMainUI ui;
+ private Border focusBorder;
+ private Border noFocusBorder;
ObserveMainUIInitializer(ObserveMainUI ui) {
this.ui = ui;
}
+ /**
+ * Methode pour initialiser l'ui principale sans l'afficher.
+ *
+ * @param context le context applicatif
+ * @param config la configuration a utiliser
+ * @return l'ui instancie et initialisee mais non visible encore
+ */
+ public static ObserveMainUI initUI(ObserveSwingApplicationContext context, ClientConfig config) {
+
+ SwingValidatorMessageTableModel errorModel = new ObserveSwingValidatorMessageTableModel();
+
+ DecoratorService decoratorService = context.getDecoratorService();
+
+ boolean reloadDecorators = false;
+ Locale currentLocale = I18n.getDefaultLocale();
+ Locale configurationLocale = config.getLocale();
+ if (!configurationLocale.equals(currentLocale)) {
+ if (log.isInfoEnabled()) {
+ log.info("re-init I18n with locale " + configurationLocale);
+ }
+ I18n.setDefaultLocale(configurationLocale);
+ reloadDecorators = true;
+ }
+ if (!config.getDbLocale().equals(decoratorService.getReferentialLocale().getLocale())) {
+ if (log.isInfoEnabled()) {
+ log.info("re-init db with locale " + config.getDbLocale());
+ }
+ decoratorService.setReferentialLocale(ReferentialLocale.valueOf(config.getDbLocale()));
+
+ reloadDecorators = true;
+ }
+
+ if (reloadDecorators) {
+ if (log.isInfoEnabled()) {
+ log.info("reload decorators");
+ }
+ decoratorService.reload();
+ }
+
+ JAXXInitialContext tx = new JAXXInitialContext();
+ tx.add(context).add(errorModel);
+
+ // show main ui
+ ObserveMainUI ui = new ObserveMainUI(tx);
+ ui.setUndecorated(config.isFullScreen());
+
+ String title = t("observe.title.welcome.admin") + (" v " + config.getVersion());
+ ui.setTitle(title);
+
+ context.setMainUI(ui);
+
+ ErrorDialogUI.init(ui);
+
+ // set fullscreen propery on main ui
+ ui.getGraphicsConfiguration().getDevice().setFullScreenWindow(config.isFullScreen() ? ui : null);
+
+ new ObserveNavigationTreeShowPopupAction(ui.getNavigation(), ui.getNavigationUI(), ui.getNavigationPopup());
+
+ return ui;
+ }
+
+ public static void setMainUIVisible(ObserveSwingApplicationContext rootContext, ObserveMainUI ui, boolean replace) {
+
+ // force le redimensionnement du splitpane
+ ui.getSplitpane().revalidate();
+
+ // force le redimensionnement du splitpane2
+ ui.getSplitpane2().revalidate();
+
+ // affichage de l'interface graphique
+ SwingUtilities.invokeLater(() -> ui.setVisible(true));
+ rootContext.getSwingSessionHelper().addComponent(ui, replace);
+ }
+
private void changeNavigationNode(TreeSelectionEvent event) {
ObserveSwingDataSource source = ObserveSwingApplicationContext.get().getDataSourcesManager().getMainDataSource();
@@ -196,7 +268,7 @@ public class ObserveMainUIInitializer {
if (ui.getNavigation().equals(focusOwner)) {
focusOnNavigation = true;
}
- if (ui.getNavigationTreeHeader().equals(focusOwner)) {
+ if (ui.getNavigationUI().equals(focusOwner)) {
focusOnNavigation = true;
}
if (ui.getNavigationView().equals(focusOwner)) {
@@ -209,7 +281,7 @@ public class ObserveMainUIInitializer {
focusOnNavigation = true;
break;
}
- if (ui.getNavigationTreeHeader().equals(focusOwnerParent)) {
+ if (ui.getNavigationUI().equals(focusOwnerParent)) {
focusOnNavigation = true;
break;
}
@@ -243,67 +315,6 @@ public class ObserveMainUIInitializer {
}
/**
- * Methode pour initialiser l'ui principale sans l'afficher.
- *
- * @param context le context applicatif
- * @param config la configuration a utiliser
- * @return l'ui instancie et initialisee mais non visible encore
- */
- public static ObserveMainUI initUI(ObserveSwingApplicationContext context, ClientConfig config) {
-
- SwingValidatorMessageTableModel errorModel = new ObserveSwingValidatorMessageTableModel();
-
- DecoratorService decoratorService = context.getDecoratorService();
-
- boolean reloadDecorators = false;
- Locale currentLocale = I18n.getDefaultLocale();
- Locale configurationLocale = config.getLocale();
- if (!configurationLocale.equals(currentLocale)) {
- if (log.isInfoEnabled()) {
- log.info("re-init I18n with locale " + configurationLocale);
- }
- I18n.setDefaultLocale(configurationLocale);
- reloadDecorators = true;
- }
- if (!config.getDbLocale().equals(decoratorService.getReferentialLocale().getLocale())) {
- if (log.isInfoEnabled()) {
- log.info("re-init db with locale " + config.getDbLocale());
- }
- decoratorService.setReferentialLocale(ReferentialLocale.valueOf(config.getDbLocale()));
-
- reloadDecorators = true;
- }
-
- if (reloadDecorators) {
- if (log.isInfoEnabled()) {
- log.info("reload decorators");
- }
- decoratorService.reload();
- }
-
- JAXXInitialContext tx = new JAXXInitialContext();
- tx.add(context).add(errorModel);
-
- // show main ui
- ObserveMainUI ui = new ObserveMainUI(tx);
- ui.setUndecorated(config.isFullScreen());
-
- String title = t("observe.title.welcome.admin") + (" v " + config.getVersion());
- ui.setTitle(title);
-
- context.setMainUI(ui);
-
- ErrorDialogUI.init(ui);
-
- // set fullscreen propery on main ui
- ui.getGraphicsConfiguration().getDevice().setFullScreenWindow(config.isFullScreen() ? ui : null);
-
- new ObserveNavigationTreeShowPopupAction(ui.getNavigation(), ui.getNavigationScrollPane(), ui.getNavigationPopup());
-
- return ui;
- }
-
- /**
* Permet de recharger l'ui principale et de changer de le mode
* d'affichage.
*
@@ -358,11 +369,7 @@ public class ObserveMainUIInitializer {
// on met à jour le modèle de navigation
NavigationTreeModel treeModel = ui.getNavigation().getTreeModel();
- treeModel.setLoadSeine(ui.getNavigationTreeHeader().getShowSeine().isSelected());
- treeModel.setLoadLongline(ui.getNavigationTreeHeader().getShowLongline().isSelected());
- treeModel.setLoadReferential(ui.getNavigationTreeHeader().getShowReferential().isSelected());
- treeModel.setLoadEmptyProgram(ui.getNavigationTreeHeader().getShowEmptyProgram().isSelected());
-
+ treeModel.load(config);
treeModel.populate();
// on conserve les noeuds a reselectionner
@@ -378,19 +385,6 @@ public class ObserveMainUIInitializer {
setMainUIVisible(rootContext, ui, true);
}
- public static void setMainUIVisible(ObserveSwingApplicationContext rootContext, ObserveMainUI ui, boolean replace) {
-
- // force le redimensionnement du splitpane
- ui.getSplitpane().revalidate();
-
- // force le redimensionnement du splitpane2
- ui.getSplitpane2().revalidate();
-
- // affichage de l'interface graphique
- SwingUtilities.invokeLater(() -> ui.setVisible(true));
- rootContext.getSwingSessionHelper().addComponent(ui, replace);
- }
-
void initialize() {
ObserveActionMap actionMap = ui.getObserveActionMap();
@@ -440,43 +434,43 @@ public class ObserveMainUIInitializer {
};
ui.getNavigationView().addMouseListener(mouseAdapter);
ui.getNavigation().addMouseListener(mouseAdapter);
- ui.getNavigationTreeHeader().addMouseListener(mouseAdapter);
+ ui.getNavigationUI().addMouseListener(mouseAdapter);
init(ui.getSplitpane());
init(ui.getSplitpane2());
init(ui.getNavigation());
- ui.getNavigationView().setRightDecoration(ui.getNavigationTreeHeader().getToolbar());
- ui.getNavigationView().addComponentListener(new ComponentAdapter() {
-
- @Override
- public void componentResized(ComponentEvent e) {
-
- JComponent source = (JComponent) e.getSource();
-
- NavigationTreeHeader actions = ui.getNavigationTreeHeader();
-
- Dimension preferredLayoutSize = actions.getLayout().preferredLayoutSize(actions);
-
- Dimension showLonglineSize = actions.getShowLongline().getSize();
- Dimension showSeineSize = actions.getShowSeine().getSize();
- Dimension showReferential = actions.getShowReferential().getSize();
- Dimension showEmpty = actions.getShowEmptyProgram().getSize();
- int minWidth = 18 + (int) Math.max(showLonglineSize.getWidth() + showSeineSize.getWidth(), showReferential.getWidth() + showEmpty.getWidth());
- source.setMinimumSize(new Dimension(minWidth, (int) source.getSize().getHeight()));
- log.debug("Header resized to minumun: " + source.getMinimumSize());
-
- int maxWidth = ui.getNavigationView().getWidth() - 10;
-
- int currentWidth = (int) preferredLayoutSize.getWidth();
- int height = 32;
- if (currentWidth > maxWidth) {
- height += 32;
- }
- actions.setPreferredSize(new Dimension(maxWidth, height));
-
- }
- });
+ ui.getNavigationView().setRightDecoration(ui.getNavigationUI().getToolbar());
+// ui.getNavigationView().addComponentListener(new ComponentAdapter() {
+//
+// @Override
+// public void componentResized(ComponentEvent e) {
+//
+// JComponent source = (JComponent) e.getSource();
+//
+// NavigationTreeHeader actions = ui.getNavigationUI();
+//
+// Dimension preferredLayoutSize = actions.getLayout().preferredLayoutSize(actions);
+//
+// Dimension showLonglineSize = actions.getShowLongline().getSize();
+// Dimension showSeineSize = actions.getShowSeine().getSize();
+// Dimension showReferential = actions.getShowReferential().getSize();
+// Dimension showEmpty = actions.getShowEmptyProgram().getSize();
+// int minWidth = 18 + (int) Math.max(showLonglineSize.getWidth() + showSeineSize.getWidth(), showReferential.getWidth() + showEmpty.getWidth());
+// source.setMinimumSize(new Dimension(minWidth, (int) source.getSize().getHeight()));
+// log.debug("Header resized to minumun: " + source.getMinimumSize());
+//
+// int maxWidth = ui.getNavigationView().getWidth() - 10;
+//
+// int currentWidth = (int) preferredLayoutSize.getWidth();
+// int height = 32;
+// if (currentWidth > maxWidth) {
+// height += 32;
+// }
+// actions.setPreferredSize(new Dimension(maxWidth, height));
+//
+// }
+// });
}
protected void init(ObserveActionMap actionMap, AbstractButton editor) {
@@ -498,9 +492,6 @@ public class ObserveMainUIInitializer {
}
- private Border focusBorder;
- private Border noFocusBorder;
-
private Border getFocusBorder() {
if (focusBorder == null) {
focusBorder = new LineBorder(ObserveSwingApplicationContext.get().getConfig().getFocusBorderColor(), 3, true);
@@ -549,7 +540,7 @@ public class ObserveMainUIInitializer {
/**
* Nettoye des ui tout ce qui concerne un modèle de navigation.
- * <p>
+ *
* <b>Note:</b> cette méthode doit être appelée avant tout rechargement de modèle de naivgation.
*
* @param progressModel progress model to interact with ui
@@ -576,7 +567,7 @@ public class ObserveMainUIInitializer {
/**
* Charge dans l'ui un nouveau modèle de navigation.
- * <p>
+ *
* <b>Note:</b> cette méthode doit être appelée après tout rechargement de modèle de naivgation.
*
* @param progressModel the progress model to interact with ui
=====================================
client/src/main/java/fr/ird/observe/client/ui/admin/synchronize/data/DataSynchroModel.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/admin/synchronize/data/DataSynchroModel.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/admin/synchronize/data/DataSynchroModel.java
@@ -72,15 +72,15 @@ public class DataSynchroModel extends AdminActionModel {
super(AdminStep.DATA_SYNCHRONIZE);
// leftSelectionDataModel = new SelectionTreeModel();
-// leftSelectionDataModel.setLoadLongline(true);
-// leftSelectionDataModel.setLoadSeine(true);
-// leftSelectionDataModel.setLoadReferential(false);
+// leftSelectionDataModel.setShowLonglineTrip(true);
+// leftSelectionDataModel.setShowSeineTrip(true);
+// leftSelectionDataModel.setShowReferential(false);
// leftSelectionDataModel.setShowEmptyTrips(false);
//
// rightSelectionDataModel = new SelectionTreeModel();
-// rightSelectionDataModel.setLoadLongline(true);
-// rightSelectionDataModel.setLoadSeine(true);
-// rightSelectionDataModel.setLoadReferential(false);
+// rightSelectionDataModel.setShowLonglineTrip(true);
+// rightSelectionDataModel.setShowSeineTrip(true);
+// rightSelectionDataModel.setShowReferential(false);
// rightSelectionDataModel.setShowEmptyTrips(false);
tasks = new DefaultListModel<>();
=====================================
client/src/main/java/fr/ird/observe/client/ui/admin/synchronize/referential/ng/ReferentialSynchroConfigUI.jaxx
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/admin/synchronize/referential/ng/ReferentialSynchroConfigUI.jaxx
+++ b/client/src/main/java/fr/ird/observe/client/ui/admin/synchronize/referential/ng/ReferentialSynchroConfigUI.jaxx
@@ -33,6 +33,7 @@
fr.ird.observe.client.constants.ValidationModelMode
org.nuiton.validator.NuitonValidatorScope
+ org.nuiton.i18n.I18n
java.io.File
=====================================
client/src/main/java/fr/ird/observe/client/ui/admin/synchronize/referential/ng/ReferentialSynchroConfigUI.jcss
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/admin/synchronize/referential/ng/ReferentialSynchroConfigUI.jcss
+++ b/client/src/main/java/fr/ird/observe/client/ui/admin/synchronize/referential/ng/ReferentialSynchroConfigUI.jcss
@@ -24,7 +24,7 @@
layout:{new BorderLayout()};
}
#referentialSynchronizeConfigPanel {
- border:{new TitledBorder(t("observe.actions.synchro.referential.config.mode"))};
+ border:{new TitledBorder(I18n.t("observe.actions.synchro.referential.config.mode"))};
}
#synchronizeMode {
=====================================
client/src/main/java/fr/ird/observe/client/ui/content/ContentUIInitializer.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/content/ContentUIInitializer.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/content/ContentUIInitializer.java
@@ -415,7 +415,7 @@ public class ContentUIInitializer<E extends IdDto, UI extends ContentUI<E, UI>>
Action resetAction = new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
- beanComboBox.doActionPerformed__on__resetButton(null);
+ beanComboBox.getResetButton().doClick();
SwingUtilities.invokeLater(beanComboBox::grabFocus);
}
};
@@ -768,7 +768,7 @@ public class ContentUIInitializer<E extends IdDto, UI extends ContentUI<E, UI>>
list.init(decorator, new ArrayList<>(), new ArrayList<>());
JList<R> selectedList = list.getSelectedList();
- ListCellRenderer<? super R> renderer = selectedList.getCellRenderer();
+ ListCellRenderer renderer = selectedList.getCellRenderer();
selectedList.setCellRenderer(new DataReferenceListCellRenderer<>(renderer));
list.getUniverseList().setCellRenderer(new DataReferenceListCellRenderer<>(renderer));
@@ -795,7 +795,7 @@ public class ContentUIInitializer<E extends IdDto, UI extends ContentUI<E, UI>>
list.init(decorator, new ArrayList<>(), new ArrayList<>());
JList<R> selectedList = list.getSelectedList();
- ListCellRenderer<? super R> renderer = selectedList.getCellRenderer();
+ ListCellRenderer renderer = selectedList.getCellRenderer();
selectedList.setCellRenderer(new ReferentialReferenceListCellRenderer<>(renderer));
list.getUniverseList().setCellRenderer(new ReferentialReferenceListCellRenderer<>(renderer));
@@ -822,7 +822,7 @@ public class ContentUIInitializer<E extends IdDto, UI extends ContentUI<E, UI>>
list.init(decorator, Collections.emptyList());
JList<R> list1 = list.getList();
- ListCellRenderer<? super R> renderer = list1.getCellRenderer();
+ ListCellRenderer renderer = list1.getCellRenderer();
list1.setCellRenderer(new DataReferenceListCellRenderer<>(renderer));
}
@@ -847,7 +847,7 @@ public class ContentUIInitializer<E extends IdDto, UI extends ContentUI<E, UI>>
list.init(decorator, Collections.emptyList());
JList<R> list1 = list.getList();
- ListCellRenderer<? super R> renderer = list1.getCellRenderer();
+ ListCellRenderer renderer = list1.getCellRenderer();
list1.setCellRenderer(new ReferentialReferenceListCellRenderer<>(renderer));
}
=====================================
client/src/main/java/fr/ird/observe/client/ui/storage/tabs/RolesUI.jaxx
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/storage/tabs/RolesUI.jaxx
+++ b/client/src/main/java/fr/ird/observe/client/ui/storage/tabs/RolesUI.jaxx
@@ -30,6 +30,8 @@
fr.ird.observe.client.ui.storage.tabs.SecurityModel
fr.ird.observe.client.ui.storage.StorageStep
fr.ird.observe.client.ui.storage.StorageUIModel
+
+ org.nuiton.i18n.I18n
</import>
<StorageStep id='step' initializer='StorageStep.ROLES'/>
@@ -44,7 +46,7 @@
<script><![CDATA[
public String updateAdministrateur(String role) {
- return t("observe.storage.security.administrateur", role);
+ return I18n.t("observe.storage.security.administrateur", role);
}
]]>
</script>
=====================================
client/src/main/java/fr/ird/observe/client/ui/storage/tabs/RolesUI.jcss
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/storage/tabs/RolesUI.jcss
+++ b/client/src/main/java/fr/ird/observe/client/ui/storage/tabs/RolesUI.jcss
@@ -25,7 +25,7 @@
}
#administrateurPanel {
- border:{new TitledBorder(t("observe.storage.security.administrateur"))};
+ border:{new TitledBorder(I18n.t("observe.storage.security.administrateur"))};
layout:{new BorderLayout()};
}
@@ -43,13 +43,13 @@
}
#techniciens {
- border:{new TitledBorder(t("observe.storage.security.technicien"))};
+ border:{new TitledBorder(I18n.t("observe.storage.security.technicien"))};
}
#readers {
- border:{new TitledBorder(t("observe.storage.security.reader"))};
+ border:{new TitledBorder(I18n.t("observe.storage.security.reader"))};
}
#referentiels {
- border:{new TitledBorder(t("observe.storage.security.referentiel"))};
+ border:{new TitledBorder(I18n.t("observe.storage.security.referentiel"))};
}
=====================================
client/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationTreeHeader.jaxx deleted
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationTreeHeader.jaxx
+++ /dev/null
@@ -1,38 +0,0 @@
-<!--
- #%L
- ObServe :: Client
- %%
- Copyright (C) 2008 - 2017 IRD, Code Lutin, Ultreia.io
- %%
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as
- published by the Free Software Foundation, either version 3 of the
- License, or (at your option) any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public
- License along with this program. If not, see
- <http://www.gnu.org/licenses/gpl-3.0.html>.
- #L%
- -->
-<JPanel layout='{new FlowLayout(FlowLayout.LEFT, 2, 2)}'>
-
- <import>
- java.awt.FlowLayout
- </import>
-
- <JToggleButton id='showSeine' onActionPerformed="handler.tryToUpdateNavigationTree()"/>
- <JToggleButton id='showLongline' onActionPerformed="handler.tryToUpdateNavigationTree()"/>
- <JToggleButton id='showReferential' onActionPerformed="handler.tryToUpdateNavigationTree()"/>
- <JToggleButton id='showEmptyProgram' onActionPerformed="handler.tryToUpdateNavigationTree()"/>
-
- <NavigationTree id='tree' javaBean='new NavigationTree()'/>
-
- <JToolBar id='toolbar'>
- <JButton id='colapseAll' onActionPerformed='handler.collapseAll()'/>
- <JButton id='expandAll' onActionPerformed='handler.expandAll()'/>
- </JToolBar>
-
-</JPanel>
=====================================
client/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationTreeModel.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationTreeModel.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationTreeModel.java
@@ -10,18 +10,20 @@ package fr.ird.observe.client.ui.tree.navigation;
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
* #L%
*/
+import fr.ird.observe.client.configuration.ClientConfig;
+import fr.ird.observe.client.configuration.NavigationTreeConfigBean;
import fr.ird.observe.client.db.ObserveSwingDataSource;
import fr.ird.observe.client.ui.tree.navigation.nodes.NavigationTreeNodeSupport;
import fr.ird.observe.client.ui.tree.navigation.nodes.RootNavigationTreeNode;
@@ -33,19 +35,20 @@ import fr.ird.observe.client.ui.tree.navigation.nodes.referential.ReferentialsSe
import fr.ird.observe.client.ui.tree.navigation.nodes.seine.ProgramSeineNavigationTreeNode;
import fr.ird.observe.dto.data.longline.TripLonglineHelper;
import fr.ird.observe.dto.data.longline.TripLonglineReference;
-import fr.ird.observe.dto.referential.ProgramHelper;
-import fr.ird.observe.dto.referential.ProgramReference;
import fr.ird.observe.dto.data.seine.TripSeineHelper;
import fr.ird.observe.dto.data.seine.TripSeineReference;
+import fr.ird.observe.dto.referential.ProgramHelper;
+import fr.ird.observe.dto.referential.ProgramReference;
import fr.ird.observe.services.service.data.NavigationRequest;
import fr.ird.observe.services.service.data.NavigationResult;
import fr.ird.observe.services.service.data.NavigationService;
+
+import javax.swing.tree.DefaultTreeModel;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
-import javax.swing.tree.DefaultTreeModel;
/**
* Created on 14/11/16.
@@ -55,44 +58,50 @@ import javax.swing.tree.DefaultTreeModel;
*/
public class NavigationTreeModel extends DefaultTreeModel {
- private boolean loadSeine = true;
- private boolean loadLongline = true;
- private boolean loadReferential = true;
- private boolean loadEmptyProgram = true;
+ private final NavigationTreeConfigBean config;
- public NavigationTreeModel() {
+ NavigationTreeModel() {
super(new RootNavigationTreeNode());
+ config = new NavigationTreeConfigBean();
}
- public NavigationTreeNodeSupport<?> findNode(NavigationTreeNodeSupport<?> node, Object... ids) {
- NavigationTreeNodeSupport<?> result = null;
- for (Object id : ids) {
+ public NavigationTreeConfigBean getConfig() {
+ return config;
+ }
- if (id instanceof String) {
- result = node.findChildById((String) id);
- } else if (id instanceof Class) {
- result = node.findChildByType((Class) id);
+ @Override
+ public RootNavigationTreeNode getRoot() {
+ return (RootNavigationTreeNode) super.getRoot();
+ }
- }
- if (result == null) {
+ public <N extends NavigationTreeNodeSupport> void reload(N node) {
+ node.reload();
+ super.reload(node);
+ }
- // un des noeud n'a pas ete trouve, on sortReferential
- break;
+ public <N extends NavigationTreeNodeSupport> void open(N node) {
+ if (node instanceof WithChildsToReload) {
+ boolean updated = node.populateChilds();
+ if (updated) {
+ reload(node);
}
- node = result;
}
- return result;
}
- public NavigationTreeNodeSupport<?> findNodeByType(NavigationTreeNodeSupport<?> node, Class<?> nodeType) {
- return node.findChildByType(nodeType);
+ public void save(ClientConfig config) {
+ config.load(this.config);
+ config.saveForUser();
+ }
+
+ public void load(ClientConfig config) {
+ this.config.load(config);
}
public void populate() {
NavigationService navigationService = ObserveSwingDataSource.MAIN.getNavigationService();
- NavigationRequest navigationRequest = toNavigationRequest();
+ NavigationRequest navigationRequest = config.toRequest();
NavigationResult navigationResult = navigationService.getNavigation(navigationRequest);
List<ProgramReference> programs = new ArrayList<>(navigationResult.getPrograms());
@@ -119,75 +128,38 @@ public class NavigationTreeModel extends DefaultTreeModel {
ProgramSeineNavigationTreeNode programNode = new ProgramSeineNavigationTreeNode(program, references);
root.add(programNode);
}
-
}
- if (isLoadReferential()) {
+ if (config.isShowReferential()) {
root.add(new ReferentialsCommonNavigationTreeNode());
root.add(new ReferentialsLonglineNavigationTreeNode());
root.add(new ReferentialsSeineNavigationTreeNode());
}
-
setRoot(root);
}
- private NavigationRequest toNavigationRequest() {
- NavigationRequest navigationRequest = new NavigationRequest();
- navigationRequest.setLoadLongline(isLoadLongline());
- navigationRequest.setLoadSeine(isLoadSeine());
- navigationRequest.setLoadEmptyProgram(isLoadEmptyProgram());
- return navigationRequest;
- }
-
- @Override
- public RootNavigationTreeNode getRoot() {
- return (RootNavigationTreeNode) super.getRoot();
- }
-
- public boolean isLoadSeine() {
- return loadSeine;
- }
-
- public void setLoadSeine(boolean loadSeine) {
- this.loadSeine = loadSeine;
- }
-
- public boolean isLoadLongline() {
- return loadLongline;
- }
-
- public void setLoadLongline(boolean loadLongline) {
- this.loadLongline = loadLongline;
- }
-
- public boolean isLoadReferential() {
- return loadReferential;
- }
-
- public void setLoadReferential(boolean loadReferential) {
- this.loadReferential = loadReferential;
- }
-
- public boolean isLoadEmptyProgram() {
- return loadEmptyProgram;
- }
+ NavigationTreeNodeSupport<?> findNode(NavigationTreeNodeSupport<?> node, Object... ids) {
+ NavigationTreeNodeSupport<?> result = null;
+ for (Object id : ids) {
- public void setLoadEmptyProgram(boolean loadEmptyProgram) {
- this.loadEmptyProgram = loadEmptyProgram;
- }
+ if (id instanceof String) {
+ result = node.findChildById((String) id);
+ } else if (id instanceof Class) {
+ result = node.findChildByType((Class) id);
- public <N extends NavigationTreeNodeSupport> void reload(N node) {
- node.reload();
- super.reload(node);
- }
+ }
+ if (result == null) {
- public <N extends NavigationTreeNodeSupport> void open(N node) {
- if (node instanceof WithChildsToReload) {
- boolean updated = node.populateChilds();
- if (updated) {
- reload(node);
+ // un des noeud n'a pas ete trouve, on sortReferential
+ break;
}
+ node = result;
}
+ return result;
+ }
+
+ NavigationTreeNodeSupport<?> findNodeByType(NavigationTreeNodeSupport<?> node, Class<?> nodeType) {
+ return node.findChildByType(nodeType);
}
}
=====================================
client/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationUI.jaxx
=====================================
--- /dev/null
+++ b/client/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationUI.jaxx
@@ -0,0 +1,24 @@
+<JScrollPane id='navigationScrollPane' columnHeaderView='{toolbar}' viewportView="{tree}">
+
+ <import>
+ fr.ird.observe.client.configuration.NavigationTreeConfigBean
+ static org.nuiton.i18n.I18n.t
+ </import>
+ <NavigationTree id='tree' />
+ <NavigationTreeModel id='treeModel' javaBean='{tree.getTreeModel()}'/>
+ <NavigationTreeConfigBean id='navigationConfig' javaBean='treeModel.getConfig()'/>
+
+ <JPopupMenu id='configurePopup'>
+ <JCheckBoxMenuItem id='showSeineTrip' onActionPerformed="handler.tryToUpdateNavigationTree()"/>
+ <JCheckBoxMenuItem id='showLonglineTrip' onActionPerformed="handler.tryToUpdateNavigationTree()"/>
+ <JCheckBoxMenuItem id='showReferential' onActionPerformed="handler.tryToUpdateNavigationTree()"/>
+ <JCheckBoxMenuItem id='showEmptyProgram' onActionPerformed="handler.tryToUpdateNavigationTree()"/>
+ </JPopupMenu>
+
+ <JToolBar id='toolbar'>
+ <JButton id='colapseAll' onActionPerformed='handler.collapseAll()'/>
+ <JButton id='expandAll' onActionPerformed='handler.expandAll()'/>
+ <JToggleButton id='configure' onActionPerformed='handler.configure()'/>
+ </JToolBar>
+
+</JScrollPane>
=====================================
client/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationTreeHeader.jcss → client/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationUI.jcss
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationTreeHeader.jcss
+++ b/client/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationUI.jcss
@@ -8,36 +8,35 @@
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
* #L%
*/
-#showSeine {
- selected: {tree.getTreeModel().isLoadSeine()};
+#showSeineTrip {
+ selected: {navigationConfig.isShowSeineTrip()};
text:"observe.constant.ObserveModelType.PS";
toolTipText:"observe.constant.ObserveModelType.PS.description";
}
-#showLongline {
- selected: {tree.getTreeModel().isLoadLongline()};
+#showLonglineTrip {
+ selected: {navigationConfig.isShowLonglineTrip()};
text:"observe.constant.ObserveModelType.LL";
toolTipText:"observe.constant.ObserveModelType.LL.description";
}
#showReferential {
- selected: {tree.getTreeModel().isLoadReferential()};
+ selected: {navigationConfig.isShowReferential()};
text:"observe.constant.ObserveModelType.REF";
toolTipText:"observe.constant.ObserveModelType.REF.description";
}
-
#showEmptyProgram {
- selected: {tree.getTreeModel().isLoadEmptyProgram()};
+ selected: {navigationConfig.isShowEmptyProgram()};
text:"observe.constant.ObserveModelType.EMPTY";
toolTipText:"observe.constant.ObserveModelType.EMPTY.description";
}
@@ -61,3 +60,8 @@ JButton {
actionIcon:expand;
toolTipText:"observe.tree.action.expandAll.tip";
}
+
+#configure {
+ actionIcon:generate;
+ toolTipText:"observe.tree.action.configure.tip";
+}
=====================================
client/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationTreeHeaderHandler.java → client/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationUIHandler.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationTreeHeaderHandler.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationUIHandler.java
@@ -1,39 +1,11 @@
package fr.ird.observe.client.ui.tree.navigation;
-/*
- * #%L
- * ObServe :: Client
- * %%
- * Copyright (C) 2008 - 2017 IRD, Code Lutin, Ultreia.io
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
import fr.ird.observe.client.ObserveSwingApplicationContext;
+import fr.ird.observe.client.configuration.ClientConfig;
+import fr.ird.observe.client.configuration.NavigationTreeConfig;
import fr.ird.observe.client.ui.ObserveKeyStrokes;
-import fr.ird.observe.client.ui.util.UIHelper;
import fr.ird.observe.client.ui.tree.navigation.nodes.NavigationTreeNodeSupport;
-import fr.ird.observe.dto.referential.ProgramDto;
-import fr.ird.observe.dto.data.seine.TripSeineDto;
-import java.awt.Color;
-import java.awt.event.ActionEvent;
-import javax.swing.AbstractAction;
-import javax.swing.ActionMap;
-import javax.swing.InputMap;
-import javax.swing.JComponent;
+import fr.ird.observe.client.ui.util.UIHelper;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jdesktop.swingx.decorator.ColorHighlighter;
@@ -41,17 +13,29 @@ import org.jdesktop.swingx.search.Searchable;
import org.jdesktop.swingx.search.TreeSearchable;
import org.nuiton.jaxx.runtime.spi.UIHandler;
+import javax.swing.AbstractAction;
+import javax.swing.ActionMap;
+import javax.swing.InputMap;
+import javax.swing.JComponent;
+import javax.swing.JPopupMenu;
+import javax.swing.SwingUtilities;
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.event.ActionEvent;
+
/**
- * @author Samuel Maisonneuve- maisonneuve(a)codelutin.com
+ * Created by tchemit on 01/04/2018.
+ *
+ * @author Tony Chemit - dev(a)tchemit.fr
*/
-public class NavigationTreeHeaderHandler implements UIHandler<NavigationTreeHeader> {
+public class NavigationUIHandler implements UIHandler<NavigationUI> {
/** Logger */
- private static final Log log = LogFactory.getLog(NavigationTreeHeaderHandler.class);
+ private static final Log log = LogFactory.getLog(NavigationUIHandler.class);
- private NavigationTreeHeader ui;
+ private NavigationUI ui;
- public NavigationTreeHeader getUi() {
+ public NavigationUI getUi() {
return ui;
}
@@ -60,15 +44,15 @@ public class NavigationTreeHeaderHandler implements UIHandler<NavigationTreeHead
}
@Override
- public void beforeInit(NavigationTreeHeader ui) {
+ public void beforeInit(NavigationUI ui) {
this.ui = ui;
}
@Override
- public void afterInit(NavigationTreeHeader ui) {
+ public void afterInit(NavigationUI ui) {
- ui.getShowSeine().setIcon(UIHelper.getUIManagerIcon("navigation.referential.Program-16"));
- ui.getShowLongline().setIcon(UIHelper.getUIManagerIcon("navigation.referential.Program-16"));
+ ui.getShowSeineTrip().setIcon(UIHelper.getUIManagerIcon("navigation.referential.Program-16"));
+ ui.getShowLonglineTrip().setIcon(UIHelper.getUIManagerIcon("navigation.referential.Program-16"));
ui.getShowReferential().setIcon(UIHelper.getUIManagerIcon("navigation.referentiel-16"));
ui.getShowEmptyProgram().setIcon(UIHelper.getUIManagerIcon("navigation.data.seine.TripSeine-16"));
@@ -77,10 +61,16 @@ public class NavigationTreeHeaderHandler implements UIHandler<NavigationTreeHead
tree.setSearchable(searchable);
searchable.setMatchHighlighter(new ColorHighlighter(Color.YELLOW, Color.BLACK));
- ObserveKeyStrokes.addKeyStroke(ui.getShowSeine(), ObserveKeyStrokes.KEY_STROKE_SHOW_SEINE);
- ObserveKeyStrokes.addKeyStroke(ui.getShowLongline(), ObserveKeyStrokes.KEY_STROKE_SHOW_LONGLINE);
+ ObserveKeyStrokes.addKeyStroke(ui.getShowSeineTrip(), ObserveKeyStrokes.KEY_STROKE_SHOW_SEINE);
+ ObserveKeyStrokes.addKeyStroke(ui.getShowLonglineTrip(), ObserveKeyStrokes.KEY_STROKE_SHOW_LONGLINE);
ObserveKeyStrokes.addKeyStroke(ui.getShowReferential(), ObserveKeyStrokes.KEY_STROKE_SHOW_REFERENTIAL);
ObserveKeyStrokes.addKeyStroke(ui.getShowEmptyProgram(), ObserveKeyStrokes.KEY_STROKE_SHOW_EMPTY_PROGRAM);
+ ObserveKeyStrokes.addKeyStroke(ui.getConfigure(), ObserveKeyStrokes.KEY_STROKE_NAVIGATION_CONFIGURE);
+ //FIXME (no text, so no text after...)
+ ui.getConfigure().setText(null);
+ ClientConfig config = ObserveSwingApplicationContext.get().getConfig();
+ NavigationTreeModel treeModel = (NavigationTreeModel) tree.getModel();
+ treeModel.load(config);
InputMap inputMap = ui.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
ActionMap actionMap = ui.getActionMap();
@@ -88,32 +78,66 @@ public class NavigationTreeHeaderHandler implements UIHandler<NavigationTreeHead
actionMap.put("showSeine", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
- ui.getShowSeine().doClick();
+ if (ui.getConfigurePopup().isVisible()) {
+ ui.getShowSeineTrip().doClick();
+ }
+ ui.getConfigurePopup().setVisible(false);
}
});
inputMap.put(ObserveKeyStrokes.KEY_STROKE_SHOW_LONGLINE, "showLongline");
actionMap.put("showLongline", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
- ui.getShowLongline().doClick();
+ if (ui.getConfigurePopup().isVisible()) {
+ ui.getShowLonglineTrip().doClick();
+ }bre de
+ ui.getConfigurePopup().setVisible(false);
}
});
inputMap.put(ObserveKeyStrokes.KEY_STROKE_SHOW_REFERENTIAL, "showReferential");
actionMap.put("showReferential", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
- ui.getShowReferential().doClick();
+ if (ui.getConfigurePopup().isVisible()) {
+ ui.getShowReferential().doClick();
+ }
+ ui.getConfigurePopup().setVisible(false);
}
});
inputMap.put(ObserveKeyStrokes.KEY_STROKE_SHOW_EMPTY_PROGRAM, "showEmptyProgram");
actionMap.put("showEmptyProgram", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
- ui.getShowEmptyProgram().doClick();
+ if (ui.getConfigurePopup().isVisible()) {
+ ui.getShowEmptyProgram().doClick();
+ }
+ ui.getConfigurePopup().setVisible(false);
+ }
+ });
+ inputMap.put(ObserveKeyStrokes.KEY_STROKE_NAVIGATION_CONFIGURE, "configure");
+ actionMap.put("configure", new AbstractAction() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ ui.getConfigure().doClick();
}
});
}
+ void configure() {
+ SwingUtilities.invokeLater(() -> {
+ JComponent c = ui.getConfigure();
+ JPopupMenu p = ui.getConfigurePopup();
+ if (p.isVisible()) {
+ p.setVisible(false);
+ return;
+ }
+ int width = ui.getParent().getWidth() - 5;
+ int height = p.getPreferredSize().height;
+ p.setPreferredSize(new Dimension(width, height));
+ p.show(c, (c.getWidth() == 0 ? 24 : c.getWidth()) - width + 2, c.getHeight());
+ });
+ }
+
public void search(String term) {
Searchable searchable = getTree().getSearchable();
@@ -121,7 +145,7 @@ public class NavigationTreeHeaderHandler implements UIHandler<NavigationTreeHead
}
- public void tryToUpdateNavigationTree() {
+ void tryToUpdateNavigationTree() {
boolean canContinue = ObserveSwingApplicationContext.get().getContentUIManager().closeSelectedContentUI();
@@ -137,23 +161,24 @@ public class NavigationTreeHeaderHandler implements UIHandler<NavigationTreeHead
}
tree.clearSelection();
- boolean showSeine = ui.getShowSeine().isSelected();
- boolean showLongline = ui.getShowLongline().isSelected();
+ boolean showSeine = ui.getShowSeineTrip().isSelected();
+ boolean showLongline = ui.getShowLonglineTrip().isSelected();
boolean showReferential = ui.getShowReferential().isSelected();
boolean showEmptyProgram = ui.getShowEmptyProgram().isSelected();
NavigationTreeModel treeModel = tree.getTreeModel();
- treeModel.setLoadSeine(showSeine);
- treeModel.setLoadLongline(showLongline);
- treeModel.setLoadReferential(showReferential);
- treeModel.setLoadEmptyProgram(showEmptyProgram);
-
+ NavigationTreeConfig navigationTreeConfig = treeModel.getConfig();
+ navigationTreeConfig.setShowSeineTrip(showSeine);
+ navigationTreeConfig.setShowLonglineTrip(showLongline);
+ navigationTreeConfig.setShowReferential(showReferential);
+ navigationTreeConfig.setShowEmptyProgram(showEmptyProgram);
+ treeModel.save(ObserveSwingApplicationContext.get().getConfig());
treeModel.populate();
-
//FIXME repositionner le nœud sélectionné
if (!treeModel.getRoot().isLeaf()) {
tree.setSelectionRow(0);
}
+ ui.getConfigure().setSelected(false);
}
public void collapseAll() {
=====================================
client/src/main/resources/i18n/client_en_GB.properties
=====================================
--- a/client/src/main/resources/i18n/client_en_GB.properties
+++ b/client/src/main/resources/i18n/client_en_GB.properties
@@ -1488,6 +1488,7 @@ observe.title.storage.info=Storage details
observe.title.unique.key=Unique keys used in a referentiel
observe.title.welcome.admin=ObServe
observe.tree.action.collapseAll.tip=Collapse all
+observe.tree.action.configure.tip=Configure
observe.tree.action.expandAll.tip=Expand all
observe.tree.action.selectAll.tip=Select All
observe.tree.action.unselectAll.tip=Unselect All
=====================================
client/src/main/resources/i18n/client_es_ES.properties
=====================================
--- a/client/src/main/resources/i18n/client_es_ES.properties
+++ b/client/src/main/resources/i18n/client_es_ES.properties
@@ -1488,6 +1488,7 @@ observe.title.storage.info=Información sobre la fuente de datos
observe.title.unique.key=Ids de negocio del referencial %1$s
observe.title.welcome.admin=ObServe
observe.tree.action.collapseAll.tip=Cerrar los nudos
+observe.tree.action.configure.tip=Configure \#TODO
observe.tree.action.expandAll.tip=Abrir los nudos
observe.tree.action.selectAll.tip=Seleccionar todo
observe.tree.action.unselectAll.tip=Deseleccionar todo
=====================================
client/src/main/resources/i18n/client_fr_FR.properties
=====================================
--- a/client/src/main/resources/i18n/client_fr_FR.properties
+++ b/client/src/main/resources/i18n/client_fr_FR.properties
@@ -1488,6 +1488,7 @@ observe.title.storage.info=Information sur la source de données
observe.title.unique.key=Clefs métier du référentiel %1$s
observe.title.welcome.admin=ObServe
observe.tree.action.collapseAll.tip=Tout grouper
+observe.tree.action.configure.tip=Configurer
observe.tree.action.expandAll.tip=Tout déplier
observe.tree.action.selectAll.tip=Tout sélectionner
observe.tree.action.unselectAll.tip=Tout désélectionner
=====================================
pom.xml
=====================================
--- a/pom.xml
+++ b/pom.xml
@@ -35,7 +35,7 @@
<packaging>pom</packaging>
<name>ObServe :: Pom</name>
- <description>Projet ObServe</description>
+ <description>Project ObServe</description>
<url>https://ultreiaio.gitlab.io/ird-observe</url>
<inceptionYear>2008</inceptionYear>
<organization>
@@ -142,10 +142,10 @@
<projectId>ird-observe</projectId>
<stageId>frirdobserve</stageId>
- <!-- dev version (for develop purpose -->
+ <!-- dev version -->
<devMode>true</devMode>
- <!--Modèle version-->
+ <!--persistence model version-->
<observe.model.version>7.0</observe.model.version>
<!-- build timestamp configuration -->
@@ -157,7 +157,7 @@
<!--<eugenePluginVersion>3.0-alpha-13</eugenePluginVersion>-->
<!--<processorPluginVersion>1.3</processorPluginVersion>-->
- <lib.version.java4all.jaxx>3.0-alpha-12</lib.version.java4all.jaxx>
+ <lib.version.java4all.jaxx>3.0-alpha-26</lib.version.java4all.jaxx>
<lib.version.nuiton.topia>3.3</lib.version.nuiton.topia>
<lib.version.nuiton.validation>3.1</lib.version.nuiton.validation>
<xworkVersion>2.3.34</xworkVersion>
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/2e66cbe9569a34d5d033b9317ec…
---
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/2e66cbe9569a34d5d033b9317ec…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][develop] 4 commits: improve longline position api (but still could be improved ?)
by Tony CHEMIT 01 Apr '18
by Tony CHEMIT 01 Apr '18
01 Apr '18
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
0c820790 by Tony CHEMIT at 2018-04-01T09:22:55Z
improve longline position api (but still could be improved ?)
- - - - -
1491da9a by Tony CHEMIT at 2018-04-01T09:22:59Z
improve sql request api (requires now db version)
- - - - -
9f65eea2 by Tony CHEMIT at 2018-04-01T09:22:59Z
optimize dependences + add missing license header
- - - - -
4cd6cb75 by Tony CHEMIT at 2018-04-01T09:22:59Z
fix a template
- - - - -
30 changed files:
- client/src/main/ftl/dataSourceConnectionReport_en.ftl
- client/src/main/ftl/dataSourceConnectionReport_es.ftl
- client/src/main/ftl/dataSourceConnectionReport_fr.ftl
- client/src/main/java/fr/ird/observe/client/ui/admin/save/SaveLocalUIHandler.java
- client/src/main/java/fr/ird/observe/client/ui/content/data/longline/LonglinePositionHelper.java
- client/src/main/java/fr/ird/observe/client/ui/storage/StorageUIHandler.java
- client/src/main/java/fr/ird/observe/client/ui/storage/StorageUIModel.java
- dto/src/main/java/fr/ird/observe/binder/data/longline/BasketDtoReferenceBinder.java
- dto/src/main/java/fr/ird/observe/binder/data/longline/BranchlineDtoReferenceBinder.java
- − dto/src/main/java/fr/ird/observe/dto/data/longline/BasketWithSectionIdDto.java
- dto/src/main/java/fr/ird/observe/dto/data/longline/BasketWithSectionIdReference.java
- − dto/src/main/java/fr/ird/observe/dto/data/longline/BranchlineWithBasketIdDto.java
- dto/src/main/java/fr/ird/observe/dto/data/longline/BranchlineWithBasketIdReference.java
- dto/src/main/models/Observe.model
- persistence/pom.xml
- persistence/src/main/java/fr/ird/observe/binder/data/longline/BasketEntityReferenceBinder.java
- persistence/src/main/java/fr/ird/observe/binder/data/longline/BranchlineEntityReferenceBinder.java
- persistence/src/main/java/fr/ird/observe/persistence/ObserveTopiaApplicationContext.java
- persistence/src/main/java/fr/ird/observe/persistence/ObserveTopiaConfiguration.java
- + persistence/src/main/resources/hibernate.properties
- services-local/src/main/java/fr/ird/observe/services/local/ObserveJdbcHelper.java
- services-local/src/main/java/fr/ird/observe/services/local/ObserveServiceContextLocal.java
- services-local/src/main/java/fr/ird/observe/services/local/service/DataSourceServiceLocal.java
- services-local/src/main/java/fr/ird/observe/services/local/service/ObserveServiceLocal.java
- services-local/src/main/java/fr/ird/observe/services/local/service/data/TripManagementServiceLocal.java
- services-local/src/main/java/fr/ird/observe/services/local/service/data/longline/LonglinePositionSetDtoHelper.java
- services-local/src/main/java/fr/ird/observe/services/local/service/referential/ReferentialServiceLocal.java
- services-local/src/test/java/fr/ird/observe/services/local/service/sql/MigrateTestsDatabases.java
- services-local/src/test/java/fr/ird/observe/services/local/service/sql/SqlScriptProducerServiceLocalTest.java
- services/src/main/java/fr/ird/observe/services/service/sql/AddSqlScriptProducerRequest.java
Changes:
=====================================
client/src/main/ftl/dataSourceConnectionReport_en.ftl
=====================================
--- a/client/src/main/ftl/dataSourceConnectionReport_en.ftl
+++ b/client/src/main/ftl/dataSourceConnectionReport_en.ftl
@@ -57,14 +57,14 @@
<li>
<!--FIXME Bavencoff 17/03/2016 use decorator-->
- [${program.getPropertyValue("gearTypePrefix")}] Programme ${program.getPropertyValue("label")}
+ [${program.getGearTypePrefix()}] Programme ${program.getLabel()}
<ul>
<#list selectDataModel.getSelectedTripsByProgram(program) as trip>
<li>
<!--FIXME Bavencoff 17/03/2016 use decorator-->
- ${trip.getPropertyValue("startDate")?date?string.short} - ${trip.getPropertyValue("endDate")?date?string.short} - ${trip.getPropertyValue("vessel")} - ${trip.getPropertyValue("observer")}
+ ${trip.getStartDate()?date?string.short} - ${trip.getEndDate()?date?string.short} - ${trip.getVesselLabel()} - ${trip.getObserverLabel()}
</li>
</#list>
=====================================
client/src/main/ftl/dataSourceConnectionReport_es.ftl
=====================================
--- a/client/src/main/ftl/dataSourceConnectionReport_es.ftl
+++ b/client/src/main/ftl/dataSourceConnectionReport_es.ftl
@@ -62,14 +62,14 @@
<li>
<!--FIXME Bavencoff 17/03/2016 use decorator-->
- [${program.getPropertyValue("gearTypePrefix")}] Programa ${program.getPropertyValue("label")}
+ [${program.getGearTypePrefix()}] Programa ${program.getLabel()}
<ul>
<#list selectDataModel.getSelectedTripsByProgram(program) as trip>
<li>
<!--FIXME Bavencoff 17/03/2016 use decorator-->
- ${trip.getPropertyValue("startDate")?date?string.short} - ${trip.getPropertyValue("endDate")?date?string.short} - ${trip.getPropertyValue("vessel")} - ${trip.getPropertyValue("observer")}
+ ${trip.getStartDate()?date?string.short} - ${trip.getEndDate()?date?string.short} - ${trip.getVesselLabel()} - ${trip.getObserverLabel()}
</li>
</#list>
=====================================
client/src/main/ftl/dataSourceConnectionReport_fr.ftl
=====================================
--- a/client/src/main/ftl/dataSourceConnectionReport_fr.ftl
+++ b/client/src/main/ftl/dataSourceConnectionReport_fr.ftl
@@ -57,14 +57,14 @@
<li>
<!--FIXME Bavencoff 17/03/2016 use decorator-->
- [${program.getPropertyValue("gearTypePrefix")}] Programme ${program.getPropertyValue("label")}
+ [${program.getGearTypePrefix()}] Programme ${program.getLabel()}
<ul>
<#list selectDataModel.getSelectedTripsByProgram(program) as trip>
<li>
<!--FIXME Bavencoff 17/03/2016 use decorator-->
- ${trip.getPropertyValue("startDate")?date?string.short} - ${trip.getPropertyValue("endDate")?date?string.short} - ${trip.getPropertyValue("vessel")} - ${trip.getPropertyValue("observer")}
+ ${trip.getStartDate()?date?string.short} - ${trip.getEndDate()?date?string.short} - ${trip.getVesselLabel()} - ${trip.getObserverLabel()}
</li>
</#list>
=====================================
client/src/main/java/fr/ird/observe/client/ui/admin/save/SaveLocalUIHandler.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/admin/save/SaveLocalUIHandler.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/admin/save/SaveLocalUIHandler.java
@@ -140,7 +140,7 @@ public class SaveLocalUIHandler extends AdminTabUIHandler<SaveLocalUI> implement
File backupFile = stepModel.getBackupFile();
SqlScriptProducerService dumpService = source.getSqlScriptProducerService();
- AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forH2().addSchema().addReferential().addAllData();
+ AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forH2(source.getVersion()).addSchema().addReferential().addAllData();
byte[] dump = dumpService.produceAddSqlScript(request).getSqlCode();
try (FileOutputStream outputStream = new FileOutputStream(backupFile)) {
=====================================
client/src/main/java/fr/ird/observe/client/ui/content/data/longline/LonglinePositionHelper.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/content/data/longline/LonglinePositionHelper.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/content/data/longline/LonglinePositionHelper.java
@@ -268,39 +268,31 @@ public class LonglinePositionHelper<D extends LonglinePositionAwareDto> {
}
- protected SectionReference getSection(BasketReference basket) {
-
- String sectionId = ((BasketWithSectionIdReference) basket).getSectionId();
-
+ private SectionReference getSection(BasketReference basket) {
+ String sectionId = basket.getSectionId();
return sectionUniverse.stream()
.filter(s -> sectionId.equals(s.getId()))
.findFirst()
.orElse(null);
-
}
- protected BasketReference getBasket(BranchlineReference branchline) {
-
- String basketId = ((BranchlineWithBasketIdReference) branchline).getBasketId();
-
+ private BasketReference getBasket(BranchlineReference branchline) {
+ String basketId = branchline.getBasketId();
return basketUniverse.stream()
.filter(b -> basketId.equals(b.getId()))
.findFirst()
.orElse(null);
-
}
- protected List<BasketReference> getBaskets(SectionReference section) {
-
+ private List<BasketReference> getBaskets(SectionReference section) {
return basketUniverse.stream()
- .filter(b -> section.getId().equals(((BasketWithSectionIdReference) b).getSectionId()))
+ .filter(b -> section.getId().equals(b.getSectionId()))
.collect(Collectors.toList());
}
- protected List<BranchlineReference> getBranchlines(BasketReference basket) {
-
+ private List<BranchlineReference> getBranchlines(BasketReference basket) {
return branchlineUniverse.stream()
- .filter(b -> basket.getId().equals(((BranchlineWithBasketIdReference) b).getBasketId()))
+ .filter(b -> basket.getId().equals(b.getBasketId()))
.collect(Collectors.toList());
}
=====================================
client/src/main/java/fr/ird/observe/client/ui/storage/StorageUIHandler.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/storage/StorageUIHandler.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/storage/StorageUIHandler.java
@@ -655,7 +655,7 @@ public class StorageUIHandler implements UIHandler<StorageUI> {
log.debug(dst);
}
- AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forH2().addSchema().addReferential().addAllData();
+ AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forH2(ObserveSwingApplicationContext.get().getConfig().getModelVersion()).addSchema().addReferential().addAllData();
byte[] dataDump = dumpProducerService.produceAddSqlScript(request).getSqlCode();
try (FileOutputStream outputStream = new FileOutputStream(dst)) {
=====================================
client/src/main/java/fr/ird/observe/client/ui/storage/StorageUIModel.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/storage/StorageUIModel.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/storage/StorageUIModel.java
@@ -1546,7 +1546,7 @@ public class StorageUIModel extends WizardModel<StorageStep> {
SqlScriptProducerService dumpService = source.getSqlScriptProducerService();
- AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forH2().addSchema().addReferential();
+ AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forH2(source.getVersion()).addSchema().addReferential();
byte[] dump = dumpService.produceAddSqlScript(request).getSqlCode();
result.setImportDatabase(dump);
=====================================
dto/src/main/java/fr/ird/observe/binder/data/longline/BasketDtoReferenceBinder.java
=====================================
--- a/dto/src/main/java/fr/ird/observe/binder/data/longline/BasketDtoReferenceBinder.java
+++ b/dto/src/main/java/fr/ird/observe/binder/data/longline/BasketDtoReferenceBinder.java
@@ -41,7 +41,7 @@ public class BasketDtoReferenceBinder extends DataDtoReferenceBinder<BasketDto,
@Override
public BasketReference toReference(ReferentialLocale referentialLocale, BasketDto dto) {
- return new BasketReference(dto, dto.getSettingIdentifier(), dto.getHaulingIdentifier());
+ return new BasketReference(dto, dto.getSettingIdentifier(), dto.getHaulingIdentifier(), null);
}
}
=====================================
dto/src/main/java/fr/ird/observe/binder/data/longline/BranchlineDtoReferenceBinder.java
=====================================
--- a/dto/src/main/java/fr/ird/observe/binder/data/longline/BranchlineDtoReferenceBinder.java
+++ b/dto/src/main/java/fr/ird/observe/binder/data/longline/BranchlineDtoReferenceBinder.java
@@ -41,7 +41,7 @@ public class BranchlineDtoReferenceBinder extends DataDtoReferenceBinder<Branchl
@Override
public BranchlineReference toReference(ReferentialLocale referentialLocale, BranchlineDto dto) {
- return new BranchlineReference(dto, dto.getSettingIdentifier(), dto.getHaulingIdentifier());
+ return new BranchlineReference(dto, dto.getSettingIdentifier(), dto.getHaulingIdentifier(), null);
}
}
=====================================
dto/src/main/java/fr/ird/observe/dto/data/longline/BasketWithSectionIdDto.java deleted
=====================================
--- a/dto/src/main/java/fr/ird/observe/dto/data/longline/BasketWithSectionIdDto.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package fr.ird.observe.dto.data.longline;
-
-/*-
- * #%L
- * ObServe :: Dto
- * %%
- * Copyright (C) 2008 - 2017 IRD, Code Lutin, Ultreia.io
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-public class BasketWithSectionIdDto extends BasketDto {
-
- private static final long serialVersionUID = 3690753995685507632L;
-
- public static final String PROPERTY_SECTION_ID = "sectionId";
-}
=====================================
dto/src/main/java/fr/ird/observe/dto/data/longline/BasketWithSectionIdReference.java
=====================================
--- a/dto/src/main/java/fr/ird/observe/dto/data/longline/BasketWithSectionIdReference.java
+++ b/dto/src/main/java/fr/ird/observe/dto/data/longline/BasketWithSectionIdReference.java
@@ -34,10 +34,11 @@ public class BasketWithSectionIdReference extends BasketReference {
private final String sectionId;
public BasketWithSectionIdReference(DtoReferenceAware dto, Integer settingIdentifier, Integer haulingIdentifier, String sectionId) {
- super(dto, settingIdentifier, haulingIdentifier);
+ super(dto, settingIdentifier, haulingIdentifier, sectionId);
this.sectionId = sectionId;
}
+ @Override
public String getSectionId() {
return sectionId;
}
=====================================
dto/src/main/java/fr/ird/observe/dto/data/longline/BranchlineWithBasketIdDto.java deleted
=====================================
--- a/dto/src/main/java/fr/ird/observe/dto/data/longline/BranchlineWithBasketIdDto.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package fr.ird.observe.dto.data.longline;
-
-/*-
- * #%L
- * ObServe :: Dto
- * %%
- * Copyright (C) 2008 - 2017 IRD, Code Lutin, Ultreia.io
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-public class BranchlineWithBasketIdDto extends BranchlineDto {
-
- private static final long serialVersionUID = 7018072108318352694L;
-
- public static final String PROPERTY_BASKET_ID = "basketId";
-
-}
=====================================
dto/src/main/java/fr/ird/observe/dto/data/longline/BranchlineWithBasketIdReference.java
=====================================
--- a/dto/src/main/java/fr/ird/observe/dto/data/longline/BranchlineWithBasketIdReference.java
+++ b/dto/src/main/java/fr/ird/observe/dto/data/longline/BranchlineWithBasketIdReference.java
@@ -10,12 +10,12 @@ package fr.ird.observe.dto.data.longline;
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
@@ -34,11 +34,12 @@ public class BranchlineWithBasketIdReference extends BranchlineReference {
private final String basketId;
public BranchlineWithBasketIdReference(DtoReferenceAware dto, Integer settingIdentifier, Integer haulingIdentifier, String basketId) {
- super(dto, settingIdentifier, haulingIdentifier);
+ super(dto, settingIdentifier, haulingIdentifier, basketId);
this.basketId = basketId;
}
+ @Override
public String getBasketId() {
return basketId;
}
=====================================
dto/src/main/models/Observe.model
=====================================
--- a/dto/src/main/models/Observe.model
+++ b/dto/src/main/models/Observe.model
@@ -109,14 +109,15 @@ individualWeight + {*:1} Float
baitSettingStatus {*:1} fr.ird.observe.dto.referential.longline.BaitSettingStatusReference
baitType {*:1} fr.ird.observe.dto.referential.longline.BaitTypeReference
-data.longline.Basket > data.Data >> data.longline.LonglineCompositionDto | references=settingIdentifier,haulingIdentifier
+data.longline.Basket > data.Data >> data.longline.LonglineCompositionDto | references=settingIdentifier,haulingIdentifier,sectionId
settingIdentifier + {*:1} Integer
haulingIdentifier + {*:1} Integer
floatline1Length + {*:1} Float
floatline2Length + {*:1} Float
branchline + {*} data.longline.Branchline | ordered unique
+section + {*:1} fr.ird.observe.dto.data.longline.SectionReference
-data.longline.Branchline > data.Commentable >> data.longline.LonglineCompositionDto | references=settingIdentifier,haulingIdentifier
+data.longline.Branchline > data.Commentable >> data.longline.LonglineCompositionDto | references=settingIdentifier,haulingIdentifier,basketId
settingIdentifier + {*:1} Integer
haulingIdentifier + {*:1} Integer
depthRecorder + {*:1} Boolean
@@ -139,6 +140,7 @@ hookType {*:0..1} fr.ird.observe.dto.referential.longline.HookTypeReference
tracelineType {*:0..1} fr.ird.observe.dto.referential.longline.LineTypeReference
topType {*:0..1} fr.ird.observe.dto.referential.longline.LineTypeReference
baitType {*:0..1} fr.ird.observe.dto.referential.longline.BaitTypeReference
+basket + {*:1} fr.ird.observe.dto.data.longline.BasketReference
data.longline.BranchlinesComposition > data.Data | references=topTypeLabel,tracelineTypeLabel,length,proportion
length + {*:1} Float
=====================================
persistence/pom.xml
=====================================
--- a/persistence/pom.xml
+++ b/persistence/pom.xml
@@ -133,6 +133,11 @@
<artifactId>hibernate-core</artifactId>
</dependency>
<dependency>
+ <groupId>net.bytebuddy</groupId>
+ <artifactId>byte-buddy</artifactId>
+ <scope>runtime</scope>
+ </dependency>
+ <dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<scope>runtime</scope>
@@ -140,6 +145,7 @@
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-hikaricp</artifactId>
+ <scope>runtime</scope>
</dependency>
<!-- test -->
@@ -277,6 +283,26 @@
</executions>
</plugin>
+ <plugin>
+ <groupId>org.hibernate.orm.tooling</groupId>
+ <artifactId>hibernate-enhance-maven-plugin</artifactId>
+ <version>${lib.version.hibernate}</version>
+ <executions>
+ <execution>
+ <configuration>
+ <failOnError>true</failOnError>
+ <enableLazyInitialization>true</enableLazyInitialization>
+ <enableDirtyTracking>true</enableDirtyTracking>
+ <enableAssociationManagement>true</enableAssociationManagement>
+ <enableExtendedEnhancement>false</enableExtendedEnhancement>
+ </configuration>
+ <goals>
+ <goal>enhance</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
</plugins>
</build>
</project>
=====================================
persistence/src/main/java/fr/ird/observe/binder/data/longline/BasketEntityReferenceBinder.java
=====================================
--- a/persistence/src/main/java/fr/ird/observe/binder/data/longline/BasketEntityReferenceBinder.java
+++ b/persistence/src/main/java/fr/ird/observe/binder/data/longline/BasketEntityReferenceBinder.java
@@ -27,6 +27,7 @@ import fr.ird.observe.dto.referential.ReferentialLocale;
import fr.ird.observe.dto.data.longline.BasketDto;
import fr.ird.observe.dto.data.longline.BasketReference;
import fr.ird.observe.entities.longline.Basket;
+import fr.ird.observe.entities.longline.Section;
/**
* Created on 24/11/15.
@@ -39,10 +40,13 @@ public class BasketEntityReferenceBinder extends DataEntityReferenceBinderSuppor
super(BasketDto.class, BasketReference.class, Basket.class);
}
+ public BasketReference toReference(Basket entity, Section section) {
+ return new BasketReference(entity, entity.getSettingIdentifier(), entity.getHaulingIdentifier(), section.getTopiaId());
+ }
+
@Override
public BasketReference toReference(ReferentialLocale referentialLocale, Basket entity) {
-
- return new BasketReference(entity, entity.getSettingIdentifier(), entity.getHaulingIdentifier());
+ return new BasketReference(entity, entity.getSettingIdentifier(), entity.getHaulingIdentifier(), null);
}
}
=====================================
persistence/src/main/java/fr/ird/observe/binder/data/longline/BranchlineEntityReferenceBinder.java
=====================================
--- a/persistence/src/main/java/fr/ird/observe/binder/data/longline/BranchlineEntityReferenceBinder.java
+++ b/persistence/src/main/java/fr/ird/observe/binder/data/longline/BranchlineEntityReferenceBinder.java
@@ -23,9 +23,10 @@ package fr.ird.observe.binder.data.longline;
*/
import fr.ird.observe.binder.data.DataEntityReferenceBinderSupport;
-import fr.ird.observe.dto.referential.ReferentialLocale;
import fr.ird.observe.dto.data.longline.BranchlineDto;
import fr.ird.observe.dto.data.longline.BranchlineReference;
+import fr.ird.observe.dto.referential.ReferentialLocale;
+import fr.ird.observe.entities.longline.Basket;
import fr.ird.observe.entities.longline.Branchline;
/**
@@ -39,10 +40,13 @@ public class BranchlineEntityReferenceBinder extends DataEntityReferenceBinderSu
super(BranchlineDto.class, BranchlineReference.class, Branchline.class);
}
+ public BranchlineReference toReference(Branchline entity, Basket basket) {
+ return new BranchlineReference(entity, entity.getSettingIdentifier(), entity.getHaulingIdentifier(), basket.getTopiaId());
+ }
+
@Override
public BranchlineReference toReference(ReferentialLocale referentialLocale, Branchline entity) {
-
- return new BranchlineReference(entity, entity.getSettingIdentifier(), entity.getHaulingIdentifier());
+ return new BranchlineReference(entity, entity.getSettingIdentifier(), entity.getHaulingIdentifier(), null);
}
}
=====================================
persistence/src/main/java/fr/ird/observe/persistence/ObserveTopiaApplicationContext.java
=====================================
--- a/persistence/src/main/java/fr/ird/observe/persistence/ObserveTopiaApplicationContext.java
+++ b/persistence/src/main/java/fr/ird/observe/persistence/ObserveTopiaApplicationContext.java
@@ -279,33 +279,6 @@ public class ObserveTopiaApplicationContext extends AbstractObserveTopiaApplicat
log.info(String.format("For TripSeine, found %d tables to use.", tripSeineTables.size()));
}
return tripSeineTables;
-
- /*
- return TopiaSqlTables.builder(filterTable, ObserveEntityEnum.TripSeine) // → TripSeine
- .addAndEnterJoinTable(ObserveEntityEnum.GearUseFeaturesSeine) // → GearUseFeaturesSeine
- .addJoinTable(ObserveEntityEnum.GearUseFeaturesMeasurementSeine)
- .backToParent() // ← TripSeine
- .addAndEnterJoinTable(ObserveEntityEnum.Route) // → Route
- .addAndEnterJoinTable(ObserveEntityEnum.ActivitySeine) // → ActivitySeine
- .addAndEnterReverseJoinTable(ObserveEntityEnum.SetSeine) // → SetSeine
- .addJoinTable(ObserveEntityEnum.SchoolEstimate)
- .addJoinTable(ObserveEntityEnum.NonTargetCatch)
- .addJoinTable(ObserveEntityEnum.TargetCatch)
- .addAndEnterJoinTable(ObserveEntityEnum.TargetSample) // → TargetSample
- .addJoinTable(ObserveEntityEnum.TargetLength)
- .backToParent() // ← SetSeine
- .addAndEnterJoinTable(ObserveEntityEnum.NonTargetSample) // → NonTargetSample
- .addJoinTable(ObserveEntityEnum.NonTargetLength)
- .backToParent() // ← SetSeine
- .backToParent() // ← ActivitySeine
- .addAssociationTable(ObserveEntityEnum.ObservedSystem.name(), true)
- .addAndEnterJoinTable(ObserveEntityEnum.FloatingObject) // → FloatingObject
- .addJoinTable(ObserveEntityEnum.ObjectObservedSpecies)
- .addJoinTable(ObserveEntityEnum.ObjectSchoolEstimate)
- .addJoinTable(ObserveEntityEnum.TransmittingBuoy)
- .build();
- */
-
}
public TopiaSqlTables getTripLonglineTables() {
@@ -346,43 +319,9 @@ public class ObserveTopiaApplicationContext extends AbstractObserveTopiaApplicat
null);
tripLonglineTables.replaceTable("observe_longline.branchline", branchlineTable);
-
-
}
return tripLonglineTables;
-
- /*
- return TopiaSqlTables.builder(filterTable, ObserveEntityEnum.TripLongline) // → TripLongline
- .addAndEnterJoinTable(ObserveEntityEnum.GearUseFeaturesLongline) // → GearUseFeaturesLongline
- .addJoinTable(ObserveEntityEnum.GearUseFeaturesMeasurementLongline)
- .backToParent() // ← TripLongline
- .addAndEnterJoinTable(ObserveEntityEnum.ActivityLongline) // → ActivityLongline
- .addAndEnterReverseJoinTable(ObserveEntityEnum.SetLongline) // → SetLongline
- .addJoinTable(ObserveEntityEnum.BaitsComposition)
- .addJoinTable(ObserveEntityEnum.FloatlinesComposition)
- .addJoinTable(ObserveEntityEnum.HooksComposition)
- .addJoinTable(ObserveEntityEnum.BranchlinesComposition)
- .addAssociationTable(ObserveEntityEnum.MitigationType.name(), true)
- .addAndEnterJoinTable(ObserveEntityEnum.Section) // → Section
- .addAndEnterJoinTable(ObserveEntityEnum.Basket) // → Basket
- .addJoinTable(ObserveEntityEnum.Branchline)
- .backToParent() // ← Section
- .backToParent() // ← SetLongline
- .addAndEnterJoinTable(ObserveEntityEnum.CatchLongline) // → CatchLongline
- .addJoinTable(ObserveEntityEnum.SizeMeasure)
- .addJoinTable(ObserveEntityEnum.WeightMeasure)
- .addAssociationTable("Predator", true)
- .backToParent() // ← SetLongline
- .addAndEnterJoinTable(ObserveEntityEnum.Tdr) // → Tdr
- .addJoinTable(ObserveEntityEnum.TdrRecord)
- .addAssociationTable(ObserveEntityEnum.Species.name(), true)
- .backToParent() // ← SetLongline
- .backToParent() // ← ActivityLongline
- .addJoinTable(ObserveEntityEnum.Encounter)
- .addJoinTable(ObserveEntityEnum.SensorUsed)
- .build();
- */
- }
+}
public TopiaSqlTables getReferentialTables() {
@@ -391,139 +330,9 @@ public class ObserveTopiaApplicationContext extends AbstractObserveTopiaApplicat
referentialTables = topiaSqlTablesFactory.newReplicateEntityTables(
new TripReplicateTablesPredicate(),
Entities.REFERENCE_ENTITIES);
-// ObserveEntityEnum.VesselSizeCategory,
-// ObserveEntityEnum.Country,
-// ObserveEntityEnum.Harbour,
-// ObserveEntityEnum.VesselType,
-// ObserveEntityEnum.Vessel,
-// ObserveEntityEnum.Ocean,
-// ObserveEntityEnum.SpeciesGroup,
-// ObserveEntityEnum.Species,
-// ObserveEntityEnum.Sex,
-// ObserveEntityEnum.FpaZone,
-// ObserveEntityEnum.SpeciesList,
-// ObserveEntityEnum.Person,
-// ObserveEntityEnum.Organism,
-// ObserveEntityEnum.LengthWeightParameter,
-// ObserveEntityEnum.Program,
-// ObserveEntityEnum.GearCaracteristicType,
-// ObserveEntityEnum.GearCaracteristic,
-// ObserveEntityEnum.Gear,
-// ObserveEntityEnum.LastUpdateDate,
-// ObserveEntityEnum.VesselActivitySeine,
-// ObserveEntityEnum.SurroundingActivity,
-// ObserveEntityEnum.ReasonForNullSet,
-// ObserveEntityEnum.ReasonForNoFishing,
-// ObserveEntityEnum.SpeciesFate,
-// ObserveEntityEnum.ObjectFate,
-// ObserveEntityEnum.WeightCategory,
-// ObserveEntityEnum.DetectionMode,
-// ObserveEntityEnum.TransmittingBuoyOperation,
-// ObserveEntityEnum.ObjectOperation,
-// ObserveEntityEnum.ReasonForDiscard,
-// ObserveEntityEnum.SpeciesStatus,
-// ObserveEntityEnum.ObservedSystem,
-// ObserveEntityEnum.TransmittingBuoyType,
-// ObserveEntityEnum.ObjectType,
-// ObserveEntityEnum.Wind,
-// ObserveEntityEnum.BaitHaulingStatus,
-// ObserveEntityEnum.BaitSettingStatus,
-// ObserveEntityEnum.BaitType,
-// ObserveEntityEnum.CatchFateLongline,
-// ObserveEntityEnum.EncounterType,
-// ObserveEntityEnum.Healthness,
-// ObserveEntityEnum.HookPosition,
-// ObserveEntityEnum.HookSize,
-// ObserveEntityEnum.HookType,
-// ObserveEntityEnum.ItemVerticalPosition,
-// ObserveEntityEnum.ItemHorizontalPosition,
-// ObserveEntityEnum.LightsticksColor,
-// ObserveEntityEnum.LightsticksType,
-// ObserveEntityEnum.LineType,
-// ObserveEntityEnum.MaturityStatus,
-// ObserveEntityEnum.MitigationType,
-// ObserveEntityEnum.SensorBrand,
-// ObserveEntityEnum.SensorDataFormat,
-// ObserveEntityEnum.SensorType,
-// ObserveEntityEnum.SettingShape,
-// ObserveEntityEnum.SizeMeasureType,
-// ObserveEntityEnum.StomacFullness,
-// ObserveEntityEnum.TripType,
-// ObserveEntityEnum.VesselActivityLongline,
-// ObserveEntityEnum.WeightMeasureType);
}
log.info(String.format("For Referential, found %d tables to use.", referentialTables.size()));
return referentialTables;
-
- /*
-
- return TopiaSqlTables.builder()
- .addMainTable(ObserveEntityEnum.VesselSizeCategory) // → VesselSizeCategory
- .addMainTable(ObserveEntityEnum.Country) // → Country
- .addMainTable(ObserveEntityEnum.Harbour) // → Harbour
- .addMainTable(ObserveEntityEnum.VesselType) // → VesselType
- .addMainTable(ObserveEntityEnum.Vessel) // → Vessel
- .addMainTable(ObserveEntityEnum.Ocean) // → Ocean
- .addMainTable(ObserveEntityEnum.SpeciesGroup) // → SpeciesGroup
- .addMainTable(ObserveEntityEnum.Species) // → Species
- .addAssociationTable(ObserveEntityEnum.Ocean.name(), false)
- .addMainTable(ObserveEntityEnum.Sex) // → Sex
- .addMainTable(ObserveEntityEnum.FpaZone) // → FpaZone
- .addMainTable(ObserveEntityEnum.SpeciesList) // → SpeciesList
- .addAssociationTable(ObserveEntityEnum.Species.name(), false)
- .addMainTable(ObserveEntityEnum.Person) // → Person
- .addMainTable(ObserveEntityEnum.Organism) // → Organism
- .addMainTable(ObserveEntityEnum.LengthWeightParameter) // → LengthWeightParameter
- .addMainTable(ObserveEntityEnum.Program) // → Program
- .addMainTable(ObserveEntityEnum.GearCaracteristicType) // → GearCaracteristicType
- .addMainTable(ObserveEntityEnum.GearCaracteristic) // → GearCaracteristic
- .addMainTable(ObserveEntityEnum.Gear) // → Gear
- .addAssociationTable(ObserveEntityEnum.GearCaracteristic.name(), false)
- .addMainTable(ObserveEntityEnum.LastUpdateDate) // → LastUpdateDate
- .addMainTable(ObserveEntityEnum.VesselActivitySeine) // → VesselActivitySeine
- .addMainTable(ObserveEntityEnum.SurroundingActivity) // → SurroundingActivity
- .addMainTable(ObserveEntityEnum.ReasonForNullSet) // → ReasonForNullSet
- .addMainTable(ObserveEntityEnum.ReasonForNoFishing) // → ReasonForNoFishing
- .addMainTable(ObserveEntityEnum.SpeciesFate) // → SpeciesFate
- .addMainTable(ObserveEntityEnum.ObjectFate) // → ObjectFate
- .addMainTable(ObserveEntityEnum.WeightCategory) // → WeightCategory
- .addMainTable(ObserveEntityEnum.DetectionMode) // → DetectionMode
- .addMainTable(ObserveEntityEnum.TransmittingBuoyOperation) // → TransmittingBuoyOperation
- .addMainTable(ObserveEntityEnum.ObjectOperation) // → ObjectOperation
- .addMainTable(ObserveEntityEnum.ReasonForDiscard) // → ReasonForDiscard
- .addMainTable(ObserveEntityEnum.SpeciesStatus) // → SpeciesStatus
- .addMainTable(ObserveEntityEnum.ObservedSystem) // → ObservedSystem
- .addMainTable(ObserveEntityEnum.TransmittingBuoyType) // → TransmittingBuoyType
- .addMainTable(ObserveEntityEnum.ObjectType) // → ObjectType
- .addMainTable(ObserveEntityEnum.Wind) // → Wind
- .addMainTable(ObserveEntityEnum.BaitHaulingStatus) // → BaitHaulingStatus
- .addMainTable(ObserveEntityEnum.BaitSettingStatus) // → BaitSettingStatus
- .addMainTable(ObserveEntityEnum.BaitType) // → BaitType
- .addMainTable(ObserveEntityEnum.CatchFateLongline) // → CatchFateLongline
- .addMainTable(ObserveEntityEnum.EncounterType) // → EncounterType
- .addMainTable(ObserveEntityEnum.Healthness) // → Healthness
- .addMainTable(ObserveEntityEnum.HookPosition) // → HookPosition
- .addMainTable(ObserveEntityEnum.HookSize) // → HookSize
- .addMainTable(ObserveEntityEnum.HookType) // → HookType
- .addMainTable(ObserveEntityEnum.ItemVerticalPosition) // → ItemVerticalPosition
- .addMainTable(ObserveEntityEnum.ItemHorizontalPosition) // → ItemHorizontalPosition
- .addMainTable(ObserveEntityEnum.LightsticksColor) // → LightsticksColor
- .addMainTable(ObserveEntityEnum.LightsticksType) // → LightsticksType
- .addMainTable(ObserveEntityEnum.LineType) // → LineType
- .addMainTable(ObserveEntityEnum.MaturityStatus) // → MaturityStatus
- .addMainTable(ObserveEntityEnum.MitigationType) // → MitigationType
- .addMainTable(ObserveEntityEnum.SensorBrand) // → SensorBrand
- .addMainTable(ObserveEntityEnum.SensorDataFormat) // → SensorDataFormat
- .addMainTable(ObserveEntityEnum.SensorType) // → SensorType
- .addMainTable(ObserveEntityEnum.SettingShape) // → SettingShape
- .addMainTable(ObserveEntityEnum.SizeMeasureType) // → SizeMeasureType
- .addMainTable(ObserveEntityEnum.StomacFullness) // → StomacFullness
- .addMainTable(ObserveEntityEnum.TripType) // → TripType
- .addMainTable(ObserveEntityEnum.VesselActivityLongline) // → VesselActivityLongline
- .addMainTable(ObserveEntityEnum.WeightMeasureType) // → WeightMeasureType
-
- .build();
-*/
}
public <E extends ObserveReferentialEntity> TopiaSqlTables getReferentialTable(Class<E> entityType) {
=====================================
persistence/src/main/java/fr/ird/observe/persistence/ObserveTopiaConfiguration.java
=====================================
--- a/persistence/src/main/java/fr/ird/observe/persistence/ObserveTopiaConfiguration.java
+++ b/persistence/src/main/java/fr/ird/observe/persistence/ObserveTopiaConfiguration.java
@@ -22,7 +22,11 @@ package fr.ird.observe.persistence;
* #L%
*/
-import org.hibernate.hikaricp.internal.HikariCPConnectionProvider;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Map;
+import java.util.Properties;
+import java.util.TreeMap;
import org.nuiton.topia.persistence.BeanTopiaConfiguration;
import org.nuiton.topia.persistence.HibernateAvailableSettings;
import org.nuiton.topia.persistence.jdbc.JdbcConfiguration;
@@ -36,27 +40,37 @@ public class ObserveTopiaConfiguration extends BeanTopiaConfiguration {
private static final long serialVersionUID = 1L;
- protected final boolean h2Configuration;
+ private final boolean h2Configuration;
protected final boolean showSql;
+ private static final Map<String, String> HIBERNATE_GLOBAL_PROPERTIES;
+
+ static {
+
+ Properties p = new Properties();
+ try (InputStream stream = ObserveTopiaPersistenceContext.class.getResourceAsStream("/hibernate.properties")) {
+ try {
+ p.load(stream);
+ } catch (IOException e) {
+ throw new IllegalStateException(e);
+ }
+ } catch (IOException e) {
+ throw new IllegalStateException(e);
+ }
+ HIBERNATE_GLOBAL_PROPERTIES = new TreeMap<>();
+ for (String s : p.stringPropertyNames()) {
+ HIBERNATE_GLOBAL_PROPERTIES.put(s, p.getProperty(s));
+ }
+
+ }
public ObserveTopiaConfiguration(JdbcConfiguration jdbcConfiguration, boolean h2Configuration, boolean showSql) {
super(jdbcConfiguration);
this.h2Configuration = h2Configuration;
this.showSql = showSql;
if (showSql) {
- hibernateExtraConfiguration.put("hibernate.show_sql", Boolean.TRUE.toString());
+ hibernateExtraConfiguration.put(HibernateAvailableSettings.SHOW_SQL, Boolean.TRUE.toString());
}
-
- hibernateExtraConfiguration.put(HibernateAvailableSettings.CONNECTION_PROVIDER, HikariCPConnectionProvider.class.getName());
- hibernateExtraConfiguration.put("hibernate.hikari.minimumIdle", "2");
- hibernateExtraConfiguration.put("hibernate.hikari.maximumPoolSize", "20");
- hibernateExtraConfiguration.put("hibernate.hikari.autoCommit", "false");
- hibernateExtraConfiguration.put("hibernate.hikari.registerMbeans", "true");
-
-// hibernateExtraConfiguration.put(HibernateAvailableSettings.CONNECTION_PROVIDER, "org.hibernate.c3p0.internal.C3P0ConnectionProvider");
-// hibernateExtraConfiguration.put(HibernateAvailableSettings.C3P0_MAX_SIZE, "500");
-// hibernateExtraConfiguration.put(HibernateAvailableSettings.C3P0_MAX_STATEMENTS, "500");
-// hibernateExtraConfiguration.put(HibernateAvailableSettings.C3P0_TIMEOUT, "100");
+ hibernateExtraConfiguration.putAll(HIBERNATE_GLOBAL_PROPERTIES);
}
public boolean isH2Configuration() {
=====================================
persistence/src/main/resources/hibernate.properties
=====================================
--- /dev/null
+++ b/persistence/src/main/resources/hibernate.properties
@@ -0,0 +1,29 @@
+###
+# #%L
+# ObServe :: Persistence
+# %%
+# Copyright (C) 2008 - 2018 IRD, Code Lutin, Ultreia.io
+# %%
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public
+# License along with this program. If not, see
+# <http://www.gnu.org/licenses/gpl-3.0.html>.
+# #L%
+###
+hibernate.bytecode.provider=bytebuddy
+hibernate.use_sql_comments=false
+hibernate.format_sql=false
+hibernate.connection.provider_class=org.hibernate.hikaricp.internal.HikariCPConnectionProvider
+hibernate.hikari.minimumIdle=2
+hibernate.hikari.maximumPoolSize=20
+hibernate.hikari.autoCommit=false
+#hibernate.hikari.registerMbeans=true
=====================================
services-local/src/main/java/fr/ird/observe/services/local/ObserveJdbcHelper.java
=====================================
--- a/services-local/src/main/java/fr/ird/observe/services/local/ObserveJdbcHelper.java
+++ b/services-local/src/main/java/fr/ird/observe/services/local/ObserveJdbcHelper.java
@@ -68,13 +68,20 @@ public class ObserveJdbcHelper extends JdbcHelper {
while (observerDataPrivilege.next()) {
String security = observerDataPrivilege.getString("PRIVILEGE");
+ String grantor = observerDataPrivilege.getString("GRANTOR");
String grantee = observerDataPrivilege.getString("GRANTEE");
// Il se peut que le login soit echappe sous la forme \"login\"
+ grantor= grantor.replaceAll("\\\\\"", "");
grantee = grantee.replaceAll("\\\\\"", "");
if (log.isDebugEnabled()) {
log.debug(String.format("(security %s) - grantee (%s)", security, grantee));
}
- if (grantee.equals(jdbcConfiguration.getJdbcConnectionUser())) {
+ if (grantor.equals(jdbcConfiguration.getJdbcConnectionUser())) {
+ if (log.isDebugEnabled()) {
+ log.debug("for " + tableName + " table " + grantor + '/' + security);
+ }
+ tablePrivileges.add(security);
+ } else if (grantee.equals(jdbcConfiguration.getJdbcConnectionUser())) {
if (log.isDebugEnabled()) {
log.debug("for " + tableName + " table " + grantee + '/' + security);
}
=====================================
services-local/src/main/java/fr/ird/observe/services/local/ObserveServiceContextLocal.java
=====================================
--- a/services-local/src/main/java/fr/ird/observe/services/local/ObserveServiceContextLocal.java
+++ b/services-local/src/main/java/fr/ird/observe/services/local/ObserveServiceContextLocal.java
@@ -88,7 +88,7 @@ public class ObserveServiceContextLocal {
return observeServiceInitializer.withDataSourceConnection();
}
- Optional<ObserveDataSourceConnectionTopia> getDataSourceConnection() {
+ public Optional<ObserveDataSourceConnectionTopia> getDataSourceConnection() {
//noinspection unchecked
return (Optional) observeServiceInitializer.getDataSourceConnection();
}
=====================================
services-local/src/main/java/fr/ird/observe/services/local/service/DataSourceServiceLocal.java
=====================================
--- a/services-local/src/main/java/fr/ird/observe/services/local/service/DataSourceServiceLocal.java
+++ b/services-local/src/main/java/fr/ird/observe/services/local/service/DataSourceServiceLocal.java
@@ -10,12 +10,12 @@ package fr.ird.observe.services.local.service;
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
@@ -26,7 +26,6 @@ import com.google.common.base.Joiner;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Sets;
-import fr.ird.observe.spi.DbModelHelper;
import fr.ird.observe.dto.db.ObserveDbUserDto;
import fr.ird.observe.dto.reference.ReferentialDtoReference;
import fr.ird.observe.entities.referentiel.ObserveReferentialEntity;
@@ -55,13 +54,7 @@ import fr.ird.observe.services.service.DatabaseDestroyNotAuthorizedException;
import fr.ird.observe.services.service.DatabaseNotFoundException;
import fr.ird.observe.services.service.sql.AddSqlScriptProducerRequest;
import fr.ird.observe.services.service.sql.SqlScriptProducerService;
-import java.io.File;
-import java.io.IOException;
-import java.nio.file.Files;
-import java.util.Optional;
-import java.util.Set;
-import java.util.UUID;
-import java.util.stream.Collectors;
+import fr.ird.observe.spi.DbModelHelper;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.topia.persistence.jdbc.JdbcHelper;
@@ -69,7 +62,15 @@ import org.nuiton.topia.persistence.metadata.TopiaMetadataEntity;
import org.nuiton.topia.persistence.metadata.TopiaMetadataModel;
import org.nuiton.topia.persistence.metadata.TopiaMetadataModelVisitor;
import org.nuiton.version.Version;
+import org.nuiton.version.Versions;
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.util.Optional;
+import java.util.Set;
+import java.util.UUID;
+import java.util.stream.Collectors;
import static org.nuiton.i18n.I18n.l;
@@ -234,7 +235,7 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS
temporaryTopiaApplicationContext.getMigrationService().runSchemaMigration();
SqlScriptProducerService dumpProducerService = serviceContext.newService(temporaryConfiguration, SqlScriptProducerService.class);
- AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forPostgres().addSchema().addReferential().addAllData();
+ AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forPostgres(dataSourceConfiguration.getModelVersion()).addSchema().addReferential().addAllData();
byte[] dump = dumpProducerService.produceAddSqlScript(request).getSqlCode();
topiaApplicationContext.executeSqlStatements(dump);
topiaApplicationContext.getMigrationService().createSchemaIfNotExist();
@@ -283,11 +284,12 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS
ObserveDataSourceConfiguration importDataSourceConfiguration = dataSourceCreateConfiguration.getImportReferentialDataSourceConfiguration();
+ Version dbVersion = Versions.valueOf(topiaApplicationContext.getModelVersion());
AddSqlScriptProducerRequest request;
if (((ObserveDataSourceConfigurationTopiaSupport) dataSourceConfiguration).isH2Database()) {
- request = AddSqlScriptProducerRequest.forH2();
+ request = AddSqlScriptProducerRequest.forH2(dbVersion);
} else {
- request = AddSqlScriptProducerRequest.forPostgres();
+ request = AddSqlScriptProducerRequest.forPostgres(dbVersion);
}
request.addReferential();
@@ -319,12 +321,12 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS
ObserveDataSourceConfiguration importDataSourceConfiguration = dataSourceCreateConfiguration.getImportDataDataSourceConfiguration();
-
+ Version dbVersion = Versions.valueOf(topiaApplicationContext.getModelVersion());
AddSqlScriptProducerRequest request;
if (((ObserveDataSourceConfigurationTopiaSupport) dataSourceConfiguration).isH2Database()) {
- request = AddSqlScriptProducerRequest.forH2();
+ request = AddSqlScriptProducerRequest.forH2(dbVersion);
} else {
- request = AddSqlScriptProducerRequest.forPostgres();
+ request = AddSqlScriptProducerRequest.forPostgres(dbVersion);
}
if (!referantialImported) {
@@ -612,8 +614,8 @@ public class DataSourceServiceLocal extends ObserveServiceLocal implements DataS
if (log.isDebugEnabled()) {
log.debug("User can write referential : " + writeReferential + ", " +
- "read data : " + readData + ", " +
- "write data : " + writeData + ".");
+ "read data : " + readData + ", " +
+ "write data : " + writeData + ".");
}
ObserveMigrationConfigurationProvider observeMigrationConfigurationProvider = ObserveMigrationConfigurationProvider.get();
=====================================
services-local/src/main/java/fr/ird/observe/services/local/service/ObserveServiceLocal.java
=====================================
--- a/services-local/src/main/java/fr/ird/observe/services/local/service/ObserveServiceLocal.java
+++ b/services-local/src/main/java/fr/ird/observe/services/local/service/ObserveServiceLocal.java
@@ -166,9 +166,7 @@ import org.nuiton.topia.persistence.TopiaNoResultException;
*/
public abstract class ObserveServiceLocal implements ObserveService {
- /**
- * Logger.
- */
+ /** Logger. */
private static final Log log = LogFactory.getLog(ObserveServiceLocal.class);
protected static final DataDtoEntityPersistenceContext<TripSeineDto, TripSeineReference, TripSeine, TripSeineTopiaDao> TRIP_SEINE_SPI =
@@ -289,21 +287,6 @@ public abstract class ObserveServiceLocal implements ObserveService {
return serviceContext.getTopiaPersistenceContext();
}
-// protected <D extends IdDto, E extends ObserveEntity> void deleteEntity(Class<D> dtoType, Class<E> entityType, Iterable<String> ids) {
-// ObserveTopiaPersistenceContext persistenceContext = serviceContext.getTopiaPersistenceContext();
-// TopiaDao<E> dao = persistenceContext.getDao(entityType);
-// for (String id : ids) {
-// E entity = dao.forTopiaIdEquals(id).findUniqueOrNull();
-// if (entity == null) {
-// throw new DataNotFoundException(dtoType, id);
-// }
-// dao.delete(entity);
-// }
-//
-// updateLastUpdateDate(entityType);
-//
-// }
-
public <E extends ObserveEntity> void updateLastUpdateDate(Class<E> entityType) {
getTopiaPersistenceContext().updateLastUpdateDate(entityType, now());
}
@@ -331,35 +314,6 @@ public abstract class ObserveServiceLocal implements ObserveService {
}
- // protected <E extends ObserveDataEntity, D extends DataDto> Form<D> dataEntityToForm(Class<D> dtoType, E entity) {
-//
-// D dto = DbModelHelper.fromDataDto(dtoType).toDto(serviceContext.getReferentialLocale(), dtoType, entity);
-// return Form.newFormDto(dtoType, dto);
-//
-// }
-//
-//
-// protected <E extends ObserveDataEntity, D extends DataDto> void copyDataDtoToEntity(D dto, E entity) {
-//
-// DbModelHelper.fromDataDto(dto).copyToEntity(serviceContext.getReferentialLocale(), dto, entity);
-//
-// }
-
-//
-// protected <E extends ObserveDataEntity, D extends DataDto> E loadOrCreateEntityFromDataDto(D dto) {
-//
-// Class<E> entityType = DbModelHelper.fromDataDto(dto).toEntityType();
-//
-// E entity;
-// if (dto.isPersisted()) {
-// entity = loadEntity(dto.get(), dto.getId());
-// } else {
-// entity = getTopiaPersistenceContext().newEntity(entityType);
-// }
-// return entity;
-// }
-
-
protected <E extends ObserveEntity, D extends IdDto> void checkLastUpdateDate(E entity, D dto) {
if (entity.isPersisted()) {
@@ -382,14 +336,6 @@ public abstract class ObserveServiceLocal implements ObserveService {
return serviceContext.now();
}
- // protected <D extends DataDto, E extends ObserveDataEntity> D loadEntityToDataDto(Class<D> dtoType, String id) {
-//
-// E entity = loadEntity(dtoType, id);
-// DataEntityDtoBinderSupport<D, E> binder = DbModelHelper.fromDataDto(dtoType).toEntityBinder();
-// return binder.toDto(getReferentialLocale(), entity);
-//
-// }
-//
public <D extends ReferentialDto, E extends ObserveReferentialEntity> D loadEntityToReferentialDto(ReferentialEntityDtoBinderSupport<D, E> binder, String id) {
E entity = loadEntity(binder.getDtoType(), id);
@@ -397,29 +343,6 @@ public abstract class ObserveServiceLocal implements ObserveService {
}
-// protected <D extends DataDto, R extends DataDtoReference<D, R>, E extends ObserveDataEntity> R loadEntityToDataReferenceDto(Class<D> dtoType, String id) {
-//
-// E entity = loadEntity(dtoType, id);
-//
-// DataEntityReferenceBinderSupport<D, R, E> dataBinderFromDto = DbModelHelper.fromDataDto(dtoType).toEntityReferenceBinder();
-// return dataBinderFromDto.toReference(getReferentialLocale(), entity);
-//
-// }
-
-// protected <E extends ObserveEntity> boolean existsEntity(Class<E> entityType, String id) {
-// ObserveTopiaPersistenceContext persistenceContext = serviceContext.getTopiaPersistenceContext();
-// TopiaDao<E> dao = persistenceContext.getDao(entityType);
-// return dao.forTopiaIdEquals(id).exists();
-// }
-
-// protected <D extends DataDto, R extends DataDtoReference<D, R>, E extends ObserveDataEntity> R toReference(Class<R> referenceType, E entity) {
-//
-// DataEntityReferenceBinderSupport<D, R, E> binder = DbModelHelper.fromDataReference(referenceType).toEntityReferenceBinder();
-//
-// return binder.toReference(getReferentialLocale(), entity);
-//
-// }
-
protected <D extends DataDto, E extends ObserveDataEntity, R extends DataDtoReference<D, R>> DataDtoReferenceSet<R> toDataReferenceSet(DataEntityReferenceBinderSupport<D, R, E> binder, Collection<E> entities) {
ReferentialLocale referentialLocale = getReferentialLocale();
@@ -455,13 +378,13 @@ public abstract class ObserveServiceLocal implements ObserveService {
protected DataFileDto newDataFileDto(Blob data, String dataFilename) {
DataFileDto dto = new DataFileDto();
try {
- // on copie le blob pour supprimer le lien entre la blob venant de la base et la connexion à la base
+ // copy blob
int length = (int) data.length();
byte[] bytes = data.getBytes(1, length);
dto.setContent(bytes);
} catch (SQLException e) {
if (log.isErrorEnabled()) {
- log.error("unable to read blod from " + dataFilename, e);
+ log.error("unable to read blob from " + dataFilename, e);
}
}
dto.setName(dataFilename);
=====================================
services-local/src/main/java/fr/ird/observe/services/local/service/data/TripManagementServiceLocal.java
=====================================
--- a/services-local/src/main/java/fr/ird/observe/services/local/service/data/TripManagementServiceLocal.java
+++ b/services-local/src/main/java/fr/ird/observe/services/local/service/data/TripManagementServiceLocal.java
@@ -44,6 +44,7 @@ import java.util.TreeSet;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.util.StringUtil;
+import org.nuiton.version.Version;
/**
* Created on 20/07/16.
@@ -76,9 +77,9 @@ public class TripManagementServiceLocal extends ObserveServiceLocal implements T
if (log.isInfoEnabled()) {
log.info("Start export of trip: " + tripId);
}
+ Version dbVersion = serviceContext.getDataSourceConnection().orElseThrow(IllegalStateException::new).getVersion();
- AddSqlScriptProducerRequest request;
- request = (exportRequest.isForPG() ? AddSqlScriptProducerRequest.forPostgres() : AddSqlScriptProducerRequest.forH2())
+ AddSqlScriptProducerRequest request = (exportRequest.isForPG() ? AddSqlScriptProducerRequest.forPostgres(dbVersion) : AddSqlScriptProducerRequest.forH2(dbVersion))
.dataIdsToAdd(ImmutableSet.of(tripId));
AddSqlScriptProducerResult producerResult = sqlScriptProducerService.produceAddSqlScript(request);
byte[] tripContent = producerResult.getSqlCode();
=====================================
services-local/src/main/java/fr/ird/observe/services/local/service/data/longline/LonglinePositionSetDtoHelper.java
=====================================
--- a/services-local/src/main/java/fr/ird/observe/services/local/service/data/longline/LonglinePositionSetDtoHelper.java
+++ b/services-local/src/main/java/fr/ird/observe/services/local/service/data/longline/LonglinePositionSetDtoHelper.java
@@ -10,22 +10,23 @@ package fr.ird.observe.services.local.service.data.longline;
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
* #L%
*/
+import fr.ird.observe.binder.data.longline.BasketEntityReferenceBinder;
+import fr.ird.observe.binder.data.longline.BranchlineEntityReferenceBinder;
+import fr.ird.observe.binder.data.longline.SectionEntityReferenceBinder;
import fr.ird.observe.dto.data.longline.BasketReference;
-import fr.ird.observe.dto.data.longline.BasketWithSectionIdReference;
import fr.ird.observe.dto.data.longline.BranchlineReference;
-import fr.ird.observe.dto.data.longline.BranchlineWithBasketIdReference;
import fr.ird.observe.dto.data.longline.LonglinePositionAwareDto;
import fr.ird.observe.dto.data.longline.LonglinePositionSetDto;
import fr.ird.observe.dto.data.longline.SectionReference;
@@ -39,27 +40,30 @@ import fr.ird.observe.entities.longline.SetLongline;
*/
class LonglinePositionSetDtoHelper {
+ private static final SectionEntityReferenceBinder SECTION_BINDER = new SectionEntityReferenceBinder();
+ private static final BasketEntityReferenceBinder BASKET_BINDER = new BasketEntityReferenceBinder();
+ private static final BranchlineEntityReferenceBinder BRANCHLINE_BINDER = new BranchlineEntityReferenceBinder();
+
+
// constitution des références des position sur la ligne
static void loadPositionSet(SetLongline setLongline, LonglinePositionSetDto target) {
for (Section section : setLongline.getSection()) {
- SectionReference sectionRef = toSectionReference(section);
+ SectionReference sectionReference = SECTION_BINDER.toReference(null, section);
- target.addSections(sectionRef);
+ target.addSections(sectionReference);
for (Basket basket : section.getBasket()) {
- BasketWithSectionIdReference basketRef = toBasketReference(basket, section);
+ BasketReference basketReference = BASKET_BINDER.toReference(basket, section);
- target.addBaskets(basketRef);
+ target.addBaskets(basketReference);
for (Branchline branchline : basket.getBranchline()) {
- BranchlineWithBasketIdReference branchlineRef = toBranchlineReference(branchline, basket);
-
- target.addBranchlines(branchlineRef);
-
+ BranchlineReference branchlineReference = BRANCHLINE_BINDER.toReference(branchline, basket);
+ target.addBranchlines(branchlineReference);
}
}
@@ -74,21 +78,21 @@ class LonglinePositionSetDtoHelper {
if (basketRef != null) {
- BasketReference basketRefWithSection = positionSetDto.getBaskets().stream()
+ BasketReference basketReference = positionSetDto.getBaskets().stream()
.filter(b -> basketRef.getId().equals(b.getId()))
.findFirst()
.orElse(null);
- positionDto.setBasket(basketRefWithSection);
+ positionDto.setBasket(basketReference);
}
- BranchlineReference branchlineRef = positionDto.getBranchline();
+ BranchlineReference branchlineReference = positionDto.getBranchline();
- if (branchlineRef != null) {
+ if (branchlineReference != null) {
BranchlineReference branchlineRefWithSection = positionSetDto.getBranchlines().stream()
- .filter(b -> branchlineRef.getId().equals(b.getId()))
+ .filter(b -> branchlineReference.getId().equals(b.getId()))
.findFirst()
.orElse(null);
@@ -97,19 +101,4 @@ class LonglinePositionSetDtoHelper {
}
}
- private static SectionReference toSectionReference(Section section) {
-
- return new SectionReference(section, section.getSettingIdentifier(), section.getHaulingIdentifier());
- }
-
- private static BasketWithSectionIdReference toBasketReference(Basket basket, Section section) {
-
- return new BasketWithSectionIdReference(basket, basket.getSettingIdentifier(), basket.getHaulingIdentifier(), section.getTopiaId());
- }
-
- private static BranchlineWithBasketIdReference toBranchlineReference(Branchline branchline, Basket basket) {
-
- return new BranchlineWithBasketIdReference(branchline, branchline.getSettingIdentifier(), branchline.getHaulingIdentifier(), basket.getTopiaId());
- }
-
}
=====================================
services-local/src/main/java/fr/ird/observe/services/local/service/referential/ReferentialServiceLocal.java
=====================================
--- a/services-local/src/main/java/fr/ird/observe/services/local/service/referential/ReferentialServiceLocal.java
+++ b/services-local/src/main/java/fr/ird/observe/services/local/service/referential/ReferentialServiceLocal.java
@@ -10,12 +10,12 @@ package fr.ird.observe.services.local.service.referential;
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
@@ -63,6 +63,14 @@ import fr.ird.observe.spi.context.ReferentialEntityContext;
import fr.ird.observe.spi.context.ReferentialReferenceEntityContext;
import fr.ird.observe.spi.map.ImmutableDtoMap;
import fr.ird.observe.spi.map.ImmutableSetDtoMap;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.topia.persistence.TopiaDao;
+import org.nuiton.topia.persistence.TopiaEntity;
+import org.nuiton.topia.persistence.metadata.TopiaMetadataModel;
+import org.nuiton.version.Version;
+import org.nuiton.version.Versions;
+
import java.util.Arrays;
import java.util.Collections;
import java.util.Date;
@@ -71,11 +79,6 @@ import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.nuiton.topia.persistence.TopiaDao;
-import org.nuiton.topia.persistence.TopiaEntity;
-import org.nuiton.topia.persistence.metadata.TopiaMetadataModel;
/**
* Created on 16/08/15.
@@ -84,14 +87,13 @@ import org.nuiton.topia.persistence.metadata.TopiaMetadataModel;
*/
public class ReferentialServiceLocal extends ObserveServiceLocal implements ReferentialService {
- private static final Log log = LogFactory.getLog(ReferentialServiceLocal.class);
public static final List<String> SPECIES_GROUP_IDS = Arrays.asList(
"fr.ird.observe.entities.referentiel.SpeciesGroup#1445863056144#0.9820877553253712",
"fr.ird.observe.entities.referentiel.SpeciesGroup#1239832683690#0.24333033683679461",
"fr.ird.observe.entities.referentiel.SpeciesGroup#1446014286433#0.6480183366605247",
"fr.ird.observe.entities.referentiel.SpeciesGroup#1239832683689#0.7120116158620075"
);
-
+ private static final Log log = LogFactory.getLog(ReferentialServiceLocal.class);
@Override
public <D extends ReferentialDto, R extends ReferentialDtoReference<D, R>> ReferentialDtoReferenceSet<R> getReferenceSet(Class<R> type, Date lastUpdateDate) {
@@ -387,7 +389,8 @@ public class ReferentialServiceLocal extends ObserveServiceLocal implements Refe
boolean h2 = serviceContext.getDataSourceConfiguration().orElseThrow(IllegalStateException::new).isH2Database();
- AddSqlScriptProducerRequest addRequest = h2 ? AddSqlScriptProducerRequest.forH2() : AddSqlScriptProducerRequest.forPostgres();
+ Version dbVersion = Versions.valueOf(serviceContext.getTopiaApplicationContext().getModelVersion());
+ AddSqlScriptProducerRequest addRequest = h2 ? AddSqlScriptProducerRequest.forH2(dbVersion) : AddSqlScriptProducerRequest.forPostgres(dbVersion);
for (Class<? extends ReferentialDtoReference> dtoType : missingReferentialIds.referentialReferenceTypes()) {
Set<String> ids = missingReferentialIds.get(dtoType);
addRequest.referentialIdsToAdd(dtoType, ids);
=====================================
services-local/src/test/java/fr/ird/observe/services/local/service/sql/MigrateTestsDatabases.java
=====================================
--- a/services-local/src/test/java/fr/ird/observe/services/local/service/sql/MigrateTestsDatabases.java
+++ b/services-local/src/test/java/fr/ird/observe/services/local/service/sql/MigrateTestsDatabases.java
@@ -91,7 +91,7 @@ public class MigrateTestsDatabases extends ServiceLocalTestSupport {
@CopyDatabaseConfiguration
@Test
public void migrateReferentielDb() throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException, BabModelVersionException, DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException {
- AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forH2().addSchema().addReferential().addAllData();
+ AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forH2(ObserveTestConfiguration.getModelVersion()).addSchema().addReferential().addAllData();
dataSourceService.migrateData(localTestMethodResource.getDataSourceConfiguration());
migrate(service.produceAddSqlScript(request));
}
@@ -100,7 +100,7 @@ public class MigrateTestsDatabases extends ServiceLocalTestSupport {
@CopyDatabaseConfiguration
@Test
public void migrateDataForTestSeineDb() throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException, BabModelVersionException, DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException {
- AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forH2().addSchema().addReferential().addAllData();
+ AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forH2(ObserveTestConfiguration.getModelVersion()).addSchema().addReferential().addAllData();
dataSourceService.migrateData(localTestMethodResource.getDataSourceConfiguration());
migrate(service.produceAddSqlScript(request));
}
@@ -109,7 +109,7 @@ public class MigrateTestsDatabases extends ServiceLocalTestSupport {
@CopyDatabaseConfiguration
@Test
public void migrateDataForTestLonglineDb() throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException, BabModelVersionException, DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException {
- AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forH2().addSchema().addReferential().addAllData();
+ AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forH2(ObserveTestConfiguration.getModelVersion()).addSchema().addReferential().addAllData();
dataSourceService.migrateData(localTestMethodResource.getDataSourceConfiguration());
migrate(service.produceAddSqlScript(request));
}
@@ -118,7 +118,7 @@ public class MigrateTestsDatabases extends ServiceLocalTestSupport {
@CopyDatabaseConfiguration
@Test
public void migrateEmptyH2Db() throws IOException, IncompatibleDataSourceCreateConfigurationException, DataSourceCreateWithNoReferentialImportException, BabModelVersionException, DatabaseConnexionNotAuthorizedException, DatabaseNotFoundException {
- AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forH2().addSchema();
+ AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forH2(ObserveTestConfiguration.getModelVersion()).addSchema();
dataSourceService.migrateData(localTestMethodResource.getDataSourceConfiguration());
migrate(service.produceAddSqlScript(request));
}
@@ -127,7 +127,7 @@ public class MigrateTestsDatabases extends ServiceLocalTestSupport {
@CopyDatabaseConfiguration
@Test
public void migrateEmptyPgDb() throws IOException {
- AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forPostgres().addSchema();
+ AddSqlScriptProducerRequest request = AddSqlScriptProducerRequest.forPostgres(ObserveTestConfiguration.getModelVersion()).addSchema();
dataSourceService.migrateData(localTestMethodResource.getDataSourceConfiguration());
migrate(DatabaseName.empty_pg.name(), service.produceAddSqlScript(request));
}
=====================================
services-local/src/test/java/fr/ird/observe/services/local/service/sql/SqlScriptProducerServiceLocalTest.java
=====================================
--- a/services-local/src/test/java/fr/ird/observe/services/local/service/sql/SqlScriptProducerServiceLocalTest.java
+++ b/services-local/src/test/java/fr/ird/observe/services/local/service/sql/SqlScriptProducerServiceLocalTest.java
@@ -38,6 +38,7 @@ import org.junit.Before;
import org.junit.Test;
import org.nuiton.util.StringUtil;
import org.nuiton.util.TimeLog;
+import org.nuiton.version.Version;
/**
* Created on 31/12/15.
@@ -49,9 +50,11 @@ public class SqlScriptProducerServiceLocalTest extends ServiceLocalTestSupport {
private static final TimeLog timeLog = new TimeLog(SqlScriptProducerServiceLocalTest.class, 10, 1000);
protected SqlScriptProducerService service;
+ private Version dbVersion;
@Before
public void setUp() throws Exception {
+ dbVersion = localTestMethodResource.getDbVersion();
service = localTestMethodResource.newService(SqlScriptProducerService.class);
}
@@ -59,8 +62,8 @@ public class SqlScriptProducerServiceLocalTest extends ServiceLocalTestSupport {
@Test
public void testProduceSchema() throws Exception {
- produce(AddSqlScriptProducerRequest.forH2().addSchema());
- produce(AddSqlScriptProducerRequest.forPostgres().addSchema());
+ produce(AddSqlScriptProducerRequest.forH2(dbVersion).addSchema());
+ produce(AddSqlScriptProducerRequest.forPostgres(dbVersion).addSchema());
}
@@ -68,7 +71,7 @@ public class SqlScriptProducerServiceLocalTest extends ServiceLocalTestSupport {
@Test
public void testProduceReferential() throws Exception {
- produce(AddSqlScriptProducerRequest.forPostgres().addSchema().addReferential());
+ produce(AddSqlScriptProducerRequest.forPostgres(dbVersion).addSchema().addReferential());
}
@@ -76,7 +79,7 @@ public class SqlScriptProducerServiceLocalTest extends ServiceLocalTestSupport {
@Test
public void testProduceSomeReferential() throws Exception {
- produce(AddSqlScriptProducerRequest.forPostgres().addSchema().referentialIdsToAdd(ProgramReference.class, ImmutableSet.of(ObserveFixtures.PROGRAM_ID)));
+ produce(AddSqlScriptProducerRequest.forPostgres(dbVersion).addSchema().referentialIdsToAdd(ProgramReference.class, ImmutableSet.of(ObserveFixtures.PROGRAM_ID)));
}
@@ -85,7 +88,7 @@ public class SqlScriptProducerServiceLocalTest extends ServiceLocalTestSupport {
public void testProduceTripSeine() throws Exception {
// produce(AddSqlScriptProducerRequest.forPostgres().addSchema().addReferential().addAllData());
- produce(AddSqlScriptProducerRequest.forPostgres().addSchema().addReferential().dataIdsToAdd(ObserveFixtures.TRIP_SEINE_IDS));
+ produce(AddSqlScriptProducerRequest.forPostgres(dbVersion).addSchema().addReferential().dataIdsToAdd(ObserveFixtures.TRIP_SEINE_IDS));
}
@@ -93,7 +96,7 @@ public class SqlScriptProducerServiceLocalTest extends ServiceLocalTestSupport {
@Test
public void testProduceTripLongline() throws Exception {
- produce(AddSqlScriptProducerRequest.forH2().addSchema().addReferential().addAllData());
+ produce(AddSqlScriptProducerRequest.forH2(dbVersion).addSchema().addReferential().addAllData());
// produce(AddSqlScriptProducerRequest.forH2().addSchema().addReferential().dataIdsToAdd(ObserveFixtures.TRIP_LONGLINE_IDS));
}
=====================================
services/src/main/java/fr/ird/observe/services/service/sql/AddSqlScriptProducerRequest.java
=====================================
--- a/services/src/main/java/fr/ird/observe/services/service/sql/AddSqlScriptProducerRequest.java
+++ b/services/src/main/java/fr/ird/observe/services/service/sql/AddSqlScriptProducerRequest.java
@@ -31,6 +31,7 @@ import fr.ird.observe.dto.ObserveDto;
import fr.ird.observe.dto.reference.ReferentialDtoReference;
import java.util.Set;
import java.util.stream.Collectors;
+import org.nuiton.version.Version;
/**
* Created on 31/12/15.
@@ -40,6 +41,8 @@ import java.util.stream.Collectors;
public class AddSqlScriptProducerRequest implements ObserveDto {
private final boolean postgres;
+ private final Version dbVersion;
+
private boolean addSchema;
private boolean addReferential;
private boolean addSomeReferential;
@@ -47,12 +50,12 @@ public class AddSqlScriptProducerRequest implements ObserveDto {
private ImmutableSet<String> dataIds;
private final ArrayListMultimap<Class<? extends ReferentialDtoReference>, String> referentialIds = ArrayListMultimap.create();
- public static AddSqlScriptProducerRequest forH2() {
- return new AddSqlScriptProducerRequest(false);
+ public static AddSqlScriptProducerRequest forH2(Version dbVersion) {
+ return new AddSqlScriptProducerRequest(false, dbVersion);
}
- public static AddSqlScriptProducerRequest forPostgres() {
- return new AddSqlScriptProducerRequest(true);
+ public static AddSqlScriptProducerRequest forPostgres(Version dbVersion) {
+ return new AddSqlScriptProducerRequest(true, dbVersion);
}
public AddSqlScriptProducerRequest addSchema() {
@@ -94,8 +97,13 @@ public class AddSqlScriptProducerRequest implements ObserveDto {
return addReferential;
}
- protected AddSqlScriptProducerRequest(boolean postgres) {
+ public Version getDbVersion() {
+ return dbVersion;
+ }
+
+ protected AddSqlScriptProducerRequest(boolean postgres, Version dbVersion) {
this.postgres = postgres;
+ this.dbVersion = dbVersion;
}
public boolean isAddData() {
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/0aac62baf2eed2bb70f9b493c4…
---
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/0aac62baf2eed2bb70f9b493c4…
You're receiving this email because of your account on gitlab.com.
1
0
31 Mar '18
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
0819d723 by Tony CHEMIT at 2018-03-30T18:37:36Z
fix option type
- - - - -
394dce0e by Tony CHEMIT at 2018-03-31T17:07:14Z
fix some references API
- - - - -
b7ab82c3 by Tony CHEMIT at 2018-03-31T17:07:35Z
add more log levels in tests
- - - - -
798bd698 by Tony CHEMIT at 2018-03-31T17:08:30Z
fix i18n typo
- - - - -
a03e3fd2 by Tony CHEMIT at 2018-03-31T17:09:49Z
improve gis triggers (if not migration can't work since it will trigger the gis computation on each activity changed, and here we modify all activities...)
- - - - -
afbe1e2e by Tony CHEMIT at 2018-03-31T17:11:19Z
improve longline position api (but still could be improved ?)
- - - - -
756024b9 by Tony CHEMIT at 2018-03-31T17:12:03Z
improve sql request api (requires now db version)
- - - - -
74ba1e01 by Tony CHEMIT at 2018-03-31T17:28:29Z
optimize dependences + add missing license header
- - - - -
0aac62ba by Tony CHEMIT at 2018-03-31T17:38:19Z
fix a template
- - - - -
30 changed files:
- client-configuration/src/main/config/Client.ini
- client/src/main/assembly/dist/obstuna-admin/extra/create-postgis-1-activity.sql → client/src/main/assembly/dist/obstuna-admin/extra/01_create-postgis-1-activity.sql
- client/src/main/assembly/dist/obstuna-admin/extra/create-postgis-2-harbour.sql → client/src/main/assembly/dist/obstuna-admin/extra/02_create-postgis-2-harbour.sql
- client/src/main/assembly/dist/obstuna-admin/extra/create-postgis-3-activity-seine.sql → client/src/main/assembly/dist/obstuna-admin/extra/03_create-postgis-3-activity-seine.sql
- client/src/main/assembly/dist/obstuna-admin/extra/create-postgis-4-activity-longine.sql → client/src/main/assembly/dist/obstuna-admin/extra/04_create-postgis-4-activity-longine.sql
- client/src/main/assembly/dist/obstuna-admin/extra/function_enhanced_sets_school_types.sql → client/src/main/assembly/dist/obstuna-admin/extra/05_function_enhanced_sets_school_types.sql
- client/src/main/ftl/dataSourceConnectionReport_en.ftl
- client/src/main/ftl/dataSourceConnectionReport_es.ftl
- client/src/main/ftl/dataSourceConnectionReport_fr.ftl
- client/src/main/java/fr/ird/observe/client/ui/admin/save/SaveLocalUIHandler.java
- client/src/main/java/fr/ird/observe/client/ui/content/data/longline/EncounterUIHandler.java
- client/src/main/java/fr/ird/observe/client/ui/storage/StorageUIHandler.java
- client/src/main/java/fr/ird/observe/client/ui/storage/StorageUIModel.java
- client/src/main/resources/i18n/client_en_GB.properties
- client/src/main/resources/i18n/client_es_ES.properties
- client/src/main/resources/i18n/client_fr_FR.properties
- dto/src/main/java/fr/ird/observe/binder/data/longline/BasketDtoReferenceBinder.java
- dto/src/main/java/fr/ird/observe/binder/data/longline/BranchlineDtoReferenceBinder.java
- − dto/src/main/java/fr/ird/observe/dto/data/longline/BasketWithSectionIdDto.java
- dto/src/main/java/fr/ird/observe/dto/data/longline/BasketWithSectionIdReference.java
- − dto/src/main/java/fr/ird/observe/dto/data/longline/BranchlineWithBasketIdDto.java
- dto/src/main/java/fr/ird/observe/dto/data/longline/BranchlineWithBasketIdReference.java
- dto/src/main/models/Observe.model
- persistence/pom.xml
- persistence/src/main/java/fr/ird/observe/binder/data/longline/BasketEntityReferenceBinder.java
- persistence/src/main/java/fr/ird/observe/binder/data/longline/BranchlineEntityReferenceBinder.java
- persistence/src/main/java/fr/ird/observe/persistence/ObserveTopiaApplicationContext.java
- persistence/src/main/java/fr/ird/observe/persistence/ObserveTopiaConfiguration.java
- persistence/src/main/java/fr/ird/observe/persistence/migration/DataSourceMigrationForVersion_7_0_RC_4.java
- + persistence/src/main/resources/db/migration/6.1/00_fix_trigger-PG.sql
The diff was not included because it is too large.
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/b6ac983e58f1feb565b59b1a9d…
---
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/b6ac983e58f1feb565b59b1a9d…
You're receiving this email because of your account on gitlab.com.
1
0
[Git][ultreiaio/ird-observe][develop] Correction des labels sur les enums avec methods
by Tony CHEMIT 30 Mar '18
by Tony CHEMIT 30 Mar '18
30 Mar '18
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe
Commits:
b6ac983e by Tony CHEMIT at 2018-03-30T14:44:36Z
Correction des labels sur les enums avec methods
- - - - -
25 changed files:
- client/pom.xml
- client/src/main/java/fr/ird/observe/client/ui/actions/main/menu/admin/LaunchAdminActionSupport.java
- client/src/main/java/fr/ird/observe/client/ui/admin/AdminStep.java
- client/src/main/java/fr/ird/observe/client/ui/admin/AdminTabUIHandler.java
- client/src/main/java/fr/ird/observe/client/ui/admin/AdminUIHandler.java
- client/src/main/java/fr/ird/observe/client/ui/admin/resume/ShowResumeUIHandler.java
- client/src/main/java/fr/ird/observe/client/ui/admin/synchronize/referential/ng/ReferentialSynchroConfigUI.jaxx
- client/src/main/java/fr/ird/observe/client/ui/admin/synchronize/referential/ng/ReferentialSynchroModel.java
- client/src/main/java/fr/ird/observe/client/ui/admin/validate/ValidateConfigUI.jaxx
- client/src/main/java/fr/ird/observe/client/ui/content/ContentUIInitializer.java
- client/src/main/java/fr/ird/observe/client/ui/content/data/seine/FloatingObjectUIModel.java
- client/src/main/java/fr/ird/observe/client/ui/content/data/seine/NonTargetCatchReleaseStatusesUI.java
- client/src/main/java/fr/ird/observe/client/ui/content/data/seine/SetSeineUIHandler.java
- client/src/main/java/fr/ird/observe/client/ui/storage/ObstunaAdminAction.java
- client/src/main/java/fr/ird/observe/client/ui/storage/StorageStep.java
- client/src/main/java/fr/ird/observe/client/ui/storage/StorageUIHandler.java
- client/src/main/java/fr/ird/observe/client/ui/storage/StorageUIModel.java
- client/src/main/java/fr/ird/observe/client/ui/storage/tabs/ChooseDbModeUI.jaxx
- client/src/main/java/fr/ird/observe/client/ui/storage/tabs/ChooseDbModeUIHandler.java
- client/src/main/java/fr/ird/observe/client/ui/storage/tabs/ConfigReferentielUI.jaxx
- client/src/main/java/fr/ird/observe/client/ui/storage/tabs/ConfigUI.jaxx
- client/src/main/java/fr/ird/observe/client/ui/storage/tabs/StorageTabUI.jaxx
- client/src/main/java/fr/ird/observe/client/ui/util/tripMap/TripMapContentBuilder.java
- dto/pom.xml
- + dto/src/main/java/fr/ird/observe/dto/I18nEnumHelper.java
Changes:
=====================================
client/pom.xml
=====================================
--- a/client/pom.xml
+++ b/client/pom.xml
@@ -687,7 +687,6 @@
<goal>parse-java-enumerations</goal>
</goals>
<configuration>
- <generateHelper>true</generateHelper>
<enumerationSets>
<enumerationSet>
<name>label</name>
=====================================
client/src/main/java/fr/ird/observe/client/ui/actions/main/menu/admin/LaunchAdminActionSupport.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/actions/main/menu/admin/LaunchAdminActionSupport.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/actions/main/menu/admin/LaunchAdminActionSupport.java
@@ -22,7 +22,7 @@ package fr.ird.observe.client.ui.actions.main.menu.admin;
* #L%
*/
-import fr.ird.observe.client.I18nEnumHelper;
+import fr.ird.observe.dto.I18nEnumHelper;
import fr.ird.observe.client.ObserveSwingApplicationContext;
import fr.ird.observe.client.ui.ObserveMainUI;
import fr.ird.observe.client.ui.actions.main.menu.MenuActionSupport;
=====================================
client/src/main/java/fr/ird/observe/client/ui/admin/AdminStep.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/admin/AdminStep.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/admin/AdminStep.java
@@ -21,7 +21,7 @@
*/
package fr.ird.observe.client.ui.admin;
-import fr.ird.observe.client.I18nEnumHelper;
+import fr.ird.observe.dto.I18nEnumHelper;
import fr.ird.observe.client.constants.DbMode;
import fr.ird.observe.client.ui.util.UIHelper;
import fr.ird.observe.client.ui.admin.config.ConfigUI;
=====================================
client/src/main/java/fr/ird/observe/client/ui/admin/AdminTabUIHandler.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/admin/AdminTabUIHandler.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/admin/AdminTabUIHandler.java
@@ -21,7 +21,7 @@
*/
package fr.ird.observe.client.ui.admin;
-import fr.ird.observe.client.I18nEnumHelper;
+import fr.ird.observe.dto.I18nEnumHelper;
import fr.ird.observe.client.ObserveRunner;
import fr.ird.observe.client.ObserveSwingApplicationContext;
import fr.ird.observe.client.db.ObserveSwingDataSource;
=====================================
client/src/main/java/fr/ird/observe/client/ui/admin/AdminUIHandler.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/admin/AdminUIHandler.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/admin/AdminUIHandler.java
@@ -21,7 +21,7 @@
*/
package fr.ird.observe.client.ui.admin;
-import fr.ird.observe.client.I18nEnumHelper;
+import fr.ird.observe.dto.I18nEnumHelper;
import fr.ird.observe.client.ObserveActionExecutor;
import fr.ird.observe.client.ObserveRunner;
import fr.ird.observe.client.ui.ObserveKeyStrokes;
=====================================
client/src/main/java/fr/ird/observe/client/ui/admin/resume/ShowResumeUIHandler.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/admin/resume/ShowResumeUIHandler.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/admin/resume/ShowResumeUIHandler.java
@@ -21,7 +21,7 @@
*/
package fr.ird.observe.client.ui.admin.resume;
-import fr.ird.observe.client.I18nEnumHelper;
+import fr.ird.observe.dto.I18nEnumHelper;
import fr.ird.observe.client.ui.util.UIHelper;
import fr.ird.observe.client.ui.admin.AdminStep;
import fr.ird.observe.client.ui.admin.AdminTabUIHandler;
=====================================
client/src/main/java/fr/ird/observe/client/ui/admin/synchronize/referential/ng/ReferentialSynchroConfigUI.jaxx
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/admin/synchronize/referential/ng/ReferentialSynchroConfigUI.jaxx
+++ b/client/src/main/java/fr/ird/observe/client/ui/admin/synchronize/referential/ng/ReferentialSynchroConfigUI.jaxx
@@ -28,7 +28,7 @@
<import>
fr.ird.observe.client.configuration.ClientConfig
fr.ird.observe.client.constants.ReferentialSynchronizeMode
- fr.ird.observe.client.I18nEnumHelper
+ fr.ird.observe.dto.I18nEnumHelper
fr.ird.observe.client.ui.admin.AdminUIModel
fr.ird.observe.client.constants.ValidationModelMode
=====================================
client/src/main/java/fr/ird/observe/client/ui/admin/synchronize/referential/ng/ReferentialSynchroModel.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/admin/synchronize/referential/ng/ReferentialSynchroModel.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/admin/synchronize/referential/ng/ReferentialSynchroModel.java
@@ -22,7 +22,7 @@ package fr.ird.observe.client.ui.admin.synchronize.referential.ng;
* #L%
*/
-import fr.ird.observe.client.I18nEnumHelper;
+import fr.ird.observe.dto.I18nEnumHelper;
import fr.ird.observe.client.constants.ReferentialSynchronizeMode;
import fr.ird.observe.client.db.ObserveSwingDataSource;
import fr.ird.observe.client.ui.admin.AdminActionModel;
=====================================
client/src/main/java/fr/ird/observe/client/ui/admin/validate/ValidateConfigUI.jaxx
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/admin/validate/ValidateConfigUI.jaxx
+++ b/client/src/main/java/fr/ird/observe/client/ui/admin/validate/ValidateConfigUI.jaxx
@@ -26,7 +26,7 @@
<JPanel id="validateConfig">
<import>
- fr.ird.observe.client.I18nEnumHelper
+ fr.ird.observe.dto.I18nEnumHelper
fr.ird.observe.client.ui.admin.AdminUIModel
fr.ird.observe.client.constants.ValidationModelMode
=====================================
client/src/main/java/fr/ird/observe/client/ui/content/ContentUIInitializer.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/content/ContentUIInitializer.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/content/ContentUIInitializer.java
@@ -24,7 +24,7 @@ package fr.ird.observe.client.ui.content;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Lists;
-import fr.ird.observe.client.I18nEnumHelper;
+import fr.ird.observe.dto.I18nEnumHelper;
import fr.ird.observe.client.ObserveSwingApplicationContext;
import fr.ird.observe.client.ui.ObserveKeyStrokes;
import fr.ird.observe.client.ui.actions.UIActionSupport;
=====================================
client/src/main/java/fr/ird/observe/client/ui/content/data/seine/FloatingObjectUIModel.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/content/data/seine/FloatingObjectUIModel.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/content/data/seine/FloatingObjectUIModel.java
@@ -25,7 +25,7 @@ package fr.ird.observe.client.ui.content.data.seine;
import com.google.common.collect.ImmutableSet;
import fr.ird.observe.spi.DtoModelHelper;
import fr.ird.observe.binder.referential.ReferentialDtoReferenceBinder;
-import fr.ird.observe.client.I18nEnumHelper;
+import fr.ird.observe.dto.I18nEnumHelper;
import fr.ird.observe.client.ObserveSwingApplicationContext;
import fr.ird.observe.client.ui.content.ContentUIModel;
import fr.ird.observe.dto.data.seine.DcpComputedValue;
=====================================
client/src/main/java/fr/ird/observe/client/ui/content/data/seine/NonTargetCatchReleaseStatusesUI.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/content/data/seine/NonTargetCatchReleaseStatusesUI.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/content/data/seine/NonTargetCatchReleaseStatusesUI.java
@@ -22,7 +22,7 @@ package fr.ird.observe.client.ui.content.data.seine;
* #L%
*/
-import fr.ird.observe.client.I18nEnumHelper;
+import fr.ird.observe.dto.I18nEnumHelper;
import fr.ird.observe.dto.data.seine.NonTargetCatchReleaseStatus;
import java.awt.GridLayout;
import java.util.Objects;
=====================================
client/src/main/java/fr/ird/observe/client/ui/content/data/seine/SetSeineUIHandler.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/content/data/seine/SetSeineUIHandler.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/content/data/seine/SetSeineUIHandler.java
@@ -22,7 +22,7 @@
package fr.ird.observe.client.ui.content.data.seine;
import fr.ird.observe.spi.DtoModelHelper;
-import fr.ird.observe.client.I18nEnumHelper;
+import fr.ird.observe.dto.I18nEnumHelper;
import fr.ird.observe.client.db.ClientDataContext;
import fr.ird.observe.client.db.ObserveSwingDataSource;
import fr.ird.observe.client.db.constants.DataContextType;
=====================================
client/src/main/java/fr/ird/observe/client/ui/storage/ObstunaAdminAction.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/storage/ObstunaAdminAction.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/storage/ObstunaAdminAction.java
@@ -23,7 +23,7 @@ package fr.ird.observe.client.ui.storage;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableSet;
-import fr.ird.observe.client.I18nEnumHelper;
+import fr.ird.observe.dto.I18nEnumHelper;
import fr.ird.observe.client.ObserveSwingApplicationContext;
import fr.ird.observe.client.constants.DbMode;
import fr.ird.observe.client.db.ObserveSwingDataSource;
@@ -276,6 +276,9 @@ public enum ObstunaAdminAction {
}
};
+ public String getLabel() {
+ return I18nEnumHelper.getLabel(this);
+ }
/** Logger */
private static final Log log = LogFactory.getLog(ObstunaAdminAction.class);
=====================================
client/src/main/java/fr/ird/observe/client/ui/storage/StorageStep.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/storage/StorageStep.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/storage/StorageStep.java
@@ -21,7 +21,7 @@
*/
package fr.ird.observe.client.ui.storage;
-import fr.ird.observe.client.I18nEnumHelper;
+import fr.ird.observe.dto.I18nEnumHelper;
import org.nuiton.jaxx.runtime.swing.wizard.WizardStep;
/**
=====================================
client/src/main/java/fr/ird/observe/client/ui/storage/StorageUIHandler.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/storage/StorageUIHandler.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/storage/StorageUIHandler.java
@@ -22,7 +22,7 @@
package fr.ird.observe.client.ui.storage;
import com.google.common.base.Preconditions;
-import fr.ird.observe.client.I18nEnumHelper;
+import fr.ird.observe.dto.I18nEnumHelper;
import fr.ird.observe.client.ObserveActionExecutor;
import fr.ird.observe.client.ObserveRunner;
import fr.ird.observe.client.ObserveSwingApplicationContext;
=====================================
client/src/main/java/fr/ird/observe/client/ui/storage/StorageUIModel.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/storage/StorageUIModel.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/storage/StorageUIModel.java
@@ -21,7 +21,7 @@
*/
package fr.ird.observe.client.ui.storage;
-import fr.ird.observe.client.I18nEnumHelper;
+import fr.ird.observe.dto.I18nEnumHelper;
import fr.ird.observe.client.ObserveSwingApplicationContext;
import fr.ird.observe.client.ObserveSwingTechnicalException;
import fr.ird.observe.client.configuration.ClientConfig;
=====================================
client/src/main/java/fr/ird/observe/client/ui/storage/tabs/ChooseDbModeUI.jaxx
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/storage/tabs/ChooseDbModeUI.jaxx
+++ b/client/src/main/java/fr/ird/observe/client/ui/storage/tabs/ChooseDbModeUI.jaxx
@@ -26,7 +26,7 @@
<StorageTabUI>
<import>
- fr.ird.observe.client.I18nEnumHelper
+ fr.ird.observe.dto.I18nEnumHelper
fr.ird.observe.client.ObserveSwingApplicationContext
fr.ird.observe.client.configuration.ClientConfig
fr.ird.observe.client.ui.util.UIHelper
=====================================
client/src/main/java/fr/ird/observe/client/ui/storage/tabs/ChooseDbModeUIHandler.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/storage/tabs/ChooseDbModeUIHandler.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/storage/tabs/ChooseDbModeUIHandler.java
@@ -22,7 +22,7 @@ package fr.ird.observe.client.ui.storage.tabs;
* #L%
*/
-import fr.ird.observe.client.I18nEnumHelper;
+import fr.ird.observe.dto.I18nEnumHelper;
import fr.ird.observe.client.ObserveSwingApplicationContext;
import fr.ird.observe.client.ObserveTextGenerator;
import fr.ird.observe.client.constants.CreationMode;
=====================================
client/src/main/java/fr/ird/observe/client/ui/storage/tabs/ConfigReferentielUI.jaxx
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/storage/tabs/ConfigReferentielUI.jaxx
+++ b/client/src/main/java/fr/ird/observe/client/ui/storage/tabs/ConfigReferentielUI.jaxx
@@ -26,7 +26,7 @@
<StorageTabUI>
<import>
- fr.ird.observe.client.I18nEnumHelper
+ fr.ird.observe.dto.I18nEnumHelper
fr.ird.observe.client.constants.CreationMode
fr.ird.observe.client.ui.storage.StorageStep
=====================================
client/src/main/java/fr/ird/observe/client/ui/storage/tabs/ConfigUI.jaxx
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/storage/tabs/ConfigUI.jaxx
+++ b/client/src/main/java/fr/ird/observe/client/ui/storage/tabs/ConfigUI.jaxx
@@ -27,7 +27,7 @@
<StorageTabUI>
<import>
- fr.ird.observe.client.I18nEnumHelper
+ fr.ird.observe.dto.I18nEnumHelper
fr.ird.observe.client.constants.ConnexionStatus
fr.ird.observe.client.ui.actions.storage.SaveCurrentRemoteConfigurationUIAction
fr.ird.observe.client.ui.actions.storage.SaveCurrentServerConfigurationUIAction
=====================================
client/src/main/java/fr/ird/observe/client/ui/storage/tabs/StorageTabUI.jaxx
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/storage/tabs/StorageTabUI.jaxx
+++ b/client/src/main/java/fr/ird/observe/client/ui/storage/tabs/StorageTabUI.jaxx
@@ -28,7 +28,7 @@
implements='org.nuiton.jaxx.runtime.swing.wizard.WizardStepUI<StorageStep, StorageUIModel>'>
<import>
- fr.ird.observe.client.I18nEnumHelper
+ fr.ird.observe.dto.I18nEnumHelper
fr.ird.observe.client.ui.util.UIHelper
fr.ird.observe.client.ui.storage.StorageStep
fr.ird.observe.client.ui.storage.StorageUIModel
=====================================
client/src/main/java/fr/ird/observe/client/ui/util/tripMap/TripMapContentBuilder.java
=====================================
--- a/client/src/main/java/fr/ird/observe/client/ui/util/tripMap/TripMapContentBuilder.java
+++ b/client/src/main/java/fr/ird/observe/client/ui/util/tripMap/TripMapContentBuilder.java
@@ -30,7 +30,7 @@ import com.vividsolutions.jts.geom.GeometryFactory;
import com.vividsolutions.jts.geom.LineString;
import com.vividsolutions.jts.geom.Point;
import com.vividsolutions.jts.geom.Polygon;
-import fr.ird.observe.client.I18nEnumHelper;
+import fr.ird.observe.dto.I18nEnumHelper;
import fr.ird.observe.client.ObserveSwingTechnicalException;
import fr.ird.observe.dto.data.TripMapPoint;
import fr.ird.observe.dto.data.TripMapPointType;
=====================================
dto/pom.xml
=====================================
--- a/dto/pom.xml
+++ b/dto/pom.xml
@@ -164,7 +164,6 @@
<goal>parse-java-enumerations</goal>
</goals>
<configuration>
- <generateHelper>true</generateHelper>
<enumerationSets>
<enumerationSet>
<name>label</name>
=====================================
dto/src/main/java/fr/ird/observe/dto/I18nEnumHelper.java
=====================================
--- /dev/null
+++ b/dto/src/main/java/fr/ird/observe/dto/I18nEnumHelper.java
@@ -0,0 +1,64 @@
+package fr.ird.observe.dto;
+
+/*-
+ * #%L
+ * ObServe :: Dto
+ * %%
+ * Copyright (C) 2008 - 2017 IRD, Code Lutin, Ultreia.io
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import java.util.Locale;
+
+import static org.nuiton.i18n.I18n.l;
+import static org.nuiton.i18n.I18n.t;
+
+public class I18nEnumHelper {
+
+ public static <E extends Enum<E>> String getLabel(E e) {
+ return t(getLabelKey(e));
+ }
+
+ public static <E extends Enum<E>> String getLabel(Locale locale, E e) {
+ return l(locale, getLabelKey(e));
+ }
+
+ public static <E extends Enum<E>> String getDescription(E e) {
+ return t(getDescriptionKey(e));
+ }
+
+ public static <E extends Enum<E>> String getDescription(Locale locale, E e) {
+ return l(locale, getDescriptionKey(e));
+ }
+
+ private static <E extends Enum<E>> String getLabelKey(E e) {
+ return "observe.constant." + getClassSimpleName(e) + "." + e.name();
+ }
+
+ private static <E extends Enum<E>> String getDescriptionKey(E e) {
+ return "observe.constant." + getClassSimpleName(e) + "." + e.name() + ".description";
+ }
+
+ private static <E extends Enum<E>> String getClassSimpleName(E e) {
+ String result = e.getClass().getSimpleName();
+ if (result.isEmpty()) {
+ result = e.getClass().getEnclosingClass().getSimpleName();
+ }
+ return result;
+ }
+
+}
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/b6ac983e58f1feb565b59b1a9d4…
---
View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/b6ac983e58f1feb565b59b1a9d4…
You're receiving this email because of your account on gitlab.com.
1
0