Tutti-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
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- 4130 discussions
r223 - in trunk/tutti-ui-swing/src/main: java/fr/ifremer/tutti/ui/swing java/fr/ifremer/tutti/ui/swing/config java/fr/ifremer/tutti/ui/swing/content/cruise java/fr/ifremer/tutti/ui/swing/content/home resources/i18n
by tchemit@users.forge.codelutin.com 18 Jan '13
by tchemit@users.forge.codelutin.com 18 Jan '13
18 Jan '13
Author: tchemit
Date: 2013-01-18 15:55:04 +0100 (Fri, 18 Jan 2013)
New Revision: 223
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/223
Log:
refs #1852: [ERGO] - Barre de progression pour les actions longues
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseCatchesAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProgramAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/RunTutti.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/SelectCruiseAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/ValidateSelectedCruiseCatchesAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfig.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigOption.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigUI.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCatchesAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCruiseAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProgramAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewCruiseAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProgramAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ValidateCatchesAction.java
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiAction.java 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiAction.java 2013-01-18 14:55:04 UTC (rev 223)
@@ -24,7 +24,6 @@
* #L%
*/
-import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
import jaxx.runtime.SwingUtil;
import jaxx.runtime.swing.ErrorDialogUI;
import org.apache.commons.logging.Log;
@@ -32,10 +31,21 @@
import org.jdesktop.beans.AbstractBean;
import javax.swing.AbstractAction;
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JProgressBar;
+import javax.swing.border.EmptyBorder;
+import javax.swing.border.TitledBorder;
+import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.util.Timer;
import java.util.TimerTask;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import static org.nuiton.i18n.I18n._;
+
/**
* TODO
*
@@ -51,61 +61,62 @@
private static final Timer t = new Timer();
+ private static final ExecutorService executorService =
+ Executors.newSingleThreadExecutor();
+
private final H handler;
+ private final boolean hideBody;
+
protected abstract void doAction(ActionEvent event);
- public AbstractTuttiAction(H handler,
- String name,
- String icon,
- String text,
- String tip) {
+ protected AbstractTuttiAction(H handler,
+ String name,
+ String icon,
+ String text,
+ String tip,
+ boolean hideBody) {
this.handler = handler;
+ this.hideBody = hideBody;
+ putValue(SMALL_ICON, SwingUtil.createActionIcon(icon));
putValue(LARGE_ICON_KEY, SwingUtil.createActionIcon(icon));
putValue(ACTION_COMMAND_KEY, name);
putValue(NAME, text);
putValue(SHORT_DESCRIPTION, tip);
}
+ protected String getActionName() {
+ return (String) getValue(NAME);
+ }
+
@Override
- public final void actionPerformed(ActionEvent event) {
+ public final void actionPerformed(final ActionEvent event) {
if (log.isInfoEnabled()) {
log.info("Will starts action: " + this);
}
- TimerTask timer = new TimerTask() {
+
+ executorService.submit(new Runnable() {
@Override
public void run() {
- if (log.isInfoEnabled()) {
- log.info("Task [" + AbstractTuttiAction.this + "] is started since 1 second!!!");
- }
- TuttiUIUtil.updateBusyState(getContext().getMainUI(), true);
- }
+ TimerTask timer = new ActionTimerTask();
- @Override
- public boolean cancel() {
- if (log.isInfoEnabled()) {
- log.info("Task [" + AbstractTuttiAction.this + "] canceled.");
+ t.schedule(timer, 500);
+ try {
+
+ doAction(event);
+ } catch (Exception e) {
+ ErrorDialogUI.showError(e);
+ timer.cancel();
+ } finally {
+ if (log.isInfoEnabled()) {
+ log.info("After action: " + this);
+ }
+ timer.cancel();
}
- TuttiUIUtil.updateBusyState(getContext().getMainUI(), false);
- boolean cancel = super.cancel();
- return cancel;
}
- };
-
- try {
-
- t.schedule(timer, 500);
- doAction(event);
- } catch (Exception e) {
- ErrorDialogUI.showError(e);
- } finally {
- if (log.isInfoEnabled()) {
- log.info("After action: " + this);
- }
- timer.cancel();
- }
+ });
}
public TuttiUIContext getContext() {
@@ -123,4 +134,70 @@
protected void setMnemonic(int key) {
putValue(MNEMONIC_KEY, key);
}
+
+ protected class ActionTimerTask extends TimerTask {
+ JDialog d;
+
+ @Override
+ public void run() {
+
+ MainUI ui = getContext().getMainUI();
+
+
+ updateBusyState(ui, true);
+
+ if (log.isDebugEnabled()) {
+ log.debug("Task [" + AbstractTuttiAction.this + "] is started, show waiting dialog");
+ }
+
+ JPanel panel = new JPanel(new BorderLayout());
+ panel.setBorder(new TitledBorder((String) null));
+ JLabel label = new JLabel();
+ EmptyBorder border = new EmptyBorder(5, 5, 5, 5);
+ label.setBorder(border);
+ label.setText(_("tutti.message.action.running", getActionName()));
+ panel.add(label, BorderLayout.CENTER);
+ JProgressBar progressBar = new JProgressBar();
+ progressBar.setBorder(border);
+ progressBar.setIndeterminate(true);
+ panel.add(progressBar, BorderLayout.SOUTH);
+
+ d = new JDialog(ui, true);
+ d.setUndecorated(true);
+// d.setSize(300, 200);
+ d.add(panel);
+ d.pack();
+ SwingUtil.center(ui, d);
+ d.setVisible(true);
+ }
+
+ @Override
+ public boolean cancel() {
+ if (log.isDebugEnabled()) {
+ log.debug("Task [" + AbstractTuttiAction.this + "] canceled.");
+ }
+ updateBusyState(getContext().getMainUI(), false);
+
+ if (d != null) {
+ d.setVisible(false);
+ }
+ boolean cancel = super.cancel();
+ return cancel;
+ }
+
+ protected void updateBusyState(MainUI ui, boolean busy) {
+
+ if (busy) {
+ // ui bloquee
+ if (hideBody) {
+ ui.getBody().setVisible(false);
+ }
+ } else {
+ // ui debloquee
+ if (hideBody) {
+ ui.getBody().setVisible(true);
+ }
+ }
+ }
+ }
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiUIHandler.java 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiUIHandler.java 2013-01-18 14:55:04 UTC (rev 223)
@@ -55,6 +55,7 @@
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JList;
+import javax.swing.JMenuItem;
import javax.swing.JRootPane;
import javax.swing.KeyStroke;
import javax.swing.ListCellRenderer;
@@ -242,9 +243,15 @@
}
jLabel.setText("<html>" + text + "</strong>");
}
+ }
-
- }
+// else if (component instanceof JMenuItem) {
+// JMenuItem jMenuItem = (JMenuItem) component;
+// if (jMenuItem.getAction()!=null) {
+// jMenuItem.setIcon();
+// }
+//
+// }
}
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseAction.java 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseAction.java 2013-01-18 14:55:04 UTC (rev 223)
@@ -50,7 +50,9 @@
"editCruise",
"edit",
_("tutti.action.editCruise"),
- _("tutti.action.editCruise.tip"));
+ _("tutti.action.editCruise.tip"),
+ true
+ );
}
@Override
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseCatchesAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseCatchesAction.java 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseCatchesAction.java 2013-01-18 14:55:04 UTC (rev 223)
@@ -45,7 +45,8 @@
"editCatches",
"edit",
_("tutti.action.editCatches"),
- _("tutti.action.editCatches.tip")
+ _("tutti.action.editCatches.tip"),
+ true
);
setMnemonic('C');
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProgramAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProgramAction.java 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProgramAction.java 2013-01-18 14:55:04 UTC (rev 223)
@@ -50,7 +50,9 @@
"editProgram",
"edit",
_("tutti.action.editProgram"),
- _("tutti.action.editProgram.tip"));
+ _("tutti.action.editProgram.tip"),
+ true
+ );
}
@Override
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProtocolAction.java 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProtocolAction.java 2013-01-18 14:55:04 UTC (rev 223)
@@ -50,7 +50,9 @@
"editProtocol",
"edit",
_("tutti.action.editProtocol"),
- _("tutti.action.editProtocol.tip"));
+ _("tutti.action.editProtocol.tip"),
+ true
+ );
setMnemonic('P');
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.css 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.css 2013-01-18 14:55:04 UTC (rev 223)
@@ -22,6 +22,10 @@
* #L%
*/
+#actionBlockerLayer {
+ canClick: false;
+ blockingColor: {model.getConfig().getColorBlockingLayer()};
+}
#mainFrame {
title: "tutti.application.name";
defaultCloseOperation: {JFrame.DO_NOTHING_ON_CLOSE};
@@ -145,4 +149,4 @@
#validatorMessageWidget {
focusPainted: false;
-}
\ No newline at end of file
+}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.jaxx 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.jaxx 2013-01-18 14:55:04 UTC (rev 223)
@@ -39,6 +39,7 @@
<MainUIHandler id='handler'
initializer='getContextValue(MainUIHandler.class)'/>
+ <BlockingLayerUI2 id='actionBlockerLayer'/>
<SelectCruiseAction id='selectCruiseAction' constructorParams='handler'/>
<EditSelectedProtocolAction id='editProtocolAction' constructorParams='handler'/>
<EditSelectedProgramAction id='editProgramAction' constructorParams='handler'/>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/RunTutti.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/RunTutti.java 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/RunTutti.java 2013-01-18 14:55:04 UTC (rev 223)
@@ -85,7 +85,7 @@
UIManager.put("Table.focusCellHighlightBorder",
new BorderUIResource.LineBorderUIResource(Color.BLACK));
- UIManager.put("BlockingLayerUI.blockingColor", new Color(50, 50, 50));
+ //UIManager.put("BlockingLayerUI.blockingColor", new Color(50, 50, 50));
startTutti(context);
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/SelectCruiseAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/SelectCruiseAction.java 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/SelectCruiseAction.java 2013-01-18 14:55:04 UTC (rev 223)
@@ -43,7 +43,8 @@
"selectCruise",
"home",
_("tutti.action.selectCruise"),
- _("tutti.action.selectCruise.tip")
+ _("tutti.action.selectCruise.tip"),
+ true
);
setMnemonic('S');
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/ValidateSelectedCruiseCatchesAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/ValidateSelectedCruiseCatchesAction.java 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/ValidateSelectedCruiseCatchesAction.java 2013-01-18 14:55:04 UTC (rev 223)
@@ -45,7 +45,8 @@
"validateCatches",
"validate",
_("tutti.action.validateCatches"),
- _("tutti.action.validateCatches.tip")
+ _("tutti.action.validateCatches.tip"),
+ true
);
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfig.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfig.java 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfig.java 2013-01-18 14:55:04 UTC (rev 223)
@@ -156,6 +156,10 @@
return applicationConfig.getOptionAsColor(TuttiConfigOption.COLOR_ROW_READ_ONLY.getKey());
}
+ public Color getColorBlockingLayer() {
+ return applicationConfig.getOptionAsColor(TuttiConfigOption.COLOR_BLOCKING_LAYER.getKey());
+ }
+
public KeyStroke getShortcutClosePopup() {
return applicationConfig.getOptionAsKeyStroke(TuttiConfigOption.SHORTCUT_CLOSE_POPUP.getKey());
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigOption.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigOption.java 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigOption.java 2013-01-18 14:55:04 UTC (rev 223)
@@ -82,6 +82,13 @@
Boolean.class
),
+ COLOR_BLOCKING_LAYER(
+ "tutti.ui.color.blockingLayer",
+ n_("tutti.config.ui.color.blockingLayer"),
+ new Color(50, 50, 50).toString(),
+ Color.class
+ ),
+
COLOR_ROW_READ_ONLY(
"tutti.ui.color.rowReadOnly",
n_("tutti.config.ui.color.rowReadOnly"),
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigUI.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigUI.java 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigUI.java 2013-01-18 14:55:04 UTC (rev 223)
@@ -106,6 +106,7 @@
helper.addCategory(n_("tutti.config.category.ui"),
n_("tutti.config.category.ui.description"),
CALLBACK_UI)
+ .addOption(TuttiConfigOption.COLOR_BLOCKING_LAYER)
.addOption(TuttiConfigOption.COLOR_ROW_INVALID)
.addOption(TuttiConfigOption.COLOR_ROW_READ_ONLY)
.addOption(TuttiConfigOption.USE_SEXAGECIMAL_EDITOR);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx 2013-01-18 14:55:04 UTC (rev 223)
@@ -88,7 +88,7 @@
<field name='gear' component='gearList'/>
<field name='headOfMission' component='headOfMissionList'/>
<field name='headOfSortRoom' component='headOfSortRoomList'/>
- <field name='comment' component='commentField'/>
+ <field name='comment' component='commentPane'/>
</BeanValidator>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java 2013-01-18 14:55:04 UTC (rev 223)
@@ -53,7 +53,9 @@
"cloneProtocol",
"copy",
_("tutti.action.clone"),
- _("tutti.action.clone.protocol.tip"));
+ _("tutti.action.clone.protocol.tip"),
+ true
+ );
}
@Override
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCatchesAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCatchesAction.java 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCatchesAction.java 2013-01-18 14:55:04 UTC (rev 223)
@@ -48,7 +48,8 @@
"editCatches",
"edit",
_("tutti.action.editCatches"),
- _("tutti.action.editCatches.tip")
+ _("tutti.action.editCatches.tip"),
+ true
);
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCruiseAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCruiseAction.java 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCruiseAction.java 2013-01-18 14:55:04 UTC (rev 223)
@@ -48,7 +48,8 @@
"editCruise",
"edit",
_("tutti.action.edit"),
- _("tutti.action.editCruise.tip")
+ _("tutti.action.editCruise.tip"),
+ true
);
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProgramAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProgramAction.java 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProgramAction.java 2013-01-18 14:55:04 UTC (rev 223)
@@ -48,7 +48,8 @@
"editProgram",
"edit",
_("tutti.action.edit"),
- _("tutti.action.editProgram.tip")
+ _("tutti.action.editProgram.tip"),
+ true
);
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java 2013-01-18 14:55:04 UTC (rev 223)
@@ -53,7 +53,9 @@
"editProtocol",
"edit",
_("tutti.action.edit"),
- _("tutti.action.edit.protocol.tip"));
+ _("tutti.action.edit.protocol.tip"),
+ true
+ );
}
@Override
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java 2013-01-18 14:55:04 UTC (rev 223)
@@ -53,7 +53,9 @@
"exportProtocol",
"export",
_("tutti.action.export"),
- _("tutti.action.export.protocol.tip"));
+ _("tutti.action.export.protocol.tip"),
+ true
+ );
}
@Override
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java 2013-01-18 14:55:04 UTC (rev 223)
@@ -51,7 +51,9 @@
"importProtocol",
"import",
_("tutti.action.import"),
- _("tutti.action.import.protocol.tip"));
+ _("tutti.action.import.protocol.tip"),
+ true
+ );
}
@Override
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewCruiseAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewCruiseAction.java 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewCruiseAction.java 2013-01-18 14:55:04 UTC (rev 223)
@@ -46,7 +46,8 @@
"newCruise",
"add",
_("tutti.action.new"),
- _("tutti.action.newCruise.tip")
+ _("tutti.action.newCruise.tip"),
+ true
);
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProgramAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProgramAction.java 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProgramAction.java 2013-01-18 14:55:04 UTC (rev 223)
@@ -46,7 +46,8 @@
"newProgram",
"add",
_("tutti.action.new"),
- _("tutti.action.newProgram.tip")
+ _("tutti.action.newProgram.tip"),
+ true
);
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProtocolAction.java 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProtocolAction.java 2013-01-18 14:55:04 UTC (rev 223)
@@ -51,7 +51,9 @@
"newProtocol",
"add",
_("tutti.action.new"),
- _("tutti.action.new.protocol.tip"));
+ _("tutti.action.new.protocol.tip"),
+ true
+ );
}
@Override
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ValidateCatchesAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ValidateCatchesAction.java 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ValidateCatchesAction.java 2013-01-18 14:55:04 UTC (rev 223)
@@ -48,7 +48,8 @@
"validateCatches",
"validate",
_("tutti.action.validateCatches"),
- _("tutti.action.validateCatches.tip")
+ _("tutti.action.validateCatches.tip"),
+ true
);
}
Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-18 14:55:04 UTC (rev 223)
@@ -66,6 +66,7 @@
tutti.config.programId=Identifiant de la dernière série de campagne utilisée
tutti.config.protocolId=Identifiant du dernier protocole utilisé
tutti.config.ui.autoPopupNumberEditor=Toujours afficher le pavé numérique lors de l'édition d'un nombre
+tutti.config.ui.color.blockingLayer=
tutti.config.ui.color.rowInvalid=Ligne invalide
tutti.config.ui.color.rowReadOnly=Cellule non éditable
tutti.config.ui.config=Chemin du fichier de configuration des interfaces graphiques
@@ -214,6 +215,7 @@
tutti.menu.synchronisationImport.tip=Effectuer des imports
tutti.menu.synchronisations=Synchronisation
tutti.menu.synchronisations.tip=Import/Export
+tutti.message.action.running=<html>Action <strong>%s</strong> en cours d'execution...<br/><hr/>Merci de bien vouloir patienter.</html>
tutti.sampleCategoryType.age=Age
tutti.sampleCategoryType.maturity=Maturité
tutti.sampleCategoryType.sex=Sexe
@@ -303,6 +305,7 @@
tutti.title.selectedProtocol=Protocol %s
tutti.title.splitBatch=Catégoriser un lot
tutti.title.validate.operations=Validation des opérations de pêches (%s)
+tutti.title.waitingBar=Action en cours...
tutti.to.be.done=< A FAIRE >
tutti.tooltip.attachment.none=Pas de pièce-jointes
tutti.tooltip.comment.none=Pas de commentaire
1
0
18 Jan '13
Author: tchemit
Date: 2013-01-18 13:40:25 +0100 (Fri, 18 Jan 2013)
New Revision: 222
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/222
Log:
#1852: [ERGO] - Barre de progression pour les actions longues (mise en place des actions pour l'?\195?\169cran de d?\195?\169marrage et les menus)
Added:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseCatchesAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProgramAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/SelectCruiseAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/ValidateSelectedCruiseCatchesAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCatchesAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCruiseAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProgramAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewCruiseAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProgramAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ValidateCatchesAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/ActionListCellRenderer.java
Removed:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/AbstractHomeAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/macrowaste/MacroWasteBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/plankton/PlanktonBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
Copied: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiAction.java (from rev 220, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/AbstractHomeAction.java)
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiAction.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -0,0 +1,126 @@
+package fr.ifremer.tutti.ui.swing;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * 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.ifremer.tutti.ui.swing.util.TuttiUIUtil;
+import jaxx.runtime.SwingUtil;
+import jaxx.runtime.swing.ErrorDialogUI;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.jdesktop.beans.AbstractBean;
+
+import javax.swing.AbstractAction;
+import java.awt.event.ActionEvent;
+import java.util.Timer;
+import java.util.TimerTask;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public abstract class AbstractTuttiAction<M extends AbstractBean, H extends AbstractTuttiUIHandler<M>> extends AbstractAction {
+
+ private static final long serialVersionUID = 1L;
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(AbstractTuttiAction.class);
+
+ private static final Timer t = new Timer();
+
+ private final H handler;
+
+ protected abstract void doAction(ActionEvent event);
+
+ public AbstractTuttiAction(H handler,
+ String name,
+ String icon,
+ String text,
+ String tip) {
+ this.handler = handler;
+ putValue(LARGE_ICON_KEY, SwingUtil.createActionIcon(icon));
+ putValue(ACTION_COMMAND_KEY, name);
+ putValue(NAME, text);
+ putValue(SHORT_DESCRIPTION, tip);
+ }
+
+ @Override
+ public final void actionPerformed(ActionEvent event) {
+
+ if (log.isInfoEnabled()) {
+ log.info("Will starts action: " + this);
+ }
+ TimerTask timer = new TimerTask() {
+ @Override
+ public void run() {
+ if (log.isInfoEnabled()) {
+ log.info("Task [" + AbstractTuttiAction.this + "] is started since 1 second!!!");
+ }
+
+ TuttiUIUtil.updateBusyState(getContext().getMainUI(), true);
+ }
+
+ @Override
+ public boolean cancel() {
+ if (log.isInfoEnabled()) {
+ log.info("Task [" + AbstractTuttiAction.this + "] canceled.");
+ }
+ TuttiUIUtil.updateBusyState(getContext().getMainUI(), false);
+ boolean cancel = super.cancel();
+ return cancel;
+ }
+ };
+
+ try {
+
+ t.schedule(timer, 500);
+ doAction(event);
+ } catch (Exception e) {
+ ErrorDialogUI.showError(e);
+ } finally {
+ if (log.isInfoEnabled()) {
+ log.info("After action: " + this);
+ }
+ timer.cancel();
+ }
+ }
+
+ public TuttiUIContext getContext() {
+ return handler.getContext();
+ }
+
+ public H getHandler() {
+ return handler;
+ }
+
+ public M getModel() {
+ return handler.getModel();
+ }
+
+ protected void setMnemonic(int key) {
+ putValue(MNEMONIC_KEY, key);
+ }
+}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiUIHandler.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiUIHandler.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -50,6 +50,7 @@
import org.nuiton.validator.bean.simple.SimpleBeanValidator;
import javax.swing.AbstractAction;
+import javax.swing.DefaultComboBoxModel;
import javax.swing.JComponent;
import javax.swing.JDialog;
import javax.swing.JLabel;
@@ -94,7 +95,7 @@
public abstract void onCloseUI();
- protected abstract M getModel();
+ public abstract M getModel();
protected final TuttiUIContext context;
@@ -106,6 +107,10 @@
//-- Public methods --//
//------------------------------------------------------------------------//
+ public DefaultComboBoxModel newComboModel(Object... items) {
+ return new DefaultComboBoxModel(items);
+ }
+
@Override
public void showInformationMessage(String message) {
context.showInformationMessage(message);
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseAction.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -0,0 +1,64 @@
+package fr.ifremer.tutti.ui.swing;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * 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.base.Preconditions;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.awt.event.ActionEvent;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class EditSelectedCruiseAction extends AbstractTuttiAction<TuttiUIContext, MainUIHandler> {
+
+ private static final long serialVersionUID = 1L;
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(EditSelectedCruiseAction.class);
+
+ public EditSelectedCruiseAction(MainUIHandler handler) {
+ super(handler,
+ "editCruise",
+ "edit",
+ _("tutti.action.editCruise"),
+ _("tutti.action.editCruise.tip"));
+ }
+
+ @Override
+ protected void doAction(ActionEvent e) {
+ Preconditions.checkState(getContext().isCruiseFilled());
+ if (log.isInfoEnabled()) {
+ log.info("Edit cruise: " + getContext().getCruiseId());
+ }
+ getContext().setScreen(TuttiScreen.EDIT_CRUISE);
+ }
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseCatchesAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseCatchesAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseCatchesAction.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -0,0 +1,60 @@
+package fr.ifremer.tutti.ui.swing;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * 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.base.Preconditions;
+
+import java.awt.event.ActionEvent;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class EditSelectedCruiseCatchesAction extends AbstractTuttiAction<TuttiUIContext, MainUIHandler> {
+
+ private static final long serialVersionUID = 1L;
+
+ public EditSelectedCruiseCatchesAction(MainUIHandler handler) {
+ super(handler,
+ "editCatches",
+ "edit",
+ _("tutti.action.editCatches"),
+ _("tutti.action.editCatches.tip")
+ );
+ setMnemonic('C');
+ }
+
+ @Override
+ protected void doAction(ActionEvent e) {
+ Preconditions.checkState(getContext().isCruiseFilled());
+ getContext().setValidationContext(TuttiUIContext.VALIDATION_CONTEXT_EDIT);
+ getContext().setScreen(null);
+ getContext().setScreen(TuttiScreen.EDIT_FISHING_OPERATION);
+ }
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseCatchesAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProgramAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProgramAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProgramAction.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -0,0 +1,64 @@
+package fr.ifremer.tutti.ui.swing;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * 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.base.Preconditions;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.awt.event.ActionEvent;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class EditSelectedProgramAction extends AbstractTuttiAction<TuttiUIContext, MainUIHandler> {
+
+ private static final long serialVersionUID = 1L;
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(EditSelectedProgramAction.class);
+
+ public EditSelectedProgramAction(MainUIHandler handler) {
+ super(handler,
+ "editProgram",
+ "edit",
+ _("tutti.action.editProgram"),
+ _("tutti.action.editProgram.tip"));
+ }
+
+ @Override
+ protected void doAction(ActionEvent e) {
+ Preconditions.checkState(getContext().getProgramId() != null);
+ if (log.isInfoEnabled()) {
+ log.info("Edit program: " + getContext().getProgramId());
+ }
+ getContext().setScreen(TuttiScreen.EDIT_PROGRAM);
+ }
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProgramAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProtocolAction.java (from rev 220, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java)
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProtocolAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProtocolAction.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -0,0 +1,65 @@
+package fr.ifremer.tutti.ui.swing;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * 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.base.Preconditions;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.awt.event.ActionEvent;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class EditSelectedProtocolAction extends AbstractTuttiAction<TuttiUIContext, MainUIHandler> {
+
+ private static final long serialVersionUID = 1L;
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(EditSelectedProtocolAction.class);
+
+ public EditSelectedProtocolAction(MainUIHandler handler) {
+ super(handler,
+ "editProtocol",
+ "edit",
+ _("tutti.action.editProtocol"),
+ _("tutti.action.editProtocol.tip"));
+ setMnemonic('P');
+ }
+
+ @Override
+ protected void doAction(ActionEvent e) {
+ Preconditions.checkState(getContext().isProtocolFilled());
+ if (log.isInfoEnabled()) {
+ log.info("Edit protocol: " + getContext().getProtocolId());
+ }
+ getContext().setScreen(TuttiScreen.EDIT_PROTOCOL);
+ }
+}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.css 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.css 2013-01-18 12:40:25 UTC (rev 222)
@@ -52,43 +52,40 @@
mnemonic: A;
}
+#menuActionSelectCruise {
+ enabled: {model.getScreen() != TuttiScreen.SELECT_CRUISE};
+ action: {selectCruiseAction};
+}
-#menuActionManageProtocol {
- text: "tutti.action.manageProtocol";
- toolTipText: "tutti.action.manageProtocol.tip";
- mnemonic: P;
- enabled: {model.getScreen() != TuttiScreen.EDIT_PROTOCOL && model.isProtocolFilled()};
- /*actionIcon: "protocol";*/
+#menuActionEditProgram {
+ enabled: {model.getScreen() != TuttiScreen.EDIT_PROGRAM && model.isProgramFilled()};
+ action: {editProgramAction};
}
-#menuActionSelectCampaign {
- text: "tutti.action.selectCampaign";
- toolTipText: "tutti.action.selectCampaign.tip";
- mnemonic: S;
- enabled: {model.getScreen() != TuttiScreen.SELECT_CRUISE};
- /*actionIcon: "cruise";*/
+#menuActionEditCruise {
+ enabled: {model.getScreen() != TuttiScreen.EDIT_CRUISE && model.isCruiseFilled()};
+ action: {editCruiseAction};
}
-#menuActionFillCatches {
- text: "tutti.action.fillCatches";
- toolTipText: "tutti.action.fillCatches.tip";
- mnemonic: C;
+#menuActionEditProtocol {
+ enabled: {model.getScreen() != TuttiScreen.EDIT_PROTOCOL && model.isProtocolFilled()};
+ action: {editProtocolAction};
+}
+
+#menuActionEditCatches {
enabled: {(
- TuttiUIContext.VALIDATION_CONTEXT_VALIDATE.equals(model.getValidationContext())
- || model.getScreen() != TuttiScreen.EDIT_FISHING_OPERATION
- ) && model.isCruiseContextFilled()};
- actionIcon: edit;
+ !TuttiUIContext.VALIDATION_CONTEXT_EDIT.equals(model.getValidationContext())
+ || model.getScreen() != TuttiScreen.EDIT_FISHING_OPERATION
+ ) && model.isCruiseFilled()};
+ action: {editCatchesAction};
}
#menuActionValidateCatches {
- text: "tutti.action.validateCatches";
- toolTipText: "tutti.action.validateCatches.tip";
- mnemonic: V;
enabled: {(
- !TuttiUIContext.VALIDATION_CONTEXT_VALIDATE.equals(model.getValidationContext())
- || model.getScreen() != TuttiScreen.EDIT_FISHING_OPERATION
- ) && model.isCruiseContextFilled()};
- actionIcon: validate;
+ !TuttiUIContext.VALIDATION_CONTEXT_VALIDATE.equals(model.getValidationContext())
+ || model.getScreen() != TuttiScreen.EDIT_FISHING_OPERATION
+ ) && model.isCruiseFilled()};
+ action: {validateCatchesAction};
}
#menuSynchronisations {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.jaxx 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.jaxx 2013-01-18 12:40:25 UTC (rev 222)
@@ -39,6 +39,13 @@
<MainUIHandler id='handler'
initializer='getContextValue(MainUIHandler.class)'/>
+ <SelectCruiseAction id='selectCruiseAction' constructorParams='handler'/>
+ <EditSelectedProtocolAction id='editProtocolAction' constructorParams='handler'/>
+ <EditSelectedProgramAction id='editProgramAction' constructorParams='handler'/>
+ <EditSelectedCruiseAction id='editCruiseAction' constructorParams='handler'/>
+ <EditSelectedCruiseCatchesAction id='editCatchesAction' constructorParams='handler'/>
+ <ValidateSelectedCruiseCatchesAction id='validateCatchesAction' constructorParams='handler'/>
+
<script><![CDATA[
public MainUI(TuttiUIContext context) {
@@ -73,14 +80,12 @@
</JMenu>
<JMenu id='menuActions'>
- <JMenuItem id='menuActionManageProtocol'
- onActionPerformed="getHandler().showManageProtocol()"/>
- <JMenuItem id='menuActionSelectCampaign'
- onActionPerformed="getHandler().showSelectCampaign()"/>
- <JMenuItem id='menuActionFillCatches'
- onActionPerformed="getHandler().showFillCatches()"/>
- <JMenuItem id='menuActionValidateCatches'
- onActionPerformed="getHandler().showFillCatches()"/>
+ <JMenuItem id='menuActionSelectCruise'/>
+ <JMenuItem id='menuActionEditProgram'/>
+ <JMenuItem id='menuActionEditCruise'/>
+ <JMenuItem id='menuActionEditProtocol'/>
+ <JMenuItem id='menuActionEditCatches'/>
+ <JMenuItem id='menuActionValidateCatches'/>
</JMenu>
<JMenu id='menuSynchronisations'>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUIHandler.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUIHandler.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -35,23 +35,24 @@
import fr.ifremer.tutti.ui.swing.content.operation.FishingOperationsUI;
import fr.ifremer.tutti.ui.swing.content.program.EditProgramUI;
import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUI;
-import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
-import java.awt.Desktop;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-import java.net.URL;
-import java.util.Calendar;
-import javax.swing.JComponent;
-import javax.swing.JToolBar;
import jaxx.runtime.swing.AboutPanel;
import jaxx.runtime.swing.ErrorDialogUI;
import jaxx.runtime.validator.swing.SwingValidator;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import static org.nuiton.i18n.I18n._;
import org.nuiton.util.ApplicationConfig;
import org.nuiton.widget.SwingSession;
+import javax.swing.JComponent;
+import javax.swing.JToolBar;
+import java.awt.Desktop;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.net.URL;
+import java.util.Calendar;
+
+import static org.nuiton.i18n.I18n._;
+
/**
* @author tchemit <chemit(a)codelutin.com>
* @since 0.1
@@ -62,7 +63,7 @@
private static final Log log = LogFactory.getLog(MainUIHandler.class);
public static final String CLONE_PROTOCOL = "cloneProtocol";
-
+
protected MainUI ui;
protected JComponent currentBody;
@@ -74,6 +75,7 @@
this.ui = ui;
this.persistenceService = context.getService(PersistenceService.class);
context.addMessageNotifier(this);
+ context.setMainUI(ui);
}
//------------------------------------------------------------------------//
@@ -113,38 +115,26 @@
//SwingUtil.getLayer(ui.getBody()).setUI(new BetaLayerUI());
changeTitle();
-
+
JToolBar bar = ui.getBottomBar();
ui.getStatus().addWidget(bar, 0);
TuttiScreen screen;
-// if (context.isCruiseContextFilled()) {
-//
-// // direct fill catches screen
-// screen = TuttiScreen.EDIT_FISHING_OPERATION;
-// } else {
-//
-// // go to select cruise screen
-// screen = TuttiScreen.SELECT_CRUISE;
-// }
-
screen = TuttiScreen.SELECT_CRUISE;
context.setScreen(screen);
-
+
}
@Override
public void onCloseUI() {
-// closeCurrentBody();
-
context.close();
}
@Override
- protected TuttiUIContext getModel() {
+ public TuttiUIContext getModel() {
return ui.getModel();
}
@@ -161,13 +151,6 @@
// Close the application
RunTutti.closeTutti(ui, false);
- // Re-open the context
-// try {
-// context.open();
-// } catch (Exception ex) {
-// ErrorDialogUI.showError(ex);
-// }
-
RunTutti.startTutti(context);
}
@@ -281,11 +264,11 @@
public void registerValidator(SwingValidator validator) {
ui.getValidatorMessageWidget().registerValidator(validator);
}
-
+
public void clearValidators() {
ui.getValidatorMessageWidget().clearValidators();
}
-
+
//------------------------------------------------------------------------//
//-- Internal methods --//
//------------------------------------------------------------------------//
@@ -294,9 +277,6 @@
try {
- // busy ui
- TuttiUIUtil.updateBusyState(ui, true);
-
// close current body (if any)
if (currentBody != null) {
TuttiUI<?, ?> body = (TuttiUI<?, ?>) currentBody;
@@ -358,7 +338,7 @@
screenUI = new EditProtocolUI(ui);
break;
-
+
case CLONE_PROTOCOL:
screenTitle = _("tutti.title.create.protocol");
ui.setContextValue(true, CLONE_PROTOCOL);
@@ -389,14 +369,8 @@
}
} catch (Exception e) {
- ErrorDialogUI.showError(e);
-
// go back to home
context.setScreen(TuttiScreen.SELECT_CRUISE);
- } finally {
-
- // free ui
- TuttiUIUtil.updateBusyState(ui, false);
}
}
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/SelectCruiseAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/SelectCruiseAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/SelectCruiseAction.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -0,0 +1,56 @@
+package fr.ifremer.tutti.ui.swing;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * 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.awt.event.ActionEvent;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class SelectCruiseAction extends AbstractTuttiAction<TuttiUIContext, MainUIHandler> {
+
+ private static final long serialVersionUID = 1L;
+
+ public SelectCruiseAction(MainUIHandler handler) {
+ super(handler,
+ "selectCruise",
+ "home",
+ _("tutti.action.selectCruise"),
+ _("tutti.action.selectCruise.tip")
+ );
+ setMnemonic('S');
+ }
+
+ @Override
+ protected void doAction(ActionEvent e) {
+// Preconditions.checkNotNull(getContext().isCruiseFilled());
+ getContext().setScreen(TuttiScreen.SELECT_CRUISE);
+ }
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/SelectCruiseAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -70,8 +70,10 @@
public static final String PROPERTY_SCREEN = "screen";
- public static final String PROPERTY_CRUISE_CONTEXT_FILLED = "cruiseContextFilled";
+ public static final String PROPERTY_PROGRAM_FILLED = "programFilled";
+ public static final String PROPERTY_CRUISE__FILLED = "cruiseFilled";
+
public static final String PROPERTY_PROTOCOL_FILLED = "protocolFilled";
public static final String PROPERTY_VALIDATION_CONTEXT = "validationContext";
@@ -158,6 +160,8 @@
*/
private String validationContext;
+ private MainUI mainUI;
+
public static TuttiUIContext newContext(TuttiConfig config) {
Preconditions.checkNotNull(config);
Preconditions.checkState(applicationContext == null,
@@ -208,39 +212,44 @@
return protocolId;
}
- public boolean isCruiseContextFilled() {
- return StringUtils.isNotBlank(programId) &&
- StringUtils.isNotBlank(cruiseId);
+ public boolean isCruiseFilled() {
+ return isProgramFilled() && StringUtils.isNotBlank(cruiseId);
}
public boolean isProtocolFilled() {
return StringUtils.isNotBlank(protocolId);
}
+ public boolean isProgramFilled() {
+ return StringUtils.isNotBlank(programId);
+ }
+
+
public TuttiScreen getScreen() {
return screen;
}
public void setProgramId(String programId) {
- boolean oldValue = isCruiseContextFilled();
+ boolean oldProgramFilled = isProgramFilled();
+ boolean oldCruiseFilled = isCruiseFilled();
this.programId = programId;
// always propagate the change
firePropertyChange(PROPERTY_PROGRAM_ID, -1, programId);
- firePropertyChange(PROPERTY_CRUISE_CONTEXT_FILLED,
- oldValue, isCruiseContextFilled());
+ firePropertyChange(PROPERTY_PROGRAM_FILLED, oldProgramFilled, isProgramFilled());
+ firePropertyChange(PROPERTY_CRUISE__FILLED, oldCruiseFilled, isCruiseFilled());
}
public void setCruiseId(String cruiseId) {
- boolean oldValue = isCruiseContextFilled();
+ boolean oldValue = isCruiseFilled();
this.cruiseId = cruiseId;
// always propagate the change
firePropertyChange(PROPERTY_CRUISE_ID, -1, cruiseId);
- firePropertyChange(PROPERTY_CRUISE_CONTEXT_FILLED,
- oldValue, isCruiseContextFilled());
+ firePropertyChange(PROPERTY_CRUISE__FILLED,
+ oldValue, isCruiseFilled());
}
public void setProtocolId(String protocolId) {
@@ -293,7 +302,8 @@
PersistenceService persistenceService =
getService(PersistenceService.class);
- if (protocolId != null) {
+ if (isProtocolFilled()) {
+
TuttiProtocol protocol = persistenceService.getProtocol(protocolId);
if (protocol == null) {
@@ -307,7 +317,7 @@
}
}
- if (programId != null) {
+ if (isProgramFilled()) {
Program program = persistenceService.getProgram(programId);
if (program == null) {
@@ -330,7 +340,7 @@
setProgramId(programId);
// test cruiseId
- if (cruiseId != null) {
+ if (isCruiseFilled()) {
Cruise cruise = persistenceService.getCruise(cruiseId);
@@ -399,6 +409,7 @@
}
removePropertyChangeListener(listener);
}
+ setMainUI(null);
}
protected void saveContextToConfig() {
@@ -426,4 +437,12 @@
public RessourceClassLoader getResourceLoader() {
return resourceLoader;
}
+
+ public void setMainUI(MainUI mainUI) {
+ this.mainUI = mainUI;
+ }
+
+ public MainUI getMainUI() {
+ return mainUI;
+ }
}
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/ValidateSelectedCruiseCatchesAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/ValidateSelectedCruiseCatchesAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/ValidateSelectedCruiseCatchesAction.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -0,0 +1,59 @@
+package fr.ifremer.tutti.ui.swing;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * 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.base.Preconditions;
+
+import java.awt.event.ActionEvent;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class ValidateSelectedCruiseCatchesAction extends AbstractTuttiAction<TuttiUIContext, MainUIHandler> {
+
+ private static final long serialVersionUID = 1L;
+
+ public ValidateSelectedCruiseCatchesAction(MainUIHandler handler) {
+ super(handler,
+ "validateCatches",
+ "validate",
+ _("tutti.action.validateCatches"),
+ _("tutti.action.validateCatches.tip")
+ );
+ }
+
+ @Override
+ protected void doAction(ActionEvent e) {
+ Preconditions.checkState(getContext().isCruiseFilled());
+ getContext().setValidationContext(TuttiUIContext.VALIDATION_CONTEXT_VALIDATE);
+ getContext().setScreen(null);
+ getContext().setScreen(TuttiScreen.EDIT_FISHING_OPERATION);
+ }
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/ValidateSelectedCruiseCatchesAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -267,7 +267,7 @@
}
@Override
- protected EditCruiseUIModel getModel() {
+ public EditCruiseUIModel getModel() {
return ui.getModel();
}
Deleted: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/AbstractHomeAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/AbstractHomeAction.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/AbstractHomeAction.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -1,62 +0,0 @@
-package fr.ifremer.tutti.ui.swing.content.home;
-
-/*
- * #%L
- * Tutti :: UI
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 - 2013 Ifremer
- * %%
- * 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.ifremer.tutti.ui.swing.TuttiUIContext;
-import jaxx.runtime.SwingUtil;
-
-import javax.swing.AbstractAction;
-
-/**
- * TODO
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 1.0
- */
-public abstract class AbstractHomeAction extends AbstractAction {
-
- private static final long serialVersionUID = 1L;
-
- protected final TuttiUIContext context;
-
- protected final SelectCruiseUIModel model;
-
- public AbstractHomeAction(TuttiUIContext context,
- SelectCruiseUIModel model,
- String name,
- String icon,
- String text,
- String tip) {
- this.context = context;
- this.model = model;
- putValue(LARGE_ICON_KEY, SwingUtil.createActionIcon(icon));
- putValue(ACTION_COMMAND_KEY, name);
- putValue(NAME, name);
- putValue(SHORT_DESCRIPTION, text);
- putValue(LONG_DESCRIPTION, tip);
-
- }
-
-}
Deleted: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -1,71 +0,0 @@
-package fr.ifremer.tutti.ui.swing.content.home;
-
-/*
- * #%L
- * Tutti :: UI
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 - 2013 Ifremer
- * %%
- * 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.ezware.oxbow.swingbits.util.Preconditions;
-import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
-import fr.ifremer.tutti.ui.swing.TuttiScreen;
-import fr.ifremer.tutti.ui.swing.TuttiUIContext;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import java.awt.event.ActionEvent;
-
-import static org.nuiton.i18n.I18n._;
-
-/**
- * TODO
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 1.0
- */
-public class CloneProtocolAction extends AbstractHomeAction {
-
- private static final long serialVersionUID = 1L;
-
- /** Logger. */
- private static final Log log = LogFactory.getLog(CloneProtocolAction.class);
-
- public CloneProtocolAction(TuttiUIContext context,
- SelectCruiseUIModel model) {
- super(context,
- model,
- "cloneProtocol",
- "copy",
- _("tutti.action.clone"),
- _("tutti.action.clone.protocol.tip"));
- }
-
- @Override
- public void actionPerformed(ActionEvent e) {
- TuttiProtocol protocol = model.getProtocol();
- Preconditions.checkNotNull(protocol);
- if (log.isInfoEnabled()) {
- log.info("Clone protocol: " + protocol.getId());
- }
- context.setProtocolId(protocol.getId());
- context.setScreen(TuttiScreen.CLONE_PROTOCOL);
- }
-}
Copied: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java (from rev 220, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java)
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -0,0 +1,69 @@
+package fr.ifremer.tutti.ui.swing.content.home;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * 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.ezware.oxbow.swingbits.util.Preconditions;
+import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
+import fr.ifremer.tutti.ui.swing.AbstractTuttiAction;
+import fr.ifremer.tutti.ui.swing.TuttiScreen;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.awt.event.ActionEvent;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class CloneProtocolAction extends AbstractTuttiAction<SelectCruiseUIModel, SelectCruiseUIHandler> {
+
+ private static final long serialVersionUID = 1L;
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(CloneProtocolAction.class);
+
+ public CloneProtocolAction(SelectCruiseUIHandler handler) {
+ super(handler,
+ "cloneProtocol",
+ "copy",
+ _("tutti.action.clone"),
+ _("tutti.action.clone.protocol.tip"));
+ }
+
+ @Override
+ protected void doAction(ActionEvent e) {
+ TuttiProtocol protocol = getModel().getProtocol();
+ Preconditions.checkNotNull(protocol);
+ if (log.isInfoEnabled()) {
+ log.info("Clone protocol: " + protocol.getId());
+ }
+ getContext().setProtocolId(protocol.getId());
+ getContext().setScreen(TuttiScreen.CLONE_PROTOCOL);
+ }
+}
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCatchesAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCatchesAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCatchesAction.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -0,0 +1,61 @@
+package fr.ifremer.tutti.ui.swing.content.home;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * 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.base.Preconditions;
+import fr.ifremer.tutti.ui.swing.AbstractTuttiAction;
+import fr.ifremer.tutti.ui.swing.TuttiScreen;
+import fr.ifremer.tutti.ui.swing.TuttiUIContext;
+
+import java.awt.event.ActionEvent;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class EditCatchesAction extends AbstractTuttiAction<SelectCruiseUIModel, SelectCruiseUIHandler> {
+
+ private static final long serialVersionUID = 1L;
+
+ public EditCatchesAction(SelectCruiseUIHandler handler) {
+ super(handler,
+ "editCatches",
+ "edit",
+ _("tutti.action.editCatches"),
+ _("tutti.action.editCatches.tip")
+ );
+ }
+
+ @Override
+ protected void doAction(ActionEvent e) {
+ Preconditions.checkState(getContext().isCruiseFilled());
+ getContext().setValidationContext(TuttiUIContext.VALIDATION_CONTEXT_EDIT);
+ getContext().setScreen(TuttiScreen.EDIT_FISHING_OPERATION);
+ }
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCatchesAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCruiseAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCruiseAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCruiseAction.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -0,0 +1,62 @@
+package fr.ifremer.tutti.ui.swing.content.home;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * 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.ezware.oxbow.swingbits.util.Preconditions;
+import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.ui.swing.AbstractTuttiAction;
+import fr.ifremer.tutti.ui.swing.TuttiScreen;
+
+import java.awt.event.ActionEvent;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class EditCruiseAction extends AbstractTuttiAction<SelectCruiseUIModel, SelectCruiseUIHandler> {
+
+ private static final long serialVersionUID = 1L;
+
+ public EditCruiseAction(SelectCruiseUIHandler handler) {
+ super(handler,
+ "editCruise",
+ "edit",
+ _("tutti.action.edit"),
+ _("tutti.action.editCruise.tip")
+ );
+ }
+
+ @Override
+ protected void doAction(ActionEvent e) {
+ Cruise cruise = getModel().getCruise();
+ Preconditions.checkNotNull(cruise);
+ getContext().setCruiseId(cruise.getId());
+ getContext().setScreen(TuttiScreen.EDIT_CRUISE);
+ }
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCruiseAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProgramAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProgramAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProgramAction.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -0,0 +1,62 @@
+package fr.ifremer.tutti.ui.swing.content.home;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * 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.ezware.oxbow.swingbits.util.Preconditions;
+import fr.ifremer.tutti.persistence.entities.data.Program;
+import fr.ifremer.tutti.ui.swing.AbstractTuttiAction;
+import fr.ifremer.tutti.ui.swing.TuttiScreen;
+
+import java.awt.event.ActionEvent;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class EditProgramAction extends AbstractTuttiAction<SelectCruiseUIModel, SelectCruiseUIHandler> {
+
+ private static final long serialVersionUID = 1L;
+
+ public EditProgramAction(SelectCruiseUIHandler handler) {
+ super(handler,
+ "editProgram",
+ "edit",
+ _("tutti.action.edit"),
+ _("tutti.action.editProgram.tip")
+ );
+ }
+
+ @Override
+ protected void doAction(ActionEvent e) {
+ Program program = getModel().getProgram();
+ Preconditions.checkNotNull(program);
+ getContext().setProgramId(program.getId());
+ getContext().setScreen(TuttiScreen.EDIT_PROGRAM);
+ }
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProgramAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Deleted: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -1,70 +0,0 @@
-package fr.ifremer.tutti.ui.swing.content.home;
-
-/*
- * #%L
- * Tutti :: UI
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 - 2013 Ifremer
- * %%
- * 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.ezware.oxbow.swingbits.util.Preconditions;
-import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
-import fr.ifremer.tutti.ui.swing.TuttiScreen;
-import fr.ifremer.tutti.ui.swing.TuttiUIContext;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import java.awt.event.ActionEvent;
-
-import static org.nuiton.i18n.I18n._;
-
-/**
- * TODO
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 1.0
- */
-public class EditProtocolAction extends AbstractHomeAction {
-
- private static final long serialVersionUID = 1L;
-
- /** Logger. */
- private static final Log log = LogFactory.getLog(EditProtocolAction.class);
- public EditProtocolAction(TuttiUIContext context,
- SelectCruiseUIModel model) {
- super(context,
- model,
- "editProtocol",
- "edit",
- _("tutti.action.edit"),
- _("tutti.action.edit.protocol.tip"));
- }
-
- @Override
- public void actionPerformed(ActionEvent e) {
- TuttiProtocol protocol = model.getProtocol();
- Preconditions.checkNotNull(protocol);
- if (log.isInfoEnabled()) {
- log.info("Edit protocol: "+protocol.getId());
- }
- context.setProtocolId(protocol.getId());
- context.setScreen(TuttiScreen.EDIT_PROTOCOL);
- }
-}
Copied: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java (from rev 220, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java)
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -0,0 +1,69 @@
+package fr.ifremer.tutti.ui.swing.content.home;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * 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.ezware.oxbow.swingbits.util.Preconditions;
+import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
+import fr.ifremer.tutti.ui.swing.AbstractTuttiAction;
+import fr.ifremer.tutti.ui.swing.TuttiScreen;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.awt.event.ActionEvent;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class EditProtocolAction extends AbstractTuttiAction<SelectCruiseUIModel, SelectCruiseUIHandler> {
+
+ private static final long serialVersionUID = 1L;
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(EditProtocolAction.class);
+
+ public EditProtocolAction(SelectCruiseUIHandler handler) {
+ super(handler,
+ "editProtocol",
+ "edit",
+ _("tutti.action.edit"),
+ _("tutti.action.edit.protocol.tip"));
+ }
+
+ @Override
+ protected void doAction(ActionEvent e) {
+ TuttiProtocol protocol = getModel().getProtocol();
+ Preconditions.checkNotNull(protocol);
+ if (log.isInfoEnabled()) {
+ log.info("Edit protocol: " + protocol.getId());
+ }
+ getContext().setProtocolId(protocol.getId());
+ getContext().setScreen(TuttiScreen.EDIT_PROTOCOL);
+ }
+}
Deleted: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -1,70 +0,0 @@
-package fr.ifremer.tutti.ui.swing.content.home;
-
-/*
- * #%L
- * Tutti :: UI
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 - 2013 Ifremer
- * %%
- * 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.ezware.oxbow.swingbits.util.Preconditions;
-import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
-import fr.ifremer.tutti.ui.swing.TuttiUIContext;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import java.awt.event.ActionEvent;
-
-import static org.nuiton.i18n.I18n._;
-
-/**
- * TODO
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 1.0
- */
-public class ExportProtocolAction extends AbstractHomeAction {
-
- private static final long serialVersionUID = 1L;
-
- /** Logger. */
- private static final Log log =
- LogFactory.getLog(ExportProtocolAction.class);
-
- public ExportProtocolAction(TuttiUIContext context,
- SelectCruiseUIModel model) {
- super(context,
- model,
- "exportProtocol",
- "export",
- _("tutti.action.export"),
- _("tutti.action.export.protocol.tip"));
- }
-
- @Override
- public void actionPerformed(ActionEvent e) {
- TuttiProtocol protocol = model.getProtocol();
- Preconditions.checkNotNull(protocol);
-
- if (log.isInfoEnabled()) {
- log.info("Export protocol: " + protocol.getId());
- }
- }
-}
Copied: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java (from rev 220, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java)
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -0,0 +1,68 @@
+package fr.ifremer.tutti.ui.swing.content.home;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * 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.ezware.oxbow.swingbits.util.Preconditions;
+import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
+import fr.ifremer.tutti.ui.swing.AbstractTuttiAction;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.awt.event.ActionEvent;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class ExportProtocolAction extends AbstractTuttiAction<SelectCruiseUIModel, SelectCruiseUIHandler> {
+
+ private static final long serialVersionUID = 1L;
+
+ /** Logger. */
+ private static final Log log =
+ LogFactory.getLog(ExportProtocolAction.class);
+
+ public ExportProtocolAction(SelectCruiseUIHandler handler) {
+ super(handler,
+ "exportProtocol",
+ "export",
+ _("tutti.action.export"),
+ _("tutti.action.export.protocol.tip"));
+ }
+
+ @Override
+ protected void doAction(ActionEvent e) {
+ TuttiProtocol protocol = getModel().getProtocol();
+ Preconditions.checkNotNull(protocol);
+
+ if (log.isInfoEnabled()) {
+ log.info("Export protocol: " + protocol.getId());
+ }
+ }
+}
Deleted: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -1,65 +0,0 @@
-package fr.ifremer.tutti.ui.swing.content.home;
-
-/*
- * #%L
- * Tutti :: UI
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 - 2013 Ifremer
- * %%
- * 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.ifremer.tutti.ui.swing.TuttiUIContext;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import java.awt.event.ActionEvent;
-
-import static org.nuiton.i18n.I18n._;
-
-/**
- * TODO
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 1.0
- */
-public class ImportProtocolAction extends AbstractHomeAction {
-
- private static final long serialVersionUID = 1L;
-
- /** Logger. */
- private static final Log log =
- LogFactory.getLog(ImportProtocolAction.class);
-
- public ImportProtocolAction(TuttiUIContext context,
- SelectCruiseUIModel model) {
- super(context,
- model,
- "importProtocol",
- "import",
- _("tutti.action.import"),
- _("tutti.action.import.protocol.tip"));
- }
-
- @Override
- public void actionPerformed(ActionEvent e) {
- if (log.isInfoEnabled()) {
- log.info("TODO Import protocol!");
- }
- }
-}
Copied: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java (from rev 220, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java)
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -0,0 +1,63 @@
+package fr.ifremer.tutti.ui.swing.content.home;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * 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.ifremer.tutti.ui.swing.AbstractTuttiAction;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.awt.event.ActionEvent;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class ImportProtocolAction extends AbstractTuttiAction<SelectCruiseUIModel, SelectCruiseUIHandler> {
+
+ private static final long serialVersionUID = 1L;
+
+ /** Logger. */
+ private static final Log log =
+ LogFactory.getLog(ImportProtocolAction.class);
+
+ public ImportProtocolAction(SelectCruiseUIHandler handler) {
+ super(handler,
+ "importProtocol",
+ "import",
+ _("tutti.action.import"),
+ _("tutti.action.import.protocol.tip"));
+ }
+
+ @Override
+ protected void doAction(ActionEvent e) {
+ if (log.isInfoEnabled()) {
+ log.info("TODO Import protocol!");
+ }
+ }
+}
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewCruiseAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewCruiseAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewCruiseAction.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -0,0 +1,58 @@
+package fr.ifremer.tutti.ui.swing.content.home;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * 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.ifremer.tutti.ui.swing.AbstractTuttiAction;
+import fr.ifremer.tutti.ui.swing.TuttiScreen;
+
+import java.awt.event.ActionEvent;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class NewCruiseAction extends AbstractTuttiAction<SelectCruiseUIModel, SelectCruiseUIHandler> {
+
+ private static final long serialVersionUID = 1L;
+
+ public NewCruiseAction(SelectCruiseUIHandler handler) {
+ super(handler,
+ "newCruise",
+ "add",
+ _("tutti.action.new"),
+ _("tutti.action.newCruise.tip")
+ );
+ }
+
+ @Override
+ protected void doAction(ActionEvent e) {
+ getContext().setCruiseId(null);
+ getContext().setScreen(TuttiScreen.EDIT_CRUISE);
+ }
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewCruiseAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProgramAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProgramAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProgramAction.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -0,0 +1,59 @@
+package fr.ifremer.tutti.ui.swing.content.home;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * 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.ifremer.tutti.ui.swing.AbstractTuttiAction;
+import fr.ifremer.tutti.ui.swing.TuttiScreen;
+
+import java.awt.event.ActionEvent;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class NewProgramAction extends AbstractTuttiAction<SelectCruiseUIModel, SelectCruiseUIHandler> {
+
+ private static final long serialVersionUID = 1L;
+
+ public NewProgramAction(SelectCruiseUIHandler handler) {
+ super(handler,
+ "newProgram",
+ "add",
+ _("tutti.action.new"),
+ _("tutti.action.newProgram.tip")
+ );
+ }
+
+ @Override
+ protected void doAction(ActionEvent e) {
+ getContext().setProgramId(null);
+ getContext().setCruiseId(null);
+ getContext().setScreen(TuttiScreen.EDIT_PROGRAM);
+ }
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProgramAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProtocolAction.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProtocolAction.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -24,8 +24,8 @@
* #L%
*/
+import fr.ifremer.tutti.ui.swing.AbstractTuttiAction;
import fr.ifremer.tutti.ui.swing.TuttiScreen;
-import fr.ifremer.tutti.ui.swing.TuttiUIContext;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -39,17 +39,15 @@
* @author tchemit <chemit(a)codelutin.com>
* @since 1.0
*/
-public class NewProtocolAction extends AbstractHomeAction {
+public class NewProtocolAction extends AbstractTuttiAction<SelectCruiseUIModel, SelectCruiseUIHandler> {
private static final long serialVersionUID = 1L;
/** Logger. */
private static final Log log = LogFactory.getLog(NewProtocolAction.class);
- public NewProtocolAction(TuttiUIContext context,
- SelectCruiseUIModel model) {
- super(context,
- model,
+ public NewProtocolAction(SelectCruiseUIHandler handler) {
+ super(handler,
"newProtocol",
"add",
_("tutti.action.new"),
@@ -57,11 +55,11 @@
}
@Override
- public void actionPerformed(ActionEvent e) {
+ protected void doAction(ActionEvent e) {
if (log.isInfoEnabled()) {
log.info("New protocol");
}
- context.setProtocolId(null);
- context.setScreen(TuttiScreen.EDIT_PROTOCOL);
+ getContext().setProtocolId(null);
+ getContext().setScreen(TuttiScreen.EDIT_PROTOCOL);
}
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css 2013-01-18 12:40:25 UTC (rev 222)
@@ -41,13 +41,15 @@
#editProgramButton {
enabled: {model.isProgramFound()};
- text: "tutti.action.edit";
- actionIcon: edit;
+ action: {editProgramAction};
+ /*text: "tutti.action.edit";
+ actionIcon: edit;*/
}
#newProgramButton {
- text: "tutti.action.new";
- actionIcon: add;
+ action: {newProgramAction};
+ /*text: "tutti.action.new";
+ actionIcon: add;*/
}
#cruiseLabel {
@@ -63,14 +65,16 @@
#editCruiseButton {
enabled: {model.isProgramFound() && model.isCruiseFound()};
- text: "tutti.action.edit";
- actionIcon: edit;
+ action: {editCruiseAction}
+ /*text: "tutti.action.edit";
+ actionIcon: edit;*/
}
#newCruiseButton {
- actionIcon: add;
enabled: {model.isProgramFound()};
- text: "tutti.action.new";
+ action: {newCruiseAction};
+ /*actionIcon: add;
+ text: "tutti.action.new";*/
}
#protocolLabel {
@@ -84,18 +88,26 @@
enabled: {!protocolCombobox.isEmpty()};
}
+#newProtocolComboBox {
+ model: {handler.newComboModel(newProtocolAction, importProtocolAction)};
+ renderer: {new ActionListCellRenderer()};
+}
#editProtocolComboBox {
+ model: {handler.newComboModel(editProtocolAction, cloneProtocolAction, exportProtocolAction)};
enabled: {model.isProtocolFound()};
+ renderer: {new ActionListCellRenderer()};
}
-#fillFishingOperationsButton {
- text: "tutti.action.fillCatches";
- enabled: {uiContext.isCruiseContextFilled()};
+#editCatchesButton {
+ action: {editCatchesAction};
+ enabled: {uiContext.isCruiseFilled()};
+ /*text: "tutti.action.fillCatches";*/
actionIcon: edit;
}
-#validateFishingOperationsButton {
- text: "tutti.action.validateCatches";
- enabled: {uiContext.isCruiseContextFilled()};
+#validateCatchesButton {
+ action: {validateCatchesAction};
+ enabled: {uiContext.isCruiseFilled()};
+ /*text: "tutti.action.validateCatches";*/
actionIcon: validate;
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx 2013-01-18 12:40:25 UTC (rev 222)
@@ -29,6 +29,7 @@
fr.ifremer.tutti.persistence.entities.data.Cruise
fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol
fr.ifremer.tutti.ui.swing.TuttiUIContext
+ fr.ifremer.tutti.ui.swing.util.ActionListCellRenderer
jaxx.runtime.swing.editor.bean.BeanComboBox
@@ -58,6 +59,22 @@
<SelectCruiseUIModel id='model'
initializer='getContextValue(SelectCruiseUIModel.class)'/>
+ <NewProgramAction id='newProgramAction' constructorParams='handler'/>
+ <EditProgramAction id='editProgramAction' constructorParams='handler'/>
+
+ <NewCruiseAction id='newCruiseAction' constructorParams='handler'/>
+ <EditCruiseAction id='editCruiseAction' constructorParams='handler'/>
+
+ <NewProtocolAction id='newProtocolAction' constructorParams='handler'/>
+ <ImportProtocolAction id='importProtocolAction' constructorParams='handler'/>
+
+ <EditProtocolAction id='editProtocolAction' constructorParams='handler'/>
+ <CloneProtocolAction id='cloneProtocolAction' constructorParams='handler'/>
+ <ExportProtocolAction id='exportProtocolAction' constructorParams='handler'/>
+
+ <EditCatchesAction id='editCatchesAction' constructorParams='handler'/>
+ <ValidateCatchesAction id='validateCatchesAction' constructorParams='handler'/>
+
<Table fill='both' constraints='BorderLayout.CENTER'>
<row>
<cell anchor='west'>
@@ -69,10 +86,10 @@
</cell>
<cell>
<JPanel layout='{new GridLayout(1,0)}'>
- <JButton id='editProgramButton'
- onActionPerformed='handler.showSelectedProgram()'/>
- <JButton id='newProgramButton'
- onActionPerformed='handler.showNewProgram()'/>
+ <JButton id='editProgramButton'/>
+ <!--onActionPerformed='handler.showSelectedProgram()'/>-->
+ <JButton id='newProgramButton'/>
+ <!--onActionPerformed='handler.showNewProgram()'/>-->
</JPanel>
</cell>
</row>
@@ -86,10 +103,10 @@
</cell>
<cell>
<JPanel layout='{new GridLayout(1,0)}'>
- <JButton id='editCruiseButton'
- onActionPerformed='handler.showSelectedCruise()'/>
- <JButton id='newCruiseButton'
- onActionPerformed='handler.showNewCruise()'/>
+ <JButton id='editCruiseButton'/>
+ <!--onActionPerformed='handler.showSelectedCruise()'/>-->
+ <JButton id='newCruiseButton'/>
+ <!--onActionPerformed='handler.showNewCruise()'/>-->
</JPanel>
</cell>
</row>
@@ -105,21 +122,20 @@
<JPanel layout='{new GridLayout(1,0)}'>
<JComboBox id='editProtocolComboBox'
onMouseEntered='if (editProtocolComboBox.isEnabled()) { editProtocolComboBox.showPopup(); }'
- onActionPerformed='handler.showSelectedProtocol(event)'/>
+ onActionPerformed='handler.startExistingProtocolAction(event)'/>
<JComboBox id='newProtocolComboBox'
onMouseEntered='newProtocolComboBox.showPopup()'
- onActionPerformed='handler.showNewProtocol(event)'/>
-
+ onActionPerformed='handler.startNewProtocolAction(event)'/>
</JPanel>
</cell>
</row>
<row>
<cell columns='3'>
<JPanel layout='{new GridLayout(1,0)}'>
- <JButton id='fillFishingOperationsButton'
- onActionPerformed='handler.showFillCatches()'/>
- <JButton id='validateFishingOperationsButton'
- onActionPerformed='handler.showValidateCatches()'/>
+ <JButton id='editCatchesButton'/>
+ <!--onActionPerformed='handler.showFillCatches()'/>-->
+ <JButton id='validateCatchesButton'/>
+ <!--onActionPerformed='handler.showValidateCatches()'/>-->
</JPanel>
</cell>
</row>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -31,7 +31,6 @@
import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
import fr.ifremer.tutti.service.PersistenceService;
import fr.ifremer.tutti.ui.swing.AbstractTuttiUIHandler;
-import fr.ifremer.tutti.ui.swing.TuttiScreen;
import fr.ifremer.tutti.ui.swing.TuttiUIContext;
import jaxx.runtime.swing.editor.bean.BeanComboBox;
import org.apache.commons.collections.CollectionUtils;
@@ -39,13 +38,7 @@
import org.apache.commons.logging.LogFactory;
import javax.swing.Action;
-import javax.swing.DefaultComboBoxModel;
-import javax.swing.DefaultListCellRenderer;
-import javax.swing.Icon;
import javax.swing.JComboBox;
-import javax.swing.JList;
-import javax.swing.border.EmptyBorder;
-import java.awt.Component;
import java.awt.event.ActionEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
@@ -74,7 +67,7 @@
}
@Override
- protected SelectCruiseUIModel getModel() {
+ public SelectCruiseUIModel getModel() {
return ui.getModel();
}
@@ -183,21 +176,18 @@
model.getProtocols(),
model.getProtocol());
- DefaultComboBoxModel newProtocolActions = new DefaultComboBoxModel();
- newProtocolActions.addElement(new NewProtocolAction(context, model));
- newProtocolActions.addElement(new ImportProtocolAction(context, model));
- JComboBox newProtocolComboBox = ui.getNewProtocolComboBox();
- newProtocolComboBox.setModel(newProtocolActions);
- newProtocolComboBox.setRenderer(new ActionListCellRenderer());
+// JComboBox newProtocolComboBox = ui.getNewProtocolComboBox();
+// DefaultComboBoxModel newProtocolActions = (DefaultComboBoxModel) newProtocolComboBox.getModel();
+// newProtocolActions.addElement(new NewProtocolAction(this));
+// newProtocolActions.addElement(new ImportProtocolAction(this));
+//
+// JComboBox editProtocolComboBox = ui.getEditProtocolComboBox();
+// DefaultComboBoxModel editProtocolActions = (DefaultComboBoxModel) editProtocolComboBox.getModel();
+// editProtocolActions.addElement(new EditSelectedProtocolAction(this));
+// editProtocolActions.addElement(new CloneProtocolAction(this));
+// editProtocolActions.addElement(new ExportProtocolAction(this));
+// editProtocolComboBox.setModel(editProtocolActions);
- DefaultComboBoxModel editProtocolActions = new DefaultComboBoxModel();
- editProtocolActions.addElement(new EditProtocolAction(context, model));
- editProtocolActions.addElement(new CloneProtocolAction(context, model));
- editProtocolActions.addElement(new ExportProtocolAction(context, model));
- JComboBox editProtocolComboBox = ui.getEditProtocolComboBox();
- editProtocolComboBox.setModel(editProtocolActions);
- editProtocolComboBox.setRenderer(new ActionListCellRenderer());
-
// newProtocolCombo.addMouseListener(new MouseAdapter() {
//
// @Override
@@ -274,6 +264,9 @@
context.setProtocolId(newValue == null ? null : newValue.getId());
}
});
+
+ ui.applyDataBinding(SelectCruiseUI.BINDING_EDIT_PROGRAM_BUTTON_ENABLED);
+ ui.applyDataBinding(SelectCruiseUI.BINDING_EDIT_CRUISE_BUTTON_ENABLED);
}
@Override
@@ -287,136 +280,17 @@
}
}
- public void showFillCatches() {
- context.setValidationContext(TuttiUIContext.VALIDATION_CONTEXT_EDIT);
- context.setScreen(TuttiScreen.EDIT_FISHING_OPERATION);
- }
-
- public void showValidateCatches() {
- context.setValidationContext(TuttiUIContext.VALIDATION_CONTEXT_VALIDATE);
- context.setScreen(TuttiScreen.EDIT_FISHING_OPERATION);
- }
-
- public void showSelectedProgram() {
-
- Program program = getModel().getProgram();
- context.setProgramId(program.getId());
- context.setScreen(TuttiScreen.EDIT_PROGRAM);
- }
-
- public void showNewProgram() {
- context.setProgramId(null);
- context.setCruiseId(null);
- context.setScreen(TuttiScreen.EDIT_PROGRAM);
- }
-
- public void showSelectedCruise() {
- Cruise cruise = getModel().getCruise();
- context.setCruiseId(cruise.getId());
- context.setScreen(TuttiScreen.EDIT_CRUISE);
- }
-
- public void showNewCruise() {
- context.setCruiseId(null);
- context.setScreen(TuttiScreen.EDIT_CRUISE);
- }
-
- public void showSelectedProtocol(ActionEvent event) {
+ public void startExistingProtocolAction(ActionEvent event) {
JComboBox newProtocolCombo = (JComboBox) event.getSource();
Action selectedAction = (Action) newProtocolCombo.getSelectedItem();
selectedAction.actionPerformed(event);
-// TuttiProtocol protocol = getModel().getProtocol();
-// Preconditions.checkNotNull(protocol,
-// "Protocol can not be null for a edit action");
-// switch (selectedAction) {
-// case EDIT:
-// context.setProtocolId(protocol.getId());
-// context.setScreen(TuttiScreen.EDIT_PROTOCOL);
-// break;
-//
-// case CLONE:
-// context.setProtocolId(protocol.getId());
-// context.setScreen(TuttiScreen.CLONE_PROTOCOL);
-// break;
-//
-// case EXPORT:
-// //TODO kmorin 20130115 import protocol
-// }
}
- public void showNewProtocol(ActionEvent event) {
+ public void startNewProtocolAction(ActionEvent event) {
JComboBox newProtocolCombo = (JComboBox) event.getSource();
Action selectedAction = (Action) newProtocolCombo.getSelectedItem();
selectedAction.actionPerformed(event);
-// switch (selectedAction) {
-// case NEW:
-// context.setProtocolId(null);
-// context.setScreen(TuttiScreen.EDIT_PROTOCOL);
-// break;
-// case IMPORT:
-// //TODO kmorin 20130115 import protocol
-// }
}
-
-// protected enum NewProtocolAction {
-//
-// NEW(n_("tutti.action.new"), "add"),
-// EDIT(n_("tutti.action.edit"), "edit"),
-// CLONE(n_("tutti.action.clone"), "copy"),
-// IMPORT(n_("tutti.action.import"), "import"),
-// EXPORT(n_("tutti.action.export"), "export");
-//
-// protected String label;
-//
-// protected String iconPath;
-//
-// protected ImageIcon icon;
-//
-// private NewProtocolAction(String label, String iconPath) {
-// this.label = label;
-// this.iconPath = iconPath;
-// }
-//
-// public String getLabel() {
-// return label;
-// }
-//
-// public ImageIcon getIcon() {
-// if (icon == null) {
-// icon = SwingUtil.createActionIcon(iconPath);
-// }
-// return icon;
-// }
-//
-// @Override
-// public String toString() {
-// return _(label);
-// }
-//
-// }
-
- public static class ActionListCellRenderer extends DefaultListCellRenderer {
-
- private static final long serialVersionUID = 1L;
-
- protected final EmptyBorder border = new EmptyBorder(4, 8, 4, 8);
-
- @Override
- public Component getListCellRendererComponent(JList list,
- Object value,
- int index,
- boolean isSelected,
- boolean cellHasFocus) {
- Component result = super.getListCellRendererComponent(
- list, value, index, isSelected, cellHasFocus);
- Action action = (Action) value;
- setIcon((Icon) action.getValue(Action.LARGE_ICON_KEY));
- setText((String) action.getValue(Action.SHORT_DESCRIPTION));
- setToolTipText((String) action.getValue(Action.LONG_DESCRIPTION));
- setBorder(border);
- return result;
- }
- }
}
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ValidateCatchesAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ValidateCatchesAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ValidateCatchesAction.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -0,0 +1,61 @@
+package fr.ifremer.tutti.ui.swing.content.home;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * 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.base.Preconditions;
+import fr.ifremer.tutti.ui.swing.AbstractTuttiAction;
+import fr.ifremer.tutti.ui.swing.TuttiScreen;
+import fr.ifremer.tutti.ui.swing.TuttiUIContext;
+
+import java.awt.event.ActionEvent;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class ValidateCatchesAction extends AbstractTuttiAction<SelectCruiseUIModel, SelectCruiseUIHandler> {
+
+ private static final long serialVersionUID = 1L;
+
+ public ValidateCatchesAction(SelectCruiseUIHandler handler) {
+ super(handler,
+ "validateCatches",
+ "validate",
+ _("tutti.action.validateCatches"),
+ _("tutti.action.validateCatches.tip")
+ );
+ }
+
+ @Override
+ protected void doAction(ActionEvent e) {
+ Preconditions.checkState(getContext().isCruiseFilled());
+ getContext().setValidationContext(TuttiUIContext.VALIDATION_CONTEXT_VALIDATE);
+ getContext().setScreen(TuttiScreen.EDIT_FISHING_OPERATION);
+ }
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ValidateCatchesAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -324,7 +324,7 @@
}
@Override
- protected EditFishingOperationUIModel getModel() {
+ public EditFishingOperationUIModel getModel() {
return ui.getModel();
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -177,7 +177,7 @@
}
@Override
- protected FishingOperationsUIModel getModel() {
+ public FishingOperationsUIModel getModel() {
return ui.getModel();
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -127,7 +127,7 @@
}
@Override
- protected EditCatchesUIModel getModel() {
+ public EditCatchesUIModel getModel() {
return ui.getModel();
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -176,7 +176,7 @@
//------------------------------------------------------------------------//
@Override
- protected AccidentalBatchUIModel getModel() {
+ public AccidentalBatchUIModel getModel() {
return ui.getModel();
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -179,7 +179,7 @@
//------------------------------------------------------------------------//
@Override
- protected BenthosBatchUIModel getModel() {
+ public BenthosBatchUIModel getModel() {
return ui.getModel();
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/macrowaste/MacroWasteBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/macrowaste/MacroWasteBatchUIHandler.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/macrowaste/MacroWasteBatchUIHandler.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -181,7 +181,7 @@
//------------------------------------------------------------------------//
@Override
- protected MacroWasteBatchUIModel getModel() {
+ public MacroWasteBatchUIModel getModel() {
return ui.getModel();
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/plankton/PlanktonBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/plankton/PlanktonBatchUIHandler.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/plankton/PlanktonBatchUIHandler.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -177,7 +177,7 @@
//------------------------------------------------------------------------//
@Override
- protected PlanktonBatchUIModel getModel() {
+ public PlanktonBatchUIModel getModel() {
return ui.getModel();
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -373,7 +373,7 @@
//------------------------------------------------------------------------//
@Override
- protected SpeciesBatchUIModel getModel() {
+ public SpeciesBatchUIModel getModel() {
return ui.getModel();
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -144,7 +144,7 @@
//------------------------------------------------------------------------//
@Override
- protected SpeciesFrequencyUIModel getModel() {
+ public SpeciesFrequencyUIModel getModel() {
return ui.getModel();
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIHandler.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIHandler.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -169,7 +169,7 @@
}
@Override
- protected CreateSpeciesBatchUIModel getModel() {
+ public CreateSpeciesBatchUIModel getModel() {
return ui.getModel();
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -140,7 +140,7 @@
//------------------------------------------------------------------------//
@Override
- protected SplitSpeciesBatchUIModel getModel() {
+ public SplitSpeciesBatchUIModel getModel() {
return ui.getModel();
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUIHandler.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUIHandler.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -121,7 +121,7 @@
//------------------------------------------------------------------------//
@Override
- protected EnvironmentTabUIModel getModel() {
+ public EnvironmentTabUIModel getModel() {
return ui.getModel();
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUIHandler.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUIHandler.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -124,7 +124,7 @@
//------------------------------------------------------------------------//
@Override
- protected GearShootingTabUIModel getModel() {
+ public GearShootingTabUIModel getModel() {
return ui.getModel();
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUIHandler.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUIHandler.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -140,7 +140,7 @@
//------------------------------------------------------------------------//
@Override
- protected HydrologyTabUIModel getModel() {
+ public HydrologyTabUIModel getModel() {
return ui.getModel();
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIHandler.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIHandler.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -126,7 +126,7 @@
}
@Override
- protected EditProgramUIModel getModel() {
+ public EditProgramUIModel getModel() {
return ui.getModel();
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -163,7 +163,7 @@
//------------------------------------------------------------------------//
@Override
- protected EditProtocolUIModel getModel() {
+ public EditProtocolUIModel getModel() {
return ui.getModel();
}
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/ActionListCellRenderer.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/ActionListCellRenderer.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/ActionListCellRenderer.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -0,0 +1,61 @@
+package fr.ifremer.tutti.ui.swing.util;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * 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 javax.swing.Action;
+import javax.swing.DefaultListCellRenderer;
+import javax.swing.Icon;
+import javax.swing.JList;
+import javax.swing.border.EmptyBorder;
+import java.awt.Component;
+
+/**
+* TODO
+*
+* @author tchemit <chemit(a)codelutin.com>
+* @since 1.0
+*/
+public class ActionListCellRenderer extends DefaultListCellRenderer {
+
+ private static final long serialVersionUID = 1L;
+
+ protected final EmptyBorder border = new EmptyBorder(4, 8, 4, 8);
+
+ @Override
+ public Component getListCellRendererComponent(JList list,
+ Object value,
+ int index,
+ boolean isSelected,
+ boolean cellHasFocus) {
+ Component result = super.getListCellRendererComponent(
+ list, value, index, isSelected, cellHasFocus);
+ Action action = (Action) value;
+ setIcon((Icon) action.getValue(Action.LARGE_ICON_KEY));
+ setText((String) action.getValue(Action.NAME));
+ setToolTipText((String) action.getValue(Action.SHORT_DESCRIPTION));
+ setBorder(border);
+ return result;
+ }
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/ActionListCellRenderer.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-18 12:40:25 UTC (rev 222)
@@ -5,27 +5,35 @@
tutti.action.cancel=Annuler
tutti.action.casino-import=Import Casino
tutti.action.clone=Cloner
-tutti.action.clone.protocol.tip=
+tutti.action.clone.protocol.tip=Dupliquer le protocole sélectionné
tutti.action.close=Fermer
tutti.action.configuration=Configuration
tutti.action.configuration.tip=Configurer Tutti
tutti.action.createSpeciesBatch=Créer un lot pour une espèce
tutti.action.edit=Editer
-tutti.action.edit.protocol.tip=
+tutti.action.edit.protocol.tip=Éditer le protocole sélectionné
+tutti.action.editCatches=Saisir les captures
+tutti.action.editCatches.tip=Saisir des captures
+tutti.action.editCruise=Campagne
+tutti.action.editCruise.tip=Éditer la campagne sélectionnée
+tutti.action.editProgram=Programme
+tutti.action.editProgram.tip=Éditer le programme sélectionné
+tutti.action.editProtocol=Protocole
+tutti.action.editProtocol.tip=
tutti.action.exit=Quitter
tutti.action.exit.tip=Quitter l'application
tutti.action.export=Exporter
-tutti.action.export.protocol.tip=
-tutti.action.fillCatches=Saisir les captures
-tutti.action.fillCatches.tip=Saisir des captures
+tutti.action.export.protocol.tip=Exporter le protocole sélectionné
tutti.action.generate=Générer
tutti.action.generateCampaignName=Générer le nom
tutti.action.import=Importer
-tutti.action.import.protocol.tip=
+tutti.action.import.protocol.tip=Importer un protocole
tutti.action.manageProtocol=Protocole
tutti.action.manageProtocol.tip=Gérer les protocoles
tutti.action.new=Nouveau
-tutti.action.new.protocol.tip=
+tutti.action.new.protocol.tip=Créer un nouve protocole
+tutti.action.newCruise.tip=Créer une nouvelle campagne
+tutti.action.newProgram.tip=Créer une nouvelle série de campagne
tutti.action.pupitri-import=Import PUPITRI
tutti.action.reload.actions=Recharger les actions
tutti.action.reload.application=Recharger l'application
@@ -38,8 +46,8 @@
tutti.action.removeSpeciesSubBatch.tip=Supprimer tous les lots fils du lot sélectionné
tutti.action.reset.fishingOperationValidState=Réinitialiser
tutti.action.save=Enregistrer
-tutti.action.selectCampaign=Campagne
-tutti.action.selectCampaign.tip=Sélectionner la campagne à utiliser
+tutti.action.selectCruise=Campagne
+tutti.action.selectCruise.tip=Sélectionner la campagne à utiliser
tutti.action.site=Site
tutti.action.site.tip=Accéder au site du projet Tutti
tutti.action.splitSpeciesBatch=Catégoriser le lot
1
0
r221 - in trunk/tutti-ui-swing/src/main: java/fr/ifremer/tutti/ui/swing java/fr/ifremer/tutti/ui/swing/config java/fr/ifremer/tutti/ui/swing/content/home java/fr/ifremer/tutti/ui/swing/content/operation resources/i18n
by kmorin@users.forge.codelutin.com 18 Jan '13
by kmorin@users.forge.codelutin.com 18 Jan '13
18 Jan '13
Author: kmorin
Date: 2013-01-18 12:33:30 +0100 (Fri, 18 Jan 2013)
New Revision: 221
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/221
Log:
- extract coordinate editor option in the config
- add icons
- enable or disable menu items according to the validation context
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfig.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigOption.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigUI.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.css 2013-01-18 08:11:31 UTC (rev 220)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.css 2013-01-18 11:33:30 UTC (rev 221)
@@ -73,15 +73,21 @@
text: "tutti.action.fillCatches";
toolTipText: "tutti.action.fillCatches.tip";
mnemonic: C;
- enabled: {model.getScreen() != TuttiScreen.EDIT_FISHING_OPERATION && model.isCruiseContextFilled()};
- /*actionIcon: "catches";*/
+ enabled: {(
+ TuttiUIContext.VALIDATION_CONTEXT_VALIDATE.equals(model.getValidationContext())
+ || model.getScreen() != TuttiScreen.EDIT_FISHING_OPERATION
+ ) && model.isCruiseContextFilled()};
+ actionIcon: edit;
}
#menuActionValidateCatches {
text: "tutti.action.validateCatches";
toolTipText: "tutti.action.validateCatches.tip";
mnemonic: V;
- enabled: {model.getScreen() != TuttiScreen.EDIT_FISHING_OPERATION && model.isCruiseContextFilled()};
+ enabled: {(
+ !TuttiUIContext.VALIDATION_CONTEXT_VALIDATE.equals(model.getValidationContext())
+ || model.getScreen() != TuttiScreen.EDIT_FISHING_OPERATION
+ ) && model.isCruiseContextFilled()};
actionIcon: validate;
}
@@ -96,6 +102,7 @@
toolTipText: "tutti.menu.synchronisationImport.tip";
mnemonic: I;
enabled: false;
+ actionIcon: import;
}
#menuSynchronisationExport {
@@ -103,6 +110,7 @@
toolTipText: "tutti.menu.synchronisationExport.tip";
mnemonic: E;
enabled: false;
+ actionIcon: export;
}
#menuSynchronisationAllegro {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.jaxx 2013-01-18 08:11:31 UTC (rev 220)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.jaxx 2013-01-18 11:33:30 UTC (rev 221)
@@ -31,6 +31,7 @@
org.jdesktop.swingx.JXTitledPanel
jaxx.runtime.validator.swing.SwingValidator
fr.ifremer.tutti.ui.swing.util.SwingValidatorMessageWidget
+ fr.ifremer.tutti.ui.swing.TuttiUIContext
</import>
<TuttiUIContext id='model'
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfig.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfig.java 2013-01-18 08:11:31 UTC (rev 220)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfig.java 2013-01-18 11:33:30 UTC (rev 221)
@@ -128,6 +128,10 @@
public boolean isShowNumberEditorButton() {
return applicationConfig.getOptionAsBoolean(TuttiConfigOption.SHOW_NUMBER_EDITOR_BUTTON.getKey());
}
+
+ public boolean isUseSexagecimalEditor() {
+ return applicationConfig.getOptionAsBoolean(TuttiConfigOption.USE_SEXAGECIMAL_EDITOR.getKey());
+ }
public String getProgramId() {
String result = applicationConfig.getOption(TuttiConfigOption.PROGRAM_ID.getKey());
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigOption.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigOption.java 2013-01-18 08:11:31 UTC (rev 220)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigOption.java 2013-01-18 11:33:30 UTC (rev 221)
@@ -98,8 +98,14 @@
"tutti.ui.shortcut.closePopup",
n_("tutti.config.ui.shortcut.closePopup"),
"alt pressed F",
- KeyStroke.class);
+ KeyStroke.class),
+ USE_SEXAGECIMAL_EDITOR(
+ "tutti.ui.useSexagecimalEditor",
+ n_("tutti.config.ui.useSexagecimalEditor"),
+ "false",
+ Boolean.class);
+
/** Configuration key. */
private final String key;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigUI.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigUI.java 2013-01-18 08:11:31 UTC (rev 220)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigUI.java 2013-01-18 11:33:30 UTC (rev 221)
@@ -101,12 +101,14 @@
.addOption(TuttiServiceConfigOption.SITE_URL)
.addOption(TuttiConfigOption.UI_CONFIG_FILE);
- // COLOR
- helper.addCategory(n_("tutti.config.category.colors"),
- n_("tutti.config.category.colors.description"),
+ // UI
+
+ helper.addCategory(n_("tutti.config.category.ui"),
+ n_("tutti.config.category.ui.description"),
CALLBACK_UI)
.addOption(TuttiConfigOption.COLOR_ROW_INVALID)
- .addOption(TuttiConfigOption.COLOR_ROW_READ_ONLY);
+ .addOption(TuttiConfigOption.COLOR_ROW_READ_ONLY)
+ .addOption(TuttiConfigOption.USE_SEXAGECIMAL_EDITOR);
// SHORTCUT
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css 2013-01-18 08:11:31 UTC (rev 220)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css 2013-01-18 11:33:30 UTC (rev 221)
@@ -91,9 +91,11 @@
#fillFishingOperationsButton {
text: "tutti.action.fillCatches";
enabled: {uiContext.isCruiseContextFilled()};
+ actionIcon: edit;
}
#validateFishingOperationsButton {
text: "tutti.action.validateCatches";
enabled: {uiContext.isCruiseContextFilled()};
+ actionIcon: validate;
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css 2013-01-18 08:11:31 UTC (rev 220)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css 2013-01-18 11:33:30 UTC (rev 221)
@@ -137,20 +137,9 @@
text: "tutti.label.fishingOperation.gearShootingEnd";
}
-#gearShootingCoordinatesDMSRadio {
- text: "tutti.label.fishingOperation.gearShootingCoordinatesDMS";
- selected: {model.isUseSexagecimalFormat()};
- buttonGroup: "gearShootingCoordinates";
-}
-#gearShootingCoordinatesDDRadio {
- text: "tutti.label.fishingOperation.gearShootingCoordinatesDD";
- selected: {!model.isUseSexagecimalFormat()};
- buttonGroup: "gearShootingCoordinates";
-}
-
CardLayout2Ext {
- selected: {model.isUseSexagecimalFormat() ? "DMS" : "DD"};
+ selected: {handler.getConfig().isUseSexagecimalEditor() ? "DMS" : "DD"};
}
#traitVesselPanel {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.jaxx 2013-01-18 08:11:31 UTC (rev 220)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.jaxx 2013-01-18 11:33:30 UTC (rev 221)
@@ -198,12 +198,7 @@
constraints='BorderLayout.CENTER'>
<row>
<cell>
- <JPanel layout="{new GridLayout(1,0)}">
- <JRadioButton id='gearShootingCoordinatesDDRadio'
- onActionPerformed='handler.setUseSexagecimalFormat(false)'/>
- <JRadioButton id='gearShootingCoordinatesDMSRadio'
- onActionPerformed='handler.setUseSexagecimalFormat(true)'/>
- </JPanel>
+ <JPanel/>
</cell>
<cell>
<JLabel id='gearLatitudeLabel'/>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-01-18 08:11:31 UTC (rev 220)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-01-18 11:33:30 UTC (rev 221)
@@ -26,6 +26,7 @@
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
+import fr.ifremer.tutti.persistence.entities.data.Cruise;
import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
import fr.ifremer.tutti.persistence.entities.data.Program;
import fr.ifremer.tutti.persistence.entities.referential.FishingOperationLocation;
@@ -157,20 +158,21 @@
}
});
- model.addPropertyChangeListener(EditFishingOperationUIModel.PROPERTY_USE_SEXAGECIMAL_FORMAT, new PropertyChangeListener() {
- @Override
- public void propertyChange(PropertyChangeEvent evt) {
- boolean useSexagecimalFormat = (Boolean) evt.getNewValue();
- log.info("property PROPERTY_USE_SEXAGECIMAL_FORMAT changed " + useSexagecimalFormat);
+// context.getConfig().
+// model.addPropertyChangeListener(EditFishingOperationUIModel.PROPERTY_USE_SEXAGECIMAL_FORMAT, new PropertyChangeListener() {
+// @Override
+// public void propertyChange(PropertyChangeEvent evt) {
+// boolean useSexagecimalFormat = (Boolean) evt.getNewValue();
+// log.info("property PROPERTY_USE_SEXAGECIMAL_FORMAT changed " + useSexagecimalFormat);
+//
+// if (useSexagecimalFormat) {
+// getModel().convertGearShootingCoordinatesDDToDMS();
+// } else {
+// getModel().convertGearShootingCoordinatesDMSToDD();
+// }
+// }
+// });
- if (useSexagecimalFormat) {
- getModel().convertGearShootingCoordinatesDDToDMS();
- } else {
- getModel().convertGearShootingCoordinatesDMSToDD();
- }
- }
- });
-
ui.setContextValue(model);
fishingOperationMonitor.setBean(model);
@@ -354,11 +356,14 @@
FishingOperationLocation subStrata = bean.getSubStrata();
FishingOperationLocation location = bean.getLocation();
- // update gear universe
- ui.getGearComboBox().setData(Lists.newArrayList(bean.getCruise().getGear()));
+ Cruise cruise = bean.getCruise();
+ if (cruise != null) {
+ // update gear universe
+ ui.getGearComboBox().setData(Lists.newArrayList(cruise.getGear()));
- // update vessel universe
- ui.getVesselComboBox().setData(Lists.newArrayList(bean.getCruise().getVessel()));
+ // update vessel universe
+ ui.getVesselComboBox().setData(Lists.newArrayList(cruise.getVessel()));
+ }
model.fromBean(bean);
@@ -425,7 +430,7 @@
log.warn("Won't save new fishing operation, use explicit save button instead...");
}
} else if (beanToSave.isValid()) {
- if (beanToSave.isUseSexagecimalFormat()) {
+ if (getConfig().isUseSexagecimalEditor()) {
beanToSave.convertGearShootingCoordinatesDMSToDD();
}
@@ -455,10 +460,6 @@
//TODO
}
- public void setUseSexagecimalFormat(boolean useSexagecimalFormat) {
- getModel().setUseSexagecimalFormat(useSexagecimalFormat);
- }
-
public void setGearShootingStartLatitude(String text) {
getModel().setGearShootingStartLatitude(Float.valueOf(text));
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java 2013-01-18 08:11:31 UTC (rev 220)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java 2013-01-18 11:33:30 UTC (rev 221)
@@ -34,12 +34,11 @@
import fr.ifremer.tutti.persistence.entities.referential.Vessel;
import fr.ifremer.tutti.persistence.spatial.SexagecimalPosition;
import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel;
-import org.nuiton.util.beans.Binder;
-import org.nuiton.util.beans.BinderFactory;
-
import java.util.Calendar;
import java.util.Date;
import java.util.List;
+import org.nuiton.util.beans.Binder;
+import org.nuiton.util.beans.BinderFactory;
import static org.nuiton.i18n.I18n.n_;
@@ -68,8 +67,6 @@
public static final String PROPERTY_SUB_STRATA = "subStrata";
- public static final String PROPERTY_USE_SEXAGECIMAL_FORMAT = "useSexagecimalFormat";
-
public static final String PROPERTY_GEAR_SHOOTING_START_LATITUDE = "gearShootingStartLatitude";
public static final String PROPERTY_GEAR_SHOOTING_START_LATITUDE_DEGREE = "gearShootingStartLatitudeDegree";
@@ -153,8 +150,6 @@
protected SexagecimalPosition gearShootingEndLongitudeAsSexagecimal;
- protected boolean useSexagecimalFormat = false;
-
protected Float gearShootingStartLatitude;
protected Float gearShootingStartLongitude;
@@ -279,16 +274,6 @@
firePropertyChange(PROPERTY_SUB_STRATA, oldValue, subStrata);
}
- public boolean isUseSexagecimalFormat() {
- return useSexagecimalFormat;
- }
-
- public void setUseSexagecimalFormat(boolean useSexagecimalFormat) {
- Object oldValue = isUseSexagecimalFormat();
- this.useSexagecimalFormat = useSexagecimalFormat;
- firePropertyChange(PROPERTY_USE_SEXAGECIMAL_FORMAT, oldValue, useSexagecimalFormat);
- }
-
public Float getGearShootingStartLatitude() {
return gearShootingStartLatitude;
}
Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-18 08:11:31 UTC (rev 220)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-18 11:33:30 UTC (rev 221)
@@ -50,10 +50,10 @@
tutti.application.name=Tutti
tutti.config.category.applications=Application
tutti.config.category.applications.description=Application
-tutti.config.category.colors=Couleurs
-tutti.config.category.colors.description=Couleurs utilisées dans les interfaces graphiques
tutti.config.category.shortcuts=Raccourcis
tutti.config.category.shortcuts.description=Liste des raccourcis clavier
+tutti.config.category.ui=Interface utilisateur
+tutti.config.category.ui.description=Options de l'interface utilisateur
tutti.config.cruiseId=Identifiant de la dernière campagne utilisée
tutti.config.programId=Identifiant de la dernière série de campagne utilisée
tutti.config.protocolId=Identifiant du dernier protocole utilisé
@@ -63,6 +63,7 @@
tutti.config.ui.config=Chemin du fichier de configuration des interfaces graphiques
tutti.config.ui.shortcut.closePopup=Fermer une popup
tutti.config.ui.showNumberEditorButton=Afficher le pavé numérique de saisie
+tutti.config.ui.useSexagecimalEditor=Utiliser l'éditeur sexagécimal pour entrer des coordonnées
tutti.duration.format=dj Hh m'm'
tutti.errorTable.title=Table d'erreurs
tutti.label.attachmentEditor.file=Fichier
@@ -73,7 +74,7 @@
tutti.label.catches.benthosTotalUnsortedWeight=Poids total HORS VRAC (kg)
tutti.label.catches.benthosTotalWeight=Poids TOTAL (kg)
tutti.label.catches.catchThalassa=(*) uniquement sur Thalassa
-tutti.label.catches.catchTotalRejectedWeight=Poids total REJETÉ (kg)
+tutti.label.catches.catchTotalRejectedWeight=Poids total NON TRIÉ (kg)
tutti.label.catches.catchTotalSortedCarousselWeight=Caroussel Observé (*)
tutti.label.catches.catchTotalSortedTremisWeight=Tremis (*)
tutti.label.catches.catchTotalSortedWeight=Poids total VRAC (kg)
1
0
r220 - in trunk/tutti-ui-swing/src/main: java/fr/ifremer/tutti/ui/swing/content/home resources/fr/ifremer/tutti/ui/swing/content/operation resources/i18n resources/icons
by tchemit@users.forge.codelutin.com 18 Jan '13
by tchemit@users.forge.codelutin.com 18 Jan '13
18 Jan '13
Author: tchemit
Date: 2013-01-18 09:11:31 +0100 (Fri, 18 Jan 2013)
New Revision: 220
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/220
Log:
refs #1852: [ERGO] - Barre de progression pour les actions longues (debut d'utilisation des actions)
Added:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/AbstractHomeAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProtocolAction.java
trunk/tutti-ui-swing/src/main/resources/icons/action-export.png
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-edit-error-validation.xml
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-validate-error-validation.xml
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
trunk/tutti-ui-swing/src/main/resources/icons/action-copy.png
trunk/tutti-ui-swing/src/main/resources/icons/action-import.png
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/AbstractHomeAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/AbstractHomeAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/AbstractHomeAction.java 2013-01-18 08:11:31 UTC (rev 220)
@@ -0,0 +1,62 @@
+package fr.ifremer.tutti.ui.swing.content.home;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * 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.ifremer.tutti.ui.swing.TuttiUIContext;
+import jaxx.runtime.SwingUtil;
+
+import javax.swing.AbstractAction;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public abstract class AbstractHomeAction extends AbstractAction {
+
+ private static final long serialVersionUID = 1L;
+
+ protected final TuttiUIContext context;
+
+ protected final SelectCruiseUIModel model;
+
+ public AbstractHomeAction(TuttiUIContext context,
+ SelectCruiseUIModel model,
+ String name,
+ String icon,
+ String text,
+ String tip) {
+ this.context = context;
+ this.model = model;
+ putValue(LARGE_ICON_KEY, SwingUtil.createActionIcon(icon));
+ putValue(ACTION_COMMAND_KEY, name);
+ putValue(NAME, name);
+ putValue(SHORT_DESCRIPTION, text);
+ putValue(LONG_DESCRIPTION, tip);
+
+ }
+
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/AbstractHomeAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java 2013-01-18 08:11:31 UTC (rev 220)
@@ -0,0 +1,71 @@
+package fr.ifremer.tutti.ui.swing.content.home;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * 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.ezware.oxbow.swingbits.util.Preconditions;
+import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
+import fr.ifremer.tutti.ui.swing.TuttiScreen;
+import fr.ifremer.tutti.ui.swing.TuttiUIContext;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.awt.event.ActionEvent;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class CloneProtocolAction extends AbstractHomeAction {
+
+ private static final long serialVersionUID = 1L;
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(CloneProtocolAction.class);
+
+ public CloneProtocolAction(TuttiUIContext context,
+ SelectCruiseUIModel model) {
+ super(context,
+ model,
+ "cloneProtocol",
+ "copy",
+ _("tutti.action.clone"),
+ _("tutti.action.clone.protocol.tip"));
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ TuttiProtocol protocol = model.getProtocol();
+ Preconditions.checkNotNull(protocol);
+ if (log.isInfoEnabled()) {
+ log.info("Clone protocol: " + protocol.getId());
+ }
+ context.setProtocolId(protocol.getId());
+ context.setScreen(TuttiScreen.CLONE_PROTOCOL);
+ }
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java 2013-01-18 08:11:31 UTC (rev 220)
@@ -0,0 +1,70 @@
+package fr.ifremer.tutti.ui.swing.content.home;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * 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.ezware.oxbow.swingbits.util.Preconditions;
+import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
+import fr.ifremer.tutti.ui.swing.TuttiScreen;
+import fr.ifremer.tutti.ui.swing.TuttiUIContext;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.awt.event.ActionEvent;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class EditProtocolAction extends AbstractHomeAction {
+
+ private static final long serialVersionUID = 1L;
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(EditProtocolAction.class);
+ public EditProtocolAction(TuttiUIContext context,
+ SelectCruiseUIModel model) {
+ super(context,
+ model,
+ "editProtocol",
+ "edit",
+ _("tutti.action.edit"),
+ _("tutti.action.edit.protocol.tip"));
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ TuttiProtocol protocol = model.getProtocol();
+ Preconditions.checkNotNull(protocol);
+ if (log.isInfoEnabled()) {
+ log.info("Edit protocol: "+protocol.getId());
+ }
+ context.setProtocolId(protocol.getId());
+ context.setScreen(TuttiScreen.EDIT_PROTOCOL);
+ }
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java 2013-01-18 08:11:31 UTC (rev 220)
@@ -0,0 +1,70 @@
+package fr.ifremer.tutti.ui.swing.content.home;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * 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.ezware.oxbow.swingbits.util.Preconditions;
+import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
+import fr.ifremer.tutti.ui.swing.TuttiUIContext;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.awt.event.ActionEvent;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class ExportProtocolAction extends AbstractHomeAction {
+
+ private static final long serialVersionUID = 1L;
+
+ /** Logger. */
+ private static final Log log =
+ LogFactory.getLog(ExportProtocolAction.class);
+
+ public ExportProtocolAction(TuttiUIContext context,
+ SelectCruiseUIModel model) {
+ super(context,
+ model,
+ "exportProtocol",
+ "export",
+ _("tutti.action.export"),
+ _("tutti.action.export.protocol.tip"));
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ TuttiProtocol protocol = model.getProtocol();
+ Preconditions.checkNotNull(protocol);
+
+ if (log.isInfoEnabled()) {
+ log.info("Export protocol: " + protocol.getId());
+ }
+ }
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java 2013-01-18 08:11:31 UTC (rev 220)
@@ -0,0 +1,65 @@
+package fr.ifremer.tutti.ui.swing.content.home;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * 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.ifremer.tutti.ui.swing.TuttiUIContext;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.awt.event.ActionEvent;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class ImportProtocolAction extends AbstractHomeAction {
+
+ private static final long serialVersionUID = 1L;
+
+ /** Logger. */
+ private static final Log log =
+ LogFactory.getLog(ImportProtocolAction.class);
+
+ public ImportProtocolAction(TuttiUIContext context,
+ SelectCruiseUIModel model) {
+ super(context,
+ model,
+ "importProtocol",
+ "import",
+ _("tutti.action.import"),
+ _("tutti.action.import.protocol.tip"));
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ if (log.isInfoEnabled()) {
+ log.info("TODO Import protocol!");
+ }
+ }
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProtocolAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProtocolAction.java 2013-01-18 08:11:31 UTC (rev 220)
@@ -0,0 +1,67 @@
+package fr.ifremer.tutti.ui.swing.content.home;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * 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.ifremer.tutti.ui.swing.TuttiScreen;
+import fr.ifremer.tutti.ui.swing.TuttiUIContext;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.awt.event.ActionEvent;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class NewProtocolAction extends AbstractHomeAction {
+
+ private static final long serialVersionUID = 1L;
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(NewProtocolAction.class);
+
+ public NewProtocolAction(TuttiUIContext context,
+ SelectCruiseUIModel model) {
+ super(context,
+ model,
+ "newProtocol",
+ "add",
+ _("tutti.action.new"),
+ _("tutti.action.new.protocol.tip"));
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ if (log.isInfoEnabled()) {
+ log.info("New protocol");
+ }
+ context.setProtocolId(null);
+ context.setScreen(TuttiScreen.EDIT_PROTOCOL);
+ }
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProtocolAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css 2013-01-18 08:03:47 UTC (rev 219)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css 2013-01-18 08:11:31 UTC (rev 220)
@@ -84,18 +84,10 @@
enabled: {!protocolCombobox.isEmpty()};
}
-#editProtocolButton {
+#editProtocolComboBox {
enabled: {model.isProtocolFound()};
- text: "tutti.action.edit";
- actionIcon: edit;
}
-#newProtocolButton {
- actionIcon: add;
- enabled: true;
- text: "tutti.action.new";
-}
-
#fillFishingOperationsButton {
text: "tutti.action.fillCatches";
enabled: {uiContext.isCruiseContextFilled()};
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx 2013-01-18 08:03:47 UTC (rev 219)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx 2013-01-18 08:11:31 UTC (rev 220)
@@ -103,20 +103,21 @@
</cell>
<cell>
<JPanel layout='{new GridLayout(1,0)}'>
- <JButton id='editProtocolButton'
- onActionPerformed='handler.showSelectedProtocol()'/>
-<!-- <JButton id='newProtocolButton'
- onActionPerformed='handler.showNewProtocol()'/>-->
- <JComboBox id='newProtocolCombo' onActionPerformed='handler.showNewProtocol(event)'/>
-
+ <JComboBox id='editProtocolComboBox'
+ onMouseEntered='if (editProtocolComboBox.isEnabled()) { editProtocolComboBox.showPopup(); }'
+ onActionPerformed='handler.showSelectedProtocol(event)'/>
+ <JComboBox id='newProtocolComboBox'
+ onMouseEntered='newProtocolComboBox.showPopup()'
+ onActionPerformed='handler.showNewProtocol(event)'/>
+
</JPanel>
</cell>
</row>
<row>
<cell columns='3'>
<JPanel layout='{new GridLayout(1,0)}'>
- <JButton id='fillFishingOperationsButton'
- onActionPerformed='handler.showFillCatches()'/>
+ <JButton id='fillFishingOperationsButton'
+ onActionPerformed='handler.showFillCatches()'/>
<JButton id='validateFishingOperationsButton'
onActionPerformed='handler.showValidateCatches()'/>
</JPanel>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java 2013-01-18 08:03:47 UTC (rev 219)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java 2013-01-18 08:11:31 UTC (rev 220)
@@ -33,33 +33,24 @@
import fr.ifremer.tutti.ui.swing.AbstractTuttiUIHandler;
import fr.ifremer.tutti.ui.swing.TuttiScreen;
import fr.ifremer.tutti.ui.swing.TuttiUIContext;
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.event.ActionEvent;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
import jaxx.runtime.swing.editor.bean.BeanComboBox;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-import java.util.List;
-import javax.swing.CellRendererPane;
-import javax.swing.ComboBoxModel;
+import javax.swing.Action;
import javax.swing.DefaultComboBoxModel;
import javax.swing.DefaultListCellRenderer;
-import javax.swing.ImageIcon;
+import javax.swing.Icon;
import javax.swing.JComboBox;
import javax.swing.JList;
-import javax.swing.JScrollPane;
-import javax.swing.JViewport;
import javax.swing.border.EmptyBorder;
-import javax.swing.plaf.basic.BasicComboPopup;
-import jaxx.runtime.SwingUtil;
+import java.awt.Component;
+import java.awt.event.ActionEvent;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
-import static org.nuiton.i18n.I18n._;
/**
* Main ui content to select cruise.
*
@@ -71,7 +62,7 @@
/** Logger. */
private static final Log log =
LogFactory.getLog(SelectCruiseUIHandler.class);
-
+
protected final PersistenceService persistenceService;
protected final SelectCruiseUI ui;
@@ -191,27 +182,54 @@
initBeanComboBox(ui.getProtocolCombobox(),
model.getProtocols(),
model.getProtocol());
-
- ComboBoxModel<NewProtocolAction> protocolActions = new DefaultComboBoxModel<NewProtocolAction>(NewProtocolAction.values());
- final JComboBox newProtocolCombo = ui.getNewProtocolCombo();
- newProtocolCombo.setRenderer(new DefaultListCellRenderer() {
- @Override
- public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
- Component defaultComponent = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
- DefaultListCellRenderer result = (DefaultListCellRenderer) defaultComponent;
- NewProtocolAction action = (NewProtocolAction) value;
- ImageIcon icon = SwingUtil.createActionIcon(action.getIcon());
- result.setIcon(icon);
- result.setBorder(new EmptyBorder(4, 8, 4, 8));
-
- Object selectedItem = SelectCruiseUIHandler.this.ui.getProtocolCombobox().getSelectedItem();
- result.setEnabled(action != NewProtocolAction.CLONE || selectedItem != null);
- return result;
- }
- });
- newProtocolCombo.setModel(protocolActions);
+ DefaultComboBoxModel newProtocolActions = new DefaultComboBoxModel();
+ newProtocolActions.addElement(new NewProtocolAction(context, model));
+ newProtocolActions.addElement(new ImportProtocolAction(context, model));
+ JComboBox newProtocolComboBox = ui.getNewProtocolComboBox();
+ newProtocolComboBox.setModel(newProtocolActions);
+ newProtocolComboBox.setRenderer(new ActionListCellRenderer());
+ DefaultComboBoxModel editProtocolActions = new DefaultComboBoxModel();
+ editProtocolActions.addElement(new EditProtocolAction(context, model));
+ editProtocolActions.addElement(new CloneProtocolAction(context, model));
+ editProtocolActions.addElement(new ExportProtocolAction(context, model));
+ JComboBox editProtocolComboBox = ui.getEditProtocolComboBox();
+ editProtocolComboBox.setModel(editProtocolActions);
+ editProtocolComboBox.setRenderer(new ActionListCellRenderer());
+
+// newProtocolCombo.addMouseListener(new MouseAdapter() {
+//
+// @Override
+// public void mouseEntered(MouseEvent e) {
+// newProtocolCombo.showPopup();
+// }
+//
+// });
+// newProtocolCombo.addPopupMenuListener(new PopupMenuListener() {
+//
+// @Override
+// public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
+// newProtocolCombo.getComponentPopupMenu().addMouseListener(new MouseAdapter() {
+//
+// @Override
+// public void mouseExited(MouseEvent e) {
+// newProtocolCombo.hidePopup();
+// }
+//
+// });
+// }
+//
+// @Override
+// public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
+// }
+//
+// @Override
+// public void popupMenuCanceled(PopupMenuEvent e) {
+// }
+// });
+
+
model.addPropertyChangeListener(SelectCruiseUIModel.PROPERTY_PROGRAM, new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
@@ -224,9 +242,9 @@
} else {
campaigns = persistenceService.getAllCruise(newValue.getId());
}
- SelectCruiseUIModel model = (SelectCruiseUIModel) evt.getSource();
- model.setCruises(campaigns);
- model.setCruise(null);
+ SelectCruiseUIModel source = (SelectCruiseUIModel) evt.getSource();
+ source.setCruises(campaigns);
+ source.setCruise(null);
}
});
@@ -303,62 +321,102 @@
context.setScreen(TuttiScreen.EDIT_CRUISE);
}
- public void showSelectedProtocol() {
- TuttiProtocol protocol = getModel().getProtocol();
- context.setProtocolId(protocol.getId());
- context.setScreen(TuttiScreen.EDIT_PROTOCOL);
+ public void showSelectedProtocol(ActionEvent event) {
+ JComboBox newProtocolCombo = (JComboBox) event.getSource();
+ Action selectedAction = (Action) newProtocolCombo.getSelectedItem();
+
+ selectedAction.actionPerformed(event);
+// TuttiProtocol protocol = getModel().getProtocol();
+// Preconditions.checkNotNull(protocol,
+// "Protocol can not be null for a edit action");
+// switch (selectedAction) {
+// case EDIT:
+// context.setProtocolId(protocol.getId());
+// context.setScreen(TuttiScreen.EDIT_PROTOCOL);
+// break;
+//
+// case CLONE:
+// context.setProtocolId(protocol.getId());
+// context.setScreen(TuttiScreen.CLONE_PROTOCOL);
+// break;
+//
+// case EXPORT:
+// //TODO kmorin 20130115 import protocol
+// }
}
public void showNewProtocol(ActionEvent event) {
JComboBox newProtocolCombo = (JComboBox) event.getSource();
- NewProtocolAction selectedAction = (NewProtocolAction) newProtocolCombo.getSelectedItem();
-
- switch (selectedAction) {
- case NEW:
- context.setProtocolId(null);
- context.setScreen(TuttiScreen.EDIT_PROTOCOL);
- break;
-
- case CLONE:
- TuttiProtocol protocol = getModel().getProtocol();
- if (protocol != null) {
- context.setProtocolId(protocol.getId());
- context.setScreen(TuttiScreen.CLONE_PROTOCOL);
- }
- break;
-
- case IMPORT:
- //TODO kmorin 20130115 import protocol
- }
+ Action selectedAction = (Action) newProtocolCombo.getSelectedItem();
+
+ selectedAction.actionPerformed(event);
+// switch (selectedAction) {
+// case NEW:
+// context.setProtocolId(null);
+// context.setScreen(TuttiScreen.EDIT_PROTOCOL);
+// break;
+// case IMPORT:
+// //TODO kmorin 20130115 import protocol
+// }
}
-
- protected enum NewProtocolAction {
-
- NEW("tutti.action.new", "add"),
- CLONE("tutti.action.clone", "copy"),
- IMPORT("tutti.action.import", "import");
-
- protected String label;
-
- protected String icon;
-
- private NewProtocolAction(String label, String icon) {
- this.label = label;
- this.icon = icon;
- }
- public String getLabel() {
- return label;
- }
+// protected enum NewProtocolAction {
+//
+// NEW(n_("tutti.action.new"), "add"),
+// EDIT(n_("tutti.action.edit"), "edit"),
+// CLONE(n_("tutti.action.clone"), "copy"),
+// IMPORT(n_("tutti.action.import"), "import"),
+// EXPORT(n_("tutti.action.export"), "export");
+//
+// protected String label;
+//
+// protected String iconPath;
+//
+// protected ImageIcon icon;
+//
+// private NewProtocolAction(String label, String iconPath) {
+// this.label = label;
+// this.iconPath = iconPath;
+// }
+//
+// public String getLabel() {
+// return label;
+// }
+//
+// public ImageIcon getIcon() {
+// if (icon == null) {
+// icon = SwingUtil.createActionIcon(iconPath);
+// }
+// return icon;
+// }
+//
+// @Override
+// public String toString() {
+// return _(label);
+// }
+//
+// }
- public String getIcon() {
- return icon;
- }
-
+ public static class ActionListCellRenderer extends DefaultListCellRenderer {
+
+ private static final long serialVersionUID = 1L;
+
+ protected final EmptyBorder border = new EmptyBorder(4, 8, 4, 8);
+
@Override
- public String toString() {
- return _(label);
+ public Component getListCellRendererComponent(JList list,
+ Object value,
+ int index,
+ boolean isSelected,
+ boolean cellHasFocus) {
+ Component result = super.getListCellRendererComponent(
+ list, value, index, isSelected, cellHasFocus);
+ Action action = (Action) value;
+ setIcon((Icon) action.getValue(Action.LARGE_ICON_KEY));
+ setText((String) action.getValue(Action.SHORT_DESCRIPTION));
+ setToolTipText((String) action.getValue(Action.LONG_DESCRIPTION));
+ setBorder(border);
+ return result;
}
-
}
}
Modified: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-edit-error-validation.xml
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-edit-error-validation.xml 2013-01-18 08:03:47 UTC (rev 219)
+++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-edit-error-validation.xml 2013-01-18 08:11:31 UTC (rev 220)
@@ -54,6 +54,16 @@
</field>
+ <field name="trawlNetNumber">
+
+ <field-validator type="required" short-circuit="true">
+ <message>
+ tutti.validator.error.fishingOperation.trawlNetNumber.required
+ </message>
+ </field-validator>
+
+ </field>
+
<field name="gearShootingStartDate">
<field-validator type="required" short-circuit="true">
Modified: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-validate-error-validation.xml
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-validate-error-validation.xml 2013-01-18 08:03:47 UTC (rev 219)
+++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-validate-error-validation.xml 2013-01-18 08:11:31 UTC (rev 220)
@@ -35,13 +35,10 @@
</message>
</field-validator>
- <field-validator type="fieldexpressionwithparams" short-circuit="true">
- <param name="intParams">size:40</param>
- <param name="expression">
- <![CDATA[ stationNumber.length() < ints.size ]]>
- </param>
+ <field-validator type="stringlength" short-circuit="true">
+ <param name="maxLength">40</param>
<message>
- tutti.validator.error.fishingOperation.stationNumber.too.long##${ints.size}
+ tutti.validator.error.fishingOperation.stationNumber.too.long##${maxLength}
</message>
</field-validator>
@@ -57,6 +54,16 @@
</field>
+ <field name="trawlNetNumber">
+
+ <field-validator type="required" short-circuit="true">
+ <message>
+ tutti.validator.error.fishingOperation.trawlNetNumber.required
+ </message>
+ </field-validator>
+
+ </field>
+
<field name="gearShootingStartDate">
<field-validator type="required" short-circuit="true">
Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-18 08:03:47 UTC (rev 219)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-18 08:11:31 UTC (rev 220)
@@ -5,21 +5,27 @@
tutti.action.cancel=Annuler
tutti.action.casino-import=Import Casino
tutti.action.clone=Cloner
+tutti.action.clone.protocol.tip=
tutti.action.close=Fermer
tutti.action.configuration=Configuration
tutti.action.configuration.tip=Configurer Tutti
tutti.action.createSpeciesBatch=Créer un lot pour une espèce
tutti.action.edit=Editer
+tutti.action.edit.protocol.tip=
tutti.action.exit=Quitter
tutti.action.exit.tip=Quitter l'application
+tutti.action.export=Exporter
+tutti.action.export.protocol.tip=
tutti.action.fillCatches=Saisir les captures
tutti.action.fillCatches.tip=Saisir des captures
tutti.action.generate=Générer
tutti.action.generateCampaignName=Générer le nom
tutti.action.import=Importer
+tutti.action.import.protocol.tip=
tutti.action.manageProtocol=Protocole
tutti.action.manageProtocol.tip=Gérer les protocoles
tutti.action.new=Nouveau
+tutti.action.new.protocol.tip=
tutti.action.pupitri-import=Import PUPITRI
tutti.action.reload.actions=Recharger les actions
tutti.action.reload.application=Recharger l'application
@@ -291,6 +297,7 @@
tutti.to.be.done=< A FAIRE >
tutti.tooltip.attachment.none=Pas de pièce-jointes
tutti.tooltip.comment.none=Pas de commentaire
+tutti.validator.error.comment.too.long=Taille de commentaire trop longue (limitée à %s caractères)
tutti.validator.error.createSpeciesBatch.batchWeight.invalidValue=Le poids du lot doit être strictement positif
tutti.validator.error.createSpeciesBatch.batchWeight.required=Le poids du lot est obligatoire
tutti.validator.error.createSpeciesBatch.sortedUnsortedCategory.required=LA catégorie Vrac / Hors Vrac est obligatoire
@@ -307,11 +314,11 @@
tutti.validator.error.cruise.trawlNet.required=Le nombre de poche est obligatoire
tutti.validator.error.cruise.vessel.required=Au moins un bateau doit être sélectionné
tutti.validator.error.cruise.year.required=L'année est obligatoire
-tutti.validator.error.comment.too.long=Taille de commentaire trop longue (limitée à %s caractères)
tutti.validator.error.fishingOperation.date.required=La date du fishingOperation est obligatoire
tutti.validator.error.fishingOperation.fishingOperationNumber.required=Le numéro de trait est obligatoire
tutti.validator.error.fishingOperation.stationNumber.required=Le numéro de station est obligatoire
tutti.validator.error.fishingOperation.stationNumber.too.long=Valeur trop longue (limitée à %s caractères)
+tutti.validator.error.fishingOperation.trawlNetNumber.required=Le numéro de poche est obligatoire
tutti.validator.error.program.name.required=Le nom de la série est obligatoire
tutti.validator.error.program.zone.required=La zone de la série est obligatoire
tutti.validator.error.protocol.name.required=Le nom du protocol est obligatoire
Property changes on: trunk/tutti-ui-swing/src/main/resources/icons/action-copy.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: trunk/tutti-ui-swing/src/main/resources/icons/action-export.png
===================================================================
(Binary files differ)
Property changes on: trunk/tutti-ui-swing/src/main/resources/icons/action-export.png
___________________________________________________________________
Added: svn:mime-type
+ image/png
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/tutti-ui-swing/src/main/resources/icons/action-import.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
1
0
r219 - trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation
by kmorin@users.forge.codelutin.com 18 Jan '13
by kmorin@users.forge.codelutin.com 18 Jan '13
18 Jan '13
Author: kmorin
Date: 2013-01-18 09:03:47 +0100 (Fri, 18 Jan 2013)
New Revision: 219
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/219
Log:
debug build #175
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-01-17 17:08:09 UTC (rev 218)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-01-18 08:03:47 UTC (rev 219)
@@ -286,8 +286,10 @@
@Override
public void propertyChange(PropertyChangeEvent evt) {
- boolean valid = (boolean) evt.getNewValue();
- ui.getSaveButton().setEnabled(valid);
+ Boolean valid = (Boolean) evt.getNewValue();
+ if (valid != null) {
+ ui.getSaveButton().setEnabled(valid);
+ }
}
});
}
1
0
17 Jan '13
Author: kmorin
Date: 2013-01-17 18:08:09 +0100 (Thu, 17 Jan 2013)
New Revision: 218
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/218
Log:
- improve the error table
- readd the save button in the fishing operation edition screen
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUIModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTableModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingRowModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUIModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiTabContainerUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/SwingValidatorMessageWidget.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIModel.java
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUIHandler.java 2013-01-17 16:50:14 UTC (rev 217)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUIHandler.java 2013-01-17 17:08:09 UTC (rev 218)
@@ -36,22 +36,12 @@
import fr.ifremer.tutti.ui.swing.content.program.EditProgramUI;
import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUI;
import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
-import java.awt.BorderLayout;
-import java.awt.Component;
import java.awt.Desktop;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.net.URL;
import java.util.Calendar;
-import javax.swing.JButton;
import javax.swing.JComponent;
-import javax.swing.JMenuItem;
-import javax.swing.JPanel;
-import javax.swing.JPopupMenu;
import javax.swing.JToolBar;
import jaxx.runtime.swing.AboutPanel;
import jaxx.runtime.swing.ErrorDialogUI;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java 2013-01-17 16:50:14 UTC (rev 217)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java 2013-01-17 17:08:09 UTC (rev 218)
@@ -33,6 +33,7 @@
import fr.ifremer.tutti.ui.swing.AbstractTuttiUIHandler;
import fr.ifremer.tutti.ui.swing.TuttiScreen;
import fr.ifremer.tutti.ui.swing.TuttiUIContext;
+import java.awt.Color;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.MouseAdapter;
@@ -45,15 +46,17 @@
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.List;
+import javax.swing.CellRendererPane;
import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;
import javax.swing.DefaultListCellRenderer;
import javax.swing.ImageIcon;
import javax.swing.JComboBox;
import javax.swing.JList;
+import javax.swing.JScrollPane;
+import javax.swing.JViewport;
import javax.swing.border.EmptyBorder;
-import javax.swing.event.PopupMenuEvent;
-import javax.swing.event.PopupMenuListener;
+import javax.swing.plaf.basic.BasicComboPopup;
import jaxx.runtime.SwingUtil;
import static org.nuiton.i18n.I18n._;
@@ -207,36 +210,6 @@
return result;
}
});
- newProtocolCombo.addMouseListener(new MouseAdapter() {
-
- @Override
- public void mouseEntered(MouseEvent e) {
- newProtocolCombo.showPopup();
- }
-
- });
-// newProtocolCombo.addPopupMenuListener(new PopupMenuListener() {
-//
-// @Override
-// public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
-// newProtocolCombo.getComponentPopupMenu().addMouseListener(new MouseAdapter() {
-//
-// @Override
-// public void mouseExited(MouseEvent e) {
-// newProtocolCombo.hidePopup();
-// }
-//
-// });
-// }
-//
-// @Override
-// public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
-// }
-//
-// @Override
-// public void popupMenuCanceled(PopupMenuEvent e) {
-// }
-// });
newProtocolCombo.setModel(protocolActions);
model.addPropertyChangeListener(SelectCruiseUIModel.PROPERTY_PROGRAM, new PropertyChangeListener() {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css 2013-01-17 16:50:14 UTC (rev 217)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css 2013-01-17 17:08:09 UTC (rev 218)
@@ -418,14 +418,9 @@
horizontalAlignment: {JLabel.CENTER};
}
-#createFishingOperationActions {
- visible: {!model.isPersisted()};
-}
-
#saveButton {
actionIcon: save;
text: "tutti.action.save";
- enabled: {model.isValid()};
}
#cancelButton {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-01-17 16:50:14 UTC (rev 217)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-01-17 17:08:09 UTC (rev 218)
@@ -36,6 +36,7 @@
import fr.ifremer.tutti.service.PersistenceService;
import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel;
import fr.ifremer.tutti.ui.swing.MainUI;
+import fr.ifremer.tutti.ui.swing.TuttiUIContext;
import fr.ifremer.tutti.ui.swing.content.operation.fishing.environment.EnvironmentTabUI;
import fr.ifremer.tutti.ui.swing.content.operation.fishing.environment.EnvironmentTabUIModel;
import fr.ifremer.tutti.ui.swing.content.operation.fishing.gearshooting.GearShootingTabUI;
@@ -67,8 +68,7 @@
* @author tchemit <chemit(a)codelutin.com>
* @since 0.1
*/
-public class EditFishingOperationUIHandler extends AbstractTuttiTabContainerUIHandler<EditFishingOperationUIModel>
- implements TabHandler {
+public class EditFishingOperationUIHandler extends AbstractTuttiTabContainerUIHandler<EditFishingOperationUIModel> {
/** Logger. */
private static final Log log =
@@ -267,6 +267,32 @@
hydrologyModel.setAvailableCaracteristics(persistenceService.getAllFishingOperationHydrologicCaracteristic());
setCustomTab(3, hydrologyModel);
+ if (TuttiUIContext.VALIDATION_CONTEXT_VALIDATE.equals(model.getValidationContext())) {
+ PropertyChangeListener pcl = new PropertyChangeListener() {
+
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ boolean allModelsValid = areAllModelsValid();
+ ui.getSaveButton().setEnabled(allModelsValid);
+ }
+ };
+ gearShootingModel.addPropertyChangeListener(AbstractTuttiBeanUIModel.PROPERTY_VALID, pcl);
+ environmentModel.addPropertyChangeListener(AbstractTuttiBeanUIModel.PROPERTY_VALID, pcl);
+ hydrologyModel.addPropertyChangeListener(AbstractTuttiBeanUIModel.PROPERTY_VALID, pcl);
+ model.addPropertyChangeListener(AbstractTuttiBeanUIModel.PROPERTY_VALID, pcl);
+
+ } else {
+ model.addPropertyChangeListener(AbstractTuttiBeanUIModel.PROPERTY_VALID, new PropertyChangeListener() {
+
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ boolean valid = (boolean) evt.getNewValue();
+ ui.getSaveButton().setEnabled(valid);
+ }
+ });
+ }
+
+
MainUI main = ui.getContextValue(MainUI.class, MainUI.class.getName());
main.clearValidators();
main.registerValidator(ui.getValidator());
@@ -294,36 +320,6 @@
}
@Override
- protected boolean onTabChanged(int currentIndex, int newIndex) {
- boolean result = super.onTabChanged(currentIndex, newIndex);
- if (result && currentIndex != newIndex && currentIndex >= 0) {
- CustomTab currentTab = (CustomTab) getTabPanel().getTabComponentAt(currentIndex);
- AbstractTuttiBeanUIModel model = currentTab.getModel();
- result = model.isValid();
-
- if (result && !model.isCreate() && model.isModify()) {
- save();
- }
- }
- return result;
- }
-
- @Override
- public boolean onHideTab() {
- AbstractTuttiBeanUIModel model = getModel();
- boolean result = model.isValid();
- if (result && !model.isCreate() && model.isModify()) {
- save();
- }
- return result;
- }
-
- @Override
- public void onShowTab() {
- log.info("show tab");
- }
-
- @Override
protected EditFishingOperationUIModel getModel() {
return ui.getModel();
}
@@ -333,10 +329,6 @@
//------------------------------------------------------------------------//
public void clearFishingOperation() {
- if (fishingOperationMonitor.wasModified()) {
- save();
- }
-
EditFishingOperationUIModel model = getModel();
model.fromBean(new FishingOperation());
@@ -348,11 +340,6 @@
}
public void selectFishingOperation(FishingOperation bean) {
-
- if (fishingOperationMonitor.wasModified()) {
- save();
- }
-
boolean empty = bean == null;
EditFishingOperationUIModel model = getModel();
@@ -418,17 +405,11 @@
public void cancel() {
- String id = getModel().getId();
-
if (log.isInfoEnabled()) {
- log.info("Cancel edition for fishingOperation: " + id);
+ log.info("Cancel edition for fishingOperation ");
}
- boolean newBean = StringUtils.isBlank(id);
-
- if (newBean) {
- // cancel to create a new fishingOperation
- parentUi.getHandler().closeCurrentFishingOperation();
- }
+ // cancel to create a new fishingOperation
+ parentUi.getHandler().closeCurrentFishingOperation();
}
public void save() {
@@ -448,7 +429,7 @@
// save modified fishing operation
FishingOperation toSave = beanToSave.toBean();
-
+
showInformationMessage(
"[ Trait - Caractéristiques générales ] " +
"Sauvegarde des modifications de " + decorate(toSave) +
@@ -567,5 +548,13 @@
ui.getLocationComboBox().setData(location);
}
}
+
+ protected boolean areAllModelsValid() {
+ GearShootingTabUIModel gearShootingModel = ui.getGearShootingTabContent().getModel();
+ EnvironmentTabUIModel environmentModel = ui.getEnvironmentTabContent().getModel();
+ HydrologyTabUIModel hydrologyModel = ui.getHydrologyTabContent().getModel();
+ return getModel().isValid() && gearShootingModel.isValid()
+ && environmentModel.isValid() && hydrologyModel.isValid();
+ }
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java 2013-01-17 16:50:14 UTC (rev 217)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java 2013-01-17 17:08:09 UTC (rev 218)
@@ -134,7 +134,7 @@
* @since 0.2
*/
protected boolean empty;
-
+
protected Cruise cruise;
protected String stationNumber;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUIHandler.java 2013-01-17 16:50:14 UTC (rev 217)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUIHandler.java 2013-01-17 17:08:09 UTC (rev 218)
@@ -110,15 +110,8 @@
log.info("Row " + row + " was modified, will save it");
}
- showInformationMessage(
- "[ Trait - Environnement ] " +
- "Sauvegarde des modifications de " + row + ".");
-
saveRow(row);
- // clear modified flag on the monitor
- rowMonitor.clearModified();
- getModel().setModify(false);
}
}
}
@@ -191,7 +184,7 @@
super.onAfterSelectedRowChanged(oldRowIndex, oldRow, newRowIndex, newRow);
getModel().setRemoveCaracteristicEnabled(newRow != null);
}
-
+
//------------------------------------------------------------------------//
//-- Public methods --//
//------------------------------------------------------------------------//
@@ -214,7 +207,7 @@
EnvironmentTabUIModel model = getModel();
model.setModify(true);
- model.setValid(row.isValid());
+ recomputeRowValidState(row);
}
/** Resets the table with the data from the database */
@@ -281,15 +274,12 @@
FishingOperation fishingOperation = getModel().getFishingOperation();
Preconditions.checkNotNull(fishingOperation);
- fishingOperation.getEnvironmentCaracteristics().remove(row.getKey());
-
- if (TuttiEntities.isNew(fishingOperation)) {
-
- fishingOperation = persistenceService.createFishingOperation(fishingOperation);
- } else {
- persistenceService.saveFishingOperation(fishingOperation);
+ CaracteristicMap caracteristicMap = fishingOperation.getEnvironmentCaracteristics();
+ if (caracteristicMap != null) {
+ caracteristicMap.remove(row.getKey());
}
+
//add the row in the combo
BeanComboBox keyCombo = ui.getNewRowKey();
keyCombo.addItem(row.getKey());
@@ -301,6 +291,8 @@
// refresh all the table
getTableModel().fireTableRowsDeleted(rowIndex, rowIndex);
+ getModel().removeRowInError(row);
+
}
//------------------------------------------------------------------------//
@@ -309,19 +301,16 @@
protected void saveRow(EnvironmentRowModel row) {
- FishingOperation fishingOperation = getModel().getFishingOperation();
- Preconditions.checkNotNull(fishingOperation);
+ if (row.isValid()) {
+ FishingOperation fishingOperation = getModel().getFishingOperation();
+ Preconditions.checkNotNull(fishingOperation);
- if (fishingOperation.getEnvironmentCaracteristics() == null) {
- fishingOperation.setEnvironmentCaracteristics(new CaracteristicMap());
- }
- fishingOperation.getEnvironmentCaracteristics().put(row.getKey(), row.getValue());
-
- if (TuttiEntities.isNew(fishingOperation)) {
+ if (fishingOperation.getEnvironmentCaracteristics() == null) {
+ fishingOperation.setEnvironmentCaracteristics(new CaracteristicMap());
+ }
- fishingOperation = persistenceService.createFishingOperation(fishingOperation);
- } else {
- persistenceService.saveFishingOperation(fishingOperation);
+ fishingOperation.getEnvironmentCaracteristics().put(row.getKey(), row.getValue());
}
}
+
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUIModel.java 2013-01-17 16:50:14 UTC (rev 217)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUIModel.java 2013-01-17 17:08:09 UTC (rev 218)
@@ -24,11 +24,14 @@
* #L%
*/
+import com.google.common.collect.Lists;
import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
import fr.ifremer.tutti.ui.swing.content.operation.EditFishingOperationUIModel;
import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIModel;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
import org.nuiton.util.beans.Binder;
import org.nuiton.util.beans.BinderModelBuilder;
@@ -103,4 +106,5 @@
this.removeCaracteristicEnabled = removeCaracteristicEnabled;
firePropertyChange(PROPERTY_REMOVE_CARACTERISTIC_ENABLED, oldValue, removeCaracteristicEnabled);
}
+
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTableModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTableModel.java 2013-01-17 16:50:14 UTC (rev 217)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTableModel.java 2013-01-17 17:08:09 UTC (rev 218)
@@ -26,7 +26,6 @@
import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableModel;
import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier;
-
import javax.swing.table.TableColumnModel;
import static org.nuiton.i18n.I18n.n_;
@@ -59,4 +58,5 @@
EnvironmentRowModel result = new EnvironmentRowModel();
return result;
}
+
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingRowModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingRowModel.java 2013-01-17 16:50:14 UTC (rev 217)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingRowModel.java 2013-01-17 17:08:09 UTC (rev 218)
@@ -28,6 +28,8 @@
import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel;
import fr.ifremer.tutti.ui.swing.util.table.CaracteristicRow;
import java.io.Serializable;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.nuiton.util.beans.Binder;
import org.nuiton.util.beans.BinderFactory;
@@ -38,6 +40,8 @@
public class GearShootingRowModel extends AbstractTuttiBeanUIModel<CaracteristicRow, GearShootingRowModel> {
private static final long serialVersionUID = 1L;
+
+ private static final Log log = LogFactory.getLog(GearShootingRowModel.class);
public static final String PROPERTY_KEY = "key";
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUIHandler.java 2013-01-17 16:50:14 UTC (rev 217)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUIHandler.java 2013-01-17 17:08:09 UTC (rev 218)
@@ -32,7 +32,9 @@
import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
import fr.ifremer.tutti.service.DecoratorService;
+import fr.ifremer.tutti.ui.swing.TuttiUIContext;
import fr.ifremer.tutti.ui.swing.content.operation.EditFishingOperationUI;
+import fr.ifremer.tutti.ui.swing.util.TabHandler;
import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor;
import fr.ifremer.tutti.ui.swing.util.editor.CaracteristicValueEditor;
import fr.ifremer.tutti.ui.swing.util.editor.CaracteristicValueRenderer;
@@ -111,15 +113,8 @@
log.info("Row " + row + " was modified, will save it");
}
- showInformationMessage(
- "[ Trait - Engin ] " +
- "Sauvegarde des modifications de " + row + ".");
-
saveRow(row);
- // clear modified flag on the monitor
- rowMonitor.clearModified();
- getModel().setModify(false);
}
}
}
@@ -194,7 +189,7 @@
super.onAfterSelectedRowChanged(oldRowIndex, oldRow, newRowIndex, newRow);
getModel().setRemoveCaracteristicEnabled(newRow != null);
}
-
+
//------------------------------------------------------------------------//
//-- Public methods --//
//------------------------------------------------------------------------//
@@ -217,7 +212,7 @@
GearShootingTabUIModel model = getModel();
model.setModify(true);
- model.setValid(row.isValid());
+ recomputeRowValidState(row);
}
/** Resets the table with the data from the database */
@@ -283,13 +278,9 @@
FishingOperation fishingOperation = getModel().getFishingOperation();
Preconditions.checkNotNull(fishingOperation);
- fishingOperation.getGearShootingCaracteristics().remove(row.getKey());
-
- if (TuttiEntities.isNew(fishingOperation)) {
-
- fishingOperation = persistenceService.createFishingOperation(fishingOperation);
- } else {
- persistenceService.saveFishingOperation(fishingOperation);
+ CaracteristicMap caracteristicMap = fishingOperation.getGearShootingCaracteristics();
+ if (caracteristicMap != null) {
+ caracteristicMap.remove(row.getKey());
}
//add the row in the combo
@@ -303,6 +294,8 @@
// refresh all the table
getTableModel().fireTableRowsDeleted(rowIndex, rowIndex);
+ getModel().removeRowInError(row);
+
}
//------------------------------------------------------------------------//
@@ -310,21 +303,15 @@
//------------------------------------------------------------------------//
protected void saveRow(GearShootingRowModel row) {
+ if (row.isValid()) {
+ FishingOperation fishingOperation = getModel().getFishingOperation();
+ Preconditions.checkNotNull(fishingOperation);
- FishingOperation fishingOperation = getModel().getFishingOperation();
- Preconditions.checkNotNull(fishingOperation);
-
- if (fishingOperation.getGearShootingCaracteristics() == null) {
- fishingOperation.setGearShootingCaracteristics(new CaracteristicMap());
+ if (fishingOperation.getGearShootingCaracteristics() == null) {
+ fishingOperation.setGearShootingCaracteristics(new CaracteristicMap());
+ }
+ fishingOperation.getGearShootingCaracteristics().put(row.getKey(), row.getValue());
}
- fishingOperation.getGearShootingCaracteristics().put(row.getKey(), row.getValue());
-
- if (TuttiEntities.isNew(fishingOperation)) {
-
- fishingOperation = persistenceService.createFishingOperation(fishingOperation);
- } else {
- persistenceService.saveFishingOperation(fishingOperation);
- }
}
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUIHandler.java 2013-01-17 16:50:14 UTC (rev 217)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUIHandler.java 2013-01-17 17:08:09 UTC (rev 218)
@@ -33,9 +33,11 @@
import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
import fr.ifremer.tutti.service.DecoratorService;
+import fr.ifremer.tutti.ui.swing.TuttiUIContext;
import fr.ifremer.tutti.ui.swing.content.operation.EditFishingOperationUI;
import fr.ifremer.tutti.ui.swing.util.HydrologicCaracteristicUtil;
import fr.ifremer.tutti.ui.swing.util.HydrologicCaracteristicUtil.Type;
+import fr.ifremer.tutti.ui.swing.util.TabHandler;
import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor;
import fr.ifremer.tutti.ui.swing.util.editor.CaracteristicValueEditor;
import fr.ifremer.tutti.ui.swing.util.editor.CaracteristicValueRenderer;
@@ -127,15 +129,8 @@
log.info("Row " + row + " was modified, will save it");
}
- showInformationMessage(
- "[ Trait - Hydro ] " +
- "Sauvegarde des modifications de " + row + ".");
-
saveRow(row);
- // clear modified flag on the monitor
- rowMonitor.clearModified();
- getModel().setModify(false);
}
}
}
@@ -246,7 +241,7 @@
super.onAfterSelectedRowChanged(oldRowIndex, oldRow, newRowIndex, newRow);
getModel().setRemoveCaracteristicEnabled(newRow != null);
}
-
+
//------------------------------------------------------------------------//
//-- Public methods --//
//------------------------------------------------------------------------//
@@ -269,7 +264,7 @@
HydrologyTabUIModel model = getModel();
model.setModify(true);
- model.setValid(row.isValid());
+ recomputeRowValidState(row);
}
/** Resets the table with the data from the database */
@@ -349,16 +344,13 @@
Map<Type, Caracteristic> caracteristics = availableGlobalCaracteristics.get(row.getKey());
for (Type type : caracteristics.keySet()) {
Caracteristic caracteristic = caracteristics.get(type);
- fishingOperation.getHydrologyCaracteristics().remove(caracteristic);
+
+ CaracteristicMap caracteristicMap = fishingOperation.getHydrologyCaracteristics();
+ if (caracteristicMap != null) {
+ caracteristicMap.remove(caracteristic);
+ }
}
- if (TuttiEntities.isNew(fishingOperation)) {
-
- fishingOperation = persistenceService.createFishingOperation(fishingOperation);
- } else {
- persistenceService.saveFishingOperation(fishingOperation);
- }
-
//add the row in the combo
BeanComboBox keyCombo = ui.getNewRowKey();
keyCombo.addItem(row.getKey());
@@ -370,6 +362,7 @@
// refresh all the table
getTableModel().fireTableRowsDeleted(rowIndex, rowIndex);
+ getModel().removeRowInError(row);
}
//------------------------------------------------------------------------//
@@ -377,37 +370,31 @@
//------------------------------------------------------------------------//
protected void saveRow(HydrologyRowModel row) {
+ if (row.isValid()) {
+ FishingOperation fishingOperation = getModel().getFishingOperation();
+ Preconditions.checkNotNull(fishingOperation);
- FishingOperation fishingOperation = getModel().getFishingOperation();
- Preconditions.checkNotNull(fishingOperation);
-
- if (fishingOperation.getHydrologyCaracteristics() == null) {
- fishingOperation.setHydrologyCaracteristics(new CaracteristicMap());
- }
- Map<Type, Caracteristic> caracteristics = availableGlobalCaracteristics.get(row.getKey());
- CaracteristicMap map = new CaracteristicMap();
- for (Type type : caracteristics.keySet()) {
- Serializable value = null;
- switch (type) {
- case START:
- value = row.getGearShootingStartValue();
- break;
- case END:
- value = row.getGearShootingEndValue();
- break;
- case AVERAGE:
- value = row.getAverageValue();
+ if (fishingOperation.getHydrologyCaracteristics() == null) {
+ fishingOperation.setHydrologyCaracteristics(new CaracteristicMap());
}
- map.put(caracteristics.get(type), value);
+ Map<Type, Caracteristic> caracteristics = availableGlobalCaracteristics.get(row.getKey());
+ CaracteristicMap map = new CaracteristicMap();
+ for (Type type : caracteristics.keySet()) {
+ Serializable value = null;
+ switch (type) {
+ case START:
+ value = row.getGearShootingStartValue();
+ break;
+ case END:
+ value = row.getGearShootingEndValue();
+ break;
+ case AVERAGE:
+ value = row.getAverageValue();
+ }
+ map.put(caracteristics.get(type), value);
+ }
+ fishingOperation.getHydrologyCaracteristics().putAll(map);
}
- fishingOperation.getHydrologyCaracteristics().putAll(map);
-
- if (TuttiEntities.isNew(fishingOperation)) {
-
- fishingOperation = persistenceService.createFishingOperation(fishingOperation);
- } else {
- persistenceService.saveFishingOperation(fishingOperation);
- }
}
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUIModel.java 2013-01-17 16:50:14 UTC (rev 217)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUIModel.java 2013-01-17 17:08:09 UTC (rev 218)
@@ -30,10 +30,14 @@
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
import fr.ifremer.tutti.ui.swing.content.operation.EditFishingOperationUIModel;
import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIModel;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
import org.nuiton.util.beans.Binder;
import org.nuiton.util.beans.BinderModelBuilder;
import java.util.List;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
/**
@@ -43,6 +47,8 @@
public class HydrologyTabUIModel extends AbstractTuttiTableUIModel<FishingOperation, HydrologyRowModel, HydrologyTabUIModel> {
private static final long serialVersionUID = 1L;
+
+ private static final Log log = LogFactory.getLog(HydrologyTabUIModel.class);
public static final String TITLE = "tutti.label.tab.fishingOperation.hydrology";
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiTabContainerUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiTabContainerUIHandler.java 2013-01-17 16:50:14 UTC (rev 217)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiTabContainerUIHandler.java 2013-01-17 17:08:09 UTC (rev 218)
@@ -32,6 +32,8 @@
import java.awt.Component;
import javax.swing.DefaultSingleSelectionModel;
import javax.swing.JTabbedPane;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
/**
* UI containing a tab panel.
@@ -42,6 +44,8 @@
*/
public abstract class AbstractTuttiTabContainerUIHandler<M> extends AbstractTuttiUIHandler<M> {
+ private final static Log log = LogFactory.getLog(AbstractTuttiTabContainerUIHandler.class);
+
protected AbstractTuttiTabContainerUIHandler(TuttiUIContext context) {
super(context);
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/SwingValidatorMessageWidget.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/SwingValidatorMessageWidget.java 2013-01-17 16:50:14 UTC (rev 217)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/SwingValidatorMessageWidget.java 2013-01-17 17:08:09 UTC (rev 218)
@@ -25,8 +25,14 @@
* #L%
*/
+import java.awt.Component;
+import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
+import java.awt.event.ComponentAdapter;
+import java.awt.event.ComponentEvent;
+import java.awt.event.HierarchyBoundsAdapter;
+import java.awt.event.HierarchyEvent;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
@@ -46,7 +52,10 @@
import jaxx.runtime.validator.swing.SwingValidatorUtil;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.jdesktop.swingx.JXTitledPanel;
+import static org.nuiton.i18n.I18n._;
+
/**
* Button which opens a popup containing a table with the errors found
* by registered validators.
@@ -64,6 +73,8 @@
protected JTable errorTable = new JTable();
+ protected Point popupPosition = null;
+
public SwingValidatorMessageWidget() {
super(SwingUtil.createActionIcon("table-error"));
@@ -80,9 +91,20 @@
JScrollPane scrollPanel = new JScrollPane(errorTable);
scrollPanel.setColumnHeaderView(errorTable.getTableHeader());
- popup.add(scrollPanel);
+
+ JXTitledPanel titledPanel = new JXTitledPanel(_("tutti.errorTable.title"), scrollPanel);
+ popup.add(titledPanel);
+ popup.setTitle(_("tutti.errorTable.title"));
popup.setSize(800, 300);
+ popup.setAlwaysOnTop(true);
+ popup.setUndecorated(true);
+ ComponentResizer cr = new ComponentResizer();
+ cr.registerComponent(popup);
+ ComponentMover cm = new ComponentMover();
+ cm.setDragInsets(cr.getDragInsets());
+ cm.registerComponent(popup);
+
addActionListener(new ActionListener() {
@Override
@@ -94,15 +116,40 @@
}
}
});
+
popup.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
setSelected(false);
}
-
+
});
+ popup.addComponentListener(new ComponentAdapter() {
+
+ @Override
+ public void componentMoved(ComponentEvent e) {
+ Component component = e.getComponent();
+ if (component.isShowing()) {
+ popupPosition = component.getLocationOnScreen();
+ }
+ }
+
+ });
+
+ addHierarchyBoundsListener(new HierarchyBoundsAdapter() {
+
+ @Override
+ public void ancestorMoved(HierarchyEvent e) {
+ if (popupPosition == null && isShowing()) {
+ Point point = new Point(getLocationOnScreen());
+ point.translate(-popup.getWidth() + getWidth(), -popup.getHeight());
+ popup.setLocation(point);
+ }
+ }
+ });
+
// add a auto-close action
JRootPane rootPane = popup.getRootPane();
@@ -119,6 +166,7 @@
setSelected(false);
}
});
+
}
/**
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableModel.java 2013-01-17 16:50:14 UTC (rev 217)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableModel.java 2013-01-17 17:08:09 UTC (rev 218)
@@ -227,6 +227,7 @@
@Override
public final void setValueAt(Object aValue, int rowIndex, int columnIndex) {
+ log.info("setValueAt " + aValue);
R entry = getEntry(rowIndex);
ColumnIdentifier<R> propertyName = getPropertyName(columnIndex);
setValueAt(aValue, rowIndex, columnIndex, propertyName, entry);
@@ -252,6 +253,7 @@
int columnIndex,
ColumnIdentifier<R> propertyName,
R entry) {
+ log.info("setValueAt " + aValue);
propertyName.setValue(entry, aValue);
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java 2013-01-17 16:50:14 UTC (rev 217)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java 2013-01-17 17:08:09 UTC (rev 218)
@@ -619,7 +619,12 @@
// apply it to row
row.setValid(valid);
- getModel().setValid(valid);
+
+ if (valid) {
+ getModel().removeRowInError(row);
+ } else {
+ getModel().addRowInError(row);
+ }
}
//------------------------------------------------------------------------//
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIModel.java 2013-01-17 16:50:14 UTC (rev 217)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIModel.java 2013-01-17 17:08:09 UTC (rev 218)
@@ -25,10 +25,18 @@
*/
import com.google.common.collect.Lists;
+import com.google.common.collect.Sets;
import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel;
+import fr.ifremer.tutti.ui.swing.content.operation.fishing.environment.EnvironmentRowModel;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.HashSet;
import org.nuiton.util.beans.Binder;
import java.util.List;
+import java.util.Set;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
/**
* @param <E> type of incoming bean to edit
@@ -41,14 +49,30 @@
private static final long serialVersionUID = 1L;
+ private static final Log log = LogFactory.getLog(AbstractTuttiTableUIModel.class);
+
public static final String PROPERTY_ROWS = "rows";
+
+ public static final String PROPERTY_ROWS_IN_ERROR = "rowsInError";
protected List<R> rows;
+
+ protected Set<R> rowsInError;
protected AbstractTuttiTableUIModel(Class<E> entityType,
Binder<E, B> fromBeanBinder,
Binder<B, E> toBeanBinder) {
super(entityType, fromBeanBinder, toBeanBinder);
+ addPropertyChangeListener(PROPERTY_ROWS_IN_ERROR, new PropertyChangeListener() {
+
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ Set<EnvironmentRowModel> rowsInErorr = (Set<EnvironmentRowModel>) evt.getNewValue();
+ log.info(PROPERTY_ROWS_IN_ERROR + " changed " + rowsInErorr);
+ setValid(rowsInErorr == null || rowsInErorr.isEmpty());
+ }
+ });
+ setRowsInError(new HashSet<R>());
}
public List<R> getRows() {
@@ -63,9 +87,36 @@
// always propagates (since empty list will not fire and we want it)
firePropertyChange(PROPERTY_ROWS, null, rows);
+
+ Set<R> rowsInError = Sets.newHashSet();
+ for (R row : rows) {
+ if (!row.isValid()) {
+ rowsInError.add(row);
+ }
+ }
+ setRowsInError(rowsInError);
}
public int getRowCount() {
return rows == null ? 0 : rows.size();
}
+
+ public Set<R> getRowsInError() {
+ return rowsInError;
+ }
+
+ public void setRowsInError(Set<R> rowsInError) {
+ this.rowsInError = rowsInError;
+ firePropertyChange(PROPERTY_ROWS_IN_ERROR, null, rowsInError);
+ }
+
+ public void addRowInError(R row) {
+ rowsInError.add(row);
+ firePropertyChange(PROPERTY_ROWS_IN_ERROR, null, rowsInError);
+ }
+
+ public void removeRowInError(R row) {
+ rowsInError.remove(row);
+ firePropertyChange(PROPERTY_ROWS_IN_ERROR, null, rowsInError);
+ }
}
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-17 16:50:14 UTC (rev 217)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-17 17:08:09 UTC (rev 218)
@@ -58,6 +58,7 @@
tutti.config.ui.shortcut.closePopup=Fermer une popup
tutti.config.ui.showNumberEditorButton=Afficher le pavé numérique de saisie
tutti.duration.format=dj Hh m'm'
+tutti.errorTable.title=Table d'erreurs
tutti.label.attachmentEditor.file=Fichier
tutti.label.attachmentEditor.fileComment=Commentaire
tutti.label.attachmentEditor.fileName=Nom
1
0
17 Jan '13
Author: tchemit
Date: 2013-01-17 17:50:14 +0100 (Thu, 17 Jan 2013)
New Revision: 217
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/217
Log:
ajout nombre de poche / navire / engin sur l'?\195?\169cran de trait
ajout de quelques validation sur la taille des champs
renommage de certains champs
Modified:
trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceTest.java
trunk/tutti-persistence/src/main/xmi/tutti-persistence.zargo
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/DecoratorService.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUI.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIModel.java
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIModel-error-validation.xml
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-edit-error-validation.xml
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-validate-error-validation.xml
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIModel-error-validation.xml
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel-error-validation.xml
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
Modified: trunk/tutti-persistence/src/main/xmi/tutti-persistence.zargo
===================================================================
(Binary files differ)
Modified: trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceTest.java
===================================================================
--- trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceTest.java 2013-01-17 16:31:22 UTC (rev 216)
+++ trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceTest.java 2013-01-17 16:50:14 UTC (rev 217)
@@ -161,7 +161,7 @@
createdCruise.setBeginDate(null);
createdCruise.setEndDate(null);
createdCruise.setComment(null);
- createdCruise.setPoche(null);
+ createdCruise.setTrawlNet(null);
createdCruise = service.createCruise(cruise);
assertNotNull(createdCruise);
assertNotNull(createdCruise.getId());
@@ -172,7 +172,7 @@
assertEquals(createdCruise.getBeginDate(), reloadedCruise.getBeginDate());
assertEquals(createdCruise.getEndDate(), reloadedCruise.getEndDate());
assertEquals(createdCruise.getComment(), reloadedCruise.getComment());
- assertEquals(createdCruise.getPoche(), reloadedCruise.getPoche());
+ assertEquals(createdCruise.getTrawlNet(), reloadedCruise.getTrawlNet());
assertNull(reloadedCruise.getHeadOfMission());
assertNotNull(reloadedCruise.getVessel());
assertEquals(createdCruise.getVessel().get(0), reloadedCruise.getVessel().get(0));
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/DecoratorService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/DecoratorService.java 2013-01-17 16:31:22 UTC (rev 216)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/DecoratorService.java 2013-01-17 16:50:14 UTC (rev 217)
@@ -102,7 +102,7 @@
registerMultiJXPathDecorator(Program.class, "${name}$s", SEPARATOR, " - ");
registerMultiJXPathDecorator(Cruise.class, "${name}$s", SEPARATOR, " - ");
registerMultiJXPathDecorator(TuttiProtocol.class, "${name}$s", SEPARATOR, " - ");
- registerMultiJXPathDecorator(FishingOperation.class, "${stationNumber}$s#${fishingOperationNumber}$s#${date}$td/%3$tm/%3$tY", SEPARATOR, " - ");
+ registerMultiJXPathDecorator(FishingOperation.class, "${stationNumber}$s#${fishingOperationNumber}$s#${gearShootingStartDate}$td/%3$tm/%3$tY", SEPARATOR, " - ");
registerMultiJXPathDecorator(Zone.class, "${label}$s#${name}$s", SEPARATOR, " - ");
registerMultiJXPathDecorator(Vessel.class, "${name}$s#${internalRegistrationCode}$s", SEPARATOR, " - ");
registerMultiJXPathDecorator(Country.class, "${label}$s#${name}$s", SEPARATOR, " - ");
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUI.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUI.java 2013-01-17 16:31:22 UTC (rev 216)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUI.java 2013-01-17 16:50:14 UTC (rev 217)
@@ -51,6 +51,13 @@
* @since 0.1
*/
public static final String INT_2_DIGITS_PATTERN = "\\d{0,2}";
+
+ /**
+ * Pattern to use for signed numeric values in editors with max 2 digits.
+ *
+ * @since 1.0
+ */
+ public static final String SIGNED_INT_2_DIGITS_PATTERN = "-?\\d{0,2}";
/**
* Pattern to use for short numeric values in editors with max 3 digits.
@@ -60,6 +67,13 @@
public static final String INT_3_DIGITS_PATTERN = "\\d{0,3}";
/**
+ * Pattern to use for singed numeric values in editors with max 3 digits.
+ *
+ * @since 1.0
+ */
+ public static final String SIGNED_INT_3_DIGITS_PATTERN = "-?\\d{0,3}";
+
+ /**
* Pattern to use for short numeric values in editors with max 4 digits.
*
* @since 0.2
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css 2013-01-17 16:31:22 UTC (rev 216)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css 2013-01-17 16:50:14 UTC (rev 217)
@@ -113,14 +113,14 @@
formats: {"dd/MM/yyyy"};
}
-#pocheLabel {
- text: "tutti.label.cruise.poche";
- labelFor: {pocheField};
+#trawlNetLabel {
+ text: "tutti.label.cruise.trawlNet";
+ labelFor: {trawlNetField};
}
-#pocheField {
- property: poche;
- model: {model.getPoche()};
+#trawlNetField {
+ property: trawlNet;
+ model: {model.getTrawlNet()};
useFloat: false;
numberPattern: {INT_1_DIGITS_PATTERN};
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx 2013-01-17 16:31:22 UTC (rev 216)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx 2013-01-17 16:50:14 UTC (rev 217)
@@ -80,7 +80,7 @@
<field name='year' component='yearField'/>
<field name='surveyPart' component='surveyPartField'/>
<field name='name' component='nameField'/>
- <field name='poche' component='pocheField'/>
+ <field name='trawlNet' component='trawlNetField'/>
<field name='country' component='countryComboBox'/>
<field name='beginDate' component='beginDateField'/>
<field name='endDate' component='endDateField'/>
@@ -132,10 +132,10 @@
onActionPerformed='handler.generateCampaignName()'/>
</cell>
<cell>
- <JLabel id='pocheLabel'/>
+ <JLabel id='trawlNetLabel'/>
</cell>
<cell weightx='0.3'>
- <NumberEditor id='pocheField' constructorParams='this'/>
+ <NumberEditor id='trawlNetField' constructorParams='this'/>
</cell>
</row>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java 2013-01-17 16:31:22 UTC (rev 216)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java 2013-01-17 16:50:14 UTC (rev 217)
@@ -36,19 +36,17 @@
import fr.ifremer.tutti.ui.swing.MainUI;
import fr.ifremer.tutti.ui.swing.TuttiScreen;
import fr.ifremer.tutti.ui.swing.TuttiUI;
-import fr.ifremer.tutti.ui.swing.TuttiUIContext;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-import java.util.List;
import jaxx.runtime.JAXXUtil;
import jaxx.runtime.context.JAXXContextEntryDef;
import jaxx.runtime.validator.swing.SwingValidator;
-import jaxx.runtime.validator.swing.SwingValidatorMessageTableRenderer;
-import jaxx.runtime.validator.swing.SwingValidatorUtil;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
/**
* Handler of UI {@link EditCruiseUI}.
*
@@ -108,7 +106,7 @@
Program program =
persistenceService.getProgram(context.getProgramId());
model.setProgram(program);
- model.setPoche(1);
+ model.setTrawlNet(1);
if (log.isDebugEnabled()) {
log.debug("Will create a new cruise from program: " + program);
@@ -182,7 +180,7 @@
EditCruiseUIModel model = getModel();
model.setVesselType(VesselTypeEnum.ALL);
-
+
// Change vessel list and gear list when vessel type changes
model.addPropertyChangeListener(EditCruiseUIModel.PROPERTY_VESSEL_TYPE, new PropertyChangeListener() {
@Override
@@ -200,14 +198,14 @@
// compute new selected vessel list
List<Vessel> newSelectedVessel = Lists.newArrayList();
- if (selectedVessel!=null) {
+ if (selectedVessel != null) {
newSelectedVessel.addAll(selectedVessel);
}
newSelectedVessel.retainAll(newVesselList);
// compute new selected gear list
List<Gear> newSelectedGear = Lists.newArrayList();
- if (selectedGear!=null) {
+ if (selectedGear != null) {
newSelectedGear.addAll(selectedGear);
}
newSelectedGear.retainAll(newGearList);
@@ -252,7 +250,7 @@
// if new fishingOperation can already cancel his creation
model.setModify(model.isCreate());
-
+
MainUI main = ui.getContextValue(MainUI.class, MainUI.class.getName());
main.clearValidators();
main.registerValidator(validator);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIModel.java 2013-01-17 16:31:22 UTC (rev 216)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIModel.java 2013-01-17 16:50:14 UTC (rev 217)
@@ -67,7 +67,7 @@
public static final String PROPERTY_YEAR = "year";
- public static final String PROPERTY_POCHE = "poche";
+ public static final String PROPERTY_TRAWL_NET = "trawlNet";
public static final String PROPERTY_BEGIN_DATE = "beginDate";
@@ -77,6 +77,12 @@
public static final String PROPERTY_VESSEL_TYPE = "vesselType";
+ public static final String PROPERTY_VESSEL_TYPE_ALL = "vesselTypeAll";
+
+ public static final String PROPERTY_VESSEL_TYPE_SCIENTIFIC = "vesselTypeScientific";
+
+ public static final String PROPERTY_VESSEL_TYPE_FISHING = "vesselTypeFishing";
+
protected Program program;
protected Country country;
@@ -97,7 +103,7 @@
protected Integer year;
- protected Integer poche;
+ protected Integer trawlNet;
protected Date beginDate;
@@ -178,14 +184,14 @@
firePropertyChange(PROPERTY_CAN_GENERATE_NAME, null, isCanGenerateName());
}
- public Integer getPoche() {
- return poche;
+ public Integer getTrawlNet() {
+ return trawlNet;
}
- public void setPoche(Integer poche) {
- Object oldValue = getPoche();
- this.poche = poche;
- firePropertyChange(PROPERTY_POCHE, oldValue, poche);
+ public void setTrawlNet(Integer trawlNet) {
+ Object oldValue = getTrawlNet();
+ this.trawlNet = trawlNet;
+ firePropertyChange(PROPERTY_TRAWL_NET, oldValue, trawlNet);
}
public Date getBeginDate() {
@@ -255,9 +261,9 @@
Object oldValue = getVesselType();
this.vesselType = vesselType;
firePropertyChange(PROPERTY_VESSEL_TYPE, oldValue, vesselType);
- firePropertyChange("vesselTypeAll", oldAll, isVesselTypeAll());
- firePropertyChange("vesselTypeScientific", oldScientific, isVesselTypeScientific());
- firePropertyChange("vesselTypeFishing", oldFishing, isVesselTypeFishing());
+ firePropertyChange(PROPERTY_VESSEL_TYPE_ALL, oldAll, isVesselTypeAll());
+ firePropertyChange(PROPERTY_VESSEL_TYPE_SCIENTIFIC, oldScientific, isVesselTypeScientific());
+ firePropertyChange(PROPERTY_VESSEL_TYPE_FISHING, oldFishing, isVesselTypeFishing());
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css 2013-01-17 16:31:22 UTC (rev 216)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css 2013-01-17 16:50:14 UTC (rev 217)
@@ -153,6 +153,43 @@
selected: {model.isUseSexagecimalFormat() ? "DMS" : "DD"};
}
+#traitVesselPanel {
+ border: {BorderFactory.createTitledBorder((String)null)};
+}
+#vesselLabel {
+ text: "tutti.label.fishingOperation.vessel";
+ labelFor: {vesselComboBox};
+}
+
+#vesselComboBox {
+ property: vessel;
+ selectedItem: {model.getVessel()};
+}
+
+#gearLabel {
+ text: "tutti.label.fishingOperation.gear";
+ labelFor: {gearComboBox};
+}
+
+#gearComboBox {
+ property: gear;
+ selectedItem: {model.getGear()};
+}
+
+#trawlNetNumberLabel {
+ text: "tutti.label.fishingOperation.trawlNetNumber";
+ labelFor: {trawlNetNumberField};
+}
+
+#trawlNetNumberField {
+ showReset: false;
+ useFloat: false;
+ useSign: false;
+ numberPattern: {INT_1_DIGITS_PATTERN};
+ property: trawlNetNumber;
+ model: {model.getTrawlNetNumber()};
+}
+
.degree {
showReset: false;
useFloat: false;
@@ -180,7 +217,7 @@
#gearShootingStartLongitudeDMSDegreeField {
property: gearShootingStartLongitudeDegree;
model: {model.getGearShootingStartLongitudeDegree()};
- numberPattern: {"-?" + INT_3_DIGITS_PATTERN};
+ numberPattern: {SIGNED_INT_3_DIGITS_PATTERN};
}
#gearShootingStartLongitudeDMSMinuteField {
@@ -208,7 +245,7 @@
#gearShootingStartLatitudeDMSDegreeField {
property: gearShootingStartLatitudeDegree;
model: {model.getGearShootingStartLatitudeDegree()};
- numberPattern: {"-?" + INT_2_DIGITS_PATTERN};
+ numberPattern: {SIGNED_INT_2_DIGITS_PATTERN};
}
#gearShootingStartLatitudeDMSMinuteField {
@@ -246,7 +283,7 @@
#gearShootingEndLongitudeDMSDegreeField {
property: gearShootingEndLongitudeDegree;
model: {model.getGearShootingEndLongitudeDegree()};
- numberPattern: {"-?" + INT_3_DIGITS_PATTERN};
+ numberPattern: {SIGNED_INT_3_DIGITS_PATTERN};
}
#gearShootingEndLongitudeDMSMinuteField {
@@ -274,7 +311,7 @@
#gearShootingEndLatitudeDMSDegreeField {
property: gearShootingEndLatitudeDegree;
model: {model.getGearShootingEndLatitudeDegree()};
- numberPattern: {"-?" + INT_2_DIGITS_PATTERN};
+ numberPattern: {SIGNED_INT_2_DIGITS_PATTERN};
}
#gearShootingEndLatitudeDMSMinuteField {
@@ -338,25 +375,25 @@
selected: {model.isFishingOperationRectiligne()};
}
-#distanceChaluteeLabel {
- text: "tutti.label.fishingOperation.distanceChalutee";
- labelFor: {distanceChaluteeField};
+#trawlDistanceLabel {
+ text: "tutti.label.fishingOperation.trawlDistance";
+ labelFor: {trawlDistanceField};
}
-#distanceChaluteeField {
- property: distanceChalutee;
- model: {model.getDistanceChalutee()};
+#trawlDistanceField {
+ property: trawlDistance;
+ model: {model.getTrawlDistance()};
useFloat: false;
numberPattern: {INT_6_DIGITS_PATTERN};
enabled: {!model.isFishingOperationRectiligne()};
}
-#dureeLabel {
- text: "tutti.label.fishingOperation.duree";
- labelFor: {dureeField};
+#durationLabel {
+ text: "tutti.label.fishingOperation.duration";
+ labelFor: {durationField};
}
-#dureeField {
+#durationField {
text: {fr.ifremer.tutti.ui.swing.util.TuttiUIUtil.getDuration(
model.getGearShootingStartDate(), model.getGearShootingEndDate(), "tutti.duration.format")};
enabled: false;
@@ -369,7 +406,7 @@
#commentPane {
columnHeaderView: {new JLabel(_("tutti.label.comment"))};
- minimumSize: {new Dimension(10,50)};
+ /*minimumSize: {new Dimension(10,50)};*/
}
#commentField {
@@ -393,10 +430,10 @@
#cancelButton {
actionIcon: cancel;
- text: "tutti.action.cancel";
+ text:"tutti.action.cancel";
}
#importCasinoButton {
- actionIcon: casino-import;
- text: "tutti.action.casino-import";
+ actionIcon: casino-import;
+ text: "tutti.action.casino-import";
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.jaxx 2013-01-17 16:31:22 UTC (rev 216)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.jaxx 2013-01-17 16:50:14 UTC (rev 217)
@@ -27,7 +27,9 @@
<import>
fr.ifremer.tutti.persistence.entities.referential.FishingOperationLocation
fr.ifremer.tutti.persistence.entities.data.FishingOperation
+ fr.ifremer.tutti.persistence.entities.referential.Gear
fr.ifremer.tutti.persistence.entities.referential.Person
+ fr.ifremer.tutti.persistence.entities.referential.Vessel
fr.ifremer.tutti.ui.swing.util.editor.SimpleTimeEditor
fr.ifremer.tutti.ui.swing.content.operation.fishing.environment.EnvironmentTabUI
@@ -77,7 +79,7 @@
<SwingValidatorMessageTableModel id='errorTableModel'/>
<BeanValidator id='validator' context='validate' bean='model'
- errorTableModel='errorTableModel'
+ errorTableModel='errorTableModel'
uiClass='jaxx.runtime.validator.swing.ui.ImageValidationUI'>
<field name='stationNumber' component='stationNumberField'/>
<field name='fishingOperationNumber'
@@ -85,22 +87,41 @@
<field name='gearShootingStartDate' component='gearShootingStartDateField'/>
<field name='comment' component='commentField'/>
<field name='saisisseur' component='saisisseurList'/>
- <field name='gearShootingStartLatitude' component='gearShootingStartLatitudeDDField'/>
- <field name='gearShootingStartLatitudeDegree' component='gearShootingStartLatitudeDMSDegreeField'/>
- <field name='gearShootingStartLatitudeMinute' component='gearShootingStartLatitudeDMSMinuteField'/>
- <field name='gearShootingStartLatitudeSecond' component='gearShootingStartLatitudeDMSSecondField'/>
- <field name='gearShootingStartLongitude' component='gearShootingStartLongitudeDDField'/>
- <field name='gearShootingStartLongitudeDegree' component='gearShootingStartLongitudeDMSDegreeField'/>
- <field name='gearShootingStartLongitudeMinute' component='gearShootingStartLongitudeDMSMinuteField'/>
- <field name='gearShootingStartLongitudeSecond' component='gearShootingStartLongitudeDMSSecondField'/>
- <field name='gearShootingEndLatitude' component='gearShootingEndLatitudeDDField'/>
- <field name='gearShootingEndLatitudeDegree' component='gearShootingEndLatitudeDMSDegreeField'/>
- <field name='gearShootingEndLatitudeMinute' component='gearShootingEndLatitudeDMSMinuteField'/>
- <field name='gearShootingEndLatitudeSecond' component='gearShootingEndLatitudeDMSSecondField'/>
- <field name='gearShootingEndLongitude' component='gearShootingEndLongitudeDDField'/>
- <field name='gearShootingEndLongitudeDegree' component='gearShootingEndLongitudeDMSDegreeField'/>
- <field name='gearShootingEndLongitudeMinute' component='gearShootingEndLongitudeDMSMinuteField'/>
- <field name='gearShootingEndLongitudeSecond' component='gearShootingEndLongitudeDMSSecondField'/>
+ <field name='vessel' component='vesselComboBox'/>
+ <field name='gear' component='gearComboBox'/>
+ <field name='trawlNetNumber' component='trawlNetNumberField'/>
+ <field name='gearShootingStartLatitude'
+ component='gearShootingStartLatitudeDDField'/>
+ <field name='gearShootingStartLatitudeDegree'
+ component='gearShootingStartLatitudeDMSDegreeField'/>
+ <field name='gearShootingStartLatitudeMinute'
+ component='gearShootingStartLatitudeDMSMinuteField'/>
+ <field name='gearShootingStartLatitudeSecond'
+ component='gearShootingStartLatitudeDMSSecondField'/>
+ <field name='gearShootingStartLongitude'
+ component='gearShootingStartLongitudeDDField'/>
+ <field name='gearShootingStartLongitudeDegree'
+ component='gearShootingStartLongitudeDMSDegreeField'/>
+ <field name='gearShootingStartLongitudeMinute'
+ component='gearShootingStartLongitudeDMSMinuteField'/>
+ <field name='gearShootingStartLongitudeSecond'
+ component='gearShootingStartLongitudeDMSSecondField'/>
+ <field name='gearShootingEndLatitude'
+ component='gearShootingEndLatitudeDDField'/>
+ <field name='gearShootingEndLatitudeDegree'
+ component='gearShootingEndLatitudeDMSDegreeField'/>
+ <field name='gearShootingEndLatitudeMinute'
+ component='gearShootingEndLatitudeDMSMinuteField'/>
+ <field name='gearShootingEndLatitudeSecond'
+ component='gearShootingEndLatitudeDMSSecondField'/>
+ <field name='gearShootingEndLongitude'
+ component='gearShootingEndLongitudeDDField'/>
+ <field name='gearShootingEndLongitudeDegree'
+ component='gearShootingEndLongitudeDMSDegreeField'/>
+ <field name='gearShootingEndLongitudeMinute'
+ component='gearShootingEndLongitudeDMSMinuteField'/>
+ <field name='gearShootingEndLongitudeSecond'
+ component='gearShootingEndLongitudeDMSSecondField'/>
</BeanValidator>
<CardLayout2Ext id='gearShootingStartLongitudeLayout'
@@ -111,7 +132,7 @@
constructorParams='this, "gearShootingEndLongitudePanel"'/>
<CardLayout2Ext id='gearShootingEndLatitudeLayout'
constructorParams='this, "gearShootingEndLatitudePanel"'/>
-
+
<JPanel id='fishingOperationPane' constraints='BorderLayout.CENTER'
layout='{new BorderLayout()}'>
@@ -119,32 +140,28 @@
<tab id='traitGeneralTab'>
<Table fill='both' id='generalForm'>
- <!-- Numero station / Numéro trait / Date -->
+ <!-- Numero station / Numéro trait / Numéro de poche -->
<row>
- <cell columns='6'>
- <Table fill="both" weightx='1'>
- <row>
- <cell>
- <JPanel layout="{new BorderLayout()}">
- <JLabel id='stationNumberLabel'
- constraints='BorderLayout.WEST'/>
- <JTextField id='stationNumberField'
- constraints='BorderLayout.CENTER'
- onKeyReleased='handler.setText(event, "stationNumber")'/>
- </JPanel>
- </cell>
- <cell>
- <JPanel layout="{new BorderLayout()}">
- <JLabel id='fishingOperationNumberLabel'
- constraints='BorderLayout.WEST'/>
- <NumberEditor id='fishingOperationNumberField'
- constraints='BorderLayout.CENTER'
- constructorParams='this'/>
- </JPanel>
- </cell>
- </row>
- </Table>
+ <cell>
+ <JLabel id='stationNumberLabel'/>
</cell>
+ <cell weightx='0.3'>
+ <JTextField id='stationNumberField'
+ onKeyReleased='handler.setText(event, "stationNumber")'/>
+ </cell>
+ <cell>
+ <JLabel id='fishingOperationNumberLabel'/>
+ </cell>
+ <cell weightx='0.3'>
+ <NumberEditor id='fishingOperationNumberField'
+ constructorParams='this'/>
+ </cell>
+ <cell>
+ <JLabel id='trawlNetNumberLabel'/>
+ </cell>
+ <cell weightx='0.3'>
+ <NumberEditor id='trawlNetNumberField' constructorParams='this'/>
+ </cell>
</row>
<!-- Strate d'association / Sous Strate / Localité -->
@@ -183,9 +200,9 @@
<cell>
<JPanel layout="{new GridLayout(1,0)}">
<JRadioButton id='gearShootingCoordinatesDDRadio'
- onActionPerformed='handler.setUseSexagecimalFormat(false)'/>
+ onActionPerformed='handler.setUseSexagecimalFormat(false)'/>
<JRadioButton id='gearShootingCoordinatesDMSRadio'
- onActionPerformed='handler.setUseSexagecimalFormat(true)'/>
+ onActionPerformed='handler.setUseSexagecimalFormat(true)'/>
</JPanel>
</cell>
<cell>
@@ -208,34 +225,44 @@
</cell>
<cell weightx='1'>
<JPanel id='gearShootingStartLatitudePanel'>
- <NumberEditor id='gearShootingStartLatitudeDDField' constraints='"DD"'
+ <NumberEditor id='gearShootingStartLatitudeDDField'
+ constraints='"DD"'
constructorParams='this'/>
- <JPanel layout="{new GridLayout(1,0)}" constraints='"DMS"'>
- <NumberEditor id='gearShootingStartLatitudeDMSDegreeField'
- constructorParams='this' styleClass='degree'/>
-
- <NumberEditor id='gearShootingStartLatitudeDMSMinuteField'
- constructorParams='this' styleClass='minute'/>
-
- <NumberEditor id='gearShootingStartLatitudeDMSSecondField'
- constructorParams='this' styleClass='second'/>
+ <JPanel layout="{new GridLayout(1,0)}"
+ constraints='"DMS"'>
+ <NumberEditor
+ id='gearShootingStartLatitudeDMSDegreeField'
+ constructorParams='this' styleClass='degree'/>
+
+ <NumberEditor
+ id='gearShootingStartLatitudeDMSMinuteField'
+ constructorParams='this' styleClass='minute'/>
+
+ <NumberEditor
+ id='gearShootingStartLatitudeDMSSecondField'
+ constructorParams='this' styleClass='second'/>
</JPanel>
-<!-- -->
+ <!-- -->
</JPanel>
</cell>
<cell weightx='1'>
<JPanel id='gearShootingStartLongitudePanel'>
- <NumberEditor id='gearShootingStartLongitudeDDField' constraints='"DD"'
+ <NumberEditor id='gearShootingStartLongitudeDDField'
+ constraints='"DD"'
constructorParams='this'/>
- <JPanel layout="{new GridLayout(1,0)}" constraints='"DMS"'>
- <NumberEditor id='gearShootingStartLongitudeDMSDegreeField'
- constructorParams='this' styleClass='degree'/>
-
- <NumberEditor id='gearShootingStartLongitudeDMSMinuteField'
- constructorParams='this' styleClass='minute'/>
-
- <NumberEditor id='gearShootingStartLongitudeDMSSecondField'
- constructorParams='this' styleClass='second'/>
+ <JPanel layout="{new GridLayout(1,0)}"
+ constraints='"DMS"'>
+ <NumberEditor
+ id='gearShootingStartLongitudeDMSDegreeField'
+ constructorParams='this' styleClass='degree'/>
+
+ <NumberEditor
+ id='gearShootingStartLongitudeDMSMinuteField'
+ constructorParams='this' styleClass='minute'/>
+
+ <NumberEditor
+ id='gearShootingStartLongitudeDMSSecondField'
+ constructorParams='this' styleClass='second'/>
</JPanel>
</JPanel>
</cell>
@@ -254,33 +281,43 @@
</cell>
<cell weightx='1'>
<JPanel id='gearShootingEndLatitudePanel'>
- <NumberEditor id='gearShootingEndLatitudeDDField' constraints='"DD"'
+ <NumberEditor id='gearShootingEndLatitudeDDField'
+ constraints='"DD"'
constructorParams='this'/>
- <JPanel layout="{new GridLayout(1,0)}" constraints='"DMS"'>
- <NumberEditor id='gearShootingEndLatitudeDMSDegreeField'
- constructorParams='this' styleClass='degree'/>
-
- <NumberEditor id='gearShootingEndLatitudeDMSMinuteField'
- constructorParams='this' styleClass='minute'/>
-
- <NumberEditor id='gearShootingEndLatitudeDMSSecondField'
- constructorParams='this' styleClass='second'/>
+ <JPanel layout="{new GridLayout(1,0)}"
+ constraints='"DMS"'>
+ <NumberEditor
+ id='gearShootingEndLatitudeDMSDegreeField'
+ constructorParams='this' styleClass='degree'/>
+
+ <NumberEditor
+ id='gearShootingEndLatitudeDMSMinuteField'
+ constructorParams='this' styleClass='minute'/>
+
+ <NumberEditor
+ id='gearShootingEndLatitudeDMSSecondField'
+ constructorParams='this' styleClass='second'/>
</JPanel>
</JPanel>
</cell>
<cell weightx='1'>
<JPanel id='gearShootingEndLongitudePanel'>
- <NumberEditor id='gearShootingEndLongitudeDDField' constraints='"DD"'
+ <NumberEditor id='gearShootingEndLongitudeDDField'
+ constraints='"DD"'
constructorParams='this'/>
- <JPanel layout="{new GridLayout(1,0)}" constraints='"DMS"'>
- <NumberEditor id='gearShootingEndLongitudeDMSDegreeField'
- constructorParams='this' styleClass='degree'/>
-
- <NumberEditor id='gearShootingEndLongitudeDMSMinuteField'
- constructorParams='this' styleClass='minute'/>
-
- <NumberEditor id='gearShootingEndLongitudeDMSSecondField'
- constructorParams='this' styleClass='second'/>
+ <JPanel layout="{new GridLayout(1,0)}"
+ constraints='"DMS"'>
+ <NumberEditor
+ id='gearShootingEndLongitudeDMSDegreeField'
+ constructorParams='this' styleClass='degree'/>
+
+ <NumberEditor
+ id='gearShootingEndLongitudeDMSMinuteField'
+ constructorParams='this' styleClass='minute'/>
+
+ <NumberEditor
+ id='gearShootingEndLongitudeDMSSecondField'
+ constructorParams='this' styleClass='second'/>
</JPanel>
</JPanel>
</cell>
@@ -305,9 +342,9 @@
</cell>
<cell>
<JPanel layout="{new BorderLayout()}">
- <JLabel id='distanceChaluteeLabel'
+ <JLabel id='trawlDistanceLabel'
constraints='BorderLayout.WEST'/>
- <NumberEditor id='distanceChaluteeField'
+ <NumberEditor id='trawlDistanceField'
constraints='BorderLayout.CENTER'
constructorParams='this'/>
</JPanel>
@@ -317,8 +354,10 @@
</cell>
<cell>
<JPanel layout="{new BorderLayout()}">
- <JLabel id='dureeLabel' constraints='BorderLayout.WEST'/>
- <JTextField id='dureeField' constraints='BorderLayout.CENTER'/>
+ <JLabel id='durationLabel'
+ constraints='BorderLayout.WEST'/>
+ <JTextField id='durationField'
+ constraints='BorderLayout.CENTER'/>
</JPanel>
</cell>
</row>
@@ -363,15 +402,39 @@
</row>
<!-- Saisisseur -->
- <row weighty='0.3'>
+ <row weighty='0.2'>
<cell columns='6'>
- <BeanDoubleList id='saisisseurList' genericType='Person'/>
+ <JPanel layout='{new GridLayout(1,0)}'>
+ <BeanDoubleList id='saisisseurList' genericType='Person'/>
+ <Table fill="both" weightx='1' id='traitVesselPanel'>
+ <row>
+ <cell anchor='west'>
+ <JLabel id='vesselLabel'/>
+ </cell>
+ <cell weightx="1.0" fill="both">
+ <BeanComboBox id='vesselComboBox'
+ constructorParams='this'
+ genericType='Vessel'/>
+ </cell>
+ </row>
+ <row>
+ <cell anchor='west'>
+ <JLabel id='gearLabel'/>
+ </cell>
+ <cell>
+ <BeanComboBox id='gearComboBox'
+ constructorParams='this'
+ genericType='Gear'/>
+ </cell>
+ </row>
+ </Table>
+ </JPanel>
</cell>
</row>
<!-- Commentaire -->
- <row weighty='0.3' fill='both'>
- <cell columns='6' fill='both'>
+ <row weighty='0.8'>
+ <cell columns='6'>
<JScrollPane id='commentPane'
onFocusGained='commentField.requestFocus()'>
<JTextArea id='commentField'
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-01-17 16:31:22 UTC (rev 216)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-01-17 16:50:14 UTC (rev 217)
@@ -29,7 +29,9 @@
import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
import fr.ifremer.tutti.persistence.entities.data.Program;
import fr.ifremer.tutti.persistence.entities.referential.FishingOperationLocation;
+import fr.ifremer.tutti.persistence.entities.referential.Gear;
import fr.ifremer.tutti.persistence.entities.referential.Person;
+import fr.ifremer.tutti.persistence.entities.referential.Vessel;
import fr.ifremer.tutti.persistence.entities.referential.Zone;
import fr.ifremer.tutti.service.PersistenceService;
import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel;
@@ -103,10 +105,13 @@
EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_END_LONGITUDE,
EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_END_DATE,
EditFishingOperationUIModel.PROPERTY_FISHING_OPERATION_RECTILIGNE,
- EditFishingOperationUIModel.PROPERTY_DISTANCE_CHALUTEE,
+ EditFishingOperationUIModel.PROPERTY_TRAWL_DISTANCE,
EditFishingOperationUIModel.PROPERTY_FISHING_OPERATION_VALID,
EditFishingOperationUIModel.PROPERTY_LOCATION,
EditFishingOperationUIModel.PROPERTY_SAISISSEUR,
+ EditFishingOperationUIModel.PROPERTY_VESSEL,
+ EditFishingOperationUIModel.PROPERTY_GEAR,
+ EditFishingOperationUIModel.PROPERTY_POCHE_NUMBER,
EditFishingOperationUIModel.PROPERTY_COMMENT);
}
@@ -185,6 +190,14 @@
persistenceService.getAllPerson(),
model.getSaisisseur());
+ initBeanComboBox(ui.getVesselComboBox(),
+ Lists.<Vessel>newArrayList(),
+ null);
+
+ initBeanComboBox(ui.getGearComboBox(),
+ Lists.<Gear>newArrayList(),
+ null);
+
Program program = TuttiUIUtil.getProgram(ui);
Preconditions.checkNotNull(program,
"Could not find program in ui context");
@@ -352,6 +365,12 @@
FishingOperationLocation subStrata = bean.getSubStrata();
FishingOperationLocation location = bean.getLocation();
+ // update gear universe
+ ui.getGearComboBox().setData(Lists.newArrayList(bean.getCruise().getGear()));
+
+ // update vessel universe
+ ui.getVesselComboBox().setData(Lists.newArrayList(bean.getCruise().getVessel()));
+
model.fromBean(bean);
// to be sure combo list will be reloaded
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java 2013-01-17 16:31:22 UTC (rev 216)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java 2013-01-17 16:50:14 UTC (rev 217)
@@ -108,8 +108,10 @@
public static final String PROPERTY_FISHING_OPERATION_RECTILIGNE = "fishingOperationRectiligne";
- public static final String PROPERTY_DISTANCE_CHALUTEE = "distanceChalutee";
+ public static final String PROPERTY_TRAWL_DISTANCE = "trawlDistance";
+ public static final String PROPERTY_TRAWL_NET_NUMBER = "trawlNetNumber";
+
public static final String PROPERTY_FISHING_OPERATION_VALID = "fishingOperationValid";
public static final String PROPERTY_LOCATION = "location";
@@ -124,6 +126,8 @@
public static final String PROPERTY_VALIDATION_CONTEXT = "validationContext";
+ public static final String PROPERTY_POCHE_NUMBER = "trawlNetNumber";
+
/**
* Flag when there is no fishing operation selected.
*
@@ -165,7 +169,7 @@
protected boolean fishingOperationRectiligne;
- protected Float distanceChalutee;
+ protected Float trawlDistance;
protected Boolean fishingOperationValid;
@@ -183,6 +187,8 @@
protected Vessel vessel;
+ protected Integer trawlNetNumber;
+
protected static Binder<EditFishingOperationUIModel, FishingOperation> toBeanBinder =
BinderFactory.newBinder(EditFishingOperationUIModel.class,
FishingOperation.class);
@@ -530,14 +536,14 @@
firePropertyChange(PROPERTY_FISHING_OPERATION_RECTILIGNE, oldValue, fishingOperationRectiligne);
}
- public Float getDistanceChalutee() {
- return distanceChalutee;
+ public Float getTrawlDistance() {
+ return trawlDistance;
}
- public void setDistanceChalutee(Float distanceChalutee) {
- Object oldValue = getDistanceChalutee();
- this.distanceChalutee = distanceChalutee;
- firePropertyChange(PROPERTY_DISTANCE_CHALUTEE, oldValue, distanceChalutee);
+ public void setTrawlDistance(Float trawlDistance) {
+ Object oldValue = getTrawlDistance();
+ this.trawlDistance = trawlDistance;
+ firePropertyChange(PROPERTY_TRAWL_DISTANCE, oldValue, trawlDistance);
}
public Boolean getFishingOperationValid() {
@@ -613,6 +619,16 @@
firePropertyChange(PROPERTY_VESSEL, oldValue, vessel);
}
+ public Integer getTrawlNetNumber() {
+ return trawlNetNumber;
+ }
+
+ public void setTrawlNetNumber(Integer trawlNetNumber) {
+ Object oldValue = getTrawlNetNumber();
+ this.trawlNetNumber = trawlNetNumber;
+ firePropertyChange(PROPERTY_TRAWL_NET_NUMBER, oldValue, trawlNetNumber);
+ }
+
@Override
protected FishingOperation newEntity() {
return fishingOperation;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java 2013-01-17 16:31:22 UTC (rev 216)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java 2013-01-17 16:50:14 UTC (rev 217)
@@ -112,6 +112,11 @@
List<FishingOperation> fishingOperations =
persistenceService.getAllFishingOperation(cruiseId);
+
+ //TODO make sure to use selection cruise ?
+ for (FishingOperation fishingOperation : fishingOperations) {
+ fishingOperation.setCruise(cruise);
+ }
model.setFishingOperation(fishingOperations);
if (log.isInfoEnabled()) {
@@ -199,12 +204,12 @@
//TODO Should select gear from possible one ?
Gear gear = newFishingOperation.getCruise().getGear(0);
newFishingOperation.setGear(gear);
+ newFishingOperation.setTrawlNetNumber(1);
// by default use the current day with no time information
Date currentDate = DateUtils.setMinutes(
DateUtils.setHours(new Date(), 0), 0);
- newFishingOperation.setDate(currentDate);
newFishingOperation.setGearShootingStartDate(currentDate);
newFishingOperation.setGearShootingEndDate(currentDate);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIModel.java 2013-01-17 16:31:22 UTC (rev 216)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIModel.java 2013-01-17 16:50:14 UTC (rev 217)
@@ -26,8 +26,6 @@
import com.google.common.collect.Lists;
import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.jdesktop.beans.AbstractSerializableBean;
import java.util.List;
@@ -40,22 +38,16 @@
*/
public class FishingOperationsUIModel extends AbstractSerializableBean {
- private static final Log log = LogFactory.getLog(FishingOperationsUIModel.class);
-
private static final long serialVersionUID = 1L;
public static final String PROPERTY_FISHING_OPERATION = "fishingOperation";
public static final String PROPERTY_SELECTED_FISHING_OPERATION = "selectedFishingOperation";
-// public static final String PROPERTY_CRUISE = "cruise";
-
protected List<FishingOperation> fishingOperation;
protected FishingOperation selectedFishingOperation;
-// protected Cruise cruise;
-
public List<FishingOperation> getFishingOperation() {
return fishingOperation;
}
@@ -99,14 +91,4 @@
this.selectedFishingOperation = selectedFishingOperation;
firePropertyChange(PROPERTY_SELECTED_FISHING_OPERATION, oldValue, selectedFishingOperation);
}
-
-// public Cruise getCruise() {
-// return cruise;
-// }
-//
-// public void setCruise(Cruise cruise) {
-// Object oldValue = getCruise();
-// this.cruise = cruise;
-// firePropertyChange(PROPERTY_CRUISE, oldValue, cruise);
-// }
}
Modified: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIModel-error-validation.xml
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIModel-error-validation.xml 2013-01-17 16:31:22 UTC (rev 216)
+++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIModel-error-validation.xml 2013-01-17 16:50:14 UTC (rev 217)
@@ -45,9 +45,9 @@
</field-validator>
</field>
- <field name="poche">
+ <field name="trawlNet">
<field-validator type="required" short-circuit="true">
- <message>tutti.validator.error.cruise.poche.required</message>
+ <message>tutti.validator.error.cruise.trawlNet.required</message>
</field-validator>
</field>
@@ -106,4 +106,11 @@
</field-validator>
</field>
+ <field name="comment">
+ <field-validator type="stringlength" short-circuit="true">
+ <param name="maxLength">2000</param>
+ <message>tutti.validator.error.comment.too.long##${maxLength}</message>
+ </field-validator>
+ </field>
+
</validators>
Modified: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-edit-error-validation.xml
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-edit-error-validation.xml 2013-01-17 16:31:22 UTC (rev 216)
+++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-edit-error-validation.xml 2013-01-17 16:50:14 UTC (rev 217)
@@ -35,6 +35,13 @@
</message>
</field-validator>
+ <field-validator type="stringlength" short-circuit="true">
+ <param name="maxLength">40</param>
+ <message>
+ tutti.validator.error.fishingOperation.stationNumber.too.long##${maxLength}
+ </message>
+ </field-validator>
+
</field>
<field name="fishingOperationNumber">
@@ -54,4 +61,11 @@
</field-validator>
</field>
+
+ <field name="comment">
+ <field-validator type="stringlength" short-circuit="true">
+ <param name="maxLength">2000</param>
+ <message>tutti.validator.error.comment.too.long##${maxLength}</message>
+ </field-validator>
+ </field>
</validators>
Modified: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-validate-error-validation.xml
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-validate-error-validation.xml 2013-01-17 16:31:22 UTC (rev 216)
+++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-validate-error-validation.xml 2013-01-17 16:50:14 UTC (rev 217)
@@ -35,6 +35,16 @@
</message>
</field-validator>
+ <field-validator type="fieldexpressionwithparams" short-circuit="true">
+ <param name="intParams">size:40</param>
+ <param name="expression">
+ <![CDATA[ stationNumber.length() < ints.size ]]>
+ </param>
+ <message>
+ tutti.validator.error.fishingOperation.stationNumber.too.long##${ints.size}
+ </message>
+ </field-validator>
+
</field>
<field name="fishingOperationNumber">
@@ -344,4 +354,11 @@
</field>
+ <field name="comment">
+ <field-validator type="stringlength" short-circuit="true">
+ <param name="maxLength">2000</param>
+ <message>tutti.validator.error.comment.too.long##${maxLength}</message>
+ </field-validator>
+ </field>
+
</validators>
Modified: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIModel-error-validation.xml
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIModel-error-validation.xml 2013-01-17 16:31:22 UTC (rev 216)
+++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIModel-error-validation.xml 2013-01-17 16:50:14 UTC (rev 217)
@@ -42,4 +42,12 @@
</field-validator>
</field>
+
+ <field name="comment">
+ <field-validator type="stringlength" short-circuit="true">
+ <param name="maxLength">2000</param>
+ <message>tutti.validator.error.comment.too.long##${maxLength}</message>
+ </field-validator>
+ </field>
+
</validators>
Modified: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel-error-validation.xml
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel-error-validation.xml 2013-01-17 16:31:22 UTC (rev 216)
+++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel-error-validation.xml 2013-01-17 16:50:14 UTC (rev 217)
@@ -32,4 +32,11 @@
</field-validator>
</field>
+ <field name="comment">
+ <field-validator type="stringlength" short-circuit="true">
+ <param name="maxLength">2000</param>
+ <message>tutti.validator.error.comment.too.long##${maxLength}</message>
+ </field-validator>
+ </field>
+
</validators>
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-17 16:31:22 UTC (rev 216)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-17 16:50:14 UTC (rev 217)
@@ -88,9 +88,9 @@
tutti.label.cruise.country=Pays
tutti.label.cruise.endDate=Date de fin
tutti.label.cruise.name=Nom
-tutti.label.cruise.poche=Nombre de poches
tutti.label.cruise.program=Série
tutti.label.cruise.surveyPart=Série partielle
+tutti.label.cruise.trawlNet=Nombre de poches
tutti.label.cruise.year=Année
tutti.label.filterSpeciesBatchMode.label=Filtre
tutti.label.filterSpeciesBatchMode.label.tip=Pour filtrer les lots
@@ -109,11 +109,12 @@
tutti.label.filterVesselType.scientific.tip=Uniquement les navires scientifiques
tutti.label.fishingOperation.date=Date
tutti.label.fishingOperation.distanceChalutee=Distance chalutée
-tutti.label.fishingOperation.duree=Durée
+tutti.label.fishingOperation.duration=Durée
tutti.label.fishingOperation.fishingOperationInvalid=Trait invalide
tutti.label.fishingOperation.fishingOperationNumber=Numéro de Trait
tutti.label.fishingOperation.fishingOperationRectiligne=Trait rectiligne
tutti.label.fishingOperation.fishingOperationValid=Trait valide
+tutti.label.fishingOperation.gear=Engin
tutti.label.fishingOperation.gearDate=Date
tutti.label.fishingOperation.gearLatitude=Latitude
tutti.label.fishingOperation.gearLongitude=Longitude
@@ -126,6 +127,9 @@
tutti.label.fishingOperation.stationNumber=Code Station
tutti.label.fishingOperation.strata=Strate
tutti.label.fishingOperation.subStrata=Sous strate
+tutti.label.fishingOperation.trawlDistance=Distance chalutée
+tutti.label.fishingOperation.trawlNetNumber=Numéro de poche
+tutti.label.fishingOperation.vessel=Navire
tutti.label.frequencyConfiguration.lengthStepCaracteristic=Type de mesure
tutti.label.frequencyConfiguration.maxStep=Classe max
tutti.label.frequencyConfiguration.minStep=Classe min
@@ -298,13 +302,15 @@
tutti.validator.error.cruise.headOfMission.required=Au moins un chef de mission doit être sélectionné
tutti.validator.error.cruise.headOfSortRoom.required=Au moins un responsable de salle de tri doit être sélectionné
tutti.validator.error.cruise.name.required=Le nom de la campagne est obligatoire
-tutti.validator.error.cruise.poche.required=Le nombre de poche est obligatoire
tutti.validator.error.cruise.program.required=La série est obligatoire
+tutti.validator.error.cruise.trawlNet.required=Le nombre de poche est obligatoire
tutti.validator.error.cruise.vessel.required=Au moins un bateau doit être sélectionné
tutti.validator.error.cruise.year.required=L'année est obligatoire
+tutti.validator.error.comment.too.long=Taille de commentaire trop longue (limitée à %s caractères)
tutti.validator.error.fishingOperation.date.required=La date du fishingOperation est obligatoire
tutti.validator.error.fishingOperation.fishingOperationNumber.required=Le numéro de trait est obligatoire
tutti.validator.error.fishingOperation.stationNumber.required=Le numéro de station est obligatoire
+tutti.validator.error.fishingOperation.stationNumber.too.long=Valeur trop longue (limitée à %s caractères)
tutti.validator.error.program.name.required=Le nom de la série est obligatoire
tutti.validator.error.program.zone.required=La zone de la série est obligatoire
tutti.validator.error.protocol.name.required=Le nom du protocol est obligatoire
1
0
r216 - in trunk/tutti-persistence-adagio/src: main/java/fr/ifremer/tutti/persistence/service main/resources test/java/fr/ifremer/tutti/persistence/service
by blavenier@users.forge.codelutin.com 17 Jan '13
by blavenier@users.forge.codelutin.com 17 Jan '13
17 Jan '13
Author: blavenier
Date: 2013-01-17 17:31:22 +0100 (Thu, 17 Jan 2013)
New Revision: 216
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/216
Log:
ref refs #1920: [Persistence] Adagio Donn?\195?\169es th?\195?\169matiques
- Start implementation of FishingOperation.create()
- Change date store in CruiseService.create()
Modified:
trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java
trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceImpl.java
trunk/tutti-persistence-adagio/src/main/resources/queries-override.hbm.xml
trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceTest.java
trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceTest.java
Modified: trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java 2013-01-17 13:55:41 UTC (rev 215)
+++ trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java 2013-01-17 16:31:22 UTC (rev 216)
@@ -27,6 +27,7 @@
import com.google.common.collect.Lists;
import fr.ifremer.adagio.core.dao.administration.user.PersonDao;
import fr.ifremer.adagio.core.dao.data.survey.fishingTrip.FishingTrip;
+import fr.ifremer.adagio.core.dao.data.survey.fishingTrip.ObservedFishingTrip;
import fr.ifremer.adagio.core.dao.data.survey.scientificCruise.ScientificCruise;
import fr.ifremer.adagio.core.dao.data.survey.scientificCruise.ScientificCruiseDao;
import fr.ifremer.adagio.core.dao.referential.QualityFlagDao;
@@ -300,15 +301,24 @@
if (copyIfNull && source.getYear() == null && source.getBeginDate() == null) {
target.setDepartureDateTime(null);
} else if (source.getBeginDate() != null) {
- target.setDepartureDateTime(source.getBeginDate());
+ calendar.setTime(source.getBeginDate());
+ calendar.set(Calendar.SECOND, 0);
+ calendar.set(Calendar.MILLISECOND, 0);
+ target.setDepartureDateTime(calendar.getTime());
}
// EndDate
if (copyIfNull && source.getEndDate() == null) {
target.setReturnDateTime(null);
} else if (source.getEndDate() != null) {
- target.setReturnDateTime(source.getEndDate());
+ calendar.setTime(source.getEndDate());
+ calendar.set(Calendar.SECOND, 0);
+ calendar.set(Calendar.MILLISECOND, 0);
+ target.setReturnDateTime(calendar.getTime());
}
+
+ // Poche
+ // TODO BLA : voir si le PSFM exists
// Comment
if (copyIfNull && source.getComment() == null) {
@@ -340,7 +350,12 @@
// Default values :
target.setSynchronizationStatus(SynchronizationStatus.DIRTY.getValue());
if (target.getCreationDate() == null) {
- target.setCreationDate(new Date());
+ calendar.setTime(new Date());
+ calendar.set(Calendar.HOUR_OF_DAY, 0);
+ calendar.set(Calendar.MINUTE, 0);
+ calendar.set(Calendar.SECOND, 0);
+ calendar.set(Calendar.MILLISECOND, 0);
+ target.setCreationDate(calendar.getTime());
}
if (target.getManagerPerson() != null) {
target.setRecorderPerson(target.getManagerPerson());
@@ -348,18 +363,18 @@
}
// FishingTrip
- FishingTrip fishingTrip = null;
+ ObservedFishingTrip fishingTrip = null;
if (target.getFishingTrips() == null || target.getFishingTrips().size() == 0) {
- fishingTrip = FishingTrip.Factory.newInstance();
+ fishingTrip = ObservedFishingTrip.Factory.newInstance();
if (target.getFishingTrips() == null) {
- target.setFishingTrips(Lists.newArrayList(fishingTrip));
+ target.setFishingTrips(Lists.newArrayList((FishingTrip)fishingTrip));
fishingTrip.setScientificCruise(target);
} else {
target.getFishingTrips().add(fishingTrip);
fishingTrip.setScientificCruise(target);
}
} else {
- fishingTrip = target.getFishingTrips().iterator().next();
+ fishingTrip = (ObservedFishingTrip)target.getFishingTrips().iterator().next();
}
// Fill fishing trip with scientificCruise info:
@@ -403,9 +418,7 @@
}
}
- // Save miscDataBuffer into comments
- // TODO BLA : vérifier que les UI Allegro n'utilise pas ce commentaires,
- // mais bien celui de scientificCruise
+ // Save miscDataBuffer into fishing trip comments, because it's not used in Allegro
fishingTrip.setComments(miscDataBuffer.toString());
}
Modified: trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceImpl.java 2013-01-17 13:55:41 UTC (rev 215)
+++ trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceImpl.java 2013-01-17 16:31:22 UTC (rev 216)
@@ -24,13 +24,43 @@
* #L%
*/
+import fr.ifremer.adagio.core.dao.data.operation.FishingOperationDao;
+import fr.ifremer.adagio.core.dao.data.survey.fishingTrip.FishingTrip;
+import fr.ifremer.adagio.core.dao.data.survey.scientificCruise.ScientificCruise;
+import fr.ifremer.adagio.core.dao.data.survey.scientificCruise.ScientificCruiseDao;
+import fr.ifremer.adagio.core.dao.data.vessel.feature.use.GearUseFeatures;
+import fr.ifremer.adagio.core.dao.data.vessel.position.VesselPosition;
+import fr.ifremer.adagio.core.dao.referential.QualityFlagDao;
+import fr.ifremer.adagio.core.dao.referential.gear.Gear;
+import fr.ifremer.adagio.core.dao.referential.gear.GearDao;
+import fr.ifremer.adagio.core.dao.referential.location.Location;
+import fr.ifremer.adagio.core.dao.referential.location.LocationDao;
+import fr.ifremer.adagio.core.dao.technical.synchronization.SynchronizationStatus;
+import fr.ifremer.tutti.persistence.entities.data.Cruise;
import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.persistence.entities.data.Program;
+import fr.ifremer.tutti.persistence.entities.referential.Country;
+import fr.ifremer.tutti.persistence.entities.referential.Person;
+import fr.ifremer.tutti.persistence.entities.referential.Vessel;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.hibernate.type.IntegerType;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataRetrievalFailureException;
import org.springframework.stereotype.Service;
+import com.google.common.collect.Lists;
+
+import java.sql.Timestamp;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.Iterator;
import java.util.List;
+import javax.annotation.Resource;
+
/**
* @author tchemit <chemit(a)codelutin.com>
* @since 0.3
@@ -42,6 +72,26 @@
private static final Log log =
LogFactory.getLog(FishingOperationPersistenceServiceImpl.class);
+ @Autowired(required = true)
+ protected ReferentialPersistenceService referentielService;
+
+ @Resource(name = "fishingOperationDao")
+ protected FishingOperationDao fishingOperationDao;
+
+ @Resource(name = "gearDao")
+ protected GearDao gearDao;
+
+ @Resource(name = "locationDao")
+ protected LocationDao locationDao;
+
+ @Resource(name = "scientificCruiseDao")
+ protected ScientificCruiseDao scientificCruiseDao;
+
+ @Resource(name = "qualityFlagDao")
+ protected QualityFlagDao qualityFlagDao;
+
+ protected Calendar calendar = new GregorianCalendar();
+
@Override
public List<FishingOperation> getAllFishingOperation(String cruiseId) {
return null;
@@ -49,14 +99,242 @@
@Override
public FishingOperation getFishingOperation(String id) {
- return null;
+ Object[] source = queryUnique(
+ "fishingOperation",
+ "fishingOperationId", IntegerType.INSTANCE, Integer.valueOf(id));
+
+ if (source == null) {
+ throw new DataRetrievalFailureException("Could not retrieve fishingOperation with id=" + id);
+ }
+ FishingOperation result = new FishingOperation();
+ result.setId(id);
+
+ // Cruise :
+ // do load load Cruise here, because it will be attach upper in the call stack
+
+ int colIndex=0;
+
+ // Start date
+ calendar.setTimeInMillis(((Timestamp) source[colIndex++]).getTime());
+ int millisecond = calendar.get(Calendar.MILLISECOND);
+ if (millisecond > 0) {
+ // Recognize a fake date : see method beanToEntity()
+ result.setGearShootingStartDate(null);
+ }
+ else {
+ result.setGearShootingStartDate(calendar.getTime());
+ }
+
+ // End date
+ result.setGearShootingEndDate((Date) source[colIndex++]);
+
+ // Comment :
+ result.setComment((String) source[colIndex++]);
+
+ // Gear :
+ Integer gearId = (Integer)source[colIndex++];
+ if (gearId != null) {
+ // TODO TC : activer un cache sur getGear()
+ fr.ifremer.tutti.persistence.entities.referential.Gear gear = referentielService.getGear(gearId);
+ result.setGear(gear);
+ }
+
+ return result;
}
@Override
public FishingOperation createFishingOperation(FishingOperation bean) {
- return null;
+ if (bean == null) {
+ throw new IllegalArgumentException("fishingOperation could not be null");
+ }
+ if (bean.getCruise() == null || bean.getCruise().getId() == null) {
+ throw new IllegalArgumentException("fishingOperation.getCruise() could not be null");
+ }
+ fr.ifremer.adagio.core.dao.data.operation.FishingOperation fishingOperation = fr.ifremer.adagio.core.dao.data.operation.FishingOperation.Factory.newInstance();
+ beanToEntity(bean, fishingOperation, true);
+ fishingOperationDao.create(fishingOperation);
+
+ bean.setId(String.valueOf(fishingOperation.getId()));
+ return bean;
}
+
+ protected void beanToEntity(FishingOperation source, fr.ifremer.adagio.core.dao.data.operation.FishingOperation target, boolean copyIfNull) {
+ //StringBuffer miscDataBuffer = new StringBuffer();
+ ScientificCruise scientificCruise = null;
+ FishingTrip fishingtrip = target.getFishingTrip();
+ if (fishingtrip == null) {
+ // TODO BLA éviter ici un rechargement de fishingTrip :
+ scientificCruise = scientificCruiseDao.load(Integer.valueOf(source.getCruise().getId()));
+ fishingtrip = scientificCruise.getFishingTrips().iterator().next();
+ fishingtrip.getOperations().add(target); // Inverse link
+ }
+ else {
+ scientificCruise = fishingtrip.getScientificCruise();
+ }
+ // Link to parent fishing trip
+ target.setFishingTrip(fishingtrip);
+ // Store previous start/stop position
+ VesselPosition startPosition = null;
+ VesselPosition endPosition = null;
+ if (target.getVesselPositions() != null) {
+ for (Iterator iterator = target.getVesselPositions().iterator(); iterator.hasNext();) {
+ VesselPosition position = (VesselPosition) iterator.next();
+ if (position.getDateTime() != null && position.getDateTime().equals(target.getStartDateTime())) {
+ startPosition = position;
+ }
+ else if (position.getDateTime() == null || position.getDateTime().equals(target.getEndDateTime())) {
+ endPosition = position;
+ }
+ }
+ }
+
+ // StationNumber
+ if (copyIfNull && source.getStationNumber() == null) {
+ // TODO BL : where to store station number
+ } else if (source.getStationNumber() != null) {
+ //source.getStationNumber();
+ // TODO BL : where to store station number
+ }
+
+ // OP N°
+ if (copyIfNull && source.getFishingOperationNumber() == null) {
+ // TODO BL : where to store OP N°
+ } else if (source.getFishingOperationNumber() != null) {
+ //source.getStationNumber();
+ // TODO BL : where to store OP N°
+ }
+
+ // Start date :
+ if (copyIfNull && source.getGearShootingStartDate() == null) {
+ target.setStartDateTime(null);
+ target.setFishingStartDateTime(null);
+ } else if (source.getGearShootingStartDate() != null) {
+ calendar.setTime(source.getGearShootingStartDate());
+ // Reset millisecond (as need for Allegro)
+ calendar.set(Calendar.MILLISECOND, 0);
+ target.setStartDateTime(calendar.getTime());
+ target.setFishingStartDateTime(calendar.getTime());
+ }
+
+ // End date :
+ if (copyIfNull && source.getGearShootingEndDate() == null) {
+ target.setEndDateTime(null);
+ target.setFishingEndDateTime(null);
+ } else if (source.getGearShootingEndDate() != null) {
+ calendar.setTime(source.getGearShootingEndDate());
+ // Reset millisecond (as need for Allegro)
+ calendar.set(Calendar.MILLISECOND, 0);
+ target.setEndDateTime(calendar.getTime());
+ target.setFishingEndDateTime(calendar.getTime());
+ }
+
+ // Comment
+ if (copyIfNull && source.getComment() == null) {
+ target.setComments(null);
+ } else if (source.getComment() != null) {
+ target.setComments(source.getComment());
+ }
+
+ // Vessel
+ target.setVessel(fishingtrip.getVessel());
+
+ // Quality Flag :
+ if (target.getQualityFlag() == null) {
+ target.setQualityFlag(qualityFlagDao.load(enumeration.QUALITY_FLAG_CODE_NOT_QUALIFIED));
+ }
+
+ // Settings not null properties :
+ if (target.getStartDateTime() == null) {
+ // Generate a fake departureDate (precision=minute) then add 1 millisecond
+ calendar.setTime(scientificCruise.getDepartureDateTime());
+ calendar.set(Calendar.SECOND, 0);
+ calendar.set(Calendar.MILLISECOND, 1);
+ target.setStartDateTime(calendar.getTime());
+ target.setFishingStartDateTime(calendar.getTime());
+ }
+
+ // Gear Use Features
+ GearUseFeatures gearUseFeature = null;
+ if (target.getGearUseFeatures() == null || target.getGearUseFeatures().size() == 0) {
+ gearUseFeature = GearUseFeatures.Factory.newInstance();
+ if (target.getGearUseFeatures() == null) {
+ target.setGearUseFeatures(Lists.newArrayList(gearUseFeature));
+ gearUseFeature.setOperation(target);
+ } else {
+ target.getGearUseFeatures().add(gearUseFeature);
+ gearUseFeature.setOperation(target);
+ }
+ } else {
+ gearUseFeature = target.getGearUseFeatures().iterator().next();
+ }
+
+ // Fill fishing trip with scientificCruise info:
+ gearUseFeature.setStartDate(target.getStartDateTime());
+ if (gearUseFeature.getStartDate() == null) {
+ gearUseFeature.setStartDate(scientificCruise.getDepartureDateTime());
+ }
+ gearUseFeature.setEndDate(target.getEndDateTime());
+ gearUseFeature.setVessel(target.getVessel());
+ gearUseFeature.setProgram(scientificCruise.getProgram());
+ if (gearUseFeature.getCreationDate() == null) {
+ calendar.setTime(new Date());
+ calendar.set(Calendar.HOUR_OF_DAY, 0);
+ calendar.set(Calendar.MINUTE, 0);
+ calendar.set(Calendar.SECOND, 0);
+ calendar.set(Calendar.MILLISECOND, 0);
+ gearUseFeature.setCreationDate(calendar.getTime());
+ }
+ if (gearUseFeature.getQualityFlag() == null) {
+ gearUseFeature.setQualityFlag(qualityFlagDao.load(enumeration.QUALITY_FLAG_CODE_NOT_QUALIFIED));
+ }
+
+ // Gear
+ if (copyIfNull && source.getGear() == null) {
+ gearUseFeature.setGear(null);
+ } else if (source.getGear() != null && source.getGear().getId() != null) {
+ Gear gear = gearDao.load(Integer.valueOf(source.getGear().getId()));
+ gearUseFeature.setGear(gear);
+ }
+
+ // Start position :
+ if (startPosition == null) {
+ startPosition = VesselPosition.Factory.newInstance();
+ startPosition.setOperation(target);
+ if (target.getVesselPositions() == null) {
+ target.setVesselPositions(Lists.newArrayList(startPosition));
+ }
+ }
+ startPosition.setDateTime(target.getStartDateTime());
+ startPosition.setLatitude(source.getGearShootingStartLatitude());
+ startPosition.setLongitude(source.getGearShootingStartLongitude());
+ startPosition.setVessel(target.getVessel());
+ startPosition.setProgram(scientificCruise.getProgram());
+ startPosition.setRecorderDepartment(scientificCruise.getRecorderDepartment());
+ startPosition.setQualityFlag(target.getQualityFlag());
+
+ if (endPosition == null) {
+ endPosition = VesselPosition.Factory.newInstance();
+ endPosition.setOperation(target);
+ target.getVesselPositions().add(endPosition);
+ }
+ endPosition.setDateTime(target.getEndDateTime());
+ if (endPosition.getDateTime() == null) {
+ calendar.setTime(startPosition.getDateTime());
+ calendar.set(Calendar.MILLISECOND, 1);
+ endPosition.setDateTime(calendar.getTime());
+ }
+ endPosition.setLatitude(source.getGearShootingEndLatitude());
+ endPosition.setLongitude(source.getGearShootingEndLongitude());
+ endPosition.setVessel(target.getVessel());
+ endPosition.setProgram(scientificCruise.getProgram());
+ endPosition.setRecorderDepartment(scientificCruise.getRecorderDepartment());
+ endPosition.setQualityFlag(target.getQualityFlag());
+
+ // Save miscDataBuffer into comments
+ //gearUseFeature.setComments(miscDataBuffer.toString());
+ }
+
@Override
public FishingOperation saveFishingOperation(FishingOperation bean) {
return null;
Modified: trunk/tutti-persistence-adagio/src/main/resources/queries-override.hbm.xml
===================================================================
--- trunk/tutti-persistence-adagio/src/main/resources/queries-override.hbm.xml 2013-01-17 13:55:41 UTC (rev 215)
+++ trunk/tutti-persistence-adagio/src/main/resources/queries-override.hbm.xml 2013-01-17 16:31:22 UTC (rev 216)
@@ -161,6 +161,23 @@
]]>
<query-param name="cruiseId" type="java.lang.Integer"/>
</query>
+
+ <query cacheable="true" name="fishingOperation">
+ <![CDATA[
+ SELECT
+ o.startDateTime as startDateTime,
+ o.endDateTime as endDateTime,
+ o.comments as comments,
+ guf.gear.id as gearId
+ FROM
+ FishingOperationImpl o
+ INNER JOIN o.gearUseFeatures guf
+ WHERE
+ o.id=:fishingOperationId
+ ]]>
+ <query-param name="fishingOperationId" type="java.lang.Integer"/>
+ </query>
+
<!-- ===================================================================== -->
<!-- === Requete techniques sur référentiels [REF-TXXX] === -->
Modified: trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceTest.java
===================================================================
--- trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceTest.java 2013-01-17 13:55:41 UTC (rev 215)
+++ trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceTest.java 2013-01-17 16:31:22 UTC (rev 216)
@@ -95,7 +95,7 @@
cruise.setId(null);
- cruise.setName("CGFS_2013");
+ cruise.setName("Unit-test-" + System.currentTimeMillis());
cruise.setProgram(programService.getProgram(programCode));
@@ -142,7 +142,19 @@
if (log.isInfoEnabled()) {
log.info("Created cruise: " + createdCruise.getId());
}
+
+ // Reload cruise :
+ Cruise reloadedCruise = service.getCruise(createdCruise.getId());
+ calendar.setTime(createdCruise.getBeginDate());
+ calendar.set(Calendar.SECOND, 0);
+ calendar.set(Calendar.MILLISECOND, 0);
+ assertEquals(calendar.getTime(), reloadedCruise.getBeginDate());
+ calendar.setTime(createdCruise.getEndDate());
+ calendar.set(Calendar.SECOND, 0);
+ calendar.set(Calendar.MILLISECOND, 0);
+ assertEquals(calendar.getTime(), reloadedCruise.getEndDate());
+
// New cruise, with empty optional values
createdCruise.setId(null);
createdCruise.setHeadOfMission(null);
@@ -155,7 +167,7 @@
assertNotNull(createdCruise.getId());
assertEquals(cruise.getName(), createdCruise.getName());
- Cruise reloadedCruise = service.getCruise(createdCruise.getId());
+ reloadedCruise = service.getCruise(createdCruise.getId());
assertEquals(createdCruise.getBeginDate(), reloadedCruise.getBeginDate());
assertEquals(createdCruise.getEndDate(), reloadedCruise.getEndDate());
@@ -178,7 +190,7 @@
cruise.setId(null);
cruise = service.createCruise(cruise);
- cruise.setName("unit-TEST");
+ cruise.setName("Unit-test-" + System.currentTimeMillis());
Cruise savedCruise = service.saveCruise(cruise);
assertNotNull(savedCruise);
Modified: trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceTest.java
===================================================================
--- trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceTest.java 2013-01-17 13:55:41 UTC (rev 215)
+++ trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceTest.java 2013-01-17 16:31:22 UTC (rev 216)
@@ -24,45 +24,134 @@
* #L%
*/
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.List;
+
import fr.ifremer.tutti.persistence.DatabaseResource;
+import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.persistence.entities.referential.Gear;
+
import org.junit.Before;
import org.junit.ClassRule;
import org.junit.Ignore;
import org.junit.Test;
+import static org.junit.Assert.*;
/**
* @author tchemit <chemit(a)codelutin.com>
* @since 0.3
*/
-@Ignore
+
public class FishingOperationPersistenceServiceTest {
@ClassRule
public static final DatabaseResource dbResource = new DatabaseResource();
protected FishingOperationPersistenceService service;
+
+ protected ReferentialPersistenceService referentialService;
+ protected ProgramPersistenceService programService;
+
+ protected CruisePersistenceService cruiseService;
+
+ protected Cruise cruise = null;
+
+
@Before
public void setUp() throws Exception {
service = TuttiPersistenceServiceLocator.getFishingOperationPersistenceService();
+ cruiseService = TuttiPersistenceServiceLocator.getCruisePersistenceService();
+ referentialService = TuttiPersistenceServiceLocator.getReferentialPersistenceService();
+ programService = TuttiPersistenceServiceLocator.getProgramPersistenceService();
+
}
@Test
+ @Ignore
public void getAllFishingOperation(/*String cruiseId*/) {
}
@Test
+ @Ignore
public void getFishingOperation(/*String id*/) {
}
@Test
public void createFishingOperation(/*FishingOperation bean*/) {
+ Calendar calendar = new GregorianCalendar();
+ // Duplicate an existing cruise, to attach new fishing operations
+ cruise = cruiseService.getCruise(dbResource.getFixtures().cruiseId());
+ cruise.setId(null);
+ cruise.setName("Unit-test-" + System.currentTimeMillis());
+ cruise.setBeginDate(new Date());
+ cruise.setEndDate(null);
+ cruise = cruiseService.createCruise(cruise);
+ assertNotNull(cruise.getId());
+
+ // Create new fishing operation :
+ FishingOperation fishingOperation = new FishingOperation();
+
+ // Set properties (with optional value to null)
+ fishingOperation.setCruise(cruise);
+ fishingOperation.setStationNumber("1");
+ fishingOperation.setFishingOperationNumber(new Integer(1));
+ fishingOperation.setGearShootingStartDate(null);
+ fishingOperation.setGearShootingEndDate(null);
+ fishingOperation.setGear(null);
+
+ // Store fishing operation into database :
+ FishingOperation createdFishingOperation = service.createFishingOperation(fishingOperation);
+ assertNotNull("Fishing operation ID must not be null after creation in database", createdFishingOperation);
+ assertNotNull(createdFishingOperation.getId());
+ // TODO BLA : add asserts on other properties
+
+ // Trying to relaod this fishing operation
+ FishingOperation reloadedFishingOperation = service.getFishingOperation(createdFishingOperation.getId());
+ assertNotNull(reloadedFishingOperation);
+ assertNull(reloadedFishingOperation.getGearShootingStartDate());
+
+ // Set properties
+ fishingOperation.setId(null);
+ fishingOperation.setStationNumber("2");
+ fishingOperation.setFishingOperationNumber(new Integer(2));
+ calendar.setTime(new Date());
+ calendar.set(Calendar.HOUR_OF_DAY, 1);
+ fishingOperation.setGearShootingStartDate(calendar.getTime());
+ calendar.setTime(new Date());
+ calendar.set(Calendar.HOUR_OF_DAY, 10);
+ fishingOperation.setGearShootingEndDate(calendar.getTime());
+
+ fishingOperation.setGearShootingStartLatitude(33.2541f);
+ fishingOperation.setGearShootingStartLongitude(-5.514f);
+ fishingOperation.setGearShootingEndLatitude(33.7441f);
+ fishingOperation.setGearShootingEndLongitude(-5.597f);
+
+ List<Gear> gears = referentialService.getAllFishingGear();
+ assertNotNull(gears);
+ assertTrue(gears.size() > 0);
+ fishingOperation.setGear(gears.get(0));
+
+ // Store fishing operation into database :
+ createdFishingOperation = service.createFishingOperation(fishingOperation);
+ assertNotNull("Fishing operation ID must not be null after creation in database", createdFishingOperation);
+ assertNotNull(createdFishingOperation.getId());
+ assertNotNull(createdFishingOperation.getGear());
+ //assertEquals(fishingOperation.getGearShootingStartLatitude(), createdFishingOperation.getGearShootingStartLatitude());
+ //assertEquals(fishingOperation.getGearShootingStartLongitude(), createdFishingOperation.getGearShootingStartLongitude());
+ //assertEquals(fishingOperation.getGearShootingEndLatitude(), createdFishingOperation.getGearShootingEndLatitude());
+ //assertEquals(fishingOperation.getGearShootingEndLongitude(), createdFishingOperation.getGearShootingEndLongitude());
+
}
@Test
+ @Ignore
public void saveFishingOperation(/*FishingOperation bean*/) {
}
1
0
17 Jan '13
Author: tchemit
Date: 2013-01-17 14:55:41 +0100 (Thu, 17 Jan 2013)
New Revision: 215
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/215
Log:
refs #1920: [Persistence] Adagio Donn?\195?\169es th?\195?\169matiques - add specific vessel and gear in FishingOperation
refs #1919: [Persistence] Adagio r?\195?\169f?\195?\169rentiel (keep only no calculated pmfm + improve their type (NUMERIC, TEXT or QUALITATIVE via an enum)
refs #1824: [PROTOCOLE] - Gestion des param?\195?\168tres suivis par esp?\195?\168ces (review SampleCategoryEnum and add lengthStep)
usage of protocole where it is possible
Modified:
trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java
trunk/tutti-persistence-adagio/src/main/resources/queries-override.hbm.xml
trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceTest.java
trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevFixtures.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/RessourceClassLoader.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java
trunk/tutti-persistence/src/main/xmi/tutti-persistence.properties
trunk/tutti-persistence/src/main/xmi/tutti-persistence.zargo
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesTableModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/HydrologicCaracteristicUtil.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/CaracteristicValueEditor.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/CaracteristicValueRenderer.java
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/RessourceClassLoader.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/RessourceClassLoader.java 2013-01-17 08:21:00 UTC (rev 214)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/RessourceClassLoader.java 2013-01-17 13:55:41 UTC (rev 215)
@@ -99,6 +99,7 @@
"search predicate can not be null");
this.searchInDirectoriesPredicate = Predicates.and(searchInDirectoriesPredicate, predicate);
}
+
public void setSearchInDirectoriesPredicate(Predicate<String> searchInDirectoriesPredicate) {
Preconditions.checkNotNull(searchInDirectoriesPredicate,
"search predicate can not be null");
@@ -109,8 +110,8 @@
public URL findResource(String name) {
URL result = null;
if (searchInDirectoriesPredicate.apply(name)) {
- if (log.isInfoEnabled()) {
- log.info("findResource [" + name + "] in [" + directories + ']');
+ if (log.isDebugEnabled()) {
+ log.debug("findResource [" + name + "] in " + directories);
}
result = getLoader().findResource(name);
}
@@ -124,8 +125,8 @@
public Enumeration<URL> findResources(String name) throws IOException {
Enumeration<URL> result = null;
if (searchInDirectoriesPredicate.apply(name)) {
- if (log.isInfoEnabled()) {
- log.info("findResources [" + name + "] in [" + directories + ']');
+ if (log.isDebugEnabled()) {
+ log.debug("findResources [" + name + "] in " + directories);
}
result = getLoader().findResources(name);
}
@@ -139,9 +140,9 @@
public URL getResource(String name) {
URL result = null;
if (searchInDirectoriesPredicate.apply(name)) {
- if (log.isInfoEnabled()) {
- log.info("getResource [" + name + "] in [" +
- directories + ']');
+ if (log.isDebugEnabled()) {
+ log.debug("getResource [" + name + "] in " +
+ directories);
}
result = getLoader().getResource(name);
}
@@ -155,8 +156,8 @@
public Enumeration<URL> getResources(String name) throws IOException {
Enumeration<URL> result = null;
if (searchInDirectoriesPredicate.apply(name)) {
- if (log.isInfoEnabled()) {
- log.info("getResources [" + name + "] in [" + directories + ']');
+ if (log.isDebugEnabled()) {
+ log.debug("getResources [" + name + "] in " + directories);
}
result = getLoader().getResources(name);
}
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java 2013-01-17 08:21:00 UTC (rev 214)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java 2013-01-17 13:55:41 UTC (rev 215)
@@ -32,6 +32,7 @@
import com.google.common.collect.Maps;
import fr.ifremer.tutti.persistence.entities.data.FishingOperationAware;
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.persistence.entities.referential.CaracteristicType;
import java.util.Collection;
import java.util.Collections;
@@ -167,4 +168,30 @@
}
};
}
+
+ public static CaracteristicType getType(boolean isAlpha,
+ boolean isQualitative) {
+ CaracteristicType result;
+ if (isAlpha) {
+ result = CaracteristicType.TEXT;
+ } else if (isQualitative) {
+ result = CaracteristicType.QUALITATIVE;
+ } else {
+ result = CaracteristicType.NUMBER;
+ }
+ return result;
+ }
+
+ public static boolean isNumberCaracteristic(Caracteristic c) {
+ return CaracteristicType.NUMBER == c.getCaracteristicType();
+ }
+
+ public static boolean isTextCaracteristic(Caracteristic c) {
+ return CaracteristicType.TEXT == c.getCaracteristicType();
+ }
+
+ public static boolean isQualitativeCaracteristic(Caracteristic c) {
+ return CaracteristicType.QUALITATIVE == c.getCaracteristicType();
+ }
+
}
Modified: trunk/tutti-persistence/src/main/xmi/tutti-persistence.properties
===================================================================
--- trunk/tutti-persistence/src/main/xmi/tutti-persistence.properties 2013-01-17 08:21:00 UTC (rev 214)
+++ trunk/tutti-persistence/src/main/xmi/tutti-persistence.properties 2013-01-17 13:55:41 UTC (rev 215)
@@ -42,5 +42,7 @@
fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol.attribute.hydrologyPmfmId.stereotype=ordered
fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol.attribute.species.stereotype=ordered
fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol.attribute.sampleCategoryOrder.stereotype=ordered
+fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol.attribute.benthosSpeciesId.stereotype=ordered
+fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol.attribute.planktonSpeciesId.stereotype=ordered
fr.ifremer.tutti.persistence.entities.referential.Caracteristic.attribute.qualitativeValue.stereotype=ordered
Modified: trunk/tutti-persistence/src/main/xmi/tutti-persistence.zargo
===================================================================
(Binary files differ)
Modified: trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java 2013-01-17 08:21:00 UTC (rev 214)
+++ trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceImpl.java 2013-01-17 13:55:41 UTC (rev 215)
@@ -28,9 +28,11 @@
import fr.ifremer.adagio.core.dao.referential.StatusDao;
import fr.ifremer.adagio.core.dao.referential.taxon.TaxonNameExtendDao;
import fr.ifremer.adagio.core.dao.referential.taxon.TaxonRefTaxVO;
+import fr.ifremer.tutti.persistence.entities.TuttiEntities;
import fr.ifremer.tutti.persistence.entities.referential.AbstractTuttiReferentialEntity;
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
+import fr.ifremer.tutti.persistence.entities.referential.CaracteristicType;
import fr.ifremer.tutti.persistence.entities.referential.Country;
import fr.ifremer.tutti.persistence.entities.referential.FishingOperationLocation;
import fr.ifremer.tutti.persistence.entities.referential.Gear;
@@ -446,16 +448,19 @@
result.setMatrixName((String) source[2]);
result.setFractionName((String) source[3]);
result.setMethodName((String) source[4]);
- result.setNumberType((Boolean) source[5]);
- result.setQualitativeType((Boolean) source[6]);
+ CaracteristicType type = TuttiEntities.getType((Boolean) source[5],
+ (Boolean) source[6]);
+ result.setCaracteristicType(type);
result.setSignifFiguresNumber((Integer) source[7]);
result.setMaximumNumberDecimals((Integer) source[8]);
result.setPrecision((Float) source[9]);
result.setUnit((String) source[10]);
setStatus((fr.ifremer.adagio.core.dao.referential.Status) source[11], result);
- if (result.isQualitativeType()) {
+ if (TuttiEntities.isQualitativeCaracteristic(result)) {
+ // load qualitative values
+
Iterator<Object[]> sources = queryListWithStatus(
"pmfmQualitativeValues",
"pmfmId", IntegerType.INSTANCE, pmfmId);
Modified: trunk/tutti-persistence-adagio/src/main/resources/queries-override.hbm.xml
===================================================================
--- trunk/tutti-persistence-adagio/src/main/resources/queries-override.hbm.xml 2013-01-17 08:21:00 UTC (rev 214)
+++ trunk/tutti-persistence-adagio/src/main/resources/queries-override.hbm.xml 2013-01-17 13:55:41 UTC (rev 215)
@@ -185,6 +185,7 @@
FROM PmfmImpl p
WHERE
p.status.code IN (:statusValidCode, :statusTemporaryCode)
+ AND p.parameter.isCalculated = false
AND p.id= :pmfmId
]]>
<query-param name="pmfmId" type="java.lang.Integer"/>
@@ -230,6 +231,7 @@
FROM PmfmImpl p
WHERE
p.status.code IN (:statusValidCode, :statusTemporaryCode)
+ AND p.parameter.isCalculated = false
AND p.matrix.id= :matrixId
]]>
<query-param name="matrixId" type="java.lang.Integer"/>
@@ -257,6 +259,7 @@
FROM PmfmImpl p
WHERE
p.status.code IN (:statusValidCode, :statusTemporaryCode)
+ AND p.parameter.isCalculated = false
AND p.parameter.parameterGroup.id= :parameterGroupId
]]>
<query-param name="parameterGroupId" type="java.lang.Integer"/>
Modified: trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceTest.java
===================================================================
--- trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceTest.java 2013-01-17 08:21:00 UTC (rev 214)
+++ trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/ReferentialPersistenceServiceTest.java 2013-01-17 13:55:41 UTC (rev 215)
@@ -284,10 +284,7 @@
@Test
public void getSizeCategoryCaracteristic() {
Caracteristic result = service.getSizeCategoryCaracteristic();
- Assert.assertNotNull(result);
- Assert.assertTrue(result.isQualitativeType());
- Assert.assertNotNull(result.getQualitativeValue());
- Assert.assertEquals(6, result.sizeQualitativeValue());
+ assertCaracteristicQualitative(result, 6);
persist(Caracteristic.class, ReferentialPersistenceServiceDevImpl.CaracteristicEnum.SizeCategory.name(), result);
assertCaracteristicSize(result, storage.getSizeCategoryCaracteristic());
}
@@ -295,10 +292,7 @@
@Test
public void getSexCaracteristic() {
Caracteristic result = service.getSexCaracteristic();
- Assert.assertNotNull(result);
- Assert.assertTrue(result.isQualitativeType());
- Assert.assertNotNull(result.getQualitativeValue());
- Assert.assertEquals(4, result.sizeQualitativeValue());
+ assertCaracteristicQualitative(result, 4);
persist(Caracteristic.class, ReferentialPersistenceServiceDevImpl.CaracteristicEnum.SexCategory.name(), result);
assertCaracteristicSize(result, storage.getSexCaracteristic());
}
@@ -306,10 +300,7 @@
@Test
public void getSortedUnsortedCaracteristic() {
Caracteristic result = service.getSortedUnsortedCaracteristic();
- Assert.assertNotNull(result);
- Assert.assertTrue(result.isQualitativeType());
- Assert.assertNotNull(result.getQualitativeValue());
- Assert.assertEquals(2, result.sizeQualitativeValue());
+ assertCaracteristicQualitative(result, 2);
persist(Caracteristic.class, ReferentialPersistenceServiceDevImpl.CaracteristicEnum.SortedUnsortedCategory.name(), result);
assertCaracteristicSize(result, storage.getSortedUnsortedCaracteristic());
}
@@ -317,10 +308,7 @@
@Test
public void getMaturityCaracteristic() {
Caracteristic result = service.getMaturityCaracteristic();
- Assert.assertNotNull(result);
- Assert.assertTrue(result.isQualitativeType());
- Assert.assertNotNull(result.getQualitativeValue());
- Assert.assertEquals(10, result.sizeQualitativeValue());
+ assertCaracteristicQualitative(result, 10);
persist(Caracteristic.class, ReferentialPersistenceServiceDevImpl.CaracteristicEnum.MaturityCategory.name(), result);
assertCaracteristicSize(result, storage.getMaturityCaracteristic());
}
@@ -328,10 +316,7 @@
@Test
public void getMacroWasteCategoryCaracteristic() {
Caracteristic result = service.getMacroWasteCategoryCaracteristic();
- Assert.assertNotNull(result);
- Assert.assertTrue(result.isQualitativeType());
- Assert.assertNotNull(result.getQualitativeValue());
- Assert.assertEquals(10, result.sizeQualitativeValue());
+ assertCaracteristicQualitative(result, 10);
persist(Caracteristic.class, ReferentialPersistenceServiceDevImpl.CaracteristicEnum.MacroWasteCategory.name(), result);
assertCaracteristicSize(result, storage.getMacroWasteCategoryCaracteristic());
}
@@ -339,10 +324,7 @@
@Test
public void getMacroWasteSizeCategoryCaracteristic() {
Caracteristic result = service.getMacroWasteSizeCategoryCaracteristic();
- Assert.assertNotNull(result);
- Assert.assertTrue(result.isQualitativeType());
- Assert.assertNotNull(result.getQualitativeValue());
- Assert.assertEquals(10, result.sizeQualitativeValue());
+ assertCaracteristicQualitative(result, 10);
persist(Caracteristic.class, ReferentialPersistenceServiceDevImpl.CaracteristicEnum.MacroWasteSizeCategory.name(), result);
assertCaracteristicSize(result, storage.getMacroWasteSizeCategoryCaracteristic());
}
@@ -378,11 +360,21 @@
}
+ protected void assertCaracteristicQualitative(Caracteristic result, int nbValues) {
+ Assert.assertNotNull(result);
+ Assert.assertNotNull(result.getCaracteristicType());
+ Assert.assertTrue(TuttiEntities.isQualitativeCaracteristic(result));
+ Assert.assertNotNull(result.getQualitativeValue());
+ Assert.assertEquals(nbValues, result.sizeQualitativeValue());
+ }
+
protected void assertCaracteristicSize(Caracteristic incoming,
Caracteristic caracteristic) {
Assert.assertNotNull(incoming);
Assert.assertNotNull(caracteristic);
Assert.assertEquals(incoming, caracteristic);
+ Assert.assertEquals(incoming.getCaracteristicType(),
+ caracteristic.getCaracteristicType());
Assert.assertEquals(incoming.sizeQualitativeValue(),
caracteristic.sizeQualitativeValue());
}
Modified: trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevFixtures.java
===================================================================
--- trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevFixtures.java 2013-01-17 08:21:00 UTC (rev 214)
+++ trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevFixtures.java 2013-01-17 13:55:41 UTC (rev 215)
@@ -29,6 +29,7 @@
import fr.ifremer.tutti.persistence.entities.IdAware;
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
+import fr.ifremer.tutti.persistence.entities.referential.CaracteristicType;
import fr.ifremer.tutti.persistence.entities.referential.Country;
import fr.ifremer.tutti.persistence.entities.referential.FishingOperationLocation;
import fr.ifremer.tutti.persistence.entities.referential.Gear;
@@ -458,7 +459,7 @@
ca.setId(UUID.randomUUID().toString());
ca.setName(name);
ca.setCategory(category);
- ca.setQualitativeType(true);
+ ca.setCaracteristicType(CaracteristicType.QUALITATIVE);
ca.setQualitativeValue(Lists.<CaracteristicQualitativeValue>newArrayList());
putInCache(Caracteristic.class, category, ca);
return ca;
@@ -469,7 +470,7 @@
ca.setId(UUID.randomUUID().toString());
ca.setName(name);
ca.setCategory(category);
- ca.setNumberType(true);
+ ca.setCaracteristicType(CaracteristicType.NUMBER);
putInCache(Caracteristic.class, category, ca);
return ca;
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-01-17 08:21:00 UTC (rev 214)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-01-17 13:55:41 UTC (rev 215)
@@ -24,6 +24,7 @@
* #L%
*/
+import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
import fr.ifremer.tutti.persistence.entities.data.Program;
@@ -32,9 +33,7 @@
import fr.ifremer.tutti.persistence.entities.referential.Zone;
import fr.ifremer.tutti.service.PersistenceService;
import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel;
-import fr.ifremer.tutti.ui.swing.AbstractTuttiUIHandler;
import fr.ifremer.tutti.ui.swing.MainUI;
-import fr.ifremer.tutti.ui.swing.TuttiUIContext;
import fr.ifremer.tutti.ui.swing.content.operation.fishing.environment.EnvironmentTabUI;
import fr.ifremer.tutti.ui.swing.content.operation.fishing.environment.EnvironmentTabUIModel;
import fr.ifremer.tutti.ui.swing.content.operation.fishing.gearshooting.GearShootingTabUI;
@@ -45,20 +44,21 @@
import fr.ifremer.tutti.ui.swing.util.CustomTab;
import fr.ifremer.tutti.ui.swing.util.TabHandler;
import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor;
-import java.awt.BorderLayout;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-import java.util.List;
-import javax.swing.DefaultSingleSelectionModel;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.JTabbedPane;
+import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JTabbedPane;
+import java.awt.BorderLayout;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
+
/**
* Handler for UI {@link EditFishingOperationUI}.
*
@@ -66,7 +66,7 @@
* @since 0.1
*/
public class EditFishingOperationUIHandler extends AbstractTuttiTabContainerUIHandler<EditFishingOperationUIModel>
- implements TabHandler {
+ implements TabHandler {
/** Logger. */
private static final Log log =
@@ -173,7 +173,7 @@
@Override
public void afterInitUI() {
-
+
ui.getFishingOperationValidPanel().remove(
ui.getFishingOperationResetRadio());
@@ -184,10 +184,11 @@
initBeanList(ui.getSaisisseurList(),
persistenceService.getAllPerson(),
model.getSaisisseur());
-
- String programId = context.getProgramId();
- Program program = persistenceService.getProgram(programId);
+ Program program = TuttiUIUtil.getProgram(ui);
+ Preconditions.checkNotNull(program,
+ "Could not find program in ui context");
+
Zone zone = program.getZone();
FishingOperationLocation strata = model.getStrata();
@@ -227,21 +228,21 @@
initBeanComboBox(ui.getSubStrataComboBox(), subStratas, subStrata);
initBeanComboBox(ui.getLocationComboBox(), locations, location);
-
+
model.setEmpty(true);
changeValidatorContext(model.getValidationContext(), ui.getValidator());
listenValidatorValid(ui.getValidator(), model);
-
+
setCustomTab(0, model);
listModelIsModify(model);
-
+
//init gear shooting
GearShootingTabUIModel gearShootingModel =
ui.getGearShootingTabContent().getModel();
gearShootingModel.setAvailableCaracteristics(persistenceService.getAllFishingOperationGearCaracteristic());
setCustomTab(1, gearShootingModel);
-
+
//init environment
EnvironmentTabUIModel environmentModel =
ui.getEnvironmentTabContent().getModel();
@@ -252,23 +253,23 @@
HydrologyTabUIModel hydrologyModel = ui.getHydrologyTabContent().getModel();
hydrologyModel.setAvailableCaracteristics(persistenceService.getAllFishingOperationHydrologicCaracteristic());
setCustomTab(3, hydrologyModel);
-
+
MainUI main = ui.getContextValue(MainUI.class, MainUI.class.getName());
main.clearValidators();
main.registerValidator(ui.getValidator());
-
+
}
-
+
@Override
public void onCloseUI() {
if (log.isInfoEnabled()) {
log.info("closing: " + ui);
}
-
+
MainUI main = ui.getContextValue(MainUI.class, MainUI.class.getName());
main.clearValidators();
-
+
closeUI(ui.getGearShootingTabContent());
closeUI(ui.getEnvironmentTabContent());
closeUI(ui.getHydrologyTabContent());
@@ -293,7 +294,7 @@
}
return result;
}
-
+
@Override
public boolean onHideTab() {
AbstractTuttiBeanUIModel model = getModel();
@@ -322,17 +323,17 @@
if (fishingOperationMonitor.wasModified()) {
save();
}
-
+
EditFishingOperationUIModel model = getModel();
model.fromBean(new FishingOperation());
-
+
model.setModify(false);
fishingOperationMonitor.clearModified();
-
+
model.setEmpty(true);
-
+
}
-
+
public void selectFishingOperation(FishingOperation bean) {
if (fishingOperationMonitor.wasModified()) {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java 2013-01-17 08:21:00 UTC (rev 214)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java 2013-01-17 13:55:41 UTC (rev 215)
@@ -29,7 +29,9 @@
import fr.ifremer.tutti.persistence.entities.data.Cruise;
import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
import fr.ifremer.tutti.persistence.entities.referential.FishingOperationLocation;
+import fr.ifremer.tutti.persistence.entities.referential.Gear;
import fr.ifremer.tutti.persistence.entities.referential.Person;
+import fr.ifremer.tutti.persistence.entities.referential.Vessel;
import fr.ifremer.tutti.persistence.spatial.SexagecimalPosition;
import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel;
import org.nuiton.util.beans.Binder;
@@ -116,6 +118,10 @@
public static final String PROPERTY_SAISISSEUR = "saisisseur";
+ public static final String PROPERTY_VESSEL = "vessel";
+
+ public static final String PROPERTY_GEAR = "gear";
+
public static final String PROPERTY_VALIDATION_CONTEXT = "validationContext";
/**
@@ -173,6 +179,10 @@
protected String validationContext;
+ protected Gear gear;
+
+ protected Vessel vessel;
+
protected static Binder<EditFishingOperationUIModel, FishingOperation> toBeanBinder =
BinderFactory.newBinder(EditFishingOperationUIModel.class,
FishingOperation.class);
@@ -385,7 +395,7 @@
calendar.setTime(gearShootingStartDate);
calendar.set(Calendar.SECOND, 0);
this.gearShootingStartDate = calendar.getTime();
-
+
} else {
this.gearShootingStartDate = null;
}
@@ -503,7 +513,7 @@
calendar.setTime(gearShootingEndDate);
calendar.set(Calendar.SECOND, 0);
this.gearShootingEndDate = calendar.getTime();
-
+
} else {
this.gearShootingEndDate = null;
}
@@ -583,6 +593,26 @@
firePropertyChange(PROPERTY_VALIDATION_CONTEXT, oldValue, validationContext);
}
+ public Gear getGear() {
+ return gear;
+ }
+
+ public void setGear(Gear gear) {
+ Object oldValue = getGear();
+ this.gear = gear;
+ firePropertyChange(PROPERTY_GEAR, oldValue, gear);
+ }
+
+ public Vessel getVessel() {
+ return vessel;
+ }
+
+ public void setVessel(Vessel vessel) {
+ Object oldValue = getVessel();
+ this.vessel = vessel;
+ firePropertyChange(PROPERTY_VESSEL, oldValue, vessel);
+ }
+
@Override
protected FishingOperation newEntity() {
return fishingOperation;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java 2013-01-17 08:21:00 UTC (rev 214)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java 2013-01-17 13:55:41 UTC (rev 215)
@@ -28,24 +28,23 @@
import fr.ifremer.tutti.persistence.entities.data.Cruise;
import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
+import fr.ifremer.tutti.persistence.entities.referential.Gear;
+import fr.ifremer.tutti.persistence.entities.referential.Vessel;
import fr.ifremer.tutti.service.PersistenceService;
-import fr.ifremer.tutti.ui.swing.AbstractTuttiUIHandler;
-import fr.ifremer.tutti.ui.swing.MainUI;
import fr.ifremer.tutti.ui.swing.TuttiUI;
import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel;
import fr.ifremer.tutti.ui.swing.util.AbstractTuttiTabContainerUIHandler;
-import fr.ifremer.tutti.ui.swing.util.TabHandler;
+import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
import org.apache.commons.lang3.time.DateUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.util.decorator.Decorator;
+import javax.swing.JTabbedPane;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.Date;
import java.util.List;
-import javax.swing.DefaultSingleSelectionModel;
-import javax.swing.JTabbedPane;
import static org.nuiton.i18n.I18n._;
@@ -86,25 +85,31 @@
// load existing cruise
Cruise cruise = persistenceService.getCruise(cruiseId);
- model.setCruise(cruise);
+ // store it in context
+ TuttiUIUtil.setCruise(ui, cruise);
+ TuttiUIUtil.setProgram(ui, cruise.getProgram());
+
+// model.setCruise(cruise);
+
+ TuttiProtocol protocol;
if (getContext().isProtocolFilled()) {
// load existing protocol
- TuttiProtocol protocol =
- persistenceService.getProtocol(getContext().getProtocolId());
+ protocol = persistenceService.getProtocol(getContext().getProtocolId());
if (log.isInfoEnabled()) {
log.info("Loading existing protocol: " + protocol);
}
- ui.setContextValue(protocol);
} else {
// remove any previous existing protocol
- ui.removeContextValue(TuttiProtocol.class);
+ protocol = null;
}
+ TuttiUIUtil.setProtocol(ui, protocol);
+
List<FishingOperation> fishingOperations =
persistenceService.getAllFishingOperation(cruiseId);
model.setFishingOperation(fishingOperations);
@@ -161,16 +166,16 @@
// when quitting ui, let's de-select fishingOperation (will save any changes)
selectFishingOperation(null);
-
+
closeUI(ui.getFishingOperationTabContent());
- closeUI(ui.getCatchesTabContent());
+ closeUI(ui.getCatchesTabContent());
}
@Override
protected FishingOperationsUIModel getModel() {
return ui.getModel();
}
-
+
@Override
protected JTabbedPane getTabPanel() {
return ui.getTabPane();
@@ -179,23 +184,30 @@
public void createNewFishingOperation() {
FishingOperationsUIModel model = getModel();
-
+
// deselect selected fishingOperation
model.setSelectedFishingOperation(null);
// use a new empty fishingOperation
FishingOperation newFishingOperation = new FishingOperation();
- newFishingOperation.setCruise(model.getCruise());
+ newFishingOperation.setCruise(TuttiUIUtil.getCruise(ui));
+ //TODO Should select vessel from possible one ?
+ Vessel vessel = newFishingOperation.getCruise().getVessel(0);
+ newFishingOperation.setVessel(vessel);
+
+ //TODO Should select gear from possible one ?
+ Gear gear = newFishingOperation.getCruise().getGear(0);
+ newFishingOperation.setGear(gear);
+
// by default use the current day with no time information
- Date currentDate = new Date();
- currentDate = DateUtils.setHours(currentDate, 0);
- currentDate = DateUtils.setMinutes(currentDate, 0);
+ Date currentDate = DateUtils.setMinutes(
+ DateUtils.setHours(new Date(), 0), 0);
newFishingOperation.setDate(currentDate);
newFishingOperation.setGearShootingStartDate(currentDate);
newFishingOperation.setGearShootingEndDate(currentDate);
-
+
selectFishingOperation(newFishingOperation);
}
@@ -226,12 +238,12 @@
// repaint tabs
ui.getTabPane().repaint();
-
+
} else {
ui.getFishingOperationTabContent().getHandler().clearFishingOperation();
}
}
-
+
public void closeCurrentFishingOperation() {
ui.getFishingOperationTabContent().getHandler().selectFishingOperation(null);
ui.getCatchesTabContent().getHandler().selectFishingOperation(null, "");
@@ -246,13 +258,14 @@
FishingOperation savedFishingOperation;
if (create) {
+
savedFishingOperation = persistenceService.createFishingOperation(toSave);
model.addFishingOperation(savedFishingOperation);
model.setSelectedFishingOperation(savedFishingOperation);
-
+
} else {
savedFishingOperation = persistenceService.saveFishingOperation(toSave);
-
+
// add the saved fishingOperation to fishingOperation list
List<FishingOperation> data = model.getFishingOperation();
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIModel.java 2013-01-17 08:21:00 UTC (rev 214)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIModel.java 2013-01-17 13:55:41 UTC (rev 215)
@@ -25,13 +25,13 @@
*/
import com.google.common.collect.Lists;
-import fr.ifremer.tutti.persistence.entities.data.Cruise;
import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
-import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jdesktop.beans.AbstractSerializableBean;
+import java.util.List;
+
/**
* Model fo UI {@link FishingOperationsUI}.
*
@@ -48,13 +48,13 @@
public static final String PROPERTY_SELECTED_FISHING_OPERATION = "selectedFishingOperation";
- public static final String PROPERTY_CRUISE = "cruise";
+// public static final String PROPERTY_CRUISE = "cruise";
protected List<FishingOperation> fishingOperation;
protected FishingOperation selectedFishingOperation;
- protected Cruise cruise;
+// protected Cruise cruise;
public List<FishingOperation> getFishingOperation() {
return fishingOperation;
@@ -71,15 +71,15 @@
this.fishingOperation.add(fishingOperation);
firePropertyChange(PROPERTY_FISHING_OPERATION, oldValue, this.fishingOperation);
}
-
+
public void removeFishingOperation(FishingOperation fishingOperation) {
Object oldValue = Lists.newArrayList(getFishingOperation());
this.fishingOperation.remove(fishingOperation);
firePropertyChange(PROPERTY_FISHING_OPERATION, oldValue, this.fishingOperation);
}
-
- public void updateFishingOperation(FishingOperation oldFishingOperation,
- FishingOperation newFishingOperation) {
+
+ public void updateFishingOperation(FishingOperation oldFishingOperation,
+ FishingOperation newFishingOperation) {
int oldFishingOperationIndex = fishingOperation.indexOf(oldFishingOperation);
fishingOperation.remove(oldFishingOperation);
if (oldFishingOperationIndex >= 0) {
@@ -89,7 +89,7 @@
}
firePropertyChange(PROPERTY_FISHING_OPERATION, null, fishingOperation);
}
-
+
public FishingOperation getSelectedFishingOperation() {
return selectedFishingOperation;
}
@@ -100,13 +100,13 @@
firePropertyChange(PROPERTY_SELECTED_FISHING_OPERATION, oldValue, selectedFishingOperation);
}
- public Cruise getCruise() {
- return cruise;
- }
-
- public void setCruise(Cruise cruise) {
- Object oldValue = getCruise();
- this.cruise = cruise;
- firePropertyChange(PROPERTY_CRUISE, oldValue, cruise);
- }
+// public Cruise getCruise() {
+// return cruise;
+// }
+//
+// public void setCruise(Cruise cruise) {
+// Object oldValue = getCruise();
+// this.cruise = cruise;
+// firePropertyChange(PROPERTY_CRUISE, oldValue, cruise);
+// }
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-01-17 08:21:00 UTC (rev 214)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-01-17 13:55:41 UTC (rev 215)
@@ -53,6 +53,7 @@
import fr.ifremer.tutti.ui.swing.content.operation.catches.species.split.SplitSpeciesBatchUI;
import fr.ifremer.tutti.ui.swing.content.operation.catches.species.split.SplitSpeciesBatchUIModel;
import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor;
+import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
import fr.ifremer.tutti.ui.swing.util.editor.AttachmentCellComponent;
import fr.ifremer.tutti.ui.swing.util.editor.LongTextCellComponent;
import fr.ifremer.tutti.ui.swing.util.table.AbstractSelectTableAction;
@@ -410,13 +411,44 @@
List<Species> allSpecies;
- TuttiProtocol protocol = ui.getContextValue(TuttiProtocol.class);
+ TuttiProtocol protocol = null;
+ if (context.isProtocolFilled()) {
+
+ // get loaded protocol
+
+ protocol = TuttiUIUtil.getProtocol(ui);
+ Preconditions.checkNotNull(protocol,
+ "Could not find protocol in ui context");
+ }
+
Multimap<Species, SampleCategoryType> speciesSampleCategories =
HashMultimap.create();
- if (protocol != null) {
+ if (protocol == null) {
+ // no protocol, use default values
+
+ samplingOrder = Lists.newArrayList(
+ SampleCategoryType.sortedUnsorted,
+ SampleCategoryType.size,
+ SampleCategoryType.sex,
+ SampleCategoryType.maturity,
+ SampleCategoryType.age);
+
+ allSpecies = Lists.newArrayList(
+ persistenceService.getAllSpecies());
+
+ // each species can use any category
+ for (Species species : allSpecies) {
+ speciesSampleCategories.put(species, SampleCategoryType.sortedUnsorted);
+ speciesSampleCategories.put(species, SampleCategoryType.size);
+ speciesSampleCategories.put(species, SampleCategoryType.sex);
+ speciesSampleCategories.put(species, SampleCategoryType.maturity);
+ speciesSampleCategories.put(species, SampleCategoryType.age);
+ }
+ } else {
+
// fill sampling order from protocol
List<SampleCategoryEnum> sampleCategoryOrder =
@@ -443,28 +475,6 @@
speciesSampleCategories.put(species, SampleCategoryType.maturity);
speciesSampleCategories.put(species, SampleCategoryType.age);
}
- } else {
-
- // no protocol, use default values
-
- samplingOrder = Lists.newArrayList(
- SampleCategoryType.sortedUnsorted,
- SampleCategoryType.size,
- SampleCategoryType.sex,
- SampleCategoryType.maturity,
- SampleCategoryType.age);
-
- allSpecies = Lists.newArrayList(
- persistenceService.getAllSpecies());
-
- // each species can use any category
- for (Species species : allSpecies) {
- speciesSampleCategories.put(species, SampleCategoryType.sortedUnsorted);
- speciesSampleCategories.put(species, SampleCategoryType.size);
- speciesSampleCategories.put(species, SampleCategoryType.sex);
- speciesSampleCategories.put(species, SampleCategoryType.maturity);
- speciesSampleCategories.put(species, SampleCategoryType.age);
- }
}
if (log.isInfoEnabled()) {
@@ -477,7 +487,9 @@
JXTable table = getTable();
+ // can show / hide some columns in model
table.setColumnControlVisible(true);
+
// create table column model
TableCellRenderer defaultRenderer =
table.getDefaultRenderer(Object.class);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java 2013-01-17 08:21:00 UTC (rev 214)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java 2013-01-17 13:55:41 UTC (rev 215)
@@ -26,13 +26,18 @@
import com.ezware.oxbow.swingbits.util.Preconditions;
import com.google.common.collect.Lists;
+import fr.ifremer.tutti.persistence.entities.TuttiEntities;
+import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol;
+import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.persistence.entities.referential.Species;
import fr.ifremer.tutti.ui.swing.TuttiUI;
import fr.ifremer.tutti.ui.swing.TuttiUIContext;
import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchRowModel;
import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchUIHandler;
import fr.ifremer.tutti.ui.swing.util.Cancelable;
import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor;
+import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIHandler;
import jaxx.runtime.validator.swing.SwingValidatorMessageTableRenderer;
import jaxx.runtime.validator.swing.SwingValidatorUtil;
@@ -67,6 +72,12 @@
*/
private final SpeciesFrequencyUI ui;
+ private TuttiProtocol protocol;
+
+ private Map<String, SpeciesProtocol> speciesProtocol;
+
+ private Map<String, Caracteristic> lengthSteCaracteristic;
+
public SpeciesFrequencyUIHandler(TuttiUIContext context,
SpeciesFrequencyUI ui) {
super(context,
@@ -154,8 +165,20 @@
SpeciesBatchUIHandler.FREQUENCY_LENGTH_CONTEXT_ENTRY.getContextValue(ui);
Preconditions.checkNotNull(lengthStepCaracterics);
+ lengthSteCaracteristic = TuttiEntities.splitById(lengthStepCaracterics);
+
SpeciesFrequencyUIModel model = getModel();
+ if (context.isProtocolFilled()) {
+
+ // get loaded protocol
+ protocol = TuttiUIUtil.getProtocol(ui);
+ Preconditions.checkNotNull(protocol,
+ "Could not find protocol in ui context");
+
+ speciesProtocol = TuttiEntities.splitById(protocol.getSpecies());
+ }
+
//TODO Use protocol to have lengthStepCaracteristic to use (if any protocol)
initBeanComboBox(ui.getLengthStepCaracteristicComboBox(),
lengthStepCaracterics,
@@ -352,38 +375,81 @@
public void editBatch(SpeciesBatchRowModel speciesBatch) {
- List<SpeciesFrequencyRowModel> frequency = null;
-
Caracteristic lengthStepCaracteristic = null;
- if (speciesBatch != null) {
- frequency = speciesBatch.getFrequency();
- }
+ Float lengthStep = 1f;
List<SpeciesFrequencyRowModel> editFrequency = Lists.newArrayList();
- if (frequency != null) {
+ if (speciesBatch != null) {
- SpeciesFrequencyTableModel tableModel = getTableModel();
+ List<SpeciesFrequencyRowModel> frequency =
+ speciesBatch.getFrequency();
- for (SpeciesFrequencyRowModel rowModel : frequency) {
+ // try to load existing frequency
- SpeciesFrequencyRowModel newRow = tableModel.createNewRow();
- newRow.setLengthStepCaracteristic(rowModel.getLengthStepCaracteristic());
- newRow.setLengthStep(rowModel.getLengthStep());
- newRow.setNumber(rowModel.getNumber());
- newRow.setComputedWeight(rowModel.getComputedWeight());
- editFrequency.add(newRow);
- }
+ if (frequency != null) {
- if (CollectionUtils.isNotEmpty(frequency)) {
- lengthStepCaracteristic =
- frequency.get(0).getLengthStepCaracteristic();
+ SpeciesFrequencyTableModel tableModel = getTableModel();
+
+ for (SpeciesFrequencyRowModel rowModel : frequency) {
+
+ SpeciesFrequencyRowModel newRow = tableModel.createNewRow();
+ newRow.setLengthStepCaracteristic(rowModel.getLengthStepCaracteristic());
+ newRow.setLengthStep(rowModel.getLengthStep());
+ newRow.setNumber(rowModel.getNumber());
+ newRow.setComputedWeight(rowModel.getComputedWeight());
+ editFrequency.add(newRow);
+ }
+
+ if (CollectionUtils.isNotEmpty(frequency)) {
+
+ // use first frequency row length step caracteristics
+
+ SpeciesFrequencyRowModel rowModel = frequency.get(0);
+ lengthStepCaracteristic = rowModel.getLengthStepCaracteristic();
+ lengthStep = rowModel.getLengthStep();
+
+ if (log.isInfoEnabled()) {
+ log.info("Use existing lengthStep " +
+ "caracteristic / step " +
+ decorate(lengthStepCaracteristic) + " / " +
+ lengthStep);
+ }
+ }
+ } else {
+
+ // not frequency, guess from protocol (if any)
+
+ if (protocol != null) {
+
+ Species species = speciesBatch.getSpecies();
+
+ SpeciesProtocol sProtocol =
+ speciesProtocol.get(species.getId());
+
+ if (sProtocol != null) {
+
+
+ String lengthStepPmfmId = sProtocol.getLengthStepPmfmId();
+
+ lengthStepCaracteristic =
+ lengthSteCaracteristic.get(lengthStepPmfmId);
+ lengthStep = sProtocol.getLengthStep();
+
+ if (log.isInfoEnabled()) {
+ log.info("Use existing from protocol lengthStep " +
+ "caracteristic / step " +
+ decorate(lengthStepCaracteristic) + " / " +
+ lengthStep);
+ }
+ }
+ }
}
}
- if (log.isInfoEnabled()) {
- log.info("Will edit batch row: " + speciesBatch + " with " +
- editFrequency.size() + " frequency");
+ if (log.isDebugEnabled()) {
+ log.debug("Will edit batch row: " + speciesBatch + " with " +
+ editFrequency.size() + " frequency");
}
SpeciesFrequencyUIModel model = getModel();
@@ -392,25 +458,9 @@
ui.getValidator().setBean(model);
model.setRows(editFrequency);
+ model.setStep(lengthStep);
+ model.setLengthStepCaracteristic(lengthStepCaracteristic);
- if (lengthStepCaracteristic == null) {
-
- // no lengthStep caracteristic to apply make sure it is not setted.
- if (log.isInfoEnabled()) {
- log.info("No lengthStepCaracteristic to set.");
- }
- model.setLengthStepCaracteristic(null);
- } else {
-
- // apply existing lengthStepCaracteristic
-
- if (log.isInfoEnabled()) {
- log.info("Use lengthStepCaracteristic: " +
- lengthStepCaracteristic.getName());
- }
- model.setLengthStepCaracteristic(lengthStepCaracteristic);
- }
-
// keep batch (will be used to push back editing entry)
model.setBatch(speciesBatch);
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesTableModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesTableModel.java 2013-01-17 08:21:00 UTC (rev 214)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesTableModel.java 2013-01-17 13:55:41 UTC (rev 215)
@@ -66,23 +66,23 @@
EditProtocolSpeciesRowModel.PROPERTY_LENGTH_STEP_PMFM,
n_("tutti.table.protocol.species.header.lengthStep"),
n_("tutti.table.protocol.species.header.lengthStep"));
-
+
public static final ColumnIdentifier<EditProtocolSpeciesRowModel> WEIGHT_ENABLED = ColumnIdentifier.newId(
EditProtocolSpeciesRowModel.PROPERTY_WEIGHT_ENABLED,
n_("tutti.table.protocol.species.header.weight"),
n_("tutti.table.protocol.species.header.weight"));
-
+
public static final ColumnIdentifier<EditProtocolSpeciesRowModel> COUNT_IF_NO_FREQUENCY_ENABLED = ColumnIdentifier.newId(
EditProtocolSpeciesRowModel.PROPERTY_COUNT_IF_NO_FREQUENCY_ENABLED,
n_("tutti.table.protocol.species.header.countIfNoFrequency"),
n_("tutti.table.protocol.species.header.countIfNoFrequency"));
-
+
public static final ColumnIdentifier<EditProtocolSpeciesRowModel> CALCIFY_SAMPLE_ENABLED = ColumnIdentifier.newId(
EditProtocolSpeciesRowModel.PROPERTY_CALCIFY_SAMPLE_ENABLED,
n_("tutti.table.protocol.species.header.calcifySample"),
n_("tutti.table.protocol.species.header.calcifySample"));
-
+
private static final long serialVersionUID = 1L;
public EditProtocolSpeciesTableModel(TableColumnModel columnModel) {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java 2013-01-17 08:21:00 UTC (rev 214)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java 2013-01-17 13:55:41 UTC (rev 215)
@@ -29,6 +29,7 @@
import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;
import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
import com.google.common.collect.Multimap;
import fr.ifremer.tutti.persistence.entities.TuttiEntities;
import fr.ifremer.tutti.persistence.entities.data.SampleCategoryEnum;
@@ -44,15 +45,6 @@
import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor;
import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIHandler;
import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ListSelectionEvent;
-import javax.swing.event.TableColumnModelEvent;
-import javax.swing.event.TableColumnModelListener;
-import javax.swing.table.TableColumn;
-import javax.swing.table.TableColumnModel;
import jaxx.runtime.swing.editor.bean.BeanDoubleList;
import jaxx.runtime.validator.swing.SwingValidator;
import org.apache.commons.collections.CollectionUtils;
@@ -61,7 +53,17 @@
import org.jdesktop.swingx.JXTable;
import org.jdesktop.swingx.table.DefaultTableColumnModelExt;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.TableColumnModelEvent;
+import javax.swing.event.TableColumnModelListener;
+import javax.swing.table.TableColumn;
+import javax.swing.table.TableColumnModel;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
/**
* TODO
*
@@ -98,14 +100,11 @@
public EditProtocolUIHandler(TuttiUI parentUi, EditProtocolUI ui) {
super(parentUi.getHandler().getContext());
this.ui = ui;
- columToSampleCategory = HashBiMap.create(SampleCategoryEnum.values().length-1);
+ columToSampleCategory = HashBiMap.create(SampleCategoryEnum.values().length - 1);
columToSampleCategory.put(EditProtocolSpeciesTableModel.SIZE_ENABLED, SampleCategoryEnum.size);
columToSampleCategory.put(EditProtocolSpeciesTableModel.SEX_ENABLED, SampleCategoryEnum.sex);
columToSampleCategory.put(EditProtocolSpeciesTableModel.MATURITY_ENABLED, SampleCategoryEnum.maturity);
columToSampleCategory.put(EditProtocolSpeciesTableModel.AGE_ENABLED, SampleCategoryEnum.age);
- columToSampleCategory.put(EditProtocolSpeciesTableModel.WEIGHT_ENABLED, SampleCategoryEnum.weight);
- columToSampleCategory.put(EditProtocolSpeciesTableModel.COUNT_IF_NO_FREQUENCY_ENABLED, SampleCategoryEnum.countIfNoFrequency);
- columToSampleCategory.put(EditProtocolSpeciesTableModel.CALCIFY_SAMPLE_ENABLED, SampleCategoryEnum.calcifySample);
}
//------------------------------------------------------------------------//
@@ -201,7 +200,7 @@
initUI(ui);
EditProtocolUIModel model = getModel();
-
+
// load protocol if existing
String protocolId = context.getProtocolId();
@@ -218,7 +217,7 @@
// load existing protocol
protocol = persistenceService.getProtocol(protocolId);
Boolean mustClone = ui.getContextValue(Boolean.class, MainUIHandler.CLONE_PROTOCOL);
-
+
model.fromBean(protocol);
if (mustClone != null && mustClone) {
ui.setContextValue(false, MainUIHandler.CLONE_PROTOCOL);
@@ -228,7 +227,7 @@
SwingValidator validator = ui.getValidator();
listenValidatorValid(validator, model);
-
+
MainUI main = ui.getContextValue(MainUI.class, MainUI.class.getName());
main.clearValidators();
main.registerValidator(validator);
@@ -249,6 +248,10 @@
getDecorator(Caracteristic.class, null),
Lists.newArrayList(allLengthStepPmfm.values()));
+ addBooleanColumnToModel(columnModel, EditProtocolSpeciesTableModel.WEIGHT_ENABLED, table);
+ addBooleanColumnToModel(columnModel, EditProtocolSpeciesTableModel.COUNT_IF_NO_FREQUENCY_ENABLED, table);
+ addBooleanColumnToModel(columnModel, EditProtocolSpeciesTableModel.CALCIFY_SAMPLE_ENABLED, table);
+
Map<SampleCategoryEnum, ColumnIdentifier<EditProtocolSpeciesRowModel>> sampleCategoryToColumn = columToSampleCategory.inverse();
List<SampleCategoryEnum> sampleCategoryOrder = model.getSampleCategoryOrder();
@@ -369,13 +372,13 @@
MainUI main = ui.getContextValue(MainUI.class, MainUI.class.getName());
main.clearValidators();
}
-
+
@Override
protected void onAfterSelectedRowChanged(int oldRowIndex,
EditProtocolSpeciesRowModel oldRow,
int newRowIndex,
EditProtocolSpeciesRowModel newRow) {
-
+
super.onAfterSelectedRowChanged(oldRowIndex, oldRow, newRowIndex, newRow);
getModel().setRemoveSpeciesEnabled(newRow != null);
}
@@ -416,16 +419,27 @@
}
bean.setHydrologyPmfmId(allIds);
- List<SampleCategoryEnum> sampleOrder = Lists.newArrayList();
+ // find out sampling order
+
TableColumnModel columnModel = getTable().getColumnModel();
- for (int i = 0; i < columnModel.getColumnCount(); i++) {
+ int columnCount = columnModel.getColumnCount();
+ Map<Integer, SampleCategoryEnum> sampleCategoryOrders = Maps.newTreeMap();
+
+ for (int i = 0; i < columnCount; i++) {
+
TableColumn column = columnModel.getColumn(i);
- ColumnIdentifier identifier = (ColumnIdentifier) column.getIdentifier();
+ ColumnIdentifier<EditProtocolSpeciesRowModel> identifier = (ColumnIdentifier<EditProtocolSpeciesRowModel>) column.getIdentifier();
SampleCategoryEnum sampleCategory = columToSampleCategory.get(identifier);
if (sampleCategory != null) {
- sampleOrder.add(sampleCategory);
+
+ // found a sample category, keep it
+ sampleCategoryOrders.put(i, sampleCategory);
}
}
+
+ List<SampleCategoryEnum> sampleOrder =
+ Lists.newArrayList(sampleCategoryOrders.values());
+
bean.setSampleCategoryOrder(sampleOrder);
TuttiProtocol saved;
@@ -456,10 +470,10 @@
log.info("addRow 6");
selectFirstInCombo(ui.getSpeciesComboBox());
log.info("addRow 7");
-
+
// getModel().setModify(true);
}
-
+
/** Removes a species */
public void removeSpecies() {
int rowIndex = getTable().getSelectedRow();
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java 2013-01-17 08:21:00 UTC (rev 214)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java 2013-01-17 13:55:41 UTC (rev 215)
@@ -26,7 +26,6 @@
import com.google.common.collect.Lists;
import fr.ifremer.tutti.persistence.entities.data.SampleCategoryEnum;
-import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol;
import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIModel;
@@ -54,7 +53,7 @@
public static final String PROPERTY_HYDROLOGY_PMFM_ID = "hydrologyPmfmId";
public static final String PROPERTY_SAMPLE_CATEGORY_ORDER = "sampleCategoryOrder";
-
+
public static final String PROPERTY_REMOVE_SPECIES_ENABLED = "removeSpeciesEnabled";
protected String name;
@@ -72,11 +71,8 @@
SampleCategoryEnum.size,
SampleCategoryEnum.sex,
SampleCategoryEnum.maturity,
- SampleCategoryEnum.age,
- SampleCategoryEnum.weight,
- SampleCategoryEnum.countIfNoFrequency,
- SampleCategoryEnum.calcifySample);
-
+ SampleCategoryEnum.age);
+
/**
* Can user remove a selected species?
*
@@ -178,7 +174,7 @@
this.sampleCategoryOrder = sampleCategoryOrder;
firePropertyChange(PROPERTY_SAMPLE_CATEGORY_ORDER, oldValue, sampleCategoryOrder);
}
-
+
public boolean isRemoveSpeciesEnabled() {
return removeSpeciesEnabled;
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/HydrologicCaracteristicUtil.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/HydrologicCaracteristicUtil.java 2013-01-17 08:21:00 UTC (rev 214)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/HydrologicCaracteristicUtil.java 2013-01-17 13:55:41 UTC (rev 215)
@@ -26,9 +26,12 @@
*/
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import org.nuiton.util.beans.Binder;
+import org.nuiton.util.beans.BinderFactory;
/**
* @author kmorin <kmorin(a)codelutin.com>
+ * @author tchemit <chemit(a)codelutin.com>
* @since 0.3
*/
public class HydrologicCaracteristicUtil {
@@ -39,6 +42,8 @@
AVERAGE
}
+ protected static Binder<Caracteristic, Caracteristic> caracteristicBinder;
+
public static String getGlobalName(String name) {
if (name.charAt(name.length() - 2) == '_') {
name = name.substring(0, name.length() - 2);
@@ -46,21 +51,15 @@
return name;
}
- public static Caracteristic createGlobalCaracteristic(String name, Caracteristic toClone) {
- Caracteristic caracteristic = new Caracteristic();
- caracteristic.setName(name);
- caracteristic.setId(name);
- if (toClone != null) {
- caracteristic.setCategory(toClone.getCategory());
- caracteristic.setPrecision(toClone.getPrecision());
- caracteristic.setMaximumNumberDecimals(toClone.getMaximumNumberDecimals());
- caracteristic.setSignifFiguresNumber(toClone.getSignifFiguresNumber());
- caracteristic.setNumberType(toClone.isNumberType());
- caracteristic.setQualitativeType(toClone.isQualitativeType());
- caracteristic.setQualitativeValue(toClone.getQualitativeValue());
- caracteristic.setUnit(toClone.getUnit());
+ public static Caracteristic createGlobalCaracteristic(String name,
+ Caracteristic source) {
+ Caracteristic result = new Caracteristic();
+ if (source != null) {
+ getCaracteristicBinder().copy(source, result);
}
- return caracteristic;
+ result.setName(name);
+ result.setId(name);
+ return result;
}
public static Type getTypeOfCaracteristic(Caracteristic caracteristic) {
@@ -81,4 +80,12 @@
}
return result;
}
+
+ protected static Binder<Caracteristic, Caracteristic> getCaracteristicBinder() {
+ if (caracteristicBinder == null) {
+ caracteristicBinder =
+ BinderFactory.newBinder(Caracteristic.class);
+ }
+ return caracteristicBinder;
+ }
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java 2013-01-17 08:21:00 UTC (rev 214)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java 2013-01-17 13:55:41 UTC (rev 215)
@@ -25,15 +25,13 @@
*/
import com.google.common.base.Preconditions;
+import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.persistence.entities.data.Program;
+import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
import fr.ifremer.tutti.service.TuttiServiceTechnicalException;
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Cursor;
-import java.io.File;
-import java.text.DateFormat;
-import java.util.Date;
-import javax.swing.JOptionPane;
-import javax.swing.UIManager;
+import jaxx.runtime.JAXXContext;
+import jaxx.runtime.JAXXUtil;
+import jaxx.runtime.context.JAXXContextEntryDef;
import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.lang3.time.DurationFormatUtils;
import org.apache.commons.logging.Log;
@@ -42,6 +40,14 @@
import org.jdesktop.swingx.decorator.Highlighter;
import org.nuiton.util.FileUtil;
+import javax.swing.JOptionPane;
+import javax.swing.UIManager;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Cursor;
+import java.io.File;
+import java.util.Date;
+
import static org.nuiton.i18n.I18n._;
/**
@@ -59,6 +65,54 @@
// never instanciate util class
}
+ private static final JAXXContextEntryDef<Program> PROGRAM_ENTRY =
+ JAXXUtil.newContextEntryDef("loadedProgram", Program.class);
+
+ private static final JAXXContextEntryDef<Cruise> CRUISE_ENTRY =
+ JAXXUtil.newContextEntryDef("loadedCruise", Cruise.class);
+
+ private static final JAXXContextEntryDef<TuttiProtocol> PROTOCOL_ENTRY =
+ JAXXUtil.newContextEntryDef("loadedProtocol", TuttiProtocol.class);
+
+ public static Program getProgram(JAXXContext context) {
+ return PROGRAM_ENTRY.getContextValue(context);
+ }
+
+ public static Cruise getCruise(JAXXContext context) {
+ return CRUISE_ENTRY.getContextValue(context);
+ }
+
+ public static TuttiProtocol getProtocol(JAXXContext context) {
+ return PROTOCOL_ENTRY.getContextValue(context);
+ }
+
+ public static void setProgram(JAXXContext context, Program value) {
+ if (value == null) {
+
+ PROGRAM_ENTRY.removeContextValue(context);
+ } else {
+
+ PROGRAM_ENTRY.setContextValue(context, value);
+ }
+ }
+
+ public static void setCruise(JAXXContext context, Cruise value) {
+ if (value == null) {
+ CRUISE_ENTRY.removeContextValue(context);
+ } else {
+ CRUISE_ENTRY.setContextValue(context, value);
+ }
+ }
+
+ public static void setProtocol(JAXXContext context, TuttiProtocol value) {
+ if (value == null) {
+
+ PROTOCOL_ENTRY.removeContextValue(context);
+ } else {
+ PROTOCOL_ENTRY.setContextValue(context, value);
+ }
+ }
+
// public static JDialog openInDialog(JComponent ui,
// Frame frame,
// String title,
@@ -248,7 +302,7 @@
public static Highlighter newForegroundColorHighlighter(HighlightPredicate predicate, Color color) {
return new TuttiColorHighlighter(predicate, color, true);
}
-
+
public static String getDuration(Date startDate, Date endDate, String format) {
String duration = "";
if (startDate != null && endDate != null) {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/CaracteristicValueEditor.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/CaracteristicValueEditor.java 2013-01-17 08:21:00 UTC (rev 214)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/CaracteristicValueEditor.java 2013-01-17 13:55:41 UTC (rev 215)
@@ -81,36 +81,55 @@
}
@Override
- public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
- editor = table.getDefaultEditor(Object.class);
+ public Component getTableCellEditorComponent(JTable table,
+ Object value,
+ boolean isSelected,
+ int row,
+ int column) {
- Caracteristic caracteristic = (Caracteristic) table.getModel().getValueAt(row, caracteristicColumn);
- if (caracteristic != null) {
- if (caracteristic.isNumberType()) {
- NumberCellEditor<Float> editor =
- JAXXWidgetUtil.newNumberTableCellEditor(Float.class, false);
- editor.getNumberEditor().setSelectAllTextOnError(true);
- editor.getNumberEditor().getTextField().setBorder(new LineBorder(Color.GRAY, 2));
- this.editor = editor;
+ Caracteristic caracteristic = (Caracteristic)
+ table.getModel().getValueAt(row, caracteristicColumn);
+ if (caracteristic == null) {
- } else if (caracteristic.isQualitativeType()) {
- JComboBox comboBox = new JComboBox();
- comboBox.setRenderer(new DecoratorListCellRenderer(decorator));
+ // can't edit a null value ?
- List<CaracteristicQualitativeValue> data = caracteristic.getQualitativeValue();
- // add a null value at first position
- if (!data.isEmpty() && data.get(0) != null) {
- data.add(0, null);
- }
- SwingUtil.fillComboBox(comboBox, data, null);
+ } else {
+ switch (caracteristic.getCaracteristicType()) {
- ObjectToStringConverter converter = BeanUIUtil.newDecoratedObjectToStringConverter(decorator);
- BeanUIUtil.decorate(comboBox, converter);
- editor = new ComboBoxCellEditor(comboBox);
+ case NUMBER:
+ // by default this is a number
+ NumberCellEditor<Float> editor =
+ JAXXWidgetUtil.newNumberTableCellEditor(Float.class, false);
+ editor.getNumberEditor().setSelectAllTextOnError(true);
+ editor.getNumberEditor().getTextField().setBorder(new LineBorder(Color.GRAY, 2));
+ this.editor = editor;
+ break;
+ case QUALITATIVE:
+ JComboBox comboBox = new JComboBox();
+ comboBox.setRenderer(new DecoratorListCellRenderer(decorator));
+
+ List<CaracteristicQualitativeValue> data = caracteristic.getQualitativeValue();
+ // add a null value at first position
+ if (!data.isEmpty() && data.get(0) != null) {
+ data.add(0, null);
+ }
+ SwingUtil.fillComboBox(comboBox, data, null);
+
+ ObjectToStringConverter converter =
+ BeanUIUtil.newDecoratedObjectToStringConverter(decorator);
+ BeanUIUtil.decorate(comboBox, converter);
+ this.editor = new ComboBoxCellEditor(comboBox);
+ break;
+ case TEXT:
+ // use default editor
+
+ this.editor = table.getDefaultEditor(Object.class);
+ break;
}
}
- Component result = editor.getTableCellEditorComponent(table, value, isSelected, row, column);
+ Component result = editor.getTableCellEditorComponent(
+ table, value, isSelected, row, column);
return result;
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/CaracteristicValueRenderer.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/CaracteristicValueRenderer.java 2013-01-17 08:21:00 UTC (rev 214)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/CaracteristicValueRenderer.java 2013-01-17 13:55:41 UTC (rev 215)
@@ -60,15 +60,37 @@
decorator = decoratorService.getDecoratorByType(CaracteristicQualitativeValue.class);
}
- public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
- TableCellRenderer renderer = table.getDefaultRenderer(Object.class);
- Caracteristic caracteristic = (Caracteristic) table.getModel().getValueAt(row, caracteristicColumn);
- if (caracteristic != null) {
- if (caracteristic.isQualitativeType()) {
- renderer = new DecoratorTableCellRenderer(decorator);
+ public Component getTableCellRendererComponent(JTable table,
+ Object value,
+ boolean isSelected,
+ boolean hasFocus,
+ int row,
+ int column) {
+ TableCellRenderer renderer;
+
+ Caracteristic caracteristic = (Caracteristic)
+ table.getModel().getValueAt(row, caracteristicColumn);
+ if (caracteristic == null) {
+
+ // should be render a null value ?
+ renderer = table.getDefaultRenderer(Object.class);
+
+ } else {
+ switch (caracteristic.getCaracteristicType()) {
+
+ case QUALITATIVE:
+ renderer = new DecoratorTableCellRenderer(decorator);
+ break;
+ case TEXT:
+ case NUMBER:
+ default:
+
+ // use default text renderer
+ renderer = table.getDefaultRenderer(Object.class);
}
}
- Component result = renderer.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
+ Component result = renderer.getTableCellRendererComponent(
+ table, value, isSelected, hasFocus, row, column);
return result;
}
1
0
r214 - in trunk: . tutti-persistence tutti-persistence-adagio tutti-persistence-dev tutti-service tutti-ui-swing
by tchemit@users.forge.codelutin.com 17 Jan '13
by tchemit@users.forge.codelutin.com 17 Jan '13
17 Jan '13
Author: tchemit
Date: 2013-01-17 09:21:00 +0100 (Thu, 17 Jan 2013)
New Revision: 214
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/214
Log:
move to version 1.0\!
Modified:
trunk/pom.xml
trunk/tutti-persistence-adagio/pom.xml
trunk/tutti-persistence-dev/pom.xml
trunk/tutti-persistence/pom.xml
trunk/tutti-service/pom.xml
trunk/tutti-ui-swing/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-01-17 08:16:18 UTC (rev 213)
+++ trunk/pom.xml 2013-01-17 08:21:00 UTC (rev 214)
@@ -33,7 +33,7 @@
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>0.4-SNAPSHOT</version>
+ <version>1.0-SNAPSHOT</version>
<modules>
<module>tutti-persistence</module>
Modified: trunk/tutti-persistence/pom.xml
===================================================================
--- trunk/tutti-persistence/pom.xml 2013-01-17 08:16:18 UTC (rev 213)
+++ trunk/tutti-persistence/pom.xml 2013-01-17 08:21:00 UTC (rev 214)
@@ -28,7 +28,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>0.4-SNAPSHOT</version>
+ <version>1.0-SNAPSHOT</version>
</parent>
<groupId>fr.ifremer.tutti</groupId>
Modified: trunk/tutti-persistence-adagio/pom.xml
===================================================================
--- trunk/tutti-persistence-adagio/pom.xml 2013-01-17 08:16:18 UTC (rev 213)
+++ trunk/tutti-persistence-adagio/pom.xml 2013-01-17 08:21:00 UTC (rev 214)
@@ -28,7 +28,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>0.4-SNAPSHOT</version>
+ <version>1.0-SNAPSHOT</version>
</parent>
<groupId>fr.ifremer.tutti</groupId>
Modified: trunk/tutti-persistence-dev/pom.xml
===================================================================
--- trunk/tutti-persistence-dev/pom.xml 2013-01-17 08:16:18 UTC (rev 213)
+++ trunk/tutti-persistence-dev/pom.xml 2013-01-17 08:21:00 UTC (rev 214)
@@ -28,7 +28,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>0.4-SNAPSHOT</version>
+ <version>1.0-SNAPSHOT</version>
</parent>
<groupId>fr.ifremer.tutti</groupId>
Modified: trunk/tutti-service/pom.xml
===================================================================
--- trunk/tutti-service/pom.xml 2013-01-17 08:16:18 UTC (rev 213)
+++ trunk/tutti-service/pom.xml 2013-01-17 08:21:00 UTC (rev 214)
@@ -28,7 +28,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>0.4-SNAPSHOT</version>
+ <version>1.0-SNAPSHOT</version>
</parent>
<groupId>fr.ifremer.tutti</groupId>
Modified: trunk/tutti-ui-swing/pom.xml
===================================================================
--- trunk/tutti-ui-swing/pom.xml 2013-01-17 08:16:18 UTC (rev 213)
+++ trunk/tutti-ui-swing/pom.xml 2013-01-17 08:21:00 UTC (rev 214)
@@ -28,7 +28,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>0.4-SNAPSHOT</version>
+ <version>1.0-SNAPSHOT</version>
</parent>
<groupId>fr.ifremer.tutti</groupId>
1
0