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
April 2013
- 5 participants
- 210 discussions
r764 - trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter
by kmorin@users.forge.codelutin.com 11 Apr '13
by kmorin@users.forge.codelutin.com 11 Apr '13
11 Apr '13
Author: kmorin
Date: 2013-04-11 10:46:30 +0200 (Thu, 11 Apr 2013)
New Revision: 764
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/764
Log:
fixes #2257 [MACRODECHET] - Impossible de saisir un poids total avec d?\195?\169cimales
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUI.css
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUI.css 2013-04-11 08:40:56 UTC (rev 763)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUI.css 2013-04-11 08:46:30 UTC (rev 764)
@@ -55,7 +55,7 @@
property: marineLitterTotalWeight;
model: {model.getMarineLitterTotalWeight()};
useFloat: false;
- numberPattern: {INT_6_DIGITS_PATTERN};
+ numberPattern: {DECIMAL3_PATTERN};
}
#tablePopup {
1
0
r763 - trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config
by kmorin@users.forge.codelutin.com 11 Apr '13
by kmorin@users.forge.codelutin.com 11 Apr '13
11 Apr '13
Author: kmorin
Date: 2013-04-11 10:40:56 +0200 (Thu, 11 Apr 2013)
New Revision: 763
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/763
Log:
fixes #2157 [ERGO] - Couleur d'erreur - Trouver une couleur moins agressive
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiApplicationConfigOption.java
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiApplicationConfigOption.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiApplicationConfigOption.java 2013-04-10 16:53:38 UTC (rev 762)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiApplicationConfigOption.java 2013-04-11 08:40:56 UTC (rev 763)
@@ -156,7 +156,7 @@
COLOR_ROW_INVALID(
"tutti.ui.color.rowInvalid",
n_("tutti.config.option.ui.color.rowInvalid.description"),
- new Color(255, 128, 128).toString(),
+ new Color(255, 204, 153).toString(),
Color.class
),
1
0
10 Apr '13
Author: kmorin
Date: 2013-04-10 18:53:38 +0200 (Wed, 10 Apr 2013)
New Revision: 762
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/762
Log:
fixes #2275 [PROTOCOLE] quand on clone un protocole, le focus doit etre mis sur le nouveau nom du protocole car c'est bien la premi?\195?\168re chose ?\195?\160 faire
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/config/TuttiConfigUIHandler.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/db/DbManagerUIHandler.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/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/benthos/create/CreateBenthosBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/caracteristics/CaracteristicMapEditorUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUIHandler.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/create/CreateSpeciesBatchUIHandler.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/SplitSpeciesBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/AbstractCaracteristicTabUIHandler.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/EditProtocolUI.jaxx
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/referential/ManageTemporaryReferentialUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/AbstractTuttiAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/attachment/AttachmentEditorUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/species/SelectSpeciesUIHandler.java
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUIHandler.java 2013-04-10 15:17:14 UTC (rev 761)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUIHandler.java 2013-04-10 16:53:38 UTC (rev 762)
@@ -213,6 +213,11 @@
}
@Override
+ protected JComponent getComponentToFocus() {
+ return currentBody;
+ }
+
+ @Override
public void onCloseUI() {
// remove any screen
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/config/TuttiConfigUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/config/TuttiConfigUIHandler.java 2013-04-10 15:17:14 UTC (rev 761)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/config/TuttiConfigUIHandler.java 2013-04-10 16:53:38 UTC (rev 762)
@@ -43,6 +43,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import javax.swing.*;
import javax.swing.table.TableCellEditor;
import java.awt.BorderLayout;
@@ -196,6 +197,11 @@
}
@Override
+ protected JComponent getComponentToFocus() {
+ return getUI();
+ }
+
+ @Override
public void onCloseUI() {
if (log.isDebugEnabled()) {
log.debug("closing: " + ui);
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-04-10 15:17:14 UTC (rev 761)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java 2013-04-10 16:53:38 UTC (rev 762)
@@ -42,6 +42,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import javax.swing.*;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.List;
@@ -221,6 +222,11 @@
}
@Override
+ protected JComponent getComponentToFocus() {
+ return getUI().getProgramComboBox();
+ }
+
+ @Override
public void onCloseUI() {
if (log.isDebugEnabled()) {
log.debug("closing: " + ui);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/DbManagerUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/DbManagerUIHandler.java 2013-04-10 15:17:14 UTC (rev 761)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/DbManagerUIHandler.java 2013-04-10 16:53:38 UTC (rev 762)
@@ -30,7 +30,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import javax.swing.SwingUtilities;
+import javax.swing.*;
import static org.nuiton.i18n.I18n._;
@@ -99,6 +99,11 @@
}
@Override
+ protected JComponent getComponentToFocus() {
+ return getUI().getUpgradeDbButton();
+ }
+
+ @Override
public void onCloseUI() {
}
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-04-10 15:17:14 UTC (rev 761)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java 2013-04-10 16:53:38 UTC (rev 762)
@@ -38,9 +38,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import javax.swing.AbstractButton;
-import javax.swing.JButton;
-import javax.swing.JComboBox;
+import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.MouseEvent;
import java.beans.PropertyChangeEvent;
@@ -229,6 +227,11 @@
ui.applyDataBinding(SelectCruiseUI.BINDING_VALIDATE_CATCHES_BUTTON_ENABLED);
}
+ @Override
+ protected JComponent getComponentToFocus() {
+ return getUI().getEditCatchesButton();
+ }
+
protected boolean resetEditProtolAction;
public void resetEditProtolAction() {
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-04-10 15:17:14 UTC (rev 761)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-04-10 16:53:38 UTC (rev 762)
@@ -54,9 +54,7 @@
import org.apache.commons.logging.LogFactory;
import org.jdesktop.swingx.JXDatePicker;
-import javax.swing.JButton;
-import javax.swing.JOptionPane;
-import javax.swing.JTabbedPane;
+import javax.swing.*;
import java.awt.Color;
import java.awt.Component;
import java.awt.event.ActionEvent;
@@ -345,6 +343,11 @@
}
@Override
+ protected JComponent getComponentToFocus() {
+ return getUI().getStationNumberField();
+ }
+
+ @Override
public void onCloseUI() {
if (log.isDebugEnabled()) {
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-04-10 15:17:14 UTC (rev 761)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java 2013-04-10 16:53:38 UTC (rev 762)
@@ -39,7 +39,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import javax.swing.JTabbedPane;
+import javax.swing.*;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.List;
@@ -185,6 +185,11 @@
}
@Override
+ protected JComponent getComponentToFocus() {
+ return null;
+ }
+
+ @Override
public void onCloseUI() {
// ui will be saved so we do not want to keep selected tab indexes
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-04-10 15:17:14 UTC (rev 761)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java 2013-04-10 16:53:38 UTC (rev 762)
@@ -124,6 +124,11 @@
}
@Override
+ protected JComponent getComponentToFocus() {
+ return getUI().getCatchTotalWeightField();
+ }
+
+ @Override
public void onCloseUI() {
if (log.isDebugEnabled()) {
@@ -284,29 +289,27 @@
if (MAIN_CARD.equals(card)) {
registerValidators();
actionPanel.setVisible(true);
+
} else {
actionPanel.setVisible(false);
TuttiUI tuttiUi = null;
JXTitledPanel titlePanel = null;
- Component component2focus = null;
String title = "";
+
if (CREATE_BATCH_CARD.equals(card)) {
tuttiUi = ui.getSpeciesTabCreateBatch();
titlePanel = ui.getSpeciesTabCreateBatchReminderLabel();
title = n_("tutti.createSpeciesBatch.title");
- component2focus = ui.getSpeciesTabCreateBatch().getSpeciesComboBox();
} else if (SPLIT_BATCH_CARD.equals(card)) {
tuttiUi = ui.getSpeciesTabSplitBatch();
titlePanel = ui.getSpeciesTabSplitBatchReminderLabel();
title = n_("tutti.splitSpeciesBatch.title");
- component2focus = ui.getSpeciesTabSplitBatch().getCategoryComboBox();
} else if (EDIT_FREQUENCY_CARD.equals(card)) {
tuttiUi = ui.getSpeciesTabFrequencyEditor();
titlePanel = ui.getSpeciesTabFrequencyEditorReminderLabel();
title = n_("tutti.editSpeciesFrequencies.title");
- component2focus = ui.getSpeciesTabFrequencyEditor().getLengthStepCaracteristicComboBox();
}
if (tuttiUi != null) {
@@ -315,9 +318,6 @@
if (titlePanel != null) {
titlePanel.setTitle(ui.getSpeciesTabFishingOperationReminderLabel().getTitle() + " - " + _(title));
}
- if (component2focus != null) {
- component2focus.requestFocus();
- }
}
}
}
@@ -332,29 +332,27 @@
if (MAIN_CARD.equals(card)) {
registerValidators();
actionPanel.setVisible(true);
+
} else {
actionPanel.setVisible(false);
TuttiUI tuttiUi = null;
JXTitledPanel titlePanel = null;
- Component component2focus = null;
String title = "";
+
if (CREATE_BATCH_CARD.equals(card)) {
tuttiUi = ui.getBenthosTabCreateBatch();
titlePanel = ui.getBenthosTabCreateBatchReminderLabel();
title = n_("tutti.createBenthosBatch.title");
- component2focus = ui.getBenthosTabCreateBatch().getSpeciesComboBox();
} else if (SPLIT_BATCH_CARD.equals(card)) {
tuttiUi = ui.getBenthosTabSplitBatch();
titlePanel = ui.getBenthosTabSplitBatchReminderLabel();
title = n_("tutti.splitBenthosBatch.title");
- component2focus = ui.getBenthosTabSplitBatch().getCategoryComboBox();
} else if (EDIT_FREQUENCY_CARD.equals(card)) {
tuttiUi = ui.getBenthosTabFrequencyEditor();
titlePanel = ui.getBenthosTabFrequencyEditorReminderLabel();
title = n_("tutti.editBenthosFrequencies.title");
- component2focus = ui.getBenthosTabFrequencyEditor().getLengthStepCaracteristicComboBox();
}
if (tuttiUi != null) {
@@ -363,9 +361,6 @@
if (titlePanel != null) {
titlePanel.setTitle(ui.getBenthosTabFishingOperationReminderLabel().getTitle() + " - " + _(title));
}
- if (component2focus != null) {
- component2focus.requestFocus();
- }
}
}
}
@@ -380,17 +375,17 @@
if (MAIN_CARD.equals(card)) {
registerValidators();
actionPanel.setVisible(true);
+
} else {
actionPanel.setVisible(false);
TuttiUI tuttiUi = null;
JXTitledPanel titlePanel = null;
- Component component2focus = null;
String title = "";
+
if (CREATE_BATCH_CARD.equals(card)) {
tuttiUi = ui.getMarineLitterTabCreateBatch();
titlePanel = ui.getMarineLitterTabCreateBatchReminderLabel();
title = n_("tutti.createMarineLitterBatch.title");
- component2focus = ui.getMarineLitterTabCreateBatch().getMarineLitterCategoryComboBox();
}
if (tuttiUi != null) {
@@ -399,9 +394,6 @@
if (titlePanel != null) {
titlePanel.setTitle(ui.getMarineLitterTabCreateBatchReminderLabel().getTitle() + " - " + _(title));
}
- if (component2focus != null) {
- component2focus.requestFocus();
- }
}
}
}
@@ -416,22 +408,21 @@
if (MAIN_CARD.equals(card)) {
registerValidators();
actionPanel.setVisible(true);
+
} else {
actionPanel.setVisible(false);
TuttiUI tuttiUi = null;
JXTitledPanel titlePanel = null;
- Component component2focus = null;
String title = "";
+
if (CREATE_BATCH_CARD.equals(card)) {
tuttiUi = ui.getIndividualObservationTabCreateBatch();
titlePanel = ui.getIndividualObservationTabCreateBatchReminderLabel();
title = n_("tutti.createIndividualObservationBatch.title");
- component2focus = ui.getIndividualObservationTabCreateBatch().getIndividualObservationSpeciesComboBox();
} else if (EDIT_CARACTERISTICS_CARD.equals(card)) {
titlePanel = ui.getIndividualObservationTabFishingOperationReminderLabel();
title = n_("tutti.editCaracteristics.title");
- component2focus = ui.getCaracteristicMapEditor().getNewRowKey();
}
if (tuttiUi != null) {
@@ -440,9 +431,6 @@
if (titlePanel != null) {
titlePanel.setTitle(ui.getIndividualObservationTabCreateBatchReminderLabel().getTitle() + " - " + _(title));
}
- if (component2focus != null) {
- component2focus.requestFocus();
- }
}
}
}
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-04-10 15:17:14 UTC (rev 761)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java 2013-04-10 16:53:38 UTC (rev 762)
@@ -45,6 +45,7 @@
import org.jdesktop.swingx.table.DefaultTableColumnModelExt;
import org.nuiton.util.decorator.Decorator;
+import javax.swing.*;
import java.util.List;
/**
@@ -264,6 +265,11 @@
}
@Override
+ protected JComponent getComponentToFocus() {
+ return getUI().getTable();
+ }
+
+ @Override
public void onCloseUI() {
if (log.isDebugEnabled()) {
log.debug("closing: " + ui);
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-04-10 15:17:14 UTC (rev 761)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java 2013-04-10 16:53:38 UTC (rev 762)
@@ -76,9 +76,7 @@
import org.jdesktop.swingx.table.DefaultTableColumnModelExt;
import org.nuiton.util.decorator.Decorator;
-import javax.swing.JOptionPane;
-import javax.swing.RowFilter;
-import javax.swing.UIManager;
+import javax.swing.*;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumnModel;
import java.awt.Color;
@@ -631,6 +629,11 @@
}
@Override
+ protected JComponent getComponentToFocus() {
+ return getUI().getTable();
+ }
+
+ @Override
public void onCloseUI() {
if (log.isDebugEnabled()) {
log.debug("Closing: " + ui);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIHandler.java 2013-04-10 15:17:14 UTC (rev 761)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIHandler.java 2013-04-10 16:53:38 UTC (rev 762)
@@ -45,6 +45,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import javax.swing.*;
import java.awt.Dimension;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
@@ -147,6 +148,11 @@
}
@Override
+ protected JComponent getComponentToFocus() {
+ return getUI().getSpeciesComboBox();
+ }
+
+ @Override
public void onCloseUI() {
if (log.isDebugEnabled()) {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIHandler.java 2013-04-10 15:17:14 UTC (rev 761)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIHandler.java 2013-04-10 16:53:38 UTC (rev 762)
@@ -49,7 +49,7 @@
import org.jdesktop.swingx.JXTable;
import org.jdesktop.swingx.table.DefaultTableColumnModelExt;
-import javax.swing.JTextField;
+import javax.swing.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.beans.PropertyChangeEvent;
@@ -296,6 +296,11 @@
}
@Override
+ protected JComponent getComponentToFocus() {
+ return getUI().getLengthStepCaracteristicComboBox();
+ }
+
+ @Override
public void onCloseUI() {
if (log.isDebugEnabled()) {
log.debug("closing: " + ui);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUIHandler.java 2013-04-10 15:17:14 UTC (rev 761)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUIHandler.java 2013-04-10 16:53:38 UTC (rev 762)
@@ -46,8 +46,7 @@
import org.jdesktop.swingx.JXTable;
import org.jdesktop.swingx.table.DefaultTableColumnModelExt;
-import javax.swing.DefaultComboBoxModel;
-import javax.swing.JComboBox;
+import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyChangeEvent;
@@ -206,6 +205,11 @@
}
@Override
+ protected JComponent getComponentToFocus() {
+ return getUI().getCategoryComboBox();
+ }
+
+ @Override
public void onCloseUI() {
if (log.isDebugEnabled()) {
log.debug("closing: " + ui);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIHandler.java 2013-04-10 15:17:14 UTC (rev 761)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIHandler.java 2013-04-10 16:53:38 UTC (rev 762)
@@ -38,6 +38,7 @@
import org.jdesktop.swingx.table.DefaultTableColumnModelExt;
import org.nuiton.util.decorator.Decorator;
+import javax.swing.*;
import java.awt.*;
import java.util.Collection;
import java.util.List;
@@ -356,6 +357,11 @@
}
@Override
+ protected JComponent getComponentToFocus() {
+ return getUI().getTable();
+ }
+
+ @Override
public void onCloseUI() {
if (log.isDebugEnabled()) {
log.debug("closing: " + ui);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/caracteristics/CaracteristicMapEditorUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/caracteristics/CaracteristicMapEditorUIHandler.java 2013-04-10 15:17:14 UTC (rev 761)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/caracteristics/CaracteristicMapEditorUIHandler.java 2013-04-10 16:53:38 UTC (rev 762)
@@ -25,6 +25,7 @@
import org.jdesktop.swingx.JXTable;
import org.jdesktop.swingx.table.DefaultTableColumnModelExt;
+import javax.swing.*;
import java.util.List;
import static fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.caracteristics.CaracteristicMapCellComponent.CaracteristicMapCellEditor;
@@ -135,6 +136,11 @@
}
@Override
+ protected JComponent getComponentToFocus() {
+ return getUI().getNewRowKey();
+ }
+
+ @Override
public void onCloseUI() {
if (log.isDebugEnabled()) {
log.debug("closing: " + ui);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUIHandler.java 2013-04-10 15:17:14 UTC (rev 761)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUIHandler.java 2013-04-10 16:53:38 UTC (rev 762)
@@ -17,6 +17,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import javax.swing.*;
import java.awt.*;
import java.util.List;
@@ -65,6 +66,11 @@
}
@Override
+ protected JComponent getComponentToFocus() {
+ return getUI().getIndividualObservationSpeciesComboBox();
+ }
+
+ @Override
public void onCloseUI() {
if (log.isDebugEnabled()) {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIHandler.java 2013-04-10 15:17:14 UTC (rev 761)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIHandler.java 2013-04-10 16:53:38 UTC (rev 762)
@@ -59,6 +59,7 @@
import org.jdesktop.swingx.table.DefaultTableColumnModelExt;
import org.nuiton.util.decorator.Decorator;
+import javax.swing.*;
import java.awt.Color;
import java.awt.Component;
import java.util.Collection;
@@ -369,6 +370,11 @@
}
@Override
+ protected JComponent getComponentToFocus() {
+ return getUI().getTable();
+ }
+
+ @Override
public void onCloseUI() {
if (log.isDebugEnabled()) {
log.debug("closing: " + ui);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUIHandler.java 2013-04-10 15:17:14 UTC (rev 761)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUIHandler.java 2013-04-10 16:53:38 UTC (rev 762)
@@ -42,6 +42,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import javax.swing.*;
import java.awt.Dimension;
import java.util.List;
@@ -96,6 +97,11 @@
}
@Override
+ protected JComponent getComponentToFocus() {
+ return getUI().getMarineLitterCategoryComboBox();
+ }
+
+ @Override
public void onCloseUI() {
if (log.isDebugEnabled()) {
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-04-10 15:17:14 UTC (rev 761)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/plankton/PlanktonBatchUIHandler.java 2013-04-10 16:53:38 UTC (rev 762)
@@ -45,6 +45,7 @@
import org.jdesktop.swingx.table.DefaultTableColumnModelExt;
import org.nuiton.util.decorator.Decorator;
+import javax.swing.*;
import java.util.List;
/**
@@ -270,6 +271,11 @@
}
@Override
+ protected JComponent getComponentToFocus() {
+ return getUI().getTable();
+ }
+
+ @Override
public void onCloseUI() {
if (log.isDebugEnabled()) {
log.debug("closing: " + ui);
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-04-10 15:17:14 UTC (rev 761)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-04-10 16:53:38 UTC (rev 762)
@@ -650,6 +650,11 @@
}
@Override
+ protected JComponent getComponentToFocus() {
+ return getUI().getTable();
+ }
+
+ @Override
public void onCloseUI() {
if (log.isDebugEnabled()) {
log.debug("Closing: " + ui);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIHandler.java 2013-04-10 15:17:14 UTC (rev 761)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIHandler.java 2013-04-10 16:53:38 UTC (rev 762)
@@ -45,6 +45,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import javax.swing.*;
import java.awt.Dimension;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
@@ -147,6 +148,11 @@
}
@Override
+ protected JComponent getComponentToFocus() {
+ return getUI().getSpeciesComboBox();
+ }
+
+ @Override
public void onCloseUI() {
if (log.isDebugEnabled()) {
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-04-10 15:17:14 UTC (rev 761)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java 2013-04-10 16:53:38 UTC (rev 762)
@@ -50,7 +50,7 @@
import org.jdesktop.swingx.JXTable;
import org.jdesktop.swingx.table.DefaultTableColumnModelExt;
-import javax.swing.JTextField;
+import javax.swing.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.beans.PropertyChangeEvent;
@@ -297,6 +297,11 @@
}
@Override
+ protected JComponent getComponentToFocus() {
+ return getUI().getLengthStepCaracteristicComboBox();
+ }
+
+ @Override
public void onCloseUI() {
if (log.isDebugEnabled()) {
log.debug("closing: " + ui);
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-04-10 15:17:14 UTC (rev 761)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java 2013-04-10 16:53:38 UTC (rev 762)
@@ -46,8 +46,7 @@
import org.jdesktop.swingx.JXTable;
import org.jdesktop.swingx.table.DefaultTableColumnModelExt;
-import javax.swing.DefaultComboBoxModel;
-import javax.swing.JComboBox;
+import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyChangeEvent;
@@ -206,6 +205,11 @@
}
@Override
+ protected JComponent getComponentToFocus() {
+ return getUI().getCategoryComboBox();
+ }
+
+ @Override
public void onCloseUI() {
if (log.isDebugEnabled()) {
log.debug("closing: " + ui);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/AbstractCaracteristicTabUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/AbstractCaracteristicTabUIHandler.java 2013-04-10 15:17:14 UTC (rev 761)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/AbstractCaracteristicTabUIHandler.java 2013-04-10 16:53:38 UTC (rev 762)
@@ -42,6 +42,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import javax.swing.*;
import java.util.List;
/**
@@ -133,6 +134,11 @@
}
@Override
+ protected JComponent getComponentToFocus() {
+ return getKeyCombo();
+ }
+
+ @Override
public void onCloseUI() {
if (log.isDebugEnabled()) {
log.debug("closing: " + getUI());
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-04-10 15:17:14 UTC (rev 761)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIHandler.java 2013-04-10 16:53:38 UTC (rev 762)
@@ -33,6 +33,8 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import javax.swing.*;
+
import static org.nuiton.i18n.I18n._;
/**
@@ -119,6 +121,11 @@
}
@Override
+ protected JComponent getComponentToFocus() {
+ return getUI().getNameField();
+ }
+
+ @Override
public void onCloseUI() {
if (log.isDebugEnabled()) {
log.debug("closing: " + ui);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx 2013-04-10 15:17:14 UTC (rev 761)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx 2013-04-10 16:53:38 UTC (rev 762)
@@ -82,7 +82,8 @@
<JMenuItem id='removeBenthosProtocolButton'/>
</JPopupMenu>
- <JTabbedPane constraints='BorderLayout.CENTER'>
+ <JTabbedPane id='tabPanel'
+ constraints='BorderLayout.CENTER'>
<tab title='tutti.editProtocol.tab.info'>
<Table id='protocolInfoForm' fill='both'>
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-04-10 15:17:14 UTC (rev 761)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java 2013-04-10 16:53:38 UTC (rev 762)
@@ -60,9 +60,7 @@
import org.jdesktop.swingx.table.DefaultTableColumnModelExt;
import org.nuiton.util.decorator.Decorator;
-import javax.swing.JComboBox;
-import javax.swing.JTabbedPane;
-import javax.swing.ListSelectionModel;
+import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.event.ListSelectionEvent;
@@ -72,6 +70,9 @@
import javax.swing.table.TableColumnModel;
import java.awt.Component;
import java.awt.Dimension;
+import java.awt.event.ComponentEvent;
+import java.awt.event.HierarchyEvent;
+import java.awt.event.HierarchyListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.Collection;
@@ -476,6 +477,11 @@
dialog = new SelectSpeciesUI(ui);
}
+ @Override
+ protected JComponent getComponentToFocus() {
+ return getUI().getNameField();
+ }
+
public List<EditProtocolSpeciesRowModel> toRows(List<SpeciesProtocol> speciesProtocols) {
BeanFilterableComboBox<Species> speciesComboBox = ui.getSpeciesComboBox();
Preconditions.checkNotNull(speciesComboBox.getData());
@@ -520,6 +526,7 @@
log.debug("closing: " + ui);
}
clearValidators();
+ ui.getTabPanel().setSelectedIndex(0);
}
@Override
@@ -650,9 +657,9 @@
ComboBoxCellEditor editor = new ComboBoxCellEditor(comboBox);
addColumnToModel(model,
- editor,
- newTableCellRender(decorator),
- EditProtocolSpeciesTableModel.LENGTH_STEP_PMFM_ID);
+ editor,
+ newTableCellRender(decorator),
+ EditProtocolSpeciesTableModel.LENGTH_STEP_PMFM_ID);
}
protected void initTable(JXTable table) {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ManageTemporaryReferentialUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ManageTemporaryReferentialUIHandler.java 2013-04-10 15:17:14 UTC (rev 761)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ManageTemporaryReferentialUIHandler.java 2013-04-10 16:53:38 UTC (rev 762)
@@ -68,6 +68,11 @@
}
@Override
+ protected JComponent getComponentToFocus() {
+ return null;
+ }
+
+ @Override
public void onCloseUI() {
if (log.isDebugEnabled()) {
log.debug("closing: " + ui);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java 2013-04-10 15:17:14 UTC (rev 761)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java 2013-04-10 16:53:38 UTC (rev 762)
@@ -102,14 +102,7 @@
import java.awt.Font;
import java.awt.Frame;
import java.awt.Point;
-import java.awt.event.ActionEvent;
-import java.awt.event.FocusAdapter;
-import java.awt.event.FocusEvent;
-import java.awt.event.ItemEvent;
-import java.awt.event.KeyEvent;
-import java.awt.event.MouseEvent;
-import java.awt.event.WindowAdapter;
-import java.awt.event.WindowEvent;
+import java.awt.event.*;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.File;
@@ -415,8 +408,22 @@
initScrollPane((JScrollPane) component);
}
}
+
+ ((Component)ui).addHierarchyListener(new HierarchyListener() {
+ @Override
+ public void hierarchyChanged(HierarchyEvent e) {
+ JComponent component = getComponentToFocus();
+ if ((e.getChangeFlags() & HierarchyEvent.SHOWING_CHANGED) > 0
+ && e.getChanged() .isShowing()
+ && component != null) {
+ component.requestFocus();
+ }
+ }
+ });
}
+ protected abstract JComponent getComponentToFocus();
+
protected void initTextField(JTextField jTextField) {
Boolean computed = (Boolean) jTextField.getClientProperty("computed");
if (computed != null && computed) {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/AbstractTuttiAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/AbstractTuttiAction.java 2013-04-10 15:17:14 UTC (rev 761)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/AbstractTuttiAction.java 2013-04-10 16:53:38 UTC (rev 762)
@@ -162,47 +162,4 @@
return getDecorator(object.getClass(), context).toString(object);
}
- //FIXME-TC Is this working ?
- protected void test(final Runnable r) throws InterruptedException {
- SwingUtilities.invokeLater(new Runnable() {
-
- public void run() {
- System.out.println("run");
-// getContext().getActionUI().pause();
- r.run();
-// getContext().getActionUI().resume();
-
- System.out.println("Deblock ?");
- log.info("Deblock ?");
- unblock();
- }
- });
-
- log.info("Block ?");
- System.out.println("Block ?");
- block();
-
- System.out.println("Block !");
- log.info("Block !");
- }
-
- protected void block() {
- try {
- synchronized (this) {
- lock.wait();
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- protected void unblock() {
- try {
- synchronized (this) {
- lock.notifyAll();
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionUIHandler.java 2013-04-10 15:17:14 UTC (rev 761)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionUIHandler.java 2013-04-10 16:53:38 UTC (rev 762)
@@ -33,6 +33,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import javax.swing.*;
import java.awt.Container;
import java.awt.Cursor;
import java.beans.PropertyChangeEvent;
@@ -181,6 +182,11 @@
}
@Override
+ protected JComponent getComponentToFocus() {
+ return null;
+ }
+
+ @Override
public void onCloseUI() {
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/attachment/AttachmentEditorUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/attachment/AttachmentEditorUIHandler.java 2013-04-10 15:17:14 UTC (rev 761)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/attachment/AttachmentEditorUIHandler.java 2013-04-10 16:53:38 UTC (rev 762)
@@ -157,6 +157,11 @@
}
@Override
+ protected JComponent getComponentToFocus() {
+ return getUI().getFile();
+ }
+
+ @Override
public void onCloseUI() {
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/species/SelectSpeciesUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/species/SelectSpeciesUIHandler.java 2013-04-10 15:17:14 UTC (rev 761)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/species/SelectSpeciesUIHandler.java 2013-04-10 16:53:38 UTC (rev 762)
@@ -33,6 +33,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import javax.swing.*;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
@@ -74,6 +75,11 @@
}
@Override
+ protected JComponent getComponentToFocus() {
+ return getUI().getSpeciesCombo();
+ }
+
+ @Override
public void onCloseUI() {
if (log.isDebugEnabled()) {
log.debug("closing: " + ui);
1
0
10 Apr '13
Author: kmorin
Date: 2013-04-10 17:17:14 +0200 (Wed, 10 Apr 2013)
New Revision: 761
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/761
Log:
fixes #2271 [ERGO] - Benthos et Esp?\195?\168ce : raccourci ?\195?\169l?\195?\169vation des poids Alt + E (avec accent)
Modified:
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
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-04-10 15:07:59 UTC (rev 760)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-04-10 15:17:14 UTC (rev 761)
@@ -320,7 +320,7 @@
tutti.editCatchBatch.action.computeWeights.error.incoherentSpeciesTotalSorted=Le poids total Vrac des espèces est inférieur à la somme des poids Vrac triés, inerte trié et vivant non détaillé trié
tutti.editCatchBatch.action.computeWeights.error.incoherentTotal=Le poids total de la capture ne correspond pas à la somme des poids totaux Vrac, Hors Vrac et non triés
tutti.editCatchBatch.action.computeWeights.error.noWeight=Un lot n'a pas de poids
-tutti.editCatchBatch.action.computeWeights.mnemonic=É
+tutti.editCatchBatch.action.computeWeights.mnemonic=p
tutti.editCatchBatch.action.computeWeights.replaceTotalSortedWeight.help=Est-ce bien une valeur observée ?<ul><li><strong>Non</strong> pour remplacer la valeur saisie par le poids calculé</li><li><strong>Oui</strong> pour garder la valeur saisie</li></ul>.
tutti.editCatchBatch.action.computeWeights.replaceTotalSortedWeight.message=Le Poids total VRAC saisi est supérieur de moins de %s%% au Poids total Vrac trié.
tutti.editCatchBatch.action.computeWeights.replaceTotalSortedWeight.title=Poids total VRAC peu différent du Poids total Vrac trié
1
0
10 Apr '13
Author: kmorin
Date: 2013-04-10 17:07:59 +0200 (Wed, 10 Apr 2013)
New Revision: 760
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/760
Log:
fixes #2267 [ESPECE] - Cr?\195?\169ation lot (Alt + C), mettre le focus sur le champ ESPECES DU LOT
Added:
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUIModel-error-validation.xml
Removed:
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/individualObservation/
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/benthos/create/CreateBenthosBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIHandler.java
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-04-10 14:17:43 UTC (rev 759)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java 2013-04-10 15:07:59 UTC (rev 760)
@@ -33,14 +33,14 @@
import fr.ifremer.tutti.ui.swing.util.TuttiUI;
import fr.ifremer.tutti.ui.swing.util.action.TuttiActionHelper;
import jaxx.runtime.swing.CardLayout2Ext;
+import jaxx.runtime.swing.editor.bean.BeanFilterableComboBox;
import jaxx.runtime.validator.swing.SwingValidator;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jdesktop.swingx.JXTitledPanel;
-import javax.swing.JOptionPane;
-import javax.swing.JPanel;
-import javax.swing.JTabbedPane;
+import javax.swing.*;
+import java.awt.*;
import java.util.Set;
import static org.nuiton.i18n.I18n._;
@@ -288,19 +288,25 @@
actionPanel.setVisible(false);
TuttiUI tuttiUi = null;
JXTitledPanel titlePanel = null;
+ Component component2focus = null;
String title = "";
if (CREATE_BATCH_CARD.equals(card)) {
tuttiUi = ui.getSpeciesTabCreateBatch();
titlePanel = ui.getSpeciesTabCreateBatchReminderLabel();
title = n_("tutti.createSpeciesBatch.title");
+ component2focus = ui.getSpeciesTabCreateBatch().getSpeciesComboBox();
+
} else if (SPLIT_BATCH_CARD.equals(card)) {
tuttiUi = ui.getSpeciesTabSplitBatch();
titlePanel = ui.getSpeciesTabSplitBatchReminderLabel();
title = n_("tutti.splitSpeciesBatch.title");
+ component2focus = ui.getSpeciesTabSplitBatch().getCategoryComboBox();
+
} else if (EDIT_FREQUENCY_CARD.equals(card)) {
tuttiUi = ui.getSpeciesTabFrequencyEditor();
titlePanel = ui.getSpeciesTabFrequencyEditorReminderLabel();
title = n_("tutti.editSpeciesFrequencies.title");
+ component2focus = ui.getSpeciesTabFrequencyEditor().getLengthStepCaracteristicComboBox();
}
if (tuttiUi != null) {
@@ -309,6 +315,9 @@
if (titlePanel != null) {
titlePanel.setTitle(ui.getSpeciesTabFishingOperationReminderLabel().getTitle() + " - " + _(title));
}
+ if (component2focus != null) {
+ component2focus.requestFocus();
+ }
}
}
}
@@ -327,19 +336,25 @@
actionPanel.setVisible(false);
TuttiUI tuttiUi = null;
JXTitledPanel titlePanel = null;
+ Component component2focus = null;
String title = "";
if (CREATE_BATCH_CARD.equals(card)) {
tuttiUi = ui.getBenthosTabCreateBatch();
titlePanel = ui.getBenthosTabCreateBatchReminderLabel();
title = n_("tutti.createBenthosBatch.title");
+ component2focus = ui.getBenthosTabCreateBatch().getSpeciesComboBox();
+
} else if (SPLIT_BATCH_CARD.equals(card)) {
tuttiUi = ui.getBenthosTabSplitBatch();
titlePanel = ui.getBenthosTabSplitBatchReminderLabel();
title = n_("tutti.splitBenthosBatch.title");
+ component2focus = ui.getBenthosTabSplitBatch().getCategoryComboBox();
+
} else if (EDIT_FREQUENCY_CARD.equals(card)) {
tuttiUi = ui.getBenthosTabFrequencyEditor();
titlePanel = ui.getBenthosTabFrequencyEditorReminderLabel();
title = n_("tutti.editBenthosFrequencies.title");
+ component2focus = ui.getBenthosTabFrequencyEditor().getLengthStepCaracteristicComboBox();
}
if (tuttiUi != null) {
@@ -348,6 +363,9 @@
if (titlePanel != null) {
titlePanel.setTitle(ui.getBenthosTabFishingOperationReminderLabel().getTitle() + " - " + _(title));
}
+ if (component2focus != null) {
+ component2focus.requestFocus();
+ }
}
}
}
@@ -366,11 +384,13 @@
actionPanel.setVisible(false);
TuttiUI tuttiUi = null;
JXTitledPanel titlePanel = null;
+ Component component2focus = null;
String title = "";
if (CREATE_BATCH_CARD.equals(card)) {
tuttiUi = ui.getMarineLitterTabCreateBatch();
titlePanel = ui.getMarineLitterTabCreateBatchReminderLabel();
title = n_("tutti.createMarineLitterBatch.title");
+ component2focus = ui.getMarineLitterTabCreateBatch().getMarineLitterCategoryComboBox();
}
if (tuttiUi != null) {
@@ -379,6 +399,9 @@
if (titlePanel != null) {
titlePanel.setTitle(ui.getMarineLitterTabCreateBatchReminderLabel().getTitle() + " - " + _(title));
}
+ if (component2focus != null) {
+ component2focus.requestFocus();
+ }
}
}
}
@@ -397,15 +420,18 @@
actionPanel.setVisible(false);
TuttiUI tuttiUi = null;
JXTitledPanel titlePanel = null;
+ Component component2focus = null;
String title = "";
if (CREATE_BATCH_CARD.equals(card)) {
tuttiUi = ui.getIndividualObservationTabCreateBatch();
titlePanel = ui.getIndividualObservationTabCreateBatchReminderLabel();
title = n_("tutti.createIndividualObservationBatch.title");
+ component2focus = ui.getIndividualObservationTabCreateBatch().getIndividualObservationSpeciesComboBox();
} else if (EDIT_CARACTERISTICS_CARD.equals(card)) {
titlePanel = ui.getIndividualObservationTabFishingOperationReminderLabel();
title = n_("tutti.editCaracteristics.title");
+ component2focus = ui.getCaracteristicMapEditor().getNewRowKey();
}
if (tuttiUi != null) {
@@ -414,6 +440,9 @@
if (titlePanel != null) {
titlePanel.setTitle(ui.getIndividualObservationTabCreateBatchReminderLabel().getTitle() + " - " + _(title));
}
+ if (component2focus != null) {
+ component2focus.requestFocus();
+ }
}
}
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIHandler.java 2013-04-10 14:17:43 UTC (rev 759)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIHandler.java 2013-04-10 15:07:59 UTC (rev 760)
@@ -215,7 +215,6 @@
}
model.setAvailableSpecies(speciesToUse);
- ui.getSpeciesComboBox().requestFocus();
}
public void save() {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUIHandler.java 2013-04-10 14:17:43 UTC (rev 759)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUIHandler.java 2013-04-10 15:07:59 UTC (rev 760)
@@ -111,7 +111,6 @@
model.reset();
- ui.getIndividualObservationSpeciesComboBox().requestFocus();
}
public void save() {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUIHandler.java 2013-04-10 14:17:43 UTC (rev 759)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUIHandler.java 2013-04-10 15:07:59 UTC (rev 760)
@@ -141,8 +141,6 @@
ui.getValidator().setBean(model);
model.reset();
-
- ui.getMarineLitterCategoryComboBox().requestFocus();
}
public void save() {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIHandler.java 2013-04-10 14:17:43 UTC (rev 759)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIHandler.java 2013-04-10 15:07:59 UTC (rev 760)
@@ -214,7 +214,6 @@
}
model.setAvailableSpecies(speciesToUse);
- ui.getSpeciesComboBox().requestFocus();
}
public void save() {
Copied: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUIModel-error-validation.xml (from rev 758, trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/individualObservation/create/CreateIndividualObservationBatchUIModel-error-validation.xml)
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUIModel-error-validation.xml (rev 0)
+++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUIModel-error-validation.xml 2013-04-10 15:07:59 UTC (rev 760)
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE validators PUBLIC
+ "-//Apache Struts//XWork Validator 1.0.3//EN"
+ "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
+<validators>
+
+ <field name="species">
+ <field-validator type="required" short-circuit="true">
+ <message>
+ tutti.validator.error.createIndividualObservationBatch.individualObservationSpecies.required
+ </message>
+ </field-validator>
+ </field>
+
+</validators>
\ No newline at end of file
1
0
r759 - trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create
by kmorin@users.forge.codelutin.com 10 Apr '13
by kmorin@users.forge.codelutin.com 10 Apr '13
10 Apr '13
Author: kmorin
Date: 2013-04-10 16:17:43 +0200 (Wed, 10 Apr 2013)
New Revision: 759
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/759
Log:
fixes #2258 [MACRO DECHETS] champs non r?\195?\169initialis?\195?\169s
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUIModel.java
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUIModel.java 2013-04-10 14:16:08 UTC (rev 758)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUIModel.java 2013-04-10 14:17:43 UTC (rev 759)
@@ -87,8 +87,8 @@
}
public void reset() {
- editObject.setMarineLitterCategory(null);
- editObject.setMarineLitterSizeCategory(null);
- editObject.setNumber(null);
+ setMarineLitterCategory(null);
+ setMarineLitterSizeCategory(null);
+ setNumber(null);
}
}
\ No newline at end of file
1
0
10 Apr '13
Author: kmorin
Date: 2013-04-10 16:16:08 +0200 (Wed, 10 Apr 2013)
New Revision: 758
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/758
Log:
refs #1867 [CAPTURE] - Observations individuelles
Added:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchRowModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchTableModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/RemoveIndividualObservationBatchAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/caracteristics/
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/caracteristics/CaracteristicMapCellComponent.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/caracteristics/CaracteristicMapEditorRowModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/caracteristics/CaracteristicMapEditorTableModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/caracteristics/CaracteristicMapEditorUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/caracteristics/CaracteristicMapEditorUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/caracteristics/CaracteristicMapEditorUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/caracteristics/CaracteristicMapEditorUIModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUIModel.java
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/individualObservation/
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/individualObservation/create/
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/individualObservation/create/CreateIndividualObservationBatchUIModel-error-validation.xml
Modified:
trunk/pom.xml
trunk/tutti-persistence/src/main/xmi/tutti-persistence.zargo
trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties
trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-04-08 16:07:19 UTC (rev 757)
+++ trunk/pom.xml 2013-04-10 14:16:08 UTC (rev 758)
@@ -132,7 +132,7 @@
<eugenePluginVersion>2.6.2</eugenePluginVersion>
<hibernateVersion>3.6.10.Final</hibernateVersion>
- <jaxxVersion>2.5.16</jaxxVersion>
+ <jaxxVersion>2.5.17-SNAPSHOT</jaxxVersion>
<swingXVersion>1.6.4</swingXVersion>
<xworkVersion>2.3.7</xworkVersion>
Modified: trunk/tutti-persistence/src/main/xmi/tutti-persistence.zargo
===================================================================
(Binary files differ)
Modified: trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties 2013-04-08 16:07:19 UTC (rev 757)
+++ trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties 2013-04-10 14:16:08 UTC (rev 758)
@@ -1,28 +1,5 @@
-###
-# #%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%
-###
#Generated by org.nuiton.jaxx.plugin.GenerateHelpIdsMojo
-#Fri Mar 29 10:09:57 CET 2013
+#Tue Apr 09 12:35:56 CEST 2013
tutti.createBenthosBatch.action.addSpecies.help=createBenthosBatch.html\#actions
tutti.createBenthosBatch.action.cancel.help=createBenthosBatch.html\#actions
tutti.createBenthosBatch.action.save.help=createBenthosBatch.html\#actions
@@ -30,6 +7,11 @@
tutti.createBenthosBatch.field.sortedUnsortedCategory.help=createBenthosBatch.html\#fields
tutti.createBenthosBatch.field.species.help=createBenthosBatch.html\#fields
tutti.createBenthosBatch.help=createBenthosBatch.html
+tutti.createIndividualObservationBatch.field.individualObservationLengthStepCaracteristic.help=
+tutti.createIndividualObservationBatch.field.individualObservationSize.help=
+tutti.createIndividualObservationBatch.field.individualObservationSpecies.help=
+tutti.createIndividualObservationBatch.field.individualObservationWeight.help=
+tutti.createIndividualObservationBatch.help=
tutti.createMarineLitterBatch.action.cancel.help=
tutti.createMarineLitterBatch.action.save.help=
tutti.createMarineLitterBatch.field.marineLitterCategory.help=
@@ -147,6 +129,8 @@
tutti.editFishingOperation.field.trawlDistance.help=editFishingOperation.html\#fields
tutti.editFishingOperation.field.vessel.help=editFishingOperation.html\#fields
tutti.editFishingOperation.help=editFishingOperation.html
+tutti.editIndividualObservationBatch.action.createBatch.help=
+tutti.editIndividualObservationBatch.action.removeBatch.help=
tutti.editMarineLitterBatch.action.createBatch.help=
tutti.editMarineLitterBatch.action.removeBatch.help=
tutti.editMarineLitterBatch.field.marineLitterTotalWeight.help=
@@ -272,6 +256,7 @@
tutti.splitSpeciesBatch.help=splitSpeciesBatch.html
tuttihelp.config.help=config.help
tuttihelp.editAccidentalBatch.help=editAccidentalBatch.html
+tuttihelp.editIndividualObservationBatch.help=
tuttihelp.editMacroWasteBatch.help=
tuttihelp.editMarineLitterBatch.help=editMarineLitterBatch.html
tuttihelp.editPlanktonBatch.help=editPlanktonBatch.html
Modified: trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties 2013-04-08 16:07:19 UTC (rev 757)
+++ trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties 2013-04-10 14:16:08 UTC (rev 758)
@@ -1,28 +1,5 @@
-###
-# #%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%
-###
#Generated by org.nuiton.jaxx.plugin.GenerateHelpIdsMojo
-#Fri Mar 29 10:09:57 CET 2013
+#Tue Apr 09 12:35:56 CEST 2013
tutti.createBenthosBatch.action.addSpecies.help=createBenthosBatch.html\#actions
tutti.createBenthosBatch.action.cancel.help=createBenthosBatch.html\#actions
tutti.createBenthosBatch.action.save.help=createBenthosBatch.html\#actions
@@ -30,6 +7,11 @@
tutti.createBenthosBatch.field.sortedUnsortedCategory.help=createBenthosBatch.html\#fields
tutti.createBenthosBatch.field.species.help=createBenthosBatch.html\#fields
tutti.createBenthosBatch.help=createBenthosBatch.html
+tutti.createIndividualObservationBatch.field.individualObservationLengthStepCaracteristic.help=
+tutti.createIndividualObservationBatch.field.individualObservationSize.help=
+tutti.createIndividualObservationBatch.field.individualObservationSpecies.help=
+tutti.createIndividualObservationBatch.field.individualObservationWeight.help=
+tutti.createIndividualObservationBatch.help=
tutti.createMarineLitterBatch.action.cancel.help=
tutti.createMarineLitterBatch.action.save.help=
tutti.createMarineLitterBatch.field.marineLitterCategory.help=
@@ -156,6 +138,8 @@
tutti.editFishingOperation.field.trawlDistance.help=editFishingOperation.html\#fields
tutti.editFishingOperation.field.vessel.help=editFishingOperation.html\#fields
tutti.editFishingOperation.help=editFishingOperation.html
+tutti.editIndividualObservationBatch.action.createBatch.help=
+tutti.editIndividualObservationBatch.action.removeBatch.help=
tutti.editMarineLitterBatch.action.createBatch.help=
tutti.editMarineLitterBatch.action.removeBatch.help=
tutti.editMarineLitterBatch.field.marineLitterTotalWeight.help=
@@ -281,6 +265,7 @@
tutti.splitSpeciesBatch.help=splitSpeciesBatch.html
tuttihelp.config.help=config.help
tuttihelp.editAccidentalBatch.help=editAccidentalBatch.html
+tuttihelp.editIndividualObservationBatch.help=
tuttihelp.editMacroWasteBatch.help=
tuttihelp.editMarineLitterBatch.help=editMarineLitterBatch.html
tuttihelp.editPlanktonBatch.help=editPlanktonBatch.html
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java 2013-04-08 16:07:19 UTC (rev 757)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java 2013-04-10 14:16:08 UTC (rev 758)
@@ -560,6 +560,7 @@
ui.getSpeciesTabFishingOperationReminderLabel().setTitle(fishingOperationText);
ui.getBenthosTabFishingOperationReminderLabel().setTitle(fishingOperationText);
ui.getMarineLitterTabFishingOperationReminderLabel().setTitle(fishingOperationText);
+ ui.getIndividualObservationTabFishingOperationReminderLabel().setTitle(fishingOperationText);
// ui.getPlanktonTabFishingOperationReminderLabel().setTitle(fishingOperationText);
// ui.getAccidentalTabFishingOperationReminderLabel().setTitle(fishingOperationText);
@@ -570,6 +571,7 @@
ui.getSpeciesTabContent().getHandler().selectFishingOperation(batch == null ? null : bean);
ui.getBenthosTabContent().getHandler().selectFishingOperation(batch == null ? null : bean);
ui.getMarineLitterTabContent().getHandler().selectFishingOperation(batch == null ? null : bean);
+ ui.getIndividualObservationTabContent().getHandler().selectFishingOperation(batch == null ? null : bean);
// ui.getPlanktonTabContent().getHandler().selectFishingOperation(bean);
// ui.getAccidentalTabContent().getHandler().selectFishingOperation(bean);
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.css 2013-04-08 16:07:19 UTC (rev 757)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.css 2013-04-10 14:16:08 UTC (rev 758)
@@ -302,10 +302,14 @@
enabled: {false};
}
-#observationIndividuelTab {
- enabled: {false};
+#individualObservationTabPanel {
+ layout:{individualObservationTabPanelLayout};
}
+#individualObservationTable {
+ border: {BorderFactory.createTitledBorder(_("tutti.editCatchBatch.legend.individualObservation"))};
+}
+
#importPupitriButton {
actionIcon: pupitri-import;
text: "tutti.editCatchBatch.action.importPupitri";
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx 2013-04-08 16:07:19 UTC (rev 757)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx 2013-04-10 14:16:08 UTC (rev 758)
@@ -36,6 +36,9 @@
fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.create.CreateBenthosBatchUI
fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.split.SplitBenthosBatchUI
fr.ifremer.tutti.ui.swing.content.operation.catches.marinelitter.MarineLitterBatchUI
+ fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchUI
+ fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.create.CreateIndividualObservationBatchUI
+ fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.caracteristics.CaracteristicMapEditorUI
fr.ifremer.tutti.ui.swing.content.operation.catches.plankton.PlanktonBatchUI
fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchUI
fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyUI
@@ -100,6 +103,9 @@
<CardLayout2Ext id='marineLitterTabPanelLayout'
constructorParams='this, "marineLitterTabPanel"'/>
+ <CardLayout2Ext id='individualObservationTabPanelLayout'
+ constructorParams='this, "individualObservationTabPanel"'/>
+
<TuttiHelpBroker id='broker' constructorParams='"tutti.editCatchBatch.help"'/>
<JToolBar id='catchesCaracteristicsTabToolBar'>
@@ -372,11 +378,25 @@
<AccidentalBatchUI id='accidentalTabContent' constructorParams='this'/>
</JXTitledPanel-->
</tab>
- <tab id='observationIndividuelTab'
- title='tutti.label.tab.observationIndividuel'>
- <!--JXTitledPanel id='observationTabFishingOperationReminderLabel'>
- <JLabel text='tutti.to.be.done' horizontalAlignment='{JLabel.CENTER}'/>
- </JXTitledPanel-->
+ <tab id='individualObservationTab'
+ title='tutti.label.tab.individualObservation'>
+ <JPanel id='individualObservationTabPanel'>
+ <JXTitledPanel id='individualObservationTabFishingOperationReminderLabel'
+ constraints='EditCatchesUIHandler.MAIN_CARD'>
+ <IndividualObservationBatchUI id='individualObservationTabContent'
+ constructorParams='this'/>
+ </JXTitledPanel>
+ <JXTitledPanel id='individualObservationTabCreateBatchReminderLabel'
+ constraints='EditCatchesUIHandler.CREATE_BATCH_CARD'>
+ <CreateIndividualObservationBatchUI id='individualObservationTabCreateBatch'
+ constructorParams='this'/>
+ </JXTitledPanel>
+ <JXTitledPanel id='CaracteristicMapEditorReminderLabel'
+ constraints='EditCatchesUIHandler.EDIT_CARACTERISTICS_CARD'>
+ <CaracteristicMapEditorUI id='caracteristicMapEditor'
+ constructorParams='individualObservationTabContent'/>
+ </JXTitledPanel>
+ </JPanel>
</tab>
</JTabbedPane>
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-04-08 16:07:19 UTC (rev 757)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java 2013-04-10 14:16:08 UTC (rev 758)
@@ -61,6 +61,8 @@
public static final String EDIT_FREQUENCY_CARD = "editFrequency";
+ public static final String EDIT_CARACTERISTICS_CARD = "caracteristicsCard";
+
public static final String CAROUSSEL_TREMIE_VESSEL = "carousselTremieVessel";
public static final String CLASSIC_VESSEL = "classicVessel";
@@ -381,4 +383,39 @@
}
}
+ public void setIndividualObservationSelectedCard(String card) {
+ JPanel panel = ui.getIndividualObservationTabPanel();
+ CardLayout2Ext layout = (CardLayout2Ext) panel.getLayout();
+ if (!card.equals(layout.getSelected())) {
+ layout.setSelected(card);
+
+ JPanel actionPanel = getUI().getCreateFishingOperationActions();
+ if (MAIN_CARD.equals(card)) {
+ registerValidators();
+ actionPanel.setVisible(true);
+ } else {
+ actionPanel.setVisible(false);
+ TuttiUI tuttiUi = null;
+ JXTitledPanel titlePanel = null;
+ String title = "";
+ if (CREATE_BATCH_CARD.equals(card)) {
+ tuttiUi = ui.getIndividualObservationTabCreateBatch();
+ titlePanel = ui.getIndividualObservationTabCreateBatchReminderLabel();
+ title = n_("tutti.createIndividualObservationBatch.title");
+
+ } else if (EDIT_CARACTERISTICS_CARD.equals(card)) {
+ titlePanel = ui.getIndividualObservationTabFishingOperationReminderLabel();
+ title = n_("tutti.editCaracteristics.title");
+ }
+
+ if (tuttiUi != null) {
+ registerValidators(tuttiUi.getHandler().getValidator());
+ }
+ if (titlePanel != null) {
+ titlePanel.setTitle(ui.getIndividualObservationTabCreateBatchReminderLabel().getTitle() + " - " + _(title));
+ }
+ }
+ }
+ }
+
}
\ No newline at end of file
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchRowModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchRowModel.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchRowModel.java 2013-04-10 14:16:08 UTC (rev 758)
@@ -0,0 +1,218 @@
+package fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation;
+
+import com.google.common.collect.Lists;
+import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
+import fr.ifremer.tutti.persistence.entities.TuttiBeanFactory;
+import fr.ifremer.tutti.persistence.entities.data.*;
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
+import fr.ifremer.tutti.persistence.entities.referential.Species;
+import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel;
+import fr.ifremer.tutti.ui.swing.util.attachment.AttachmentModelAware;
+import org.nuiton.util.beans.Binder;
+import org.nuiton.util.beans.BinderFactory;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * @author kmorin <kmorin(a)codelutin.com>
+ * @since 1.4
+ */
+public class IndividualObservationBatchRowModel extends AbstractTuttiBeanUIModel<IndividualObservationBatch, IndividualObservationBatchRowModel>
+ implements AttachmentModelAware, IndividualObservationBatch {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Delegate edit object.
+ *
+ * @since 1.3
+ */
+ protected final IndividualObservationBatch editObject =
+ TuttiBeanFactory.newIndividualObservationBatch();
+
+ /**
+ * Attachments (should never be null).
+ *
+ * @since 0.2
+ */
+ protected final List<Attachment> attachment = Lists.newArrayList();
+
+ protected static final Binder<IndividualObservationBatch, IndividualObservationBatchRowModel> fromBeanBinder =
+ BinderFactory.newBinder(IndividualObservationBatch.class,
+ IndividualObservationBatchRowModel.class);
+
+ protected static final Binder<IndividualObservationBatchRowModel, IndividualObservationBatch> toBeanBinder =
+ BinderFactory.newBinder(IndividualObservationBatchRowModel.class,
+ IndividualObservationBatch.class);
+
+ public IndividualObservationBatchRowModel() {
+ super(IndividualObservationBatch.class, fromBeanBinder, toBeanBinder);
+ }
+
+ public IndividualObservationBatchRowModel(IndividualObservationBatch aBatch,
+ List<Attachment> attachments) {
+ this();
+ fromBean(aBatch);
+ this.attachment.addAll(attachments);
+ }
+
+ @Override
+ protected IndividualObservationBatch newEntity() {
+ return TuttiBeanFactory.newIndividualObservationBatch();
+ }
+
+ //------------------------------------------------------------------------//
+ //-- MarineLitterBatch --//
+ //------------------------------------------------------------------------//
+
+ @Override
+ public FishingOperation getFishingOperation() {
+ return editObject.getFishingOperation();
+ }
+
+ @Override
+ public void setFishingOperation(FishingOperation fishingOperation) {
+ editObject.setFishingOperation(fishingOperation);
+ }
+
+ @Override
+ public Float getWeight() {
+ return editObject.getWeight();
+ }
+
+ @Override
+ public void setWeight(Float weight) {
+ Object oldValue = getWeight();
+ editObject.setWeight(weight);
+ firePropertyChange(PROPERTY_WEIGHT, oldValue, weight);
+ }
+
+ @Override
+ public Species getSpecies() {
+ return editObject.getSpecies();
+ }
+
+ @Override
+ public void setSpecies(Species species) {
+ Object oldValue = getSpecies();
+ editObject.setSpecies(species);
+ firePropertyChange(PROPERTY_SPECIES, oldValue, species);
+ }
+
+ @Override
+ public Float getSize() {
+ return editObject.getSize();
+ }
+
+ @Override
+ public void setSize(Float size) {
+ Object oldValue = getSize();
+ editObject.setSize(size);
+ firePropertyChange(PROPERTY_SIZE, oldValue, size);
+ }
+
+ @Override
+ public Caracteristic getLengthStepCaracteristic() {
+ return editObject.getLengthStepCaracteristic();
+ }
+
+ @Override
+ public void setLengthStepCaracteristic(Caracteristic lengthStepCaracteristic) {
+ Object oldValue = getLengthStepCaracteristic();
+ editObject.setLengthStepCaracteristic(lengthStepCaracteristic);
+ firePropertyChange(PROPERTY_LENGTH_STEP_CARACTERISTIC, oldValue, lengthStepCaracteristic);
+ }
+
+ @Override
+ public CaracteristicMap getCaracteristics() {
+ return editObject.getCaracteristics();
+ }
+
+ @Override
+ public void setCaracteristics(CaracteristicMap caracteristics) {
+ Object oldValue = getCaracteristics();
+ editObject.setCaracteristics(caracteristics);
+ firePropertyChange(PROPERTY_CARACTERISTICS, oldValue, caracteristics);
+ }
+
+ @Override
+ public String getSamplingCode() {
+ return editObject.getSamplingCode();
+ }
+
+ @Override
+ public void setSamplingCode(String samplingCode) {
+ Object oldValue = getSamplingCode();
+ editObject.setSamplingCode(samplingCode);
+ firePropertyChange(PROPERTY_SAMPLING_CODE, oldValue, samplingCode);
+ }
+
+ @Override
+ public Integer getCalcifiedPieceSamplingCode() {
+ return editObject.getCalcifiedPieceSamplingCode();
+ }
+
+ @Override
+ public void setCalcifiedPieceSamplingCode(Integer calcifiedPieceSamplingCode) {
+ Object oldValue = getCalcifiedPieceSamplingCode();
+ editObject.setCalcifiedPieceSamplingCode(calcifiedPieceSamplingCode);
+ firePropertyChange(PROPERTY_CALCIFIED_PIECE_SAMPLING_CODE, oldValue, calcifiedPieceSamplingCode);
+ }
+
+ @Override
+ public String getComment() {
+ return editObject.getComment();
+ }
+
+ @Override
+ public void setComment(String comment) {
+ Object oldValue = getComment();
+ editObject.setComment(comment);
+ firePropertyChange(PROPERTY_COMMENT, oldValue, comment);
+ }
+
+ //------------------------------------------------------------------------//
+ //-- AttachmentModelAware --//
+ //------------------------------------------------------------------------//
+
+ @Override
+ public AttachementObjectTypeEnum getObjectType() {
+ return AttachementObjectTypeEnum.SAMPLE;
+ }
+
+ @Override
+ public String getObjectId() {
+ return getId();
+ }
+
+ @Override
+ public List<Attachment> getAttachment() {
+ return attachment;
+ }
+
+ @Override
+ public void addAllAttachment(Collection<Attachment> attachments) {
+ this.attachment.addAll(attachments);
+ firePropertyChange(PROPERTY_ATTACHMENT, null, getAttachment());
+ }
+
+ @Override
+ public void addAttachment(Attachment attachment) {
+ this.attachment.add(attachment);
+ firePropertyChange(PROPERTY_ATTACHMENT, null, getAttachment());
+ }
+
+ @Override
+ public void removeAllAttachment(Collection<Attachment> attachments) {
+ this.attachment.removeAll(attachments);
+ firePropertyChange(PROPERTY_ATTACHMENT, null, getAttachment());
+ }
+
+ @Override
+ public void removeAttachment(Attachment attachment) {
+ this.attachment.remove(attachment);
+ firePropertyChange(PROPERTY_ATTACHMENT, null, getAttachment());
+ }
+}
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchTableModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchTableModel.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchTableModel.java 2013-04-10 14:16:08 UTC (rev 758)
@@ -0,0 +1,76 @@
+package fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation;
+
+import fr.ifremer.tutti.ui.swing.content.operation.catches.marinelitter.MarineLitterBatchRowModel;
+import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableModel;
+import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier;
+import org.jdesktop.swingx.table.TableColumnModelExt;
+
+import static org.nuiton.i18n.I18n.n_;
+
+/**
+ * @author kmorin <kmorin(a)codelutin.com>
+ */
+public class IndividualObservationBatchTableModel extends AbstractTuttiTableModel<IndividualObservationBatchRowModel> {
+
+ private static final long serialVersionUID = 1L;
+
+ public static final ColumnIdentifier<IndividualObservationBatchRowModel> SPECIES = ColumnIdentifier.newId(
+ IndividualObservationBatchRowModel.PROPERTY_SPECIES,
+ n_("tutti.editIndividualObservationBatch.table.header.species"),
+ n_("tutti.editIndividualObservationBatch.table.header.species.tip"));
+
+ public static final ColumnIdentifier<IndividualObservationBatchRowModel> WEIGHT = ColumnIdentifier.newId(
+ IndividualObservationBatchRowModel.PROPERTY_WEIGHT,
+ n_("tutti.editIndividualObservationBatch.table.header.weight"),
+ n_("tutti.editIndividualObservationBatch.table.header.weight.tip"));
+
+ public static final ColumnIdentifier<IndividualObservationBatchRowModel> SIZE = ColumnIdentifier.newId(
+ IndividualObservationBatchRowModel.PROPERTY_SIZE,
+ n_("tutti.editIndividualObservationBatch.table.header.size"),
+ n_("tutti.editIndividualObservationBatch.table.header.size.tip"));
+
+ public static final ColumnIdentifier<IndividualObservationBatchRowModel> LENGTH_STEP_CARACTERISTIC = ColumnIdentifier.newId(
+ IndividualObservationBatchRowModel.PROPERTY_LENGTH_STEP_CARACTERISTIC,
+ n_("tutti.editIndividualObservationBatch.table.header.lengthStepCaracteristic"),
+ n_("tutti.editIndividualObservationBatch.table.header.lengthStepCaracteristic.tip"));
+
+ public static final ColumnIdentifier<IndividualObservationBatchRowModel> OTHER_CARACTERISTICS = ColumnIdentifier.newId(
+ IndividualObservationBatchRowModel.PROPERTY_CARACTERISTICS,
+ n_("tutti.editIndividualObservationBatch.table.header.otherCaracteristics"),
+ n_("tutti.editIndividualObservationBatch.table.header.otherCaracteristics.tip"));
+
+ public static final ColumnIdentifier<IndividualObservationBatchRowModel> CALCIFIED_PIECE_SAMPLING_CODE = ColumnIdentifier.newId(
+ IndividualObservationBatchRowModel.PROPERTY_CALCIFIED_PIECE_SAMPLING_CODE,
+ n_("tutti.editIndividualObservationBatch.table.header.calcifiedPieceSamplingCode"),
+ n_("tutti.editIndividualObservationBatch.table.header.calcifiedPieceSamplingCode.tip"));
+
+ public static final ColumnIdentifier<IndividualObservationBatchRowModel> SAMPLING_CODE = ColumnIdentifier.newId(
+ IndividualObservationBatchRowModel.PROPERTY_SAMPLING_CODE,
+ n_("tutti.editIndividualObservationBatch.table.header.samplingCode"),
+ n_("tutti.editIndividualObservationBatch.table.header.samplingCode.tip"));
+
+ public static final ColumnIdentifier<IndividualObservationBatchRowModel> COMMENT = ColumnIdentifier.newId(
+ IndividualObservationBatchRowModel.PROPERTY_COMMENT,
+ n_("tutti.editIndividualObservationBatch.table.header.comment"),
+ n_("tutti.editIndividualObservationBatch.table.header.comment.tip"));
+
+ public static final ColumnIdentifier<IndividualObservationBatchRowModel> ATTACHMENT = ColumnIdentifier.newReadOnlyId(
+ IndividualObservationBatchRowModel.PROPERTY_ATTACHMENT,
+ n_("tutti.editIndividualObservationBatch.table.header.file"),
+ n_("tutti.editIndividualObservationBatch.table.header.file.tip"));
+
+ public IndividualObservationBatchTableModel(TableColumnModelExt columnModel) {
+ super(columnModel, false, false);
+
+ setNoneEditableCols();
+ }
+
+ @Override
+ public IndividualObservationBatchRowModel createNewRow() {
+ IndividualObservationBatchRowModel result = new IndividualObservationBatchRowModel();
+
+ // by default empty row is not valid
+ result.setValid(false);
+ return result;
+ }
+}
Copied: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUI.css (from rev 757, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUI.css)
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUI.css (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUI.css 2013-04-10 14:16:08 UTC (rev 758)
@@ -0,0 +1,66 @@
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 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%
+ */
+
+#editIndividualObservationBatchTopPanel {
+ _help: {"tuttihelp.editIndividualObservationBatch.help"};
+}
+
+#individualObservationBatchTabToolBar {
+ floatable: false;
+ opaque: false;
+ borderPainted: false;
+}
+
+#individualObservationBatchAttachmentsButton {
+ enabled: {model.getObjectId() != null};
+}
+
+#tablePopup {
+ label: "tutti.editIndividualObservationBatch.title.batchActions";
+}
+
+#table {
+ selectionMode: {ListSelectionModel.SINGLE_SELECTION};
+ selectionBackground: {null};
+ selectionForeground: {Color.BLACK};
+ sortable: false;
+}
+
+#createIndividualObservationBatchButton {
+ actionIcon: batch-create;
+ text: "tutti.editIndividualObservationBatch.action.createBatch";
+ toolTipText: "tutti.editIndividualObservationBatch.action.createBatch.tip";
+ i18nMnemonic: "tutti.editIndividualObservationBatch.action.createBatch.mnemonic";
+ _help: {"tutti.editIndividualObservationBatch.action.createBatch.help"};
+}
+
+#removeIndividualObservationBatchMenu {
+ actionIcon: batch-delete;
+ text: "tutti.editIndividualObservationBatch.action.removeBatch";
+ toolTipText: "tutti.editIndividualObservationBatch.action.removeBatch.tip";
+ i18nMnemonic: "tutti.editIndividualObservationBatch.action.removeBatch.mnemonic";
+ _tuttiAction: {RemoveIndividualObservationBatchAction.class};
+ enabled: {model.isRemoveBatchEnabled()};
+ _help: {"tutti.editIndividualObservationBatch.action.removeBatch.help"};
+}
\ No newline at end of file
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUI.jaxx (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUI.jaxx 2013-04-10 14:16:08 UTC (rev 758)
@@ -0,0 +1,78 @@
+
+<JPanel id='editIndividualObservationBatchTopPanel' layout='{new BorderLayout()}'
+ decorator='help'
+ implements='fr.ifremer.tutti.ui.swing.util.TuttiUI<IndividualObservationBatchUIModel, IndividualObservationBatchUIHandler>'>
+
+ <import>
+ fr.ifremer.tutti.ui.swing.TuttiHelpBroker
+ fr.ifremer.tutti.ui.swing.TuttiUIContext
+ fr.ifremer.tutti.ui.swing.util.TuttiUI
+ fr.ifremer.tutti.ui.swing.util.attachment.ButtonAttachment
+
+ jaxx.runtime.swing.editor.NumberEditor
+
+ org.jdesktop.swingx.JXTable
+
+ javax.swing.ListSelectionModel
+
+ java.awt.Color
+
+ static org.nuiton.i18n.I18n._
+ </import>
+
+ <script><![CDATA[
+
+public IndividualObservationBatchUI(TuttiUI<?,?> parentUI) {
+ JAXXUtil.initContext(this, parentUI);
+ IndividualObservationBatchUIHandler handler = new IndividualObservationBatchUIHandler(parentUI, this);
+ setContextValue(handler);
+ handler.beforeInitUI();
+}
+
+protected void $afterCompleteSetup() { handler.afterInitUI(); }
+ ]]></script>
+
+ <IndividualObservationBatchUIHandler id='handler'
+ initializer='getContextValue(IndividualObservationBatchUIHandler.class)'/>
+
+ <IndividualObservationBatchUIModel id='model'
+ initializer='getContextValue(IndividualObservationBatchUIModel.class)'/>
+
+ <BeanValidator id='validator' bean='model'
+ uiClass='jaxx.runtime.validator.swing.ui.ImageValidationUI'>
+ </BeanValidator>
+
+ <TuttiHelpBroker id='broker'
+ constructorParams='"tuttihelp.editIndividualObservationBatch.help"'/>
+
+ <JToolBar id='individualObservationBatchTabToolBar'>
+ <ButtonAttachment id='individualObservationBatchAttachmentsButton'
+ constructorParams='getHandler().getContext(), getModel()'/>
+ </JToolBar>
+
+ <JPopupMenu id='tablePopup'>
+ <JMenuItem id='removeIndividualObservationBatchMenu'/>
+ </JPopupMenu>
+
+ <Table id='form' fill='both' constraints='BorderLayout.NORTH'>
+
+ <!-- Toolbar / Filter -->
+ <row>
+ <cell columns="2">
+ <JPanel id='tableToolbar' layout='{new BorderLayout()}'>
+ <JPanel layout='{new GridLayout(1,0)}'
+ constraints='BorderLayout.WEST'>
+ <JButton id='createIndividualObservationBatchButton'
+ onActionPerformed='handler.createBatch()'/>
+ </JPanel>
+ </JPanel>
+ </cell>
+ </row>
+ </Table>
+
+ <JScrollPane id='tableScrollPane' constraints='BorderLayout.CENTER'>
+ <JXTable id='table'
+ onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'/>
+ </JScrollPane>
+
+</JPanel>
\ No newline at end of file
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIHandler.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIHandler.java 2013-04-10 14:16:08 UTC (rev 758)
@@ -0,0 +1,438 @@
+package fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation;
+
+import com.google.common.collect.Lists;
+import fr.ifremer.tutti.PropagatePropertyChangeListener;
+import fr.ifremer.tutti.persistence.entities.TuttiEntities;
+import fr.ifremer.tutti.persistence.entities.data.Attachment;
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch;
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.persistence.entities.referential.Species;
+import fr.ifremer.tutti.service.DecoratorService;
+import fr.ifremer.tutti.ui.swing.content.operation.AbstractTuttiBatchTableUIHandler;
+import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI;
+import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIHandler;
+import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel;
+import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.caracteristics.CaracteristicMapCellComponent;
+import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.create.CreateIndividualObservationBatchUI;
+import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.create.CreateIndividualObservationBatchUIModel;
+import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchTableModel;
+import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor;
+import fr.ifremer.tutti.ui.swing.util.TuttiUI;
+import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
+import fr.ifremer.tutti.ui.swing.util.attachment.AttachmentCellEditor;
+import fr.ifremer.tutti.ui.swing.util.attachment.AttachmentCellRenderer;
+import fr.ifremer.tutti.ui.swing.util.comment.CommentCellEditor;
+import fr.ifremer.tutti.ui.swing.util.comment.CommentCellRenderer;
+import fr.ifremer.tutti.ui.swing.util.table.AbstractSelectTableAction;
+import jaxx.runtime.SwingUtil;
+import jaxx.runtime.validator.swing.SwingValidator;
+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 org.jdesktop.swingx.JXTable;
+import org.jdesktop.swingx.decorator.ComponentAdapter;
+import org.jdesktop.swingx.decorator.HighlightPredicate;
+import org.jdesktop.swingx.decorator.Highlighter;
+import org.jdesktop.swingx.table.DefaultTableColumnModelExt;
+import org.nuiton.util.decorator.Decorator;
+
+import java.awt.*;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * @author kmorin <kmorin(a)codelutin.com>
+ * @since 1.4
+ */
+public class IndividualObservationBatchUIHandler
+ extends AbstractTuttiBatchTableUIHandler<IndividualObservationBatchRowModel, IndividualObservationBatchUIModel, IndividualObservationBatchUI> {
+
+ private static final Log log =
+ LogFactory.getLog(IndividualObservationBatchUIHandler.class);
+
+ public IndividualObservationBatchUIHandler(TuttiUI<?, ?> parentUi, IndividualObservationBatchUI ui) {
+ super(parentUi, ui,
+ IndividualObservationBatchRowModel.PROPERTY_SPECIES,
+ IndividualObservationBatchRowModel.PROPERTY_WEIGHT,
+ IndividualObservationBatchRowModel.PROPERTY_SIZE,
+ IndividualObservationBatchRowModel.PROPERTY_LENGTH_STEP_CARACTERISTIC,
+ IndividualObservationBatchRowModel.PROPERTY_CARACTERISTICS,
+ IndividualObservationBatchRowModel.PROPERTY_CALCIFIED_PIECE_SAMPLING_CODE,
+ IndividualObservationBatchRowModel.PROPERTY_SAMPLING_CODE,
+ IndividualObservationBatchRowModel.PROPERTY_COMMENT,
+ IndividualObservationBatchRowModel.PROPERTY_ATTACHMENT);
+ }
+
+ //------------------------------------------------------------------------//
+ //-- AbstractTuttiBatchTableUIHandler methods --//
+ //------------------------------------------------------------------------//
+
+ @Override
+ public void selectFishingOperation(FishingOperation bean) {
+
+ boolean empty = bean == null;
+
+ IndividualObservationBatchUIModel model = getModel();
+
+ List<IndividualObservationBatchRowModel> rows;
+
+ if (empty) {
+ rows = null;
+ } else {
+
+ if (log.isInfoEnabled()) {
+ log.info("Get individualObservation batch for fishingOperation: " +
+ bean.getId());
+ }
+ rows = Lists.newArrayList();
+
+// if (!TuttiEntities.isNew(bean)) {
+//
+// }
+ }
+ model.setRows(rows);
+ recomputeBatchActionEnable();
+ }
+
+ protected IndividualObservationBatchRowModel loadBatch(IndividualObservationBatch aBatch) {
+
+ Integer id = aBatch.getIdAsInt();
+
+ List<Attachment> attachments =
+ persistenceService.getAllAttachments(id);
+
+ IndividualObservationBatchRowModel newRow =
+ new IndividualObservationBatchRowModel(aBatch, attachments);
+
+ return newRow;
+ }
+
+ //------------------------------------------------------------------------//
+ //-- AbstractTuttiTableUIHandler methods --//
+ //------------------------------------------------------------------------//
+
+ @Override
+ public IndividualObservationBatchTableModel getTableModel() {
+ return (IndividualObservationBatchTableModel) getTable().getModel();
+ }
+
+ @Override
+ public JXTable getTable() {
+ return ui.getTable();
+ }
+
+ @Override
+ protected boolean isRowValid(IndividualObservationBatchRowModel row) {
+// boolean result = row.getMarineLitterCategory() != null &&
+// row.getMarineLitterSizeCategory() != null &&
+// row.getNumber() != null;
+// return result;
+ return true;
+ }
+
+ @Override
+ protected void onRowModified(int rowIndex,
+ IndividualObservationBatchRowModel row,
+ String propertyName,
+ Object oldValue,
+ Object newValue) {
+ recomputeRowValidState(row);
+
+ saveSelectedRowIfNeeded();
+
+ // when row valid state has changed, recompute action enabled states
+ recomputeBatchActionEnable();
+ }
+
+ @Override
+ protected void saveSelectedRowIfRequired(TuttiBeanMonitor<IndividualObservationBatchRowModel> rowMonitor,
+ IndividualObservationBatchRowModel row) {
+
+ if (row != null && row.isValid() && rowMonitor.wasModified()) {
+
+ // monitored bean was modified, save it
+ if (log.isInfoEnabled()) {
+ log.info("Row " + row + " was modified, will save it");
+ }
+
+ rowMonitor.setBean(null);
+ saveRow(row);
+ rowMonitor.setBean(row);
+
+ // clear modified flag on the monitor
+ rowMonitor.clearModified();
+ }
+ }
+
+ @Override
+ protected void onRowValidStateChanged(int rowIndex,
+ IndividualObservationBatchRowModel row,
+ Boolean oldValue,
+ Boolean newValue) {
+ super.onRowValidStateChanged(rowIndex, row, oldValue, newValue);
+
+ // when row valid state has changed, recompute action enabled states
+ recomputeBatchActionEnable();
+ }
+
+ @Override
+ protected void onAfterSelectedRowChanged(int oldRowIndex,
+ IndividualObservationBatchRowModel oldRow,
+ int newRowIndex,
+ IndividualObservationBatchRowModel newRow) {
+ super.onAfterSelectedRowChanged(oldRowIndex, oldRow, newRowIndex, newRow);
+
+ // when selected row has changed, recompute action enabled states
+ recomputeBatchActionEnable();
+ }
+
+ @Override
+ protected void addHighlighters(JXTable table) {
+ super.addHighlighters(table);
+
+ // paint in a special color for comment cell (with not null value)
+ Color cellWithValueColor = getConfig().getColorCellWithValue();
+
+ Highlighter commentHighlighter = TuttiUIUtil.newBackgroundColorHighlighter(
+ new HighlightPredicate.AndHighlightPredicate(
+ new HighlightPredicate.IdentifierHighlightPredicate(IndividualObservationBatchTableModel.COMMENT),
+ // for not null value
+ new HighlightPredicate() {
+ @Override
+ public boolean isHighlighted(Component renderer, ComponentAdapter adapter) {
+ String value = (String) adapter.getValue();
+ return StringUtils.isNotBlank(value);
+ }
+ }), cellWithValueColor);
+ table.addHighlighter(commentHighlighter);
+
+ // paint in a special color for attachment cell (when some attachments)
+
+ Highlighter attachmentHighlighter = TuttiUIUtil.newBackgroundColorHighlighter(
+ new HighlightPredicate.AndHighlightPredicate(
+ new HighlightPredicate.IdentifierHighlightPredicate(IndividualObservationBatchTableModel.ATTACHMENT),
+ // for not null value
+ new HighlightPredicate() {
+ @Override
+ public boolean isHighlighted(Component renderer, ComponentAdapter adapter) {
+ Collection attachments = (Collection) adapter.getValue();
+ return CollectionUtils.isNotEmpty(attachments);
+ }
+ }
+ ), cellWithValueColor);
+ table.addHighlighter(attachmentHighlighter);
+ }
+
+ //------------------------------------------------------------------------//
+ //-- AbstractTuttiUIHandler methods --//
+ //------------------------------------------------------------------------//
+
+ @Override
+ public SwingValidator<IndividualObservationBatchUIModel> getValidator() {
+ return ui.getValidator();
+ }
+
+ @Override
+ public void beforeInitUI() {
+
+ if (log.isInfoEnabled()) {
+ log.info("beforeInit: " + ui);
+ }
+
+ EditCatchesUIModel catchesUIModel =
+ ui.getContextValue(EditCatchesUIModel.class);
+
+ IndividualObservationBatchUIModel model = new IndividualObservationBatchUIModel(catchesUIModel);
+ ui.setContextValue(model);
+
+ // propagate when value is changing
+ PropagatePropertyChangeListener.listenAndPropagate(
+ catchesUIModel,
+ model,
+ EditCatchesUIModel.PROPERTY_MARINE_LITTER_TOTAL_WEIGHT,
+ EditCatchesUIModel.PROPERTY_MARINE_LITTER_TOTAL_WEIGHT);
+ }
+
+ @Override
+ public void afterInitUI() {
+
+ if (log.isDebugEnabled()) {
+ log.debug("afterInit: " + ui);
+ }
+
+ initUI(ui);
+
+ JXTable table = getTable();
+
+ // can show / hide some columns in model
+ table.setColumnControlVisible(true);
+
+ // create table column model
+ DefaultTableColumnModelExt columnModel =
+ new DefaultTableColumnModelExt();
+ Decorator<Caracteristic> caracteristicDecorator =
+ getDecorator(Caracteristic.class, null);
+
+ { // Species column
+
+ Decorator<Species> speciesDecorator = getDecorator(
+ Species.class, DecoratorService.FROM_PROTOCOL);
+ addComboDataColumnToModel(columnModel,
+ IndividualObservationBatchTableModel.SPECIES,
+ speciesDecorator, getDataContext().getReferentSpecies());
+ }
+
+ { // Weight column
+
+ addFloatColumnToModel(columnModel,
+ IndividualObservationBatchTableModel.WEIGHT,
+ TuttiUI.DECIMAL3_PATTERN);
+ }
+
+ { // Size column
+
+ addFloatColumnToModel(columnModel,
+ IndividualObservationBatchTableModel.SIZE,
+ TuttiUI.DECIMAL3_PATTERN);
+ }
+
+ { // Length step caracteristic column
+
+ addComboDataColumnToModel(columnModel,
+ IndividualObservationBatchTableModel.LENGTH_STEP_CARACTERISTIC,
+ caracteristicDecorator, getDataContext().getLengthStepCaracteristics());
+
+ }
+
+ { // Other caracteristics column
+
+ Color computedDataColor = getConfig().getColorComputedWeights();
+ addColumnToModel(columnModel,
+ CaracteristicMapCellComponent.newEditor(ui),
+ CaracteristicMapCellComponent.newRender(getContext()),
+ IndividualObservationBatchTableModel.OTHER_CARACTERISTICS);
+
+ }
+
+ { // Calcified piece sampling code column
+
+ addColumnToModel(columnModel,
+ IndividualObservationBatchTableModel.CALCIFIED_PIECE_SAMPLING_CODE);
+ }
+
+ { // Sampling code column
+
+ addColumnToModel(columnModel,
+ IndividualObservationBatchTableModel.SAMPLING_CODE);
+ }
+
+ { // Comment column
+
+ addColumnToModel(columnModel,
+ CommentCellEditor.newEditor(ui),
+ CommentCellRenderer.newRender(),
+ IndividualObservationBatchTableModel.COMMENT);
+ }
+
+ { // File column
+
+ addColumnToModel(columnModel,
+ AttachmentCellEditor.newEditor(ui),
+ AttachmentCellRenderer.newRender(getDecorator(Attachment.class, null)),
+ IndividualObservationBatchTableModel.ATTACHMENT);
+ }
+
+ // create table model
+ IndividualObservationBatchTableModel tableModel =
+ new IndividualObservationBatchTableModel(columnModel);
+
+ table.setModel(tableModel);
+ table.setColumnModel(columnModel);
+
+ initBatchTable(table, columnModel, tableModel);
+ recomputeBatchActionEnable();
+ }
+
+ @Override
+ public void onCloseUI() {
+ if (log.isDebugEnabled()) {
+ log.debug("closing: " + ui);
+ }
+ ui.getIndividualObservationBatchAttachmentsButton().onCloseUI();
+ }
+
+ //------------------------------------------------------------------------//
+ //-- Public methods --//
+ //------------------------------------------------------------------------//
+
+ public void createBatch() {
+
+ EditCatchesUI parent = SwingUtil.getParentContainer(ui, EditCatchesUI.class);
+ CreateIndividualObservationBatchUI createBatchEditor = parent.getIndividualObservationTabCreateBatch();
+
+ createBatchEditor.getHandler().openUI();
+ parent.getHandler().setIndividualObservationSelectedCard(EditCatchesUIHandler.CREATE_BATCH_CARD);
+ }
+
+ public void addBatch(CreateIndividualObservationBatchUIModel model) {
+ if (model.isValid()) {
+
+ IndividualObservationBatchTableModel tableModel = getTableModel();
+
+ IndividualObservationBatchRowModel newRow = tableModel.createNewRow();
+ newRow.setSpecies(model.getSpecies());
+ newRow.setWeight(model.getWeight());
+ newRow.setSize(model.getSize());
+ newRow.setLengthStepCaracteristic(model.getLengthStepCaracteristic());
+
+ recomputeRowValidState(newRow);
+
+ saveRow(newRow);
+
+ tableModel.addNewRow(newRow);
+ AbstractSelectTableAction.doSelectCell(getTable(), tableModel.getRowCount() - 1, 0);
+ }
+
+ recomputeBatchActionEnable();
+ }
+
+ //------------------------------------------------------------------------//
+ //-- Internal methods --//
+ //------------------------------------------------------------------------//
+
+ protected void recomputeBatchActionEnable() {
+
+ int rowIndex = getTable().getSelectedRow();
+
+ boolean enableRemove = false;
+
+ if (rowIndex != -1) {
+
+ // there is a selected row
+ enableRemove = true;
+ }
+ IndividualObservationBatchUIModel model = getModel();
+ model.setRemoveBatchEnabled(enableRemove);
+ }
+
+ protected void saveRow(IndividualObservationBatchRowModel row) {
+
+// IndividualObservationBatch catchBean = row.toBean();
+//
+// FishingOperation fishingOperation = getModel().getFishingOperation();
+// catchBean.setFishingOperation(fishingOperation);
+// if (log.isInfoEnabled()) {
+// log.info("Selected fishingOperation: " + fishingOperation.getId());
+// }
+//
+// if (TuttiEntities.isNew(catchBean)) {
+//
+// catchBean = persistenceService.createMarineLitterBatch(catchBean);
+// row.setId(catchBean.getId());
+// } else {
+// persistenceService.saveMarineLitterBatch(catchBean);
+// }
+ }
+}
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIModel.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIModel.java 2013-04-10 14:16:08 UTC (rev 758)
@@ -0,0 +1,134 @@
+package fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation;
+
+import com.google.common.collect.Lists;
+import fr.ifremer.tutti.persistence.entities.data.AttachementObjectTypeEnum;
+import fr.ifremer.tutti.persistence.entities.data.Attachment;
+import fr.ifremer.tutti.ui.swing.content.operation.AbstractTuttiBatchUIModel;
+import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel;
+import fr.ifremer.tutti.ui.swing.content.operation.catches.marinelitter.MarineLitterBatchRowModel;
+import fr.ifremer.tutti.ui.swing.util.TabContentModel;
+import fr.ifremer.tutti.ui.swing.util.attachment.AttachmentModelAware;
+import org.apache.commons.collections.CollectionUtils;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * @author kmorin <kmorin(a)codelutin.com>
+ * @since 1.4
+ */
+public class IndividualObservationBatchUIModel extends AbstractTuttiBatchUIModel<IndividualObservationBatchRowModel, IndividualObservationBatchUIModel>
+ implements AttachmentModelAware, TabContentModel {
+
+ private static final long serialVersionUID = 1L;
+
+ public static final String PROPERTY_REMOVE_BATCH_ENABLED = "removeBatchEnabled";
+
+ protected final List<Attachment> attachment = Lists.newArrayList();
+
+ /**
+ * Can user remove a selected batch?
+ */
+ protected boolean removeBatchEnabled;
+
+ private String rootBatchId;
+
+ public IndividualObservationBatchUIModel(EditCatchesUIModel catchesUIModel) {
+ super(catchesUIModel);
+ }
+
+ public boolean isRemoveBatchEnabled() {
+ return removeBatchEnabled;
+ }
+
+ public void setRemoveBatchEnabled(boolean removeBatchEnabled) {
+ Object oldValue = isRemoveBatchEnabled();
+ this.removeBatchEnabled = removeBatchEnabled;
+ firePropertyChange(PROPERTY_REMOVE_BATCH_ENABLED, oldValue, removeBatchEnabled);
+ }
+
+ public void setRootBatchId(String rootBatchId) {
+ String oldValue = getObjectId();
+ this.rootBatchId = rootBatchId;
+ firePropertyChange(PROPERTY_OBJECT_ID, oldValue, getObjectId());
+ }
+
+ public String getRootBatchId() {
+ return rootBatchId;
+ }
+
+ //------------------------------------------------------------------------//
+ //-- AttachmentModelAware --//
+ //------------------------------------------------------------------------//
+
+ @Override
+ public AttachementObjectTypeEnum getObjectType() {
+ return AttachementObjectTypeEnum.CATCH_BATCH;
+ }
+
+ @Override
+ public String getObjectId() {
+ return rootBatchId;
+ }
+
+ @Override
+ public List<Attachment> getAttachment() {
+ return attachment;
+ }
+
+ @Override
+ public void addAllAttachment(Collection<Attachment> attachments) {
+ this.attachment.addAll(attachments);
+ firePropertyChange(PROPERTY_ATTACHMENT, null, getAttachment());
+ }
+
+ @Override
+ public void addAttachment(Attachment attachment) {
+ this.attachment.add(attachment);
+ firePropertyChange(PROPERTY_ATTACHMENT, null, getAttachment());
+ }
+
+ @Override
+ public void removeAllAttachment(Collection<Attachment> attachments) {
+ this.attachment.removeAll(attachments);
+ firePropertyChange(PROPERTY_ATTACHMENT, null, getAttachment());
+ }
+
+ @Override
+ public void removeAttachment(Attachment attachment) {
+ this.attachment.remove(attachment);
+ firePropertyChange(PROPERTY_ATTACHMENT, null, getAttachment());
+ }
+
+ //------------------------------------------------------------------------//
+ //-- TabContentModel --//
+ //------------------------------------------------------------------------//
+
+ @Override
+ public boolean isEmpty() {
+ boolean result = CollectionUtils.isEmpty(getAttachment());
+ if (result && CollectionUtils.isNotEmpty(getRows())) {
+
+ // check if every line is not valid
+ for (IndividualObservationBatchRowModel row : rows) {
+ if (row.isValid()) {
+
+ // found a valid row so not empty
+ result = false;
+ break;
+ }
+ }
+ }
+ return result;
+ }
+
+ @Override
+ public String getTitle() {
+ return "tutti.label.tab.individualObservations";
+ }
+
+ @Override
+ public String getIcon() {
+ return null;
+ }
+}
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/RemoveIndividualObservationBatchAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/RemoveIndividualObservationBatchAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/RemoveIndividualObservationBatchAction.java 2013-04-10 14:16:08 UTC (rev 758)
@@ -0,0 +1,85 @@
+package fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation;
+
+import com.google.common.base.Preconditions;
+import fr.ifremer.tutti.persistence.TuttiPersistence;
+import fr.ifremer.tutti.persistence.entities.TuttiEntities;
+import fr.ifremer.tutti.ui.swing.content.operation.catches.marinelitter.RemoveMarineLitterBatchAction;
+import fr.ifremer.tutti.ui.swing.content.operation.catches.species.RemoveSpeciesSubBatchAction;
+import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction;
+import fr.ifremer.tutti.ui.swing.util.table.AbstractSelectTableAction;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.jdesktop.swingx.JXTable;
+
+/**
+ * @author kmorin <kmorin(a)codelutin.com>
+ */
+public class RemoveIndividualObservationBatchAction
+ extends AbstractTuttiAction<IndividualObservationBatchUIModel, IndividualObservationBatchUI, IndividualObservationBatchUIHandler> {
+
+ private static final Log log =
+ LogFactory.getLog(RemoveMarineLitterBatchAction.class);
+
+ protected RemoveSpeciesSubBatchAction removeSpeciesSubBatchAction;
+
+ public RemoveIndividualObservationBatchAction(IndividualObservationBatchUIHandler handler) {
+ super(handler, false);
+ }
+
+ int rowIndex;
+
+ @Override
+ protected void doAction() throws Exception {
+
+ JXTable table = handler.getTable();
+
+ rowIndex = table.getSelectedRow();
+
+ Preconditions.checkState(rowIndex != -1,
+ "Cant remove batch if none is selected");
+
+ IndividualObservationBatchTableModel tableModel = handler.getTableModel();
+ IndividualObservationBatchRowModel selectedBatch = tableModel.getEntry(rowIndex);
+
+ boolean persisted = !TuttiEntities.isNew(selectedBatch);
+
+ if (persisted) {
+
+ // remove it from db
+
+ String id = selectedBatch.getId();
+
+ if (log.isInfoEnabled()) {
+ log.info("Remove marineLitter with id: " + id);
+ }
+
+ TuttiPersistence persistenceService =
+ getContext().getPersistenceService();
+
+// persistenceService.deleteMarineLitterBatch(id);
+ }
+ }
+
+ @Override
+ public void postSuccessAction() {
+ super.postSuccessAction();
+
+ JXTable table = handler.getTable();
+
+ IndividualObservationBatchTableModel tableModel = handler.getTableModel();
+
+ tableModel.removeRow(rowIndex);
+
+ if (!tableModel.getRows().isEmpty()) {
+
+ // select first row
+ AbstractSelectTableAction.doSelectCell(table, 0, 0);
+ }
+
+ if (table.isEditing()) {
+
+ // but no edit it
+ table.getCellEditor().stopCellEditing();
+ }
+ }
+}
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/caracteristics/CaracteristicMapCellComponent.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/caracteristics/CaracteristicMapCellComponent.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/caracteristics/CaracteristicMapCellComponent.java 2013-04-10 14:16:08 UTC (rev 758)
@@ -0,0 +1,255 @@
+package fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.caracteristics;
+
+import com.google.common.base.Preconditions;
+import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
+import fr.ifremer.tutti.ui.swing.TuttiUIContext;
+import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI;
+import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIHandler;
+import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchRowModel;
+import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchTableModel;
+import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchUI;
+import fr.ifremer.tutti.ui.swing.util.table.AbstractSelectTableAction;
+import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier;
+import jaxx.runtime.SwingUtil;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.util.decorator.Decorator;
+
+import javax.swing.*;
+import javax.swing.border.LineBorder;
+import javax.swing.table.DefaultTableCellRenderer;
+import javax.swing.table.TableCellEditor;
+import javax.swing.table.TableCellRenderer;
+import java.awt.*;
+import java.awt.event.KeyAdapter;
+import java.awt.event.KeyEvent;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+
+/**
+ * @author kmorin <kmorin(a)codelutin.com>
+ */
+public class CaracteristicMapCellComponent extends DefaultTableCellRenderer {
+
+ private static final long serialVersionUID = 1L;
+
+ /** Logger. */
+ private static final Log log =
+ LogFactory.getLog(CaracteristicMapCellComponent.class);
+
+ protected Decorator<Caracteristic> caracteristicDecorator;
+
+ protected Decorator<CaracteristicQualitativeValue> valueDecorator;
+
+ protected Color computedDataColor;
+
+ public CaracteristicMapCellComponent(TuttiUIContext context) {
+ super();
+ this.caracteristicDecorator =
+ context.getDecoratorService().getDecoratorByType(Caracteristic.class);
+ this.valueDecorator =
+ context.getDecoratorService().getDecoratorByType(CaracteristicQualitativeValue.class);
+ this.computedDataColor = context.getConfig().getColorComputedWeights();
+
+ setHorizontalAlignment(CENTER);
+ setIcon(SwingUtil.createActionIcon("show-frequency"));
+ }
+
+ public void setText(CaracteristicMap map) {
+ String s = "-";
+ if (map != null && map.size() > 0) {
+ s = String.valueOf(map.size());
+ }
+ setText(s);
+ Font f = this.getFont();
+ f = f.deriveFont(Font.ITALIC);
+ setFont(f);
+ setForeground(computedDataColor);
+ }
+
+ public void setToolTipText(CaracteristicMap map) {
+ String tooltipText = null;
+ if (map != null) {
+ tooltipText = "<html><ul>";
+ for (Caracteristic caracteristic : map.keySet()) {
+ tooltipText += "<li>" + caracteristicDecorator.toString(caracteristic) +
+ " : " + valueDecorator.toString(map.get(caracteristic)) + "</li>";
+ }
+ tooltipText += "</ul></html>";
+ }
+ setToolTipText(tooltipText);
+ }
+
+ public static TableCellRenderer newRender(TuttiUIContext context) {
+ return new CaracteristicMapCellRenderer(context);
+ }
+
+ public static TableCellEditor newEditor(IndividualObservationBatchUI ui) {
+ return new CaracteristicMapCellEditor(ui);
+ }
+
+ public static class CaracteristicMapCellEditor extends AbstractCellEditor implements TableCellEditor {
+
+ private static final long serialVersionUID = 1L;
+
+ protected final CaracteristicMapCellComponent component;
+
+ protected final IndividualObservationBatchUI ui;
+
+ protected JTable table;
+
+ protected IndividualObservationBatchTableModel tableModel;
+
+ protected ColumnIdentifier<IndividualObservationBatchRowModel> columnIdentifier;
+
+ protected IndividualObservationBatchRowModel editRow;
+
+ protected Integer rowIndex;
+
+ protected Integer columnIndex;
+
+ public CaracteristicMapCellEditor(IndividualObservationBatchUI ui) {
+ this.ui = ui;
+ component = new CaracteristicMapCellComponent(ui.getHandler().getContext());
+ component.setBorder(new LineBorder(Color.BLACK));
+ component.addKeyListener(new KeyAdapter() {
+ @Override
+ public void keyReleased(KeyEvent e) {
+ if (e.getKeyCode() == KeyEvent.VK_ENTER ||
+ e.getKeyCode() == KeyEvent.VK_SPACE) {
+ e.consume();
+ startEdit();
+ }
+ }
+ });
+
+ component.addMouseListener(new MouseAdapter() {
+ @Override
+ public void mouseClicked(MouseEvent e) {
+ e.consume();
+ startEdit();
+ }
+ });
+ }
+
+ protected void startEdit() {
+
+ Preconditions.checkNotNull(tableModel, "No table model assigned.");
+
+ // open frequency dialog
+
+ Preconditions.checkNotNull(editRow, "No editRow found.");
+
+ if (log.isInfoEnabled()) {
+ log.info("Will edit frequencies for row: " + rowIndex);
+ }
+
+ EditCatchesUI parent = SwingUtil.getParentContainer(ui, EditCatchesUI.class);
+ CaracteristicMapEditorUI caracteristicMapEditor = parent.getCaracteristicMapEditor();
+ caracteristicMapEditor.getHandler().editBatch(editRow, this);
+
+ // open frequency editor
+ parent.getHandler().setIndividualObservationSelectedCard(EditCatchesUIHandler.EDIT_CARACTERISTICS_CARD);
+ }
+
+ public void validateEdition(CaracteristicMapEditorUIModel caracteristicMapEditorModel) {
+ if (caracteristicMapEditorModel.isValid()) {
+
+ CaracteristicMap map = caracteristicMapEditorModel.getCaracteristicMap();
+ component.setText(map);
+ component.setToolTipText(map);
+ editRow.setCaracteristics(map);
+ }
+
+ int r = rowIndex;
+ int c = columnIndex;
+
+ // stop edition
+ stopCellEditing();
+
+ // reselect this cell
+ AbstractSelectTableAction.doSelectCell(table, r, c);
+ table.requestFocus();
+ }
+
+ @Override
+ public Component getTableCellEditorComponent(JTable table,
+ Object value,
+ boolean isSelected,
+ int row,
+ int column) {
+ tableModel = (IndividualObservationBatchTableModel) table.getModel();
+ this.table = table;
+ columnIdentifier = IndividualObservationBatchTableModel.OTHER_CARACTERISTICS;
+ if (log.isDebugEnabled()) {
+ log.debug("Set columnIdentifier (" + column + ") :: " + columnIdentifier.getPropertyName());
+ }
+
+ rowIndex = row;
+ columnIndex = column;
+
+ editRow = tableModel.getEntry(row);
+
+ component.setText(editRow.getCaracteristics());
+ component.setToolTipText(editRow.getCaracteristics());
+
+ return component;
+ }
+
+ @Override
+ public Object getCellEditorValue() {
+
+ Preconditions.checkNotNull(editRow, "No editRow found in editor.");
+
+ Object result = null;
+ if (columnIdentifier == IndividualObservationBatchTableModel.OTHER_CARACTERISTICS) {
+ result = editRow.getCaracteristics();
+ }
+ if (log.isDebugEnabled()) {
+ log.debug("editor value (" + columnIdentifier + "): " + result);
+ }
+
+ return result;
+ }
+
+ @Override
+ public void cancelCellEditing() {
+ super.cancelCellEditing();
+ rowIndex = null;
+ columnIndex = null;
+ editRow = null;
+ }
+ }
+
+ public static class CaracteristicMapCellRenderer implements TableCellRenderer {
+
+ protected final CaracteristicMapCellComponent component;
+
+ public CaracteristicMapCellRenderer(TuttiUIContext context) {
+ component = new CaracteristicMapCellComponent(context);
+ }
+
+ @Override
+ public Component getTableCellRendererComponent(JTable table,
+ Object value,
+ boolean isSelected,
+ boolean hasFocus,
+ int row,
+ int column) {
+
+ CaracteristicMapCellComponent result =
+ (CaracteristicMapCellComponent) component.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
+
+ boolean editable = table.isCellEditable(row, column);
+ result.setEnabled(editable);
+
+ CaracteristicMap map = (CaracteristicMap) value;
+ result.setText(map);
+ result.setToolTipText(map);
+
+ return result;
+ }
+ }
+}
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/caracteristics/CaracteristicMapEditorRowModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/caracteristics/CaracteristicMapEditorRowModel.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/caracteristics/CaracteristicMapEditorRowModel.java 2013-04-10 14:16:08 UTC (rev 758)
@@ -0,0 +1,12 @@
+package fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.caracteristics;
+
+import fr.ifremer.tutti.ui.swing.content.operation.fishing.AbstractCaracteristicRowModel;
+
+/**
+ * @author kmorin <kmorin(a)codelutin.com>
+ */
+public class CaracteristicMapEditorRowModel extends AbstractCaracteristicRowModel<CaracteristicMapEditorRowModel> {
+
+ private static final long serialVersionUID = 1L;
+
+}
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/caracteristics/CaracteristicMapEditorTableModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/caracteristics/CaracteristicMapEditorTableModel.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/caracteristics/CaracteristicMapEditorTableModel.java 2013-04-10 14:16:08 UTC (rev 758)
@@ -0,0 +1,37 @@
+package fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.caracteristics;
+
+import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableModel;
+import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier;
+import org.jdesktop.swingx.table.TableColumnModelExt;
+
+import static org.nuiton.i18n.I18n.n_;
+
+/**
+ * @author kmorin <kmorin(a)codelutin.com>
+ * @since 1.4
+ */
+public class CaracteristicMapEditorTableModel extends AbstractTuttiTableModel<CaracteristicMapEditorRowModel> {
+
+ private static final long serialVersionUID = 1L;
+
+ public static final ColumnIdentifier<CaracteristicMapEditorRowModel> KEY = ColumnIdentifier.newId(
+ CaracteristicMapEditorRowModel.PROPERTY_KEY,
+ n_("tutti.caracteristicMapEditorTable.table.header.key"),
+ n_("tutti.caracteristicMapEditorTable.table.header.key"));
+
+ public static final ColumnIdentifier<CaracteristicMapEditorRowModel> VALUE = ColumnIdentifier.newId(
+ CaracteristicMapEditorRowModel.PROPERTY_VALUE,
+ n_("tutti.caracteristicMapEditorTable.table.header.value"),
+ n_("tutti.caracteristicMapEditorTable.table.header.value"));
+
+ public CaracteristicMapEditorTableModel(TableColumnModelExt columnModel) {
+ super(columnModel, false, false);
+ setNoneEditableCols(KEY);
+ }
+
+ @Override
+ public CaracteristicMapEditorRowModel createNewRow() {
+ CaracteristicMapEditorRowModel result = new CaracteristicMapEditorRowModel();
+ return result;
+ }
+}
Copied: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/caracteristics/CaracteristicMapEditorUI.css (from rev 757, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/GearUseFeatureTabUI.css)
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/caracteristics/CaracteristicMapEditorUI.css (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/caracteristics/CaracteristicMapEditorUI.css 2013-04-10 14:16:08 UTC (rev 758)
@@ -0,0 +1,38 @@
+BeanFilterableComboBox {
+ i18nPrefix: "tutti.property.";
+ showReset: true;
+}
+
+#newRowKey {
+ property: selectedCaracteristic;
+ enabled: {!newRowKey.isEmpty()};
+}
+
+#addRow {
+ actionIcon: add;
+ enabled: {newRowKey.getSelectedItem() != null};
+}
+
+#caracteristicMapEditorTable {
+ selectionMode: {ListSelectionModel.SINGLE_SELECTION};
+ selectionBackground: {null};
+ selectionForeground: {Color.BLACK};
+ sortable: false;
+}
+
+#cancelButton {
+ actionIcon: cancel;
+ text: "tutti.editSpeciesFrequencies.action.cancel";
+ toolTipText: "tutti.editSpeciesFrequencies.action.cancel.tip";
+ i18nMnemonic: "tutti.editSpeciesFrequencies.action.cancel.mnemonic";
+ _help: {"tutti.editSpeciesFrequencies.action.cancel.help"};
+}
+
+#saveButton {
+ actionIcon: save;
+ text: "tutti.editSpeciesFrequencies.action.save";
+ toolTipText: "tutti.editSpeciesFrequencies.action.save.tip";
+ i18nMnemonic: "tutti.editSpeciesFrequencies.action.save.mnemonic";
+ enabled: {model.isValid()};
+ _help: {"tutti.editSpeciesFrequencies.action.save.help"};
+}
\ No newline at end of file
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/caracteristics/CaracteristicMapEditorUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/caracteristics/CaracteristicMapEditorUI.jaxx (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/caracteristics/CaracteristicMapEditorUI.jaxx 2013-04-10 14:16:08 UTC (rev 758)
@@ -0,0 +1,66 @@
+<Table implements='fr.ifremer.tutti.ui.swing.util.TuttiUI<CaracteristicMapEditorUIModel, CaracteristicMapEditorUIHandler>'>
+
+ <import>
+ fr.ifremer.tutti.persistence.entities.referential.Caracteristic
+ fr.ifremer.tutti.ui.swing.util.TuttiUI
+
+ jaxx.runtime.swing.editor.bean.BeanFilterableComboBox
+ org.jdesktop.swingx.JXTable
+ javax.swing.ListSelectionModel
+ java.awt.Color
+ </import>
+
+ <CaracteristicMapEditorUIHandler id='handler'
+ initializer='getContextValue(CaracteristicMapEditorUIHandler.class)'/>
+
+ <CaracteristicMapEditorUIModel id='model'
+ initializer='getContextValue(CaracteristicMapEditorUIModel.class)'/>
+
+ <JPopupMenu id='tablePopup'>
+ <JMenuItem id='removeCaracteristicMenu'
+ onActionPerformed='handler.removeCaracteristic()'/>
+ </JPopupMenu>
+
+ <row fill='both'>
+ <cell fill='both' weightx='1'>
+ <BeanFilterableComboBox id='newRowKey' constructorParams='this'
+ genericType='Caracteristic'/>
+ </cell>
+ <cell fill='both'>
+ <JButton id='addRow' onActionPerformed='handler.addRow()'/>
+ </cell>
+ </row>
+ <row fill='both' weighty='1'>
+ <cell fill='both' columns='2'>
+ <JScrollPane>
+ <JXTable id='caracteristicMapEditorTable'
+ onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'/>
+ </JScrollPane>
+ </cell>
+ </row>
+
+ <!-- Form Actions -->
+ <row fill='both'>
+ <cell fill='both' columns='2'>
+ <JPanel layout='{new GridLayout(1, 0)}'>
+ <JButton id='cancelButton' onActionPerformed='handler.cancel()'/>
+ <JButton id='saveButton' onActionPerformed='handler.save()'/>
+ </JPanel>
+ </cell>
+ </row>
+ <script><![CDATA[
+
+public CaracteristicMapEditorUI(TuttiUI parentUI) {
+ JAXXUtil.initContext(this, parentUI);
+ CaracteristicMapEditorUIHandler handler = new CaracteristicMapEditorUIHandler(parentUI, this);
+ setContextValue(handler);
+ handler.beforeInitUI();
+}
+
+protected void $afterCompleteSetup() {
+ handler.afterInitUI();
+}
+
+ ]]></script>
+
+</Table>
\ No newline at end of file
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/caracteristics/CaracteristicMapEditorUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/caracteristics/CaracteristicMapEditorUIHandler.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/caracteristics/CaracteristicMapEditorUIHandler.java 2013-04-10 14:16:08 UTC (rev 758)
@@ -0,0 +1,314 @@
+package fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.caracteristics;
+
+import com.google.common.base.Preconditions;
+import com.google.common.collect.Lists;
+import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
+import fr.ifremer.tutti.persistence.entities.TuttiEntities;
+import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch;
+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.content.operation.catches.EditCatchesUI;
+import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIHandler;
+import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchRowModel;
+import fr.ifremer.tutti.ui.swing.util.Cancelable;
+import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor;
+import fr.ifremer.tutti.ui.swing.util.TuttiUI;
+import fr.ifremer.tutti.ui.swing.util.editor.CaracteristicValueEditor;
+import fr.ifremer.tutti.ui.swing.util.editor.CaracteristicValueRenderer;
+import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIHandler;
+import jaxx.runtime.SwingUtil;
+import jaxx.runtime.swing.editor.bean.BeanFilterableComboBox;
+import jaxx.runtime.validator.swing.SwingValidator;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.jdesktop.swingx.JXTable;
+import org.jdesktop.swingx.table.DefaultTableColumnModelExt;
+
+import java.util.List;
+
+import static fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.caracteristics.CaracteristicMapCellComponent.CaracteristicMapCellEditor;
+
+/**
+ * @author kmorin <kmorin(a)codelutin.com>
+ * @since 1.4
+ */
+public class CaracteristicMapEditorUIHandler
+ extends AbstractTuttiTableUIHandler<CaracteristicMapEditorRowModel, CaracteristicMapEditorUIModel, CaracteristicMapEditorUI>
+ implements Cancelable {
+
+ private final static Log log =
+ LogFactory.getLog(CaracteristicMapEditorUIHandler.class);
+
+ protected CaracteristicMapCellEditor caracteristicMapCellEditor;
+
+ public CaracteristicMapEditorUIHandler(TuttiUI parentUi,
+ CaracteristicMapEditorUI ui) {
+ super(parentUi.getHandler().getContext(), ui, CaracteristicMapEditorRowModel.PROPERTY_VALUE);
+ }
+
+ @Override
+ public CaracteristicMapEditorTableModel getTableModel() {
+ return (CaracteristicMapEditorTableModel) getTable().getModel();
+ }
+
+ @Override
+ public JXTable getTable() {
+ return ui.getCaracteristicMapEditorTable();
+ }
+
+ @Override
+ protected boolean isRowValid(CaracteristicMapEditorRowModel row) {
+ return row.getKey() != null && row.getValue() != null;
+ }
+
+ @Override
+ protected void onRowModified(int rowIndex, CaracteristicMapEditorRowModel row,
+ String propertyName, Object oldValue, Object newValue) {
+ recomputeRowValidState(row);
+ super.onRowModified(rowIndex, row, propertyName, oldValue, newValue);
+ saveSelectedRowIfNeeded();
+ }
+
+ @Override
+ protected void saveSelectedRowIfRequired(TuttiBeanMonitor<CaracteristicMapEditorRowModel> rowMonitor,
+ CaracteristicMapEditorRowModel row) {
+ if (row.isValid()) {
+ // there is a valid bean attached to the monitor
+
+ if (rowMonitor.wasModified()) {
+
+ // monitored bean was modified, save it
+ if (log.isInfoEnabled()) {
+ log.info("Row " + row + " was modified, will save it");
+ }
+
+ saveRow(row);
+
+ }
+ }
+ }
+
+ @Override
+ public void beforeInitUI() {
+ CaracteristicMapEditorUIModel model = createModel();
+ getUI().setContextValue(model);
+ }
+
+ @Override
+ public void afterInitUI() {
+ initUI(getUI());
+
+ initBeanFilterableComboBox(getKeyCombo(), Lists.<Caracteristic>newArrayList(), null);
+ getModel().setAvailableCaracteristics(getDataContext().getCaracteristics());
+
+ JXTable table = getTable();
+
+ // create table column model
+ DefaultTableColumnModelExt columnModel =
+ new DefaultTableColumnModelExt();
+
+ {
+
+ addColumnToModel(columnModel,
+ null,
+ newTableCellRender(Caracteristic.class, DecoratorService.CARACTERISTIC_WITH_UNIT),
+ CaracteristicMapEditorTableModel.KEY);
+ }
+
+ {
+
+ addColumnToModel(columnModel,
+ new CaracteristicValueEditor(context),
+ new CaracteristicValueRenderer(context),
+ CaracteristicMapEditorTableModel.VALUE);
+ }
+
+ // create table model
+ CaracteristicMapEditorTableModel tableModel =
+ new CaracteristicMapEditorTableModel(columnModel);
+
+ table.setModel(tableModel);
+ table.setColumnModel(columnModel);
+
+ initTable(table);
+ }
+
+ @Override
+ public void onCloseUI() {
+ if (log.isDebugEnabled()) {
+ log.debug("closing: " + ui);
+ }
+
+ // when canceling always invalid model (in that way)
+ getModel().setValid(false);
+
+ EditCatchesUI parent = SwingUtil.getParentContainer(ui, EditCatchesUI.class);
+ parent.getHandler().setIndividualObservationSelectedCard(EditCatchesUIHandler.MAIN_CARD);
+ }
+
+ @Override
+ public SwingValidator<CaracteristicMapEditorUIModel> getValidator() {
+ return null;
+ }
+
+ @Override
+ public void cancel() {
+
+ if (log.isInfoEnabled()) {
+ log.info("Cancel UI " + ui);
+ }
+
+ // close dialog
+ closeUI(ui);
+ }
+
+ protected BeanFilterableComboBox<Caracteristic> getKeyCombo() {
+ return ui.getNewRowKey();
+ }
+
+ protected CaracteristicMapEditorUIModel createModel() {
+ return new CaracteristicMapEditorUIModel();
+ }
+
+ protected CaracteristicMap getCaracteristics(IndividualObservationBatch individualObservation) {
+ return individualObservation.getCaracteristics();
+ }
+
+ protected List<String> getProtocolPmfmIds(TuttiProtocol protocol) {
+ return protocol.getGearUseFeaturePmfmId();
+ }
+
+ protected void saveRow(CaracteristicMapEditorRowModel row) {
+
+ if (row.isValid()) {
+ CaracteristicMap caracteristics = getModel().getCaracteristicMap();
+ Preconditions.checkNotNull(caracteristics);
+
+ caracteristics.put(row.getKey(), row.getValue());
+ }
+ }
+
+ //------------------------------------------------------------------------//
+ //-- Public methods --//
+ //------------------------------------------------------------------------//
+
+ /** Adds a row with the parameter selected in the combo box */
+ public void addRow() {
+ BeanFilterableComboBox<Caracteristic> keyCombo = getKeyCombo();
+ Caracteristic selectedItem = (Caracteristic) keyCombo.getSelectedItem();
+ CaracteristicMapEditorTableModel tableModel = getTableModel();
+
+ CaracteristicMapEditorRowModel row = tableModel.createNewRow();
+ row.setKey(selectedItem);
+// tableModel.addNewRow(row);
+ getModel().getRows().add(row);
+
+ int rowIndex = tableModel.getRowCount() - 1;
+ tableModel.fireTableRowsInserted(rowIndex, rowIndex);
+
+ keyCombo.getHandler().removeItem(selectedItem);
+
+ CaracteristicMapEditorUIModel model = getModel();
+ model.setModify(true);
+ recomputeRowValidState(row);
+ }
+
+ public void editBatch(IndividualObservationBatchRowModel individualObservation,
+ CaracteristicMapCellEditor caracteristicMapCellEditor) {
+
+ this.caracteristicMapCellEditor = caracteristicMapCellEditor;
+
+ CaracteristicMapEditorTableModel tableModel = getTableModel();
+ CaracteristicMapEditorUIModel model = getModel();
+
+ CaracteristicMap caracteristicMap = getCaracteristics(individualObservation);
+ if (caracteristicMap == null) {
+ caracteristicMap = new CaracteristicMap();
+ }
+ model.setCaracteristicMap(caracteristicMap);
+
+ TuttiProtocol protocol = getDataContext().getProtocol();
+ List<String> pmfmIds = Lists.newArrayList();
+ if (protocol != null) {
+ List<String> protocolPmfmId = getProtocolPmfmIds(protocol);
+ if (protocolPmfmId != null) {
+ pmfmIds.addAll(protocolPmfmId);
+ }
+ }
+
+ List<CaracteristicMapEditorRowModel> rows = Lists.newArrayList();
+ List<Caracteristic> caracteristics = Lists.newArrayList(caracteristicMap.keySet());
+
+ List<Caracteristic> availableCaracteristics = model.getAvailableCaracteristics();
+ for (String id : pmfmIds) {
+ Caracteristic caracteristic = TuttiEntities.findById(availableCaracteristics, id);
+ if (!caracteristics.contains(caracteristic)) {
+ caracteristics.add(caracteristic);
+ }
+ }
+
+ for (Caracteristic key : caracteristics) {
+ CaracteristicMapEditorRowModel newRow = tableModel.createNewRow();
+ newRow.setKey(key);
+ newRow.setValue(caracteristicMap.get(key));
+ rows.add(newRow);
+ }
+
+ model.setRows(rows);
+
+ List<Caracteristic> caracteristicList = Lists.newArrayList();
+
+ for (Caracteristic caracteristic : availableCaracteristics) {
+ if (!caracteristics.contains(caracteristic)) {
+ caracteristicList.add(caracteristic);
+ }
+ }
+
+ BeanFilterableComboBox<Caracteristic> keyCombo = getKeyCombo();
+ keyCombo.setData(caracteristicList);
+// selectFirstInCombo(keyCombo);
+ keyCombo.getHandler().reset();
+ model.setModify(false);
+ }
+
+ public void removeCaracteristic() {
+ int rowIndex = getTable().getSelectedRow();
+
+ Preconditions.checkState(
+ rowIndex != -1,
+ "Cant remove caracteristic if no caracteristic selected");
+
+ CaracteristicMapEditorRowModel row = getTableModel().getEntry(rowIndex);
+
+ CaracteristicMap caracteristicMap = getModel().getCaracteristicMap();
+ if (caracteristicMap != null) {
+ caracteristicMap.remove(row.getKey());
+ }
+
+ //add the row in the combo
+ BeanFilterableComboBox keyCombo = getKeyCombo();
+ keyCombo.addItem(row.getKey());
+// selectFirstInCombo(keyCombo);
+ keyCombo.getHandler().reset();
+
+ // remove the row from the model
+ getModel().getRows().remove(rowIndex);
+
+ // refresh all the table
+ getTableModel().fireTableRowsDeleted(rowIndex, rowIndex);
+
+ getModel().removeRowInError(row);
+ }
+
+ public void save() {
+
+ if (log.isInfoEnabled()) {
+ log.info("Save UI " + ui);
+ }
+
+ caracteristicMapCellEditor.validateEdition(getModel());
+
+ closeUI(ui);
+ }
+}
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/caracteristics/CaracteristicMapEditorUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/caracteristics/CaracteristicMapEditorUIModel.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/caracteristics/CaracteristicMapEditorUIModel.java 2013-04-10 14:16:08 UTC (rev 758)
@@ -0,0 +1,81 @@
+package fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.caracteristics;
+
+import com.google.common.base.Predicates;
+import com.google.common.collect.Iterables;
+import fr.ifremer.tutti.persistence.entities.CaracteristicMap;
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.ui.swing.content.operation.fishing.AbstractCaracteristicRowModel;
+import fr.ifremer.tutti.ui.swing.content.operation.fishing.AbstractCaracteristicTabUIModel;
+import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIModel;
+
+import java.util.List;
+
+/**
+ * @author kmorin <kmorin(a)codelutin.com>
+ * @since 1.4
+ */
+public class CaracteristicMapEditorUIModel extends AbstractTuttiTableUIModel<Object, CaracteristicMapEditorRowModel, CaracteristicMapEditorUIModel> {
+
+ public static final String PROPERTY_CARACTERISTIC_MAP = "caracteristicMap";
+
+ public static final String PROPERTY_REMOVE_CARACTERISTIC_ENABLED = "removeCaracteristicEnabled";
+
+ public static final String PROPERTY_AVAILABLE_CARACTERISTICS = "availableCaracteristics";
+
+ private static final long serialVersionUID = 1L;
+
+ protected List<Caracteristic> availableCaracteristics;
+
+ /**
+ * Caracteristics
+ *
+ * @since 1.0
+ */
+ protected CaracteristicMap caracteristicMap;
+
+ /**
+ * Can user remove a selected caracteristic?
+ *
+ * @since 1.0
+ */
+ protected boolean removeCaracteristicEnabled;
+
+ public CaracteristicMapEditorUIModel() {
+ super(Object.class, null, null);
+ }
+
+ public List<Caracteristic> getAvailableCaracteristics() {
+ return availableCaracteristics;
+ }
+
+ public void setAvailableCaracteristics(List<Caracteristic> availableCaracteristics) {
+ Object oldValue = getAvailableCaracteristics();
+ this.availableCaracteristics = availableCaracteristics;
+ firePropertyChange(PROPERTY_AVAILABLE_CARACTERISTICS, oldValue, availableCaracteristics);
+ }
+
+ public CaracteristicMap getCaracteristicMap() {
+ return caracteristicMap;
+ }
+
+ public void setCaracteristicMap(CaracteristicMap caracteristicMap) {
+ Object oldValue = getCaracteristicMap();
+ this.caracteristicMap = caracteristicMap != null ? (CaracteristicMap) caracteristicMap.clone() : null;
+ firePropertyChange(PROPERTY_CARACTERISTIC_MAP, oldValue, this.caracteristicMap);
+ }
+
+ public boolean isRemoveCaracteristicEnabled() {
+ return removeCaracteristicEnabled;
+ }
+
+ public void setRemoveCaracteristicEnabled(boolean removeCaracteristicEnabled) {
+ Object oldValue = isRemoveCaracteristicEnabled();
+ this.removeCaracteristicEnabled = removeCaracteristicEnabled;
+ firePropertyChange(PROPERTY_REMOVE_CARACTERISTIC_ENABLED, oldValue, removeCaracteristicEnabled);
+ }
+
+ @Override
+ protected Object newEntity() {
+ return null;
+ }
+}
Copied: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUI.css (from rev 757, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUI.css)
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUI.css (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUI.css 2013-04-10 14:16:08 UTC (rev 758)
@@ -0,0 +1,84 @@
+BeanFilterableComboBox {
+ showReset: true;
+ i18nPrefix: "tutti.property.";
+ bean: {model};
+}
+
+NumberEditor {
+ autoPopup: {handler.getConfig().isAutoPopupNumberEditor()};
+ showPopupButton: {handler.getConfig().isShowNumberEditorButton()};
+ showReset: true;
+}
+
+#createIndividualObservationBatchTopPanel {
+ _help: {"tutti.createIndividualObservationBatch.help"};
+}
+
+#individualObservationSpeciesLabel {
+ text: "tutti.createIndividualObservationBatch.field.individualObservationSpecies";
+ toolTipText: "tutti.createIndividualObservationBatch.field.individualObservationSpecies.tip";
+ labelFor: {individualObservationSpeciesComboBox};
+ _help: {"tutti.createIndividualObservationBatch.field.individualObservationSpecies.help"};
+}
+
+#individualObservationSpeciesComboBox {
+ property: species;
+ selectedItem: {model.getSpecies()};
+}
+
+#individualObservationWeightLabel {
+ text: "tutti.createIndividualObservationBatch.field.individualObservationWeight";
+ toolTipText: "tutti.createIndividualObservationBatch.field.individualObservationWeight.tip";
+ labelFor: {individualObservationWeightField};
+ _help: {"tutti.createIndividualObservationBatch.field.individualObservationWeight.help"};
+}
+
+#individualObservationWeightField {
+ property: weight;
+ useFloat: true;
+ numberPattern: {DECIMAL3_PATTERN};
+ bean: {model};
+}
+
+#individualObservationSizeLabel {
+ text: "tutti.createIndividualObservationBatch.field.individualObservationSize";
+ toolTipText: "tutti.createIndividualObservationBatch.field.individualObservationSize.tip";
+ labelFor: {individualObservationSizeField};
+ _help: {"tutti.createIndividualObservationBatch.field.individualObservationSize.help"};
+}
+
+#individualObservationSizeField {
+ property: size;
+ useFloat: true;
+ numberPattern: {DECIMAL3_PATTERN};
+ bean: {model};
+}
+
+#individualObservationLengthStepCaracteristicLabel {
+ text: "tutti.createIndividualObservationBatch.field.individualObservationLengthStepCaracteristic";
+ toolTipText: "tutti.createIndividualObservationBatch.field.individualObservationLengthStepCaracteristic.tip";
+ labelFor: {individualObservationLengthStepCaracteristicComboBox};
+ _help: {"tutti.createIndividualObservationBatch.field.individualObservationLengthStepCaracteristic.help"};
+}
+
+#individualObservationLengthStepCaracteristicComboBox {
+ property: lengthStepCaracteristic;
+ selectedItem: {model.getLengthStepCaracteristic()};
+}
+
+#saveButton {
+ actionIcon: save;
+ text: "tutti.createMarineLitterBatch.action.save";
+ toolTipText: "tutti.createMarineLitterBatch.action.save.tip";
+ i18nMnemonic: "tutti.createMarineLitterBatch.action.save.mnemonic";
+ enabled: {model.isValid()};
+ _help: {"tutti.createMarineLitterBatch.action.save.help"};
+}
+
+#cancelButton {
+ actionIcon: cancel;
+ text: "tutti.createMarineLitterBatch.action.cancel";
+ toolTipText: "tutti.createMarineLitterBatch.action.cancel.tip";
+ i18nMnemonic: "tutti.createMarineLitterBatch.action.cancel.mnemonic";
+ _help: {"tutti.createMarineLitterBatch.action.cancel.help"};
+}
\ No newline at end of file
Copied: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUI.jaxx (from rev 757, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/create/CreateMarineLitterBatchUI.jaxx)
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUI.jaxx (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUI.jaxx 2013-04-10 14:16:08 UTC (rev 758)
@@ -0,0 +1,105 @@
+<JPanel id='createIndividualObservationBatchTopPanel' layout='{new BorderLayout()}'
+ decorator='help'
+ implements='fr.ifremer.tutti.ui.swing.util.TuttiUI<CreateIndividualObservationBatchUIModel, CreateIndividualObservationBatchUIHandler>'>
+ <import>
+
+ fr.ifremer.tutti.persistence.entities.referential.Species
+ fr.ifremer.tutti.persistence.entities.referential.Caracteristic
+
+ fr.ifremer.tutti.ui.swing.TuttiHelpBroker
+ fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI
+ fr.ifremer.tutti.ui.swing.util.TuttiUI
+
+ jaxx.runtime.swing.editor.bean.BeanFilterableComboBox
+ jaxx.runtime.swing.editor.NumberEditor
+
+ static org.nuiton.i18n.I18n._
+ </import>
+
+ <script><![CDATA[
+
+public CreateIndividualObservationBatchUI(EditCatchesUI parentUI) {
+ JAXXUtil.initContext(this, parentUI);
+ CreateIndividualObservationBatchUIHandler handler = new CreateIndividualObservationBatchUIHandler(parentUI, this);
+ setContextValue(handler);
+ handler.beforeInitUI();
+}
+
+protected void $afterCompleteSetup() { handler.afterInitUI(); }
+ ]]></script>
+
+ <CreateIndividualObservationBatchUIHandler id='handler'
+ initializer='getContextValue(CreateIndividualObservationBatchUIHandler.class)'/>
+
+ <CreateIndividualObservationBatchUIModel id='model'
+ initializer='getContextValue(CreateIndividualObservationBatchUIModel.class)'/>
+
+ <BeanValidator id='validator' bean='model'
+ uiClass='jaxx.runtime.validator.swing.ui.ImageValidationUI'>
+ <field name='species'
+ component='individualObservationSpeciesComboBox'/>
+ <field name='weight'
+ component='individualObservationWeightField'/>
+ <field name='size'
+ component='individualObservationSizeField'/>
+ <field name='lengthStepCaracteristic'
+ component='individualObservationLengthStepCaracteristicComboBox'/>
+ </BeanValidator>
+
+ <TuttiHelpBroker id='broker'
+ constructorParams='"tutti.createMarineLitterBatch.help"'/>
+
+ <Table id='configurationPanel' constraints='BorderLayout.CENTER' fill='both'>
+
+ <!-- IndividualObservation species -->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='individualObservationSpeciesLabel'/>
+ </cell>
+ <cell weightx='1.0'>
+ <BeanFilterableComboBox id='individualObservationSpeciesComboBox'
+ constructorParams='this'
+ genericType='Species'/>
+ </cell>
+ </row>
+
+ <!-- IndividualObservation weight -->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='individualObservationWeightLabel'/>
+ </cell>
+ <cell weightx='1.0' columns='2'>
+ <NumberEditor id='individualObservationWeightField' constructorParams='this'/>
+ </cell>
+ </row>
+
+ <!-- IndividualObservation size -->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='individualObservationSizeLabel'/>
+ </cell>
+ <cell weightx='1.0' columns='2'>
+ <NumberEditor id='individualObservationSizeField' constructorParams='this'/>
+ </cell>
+ </row>
+
+ <!-- IndividualObservation LengthStepCaracteristic -->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='individualObservationLengthStepCaracteristicLabel'/>
+ </cell>
+ <cell weightx='1.0' columns='2'>
+ <BeanFilterableComboBox id='individualObservationLengthStepCaracteristicComboBox'
+ constructorParams='this'
+ genericType='Caracteristic'/>
+ </cell>
+ </row>
+
+ </Table>
+
+ <!-- Form Actions -->
+ <JPanel layout='{new GridLayout(1, 0)}' constraints='BorderLayout.SOUTH'>
+ <JButton id='cancelButton' onActionPerformed='handler.cancel()'/>
+ <JButton id='saveButton' onActionPerformed='handler.save()'/>
+ </JPanel>
+</JPanel>
\ No newline at end of file
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUIHandler.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUIHandler.java 2013-04-10 14:16:08 UTC (rev 758)
@@ -0,0 +1,141 @@
+package fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.create;
+
+import fr.ifremer.tutti.persistence.TuttiPersistence;
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.persistence.entities.referential.Species;
+import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI;
+import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIHandler;
+import fr.ifremer.tutti.ui.swing.content.operation.catches.marinelitter.create.CreateMarineLitterBatchUI;
+import fr.ifremer.tutti.ui.swing.content.operation.catches.marinelitter.create.CreateMarineLitterBatchUIModel;
+import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler;
+import fr.ifremer.tutti.ui.swing.util.Cancelable;
+import fr.ifremer.tutti.ui.swing.util.TuttiUI;
+import fr.ifremer.tutti.ui.swing.util.species.SelectSpeciesUI;
+import fr.ifremer.tutti.ui.swing.util.species.SelectSpeciesUIModel;
+import jaxx.runtime.SwingUtil;
+import jaxx.runtime.validator.swing.SwingValidator;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.awt.*;
+import java.util.List;
+
+/**
+ * @author kmorin <kmorin(a)codelutin.com>
+ */
+public class CreateIndividualObservationBatchUIHandler extends AbstractTuttiUIHandler<CreateIndividualObservationBatchUIModel, CreateIndividualObservationBatchUI>
+ implements Cancelable {
+
+ private static final Log log =
+ LogFactory.getLog(CreateIndividualObservationBatchUIHandler.class);
+
+ private final TuttiPersistence persistenceService;
+
+ public CreateIndividualObservationBatchUIHandler(TuttiUI parentUi,
+ CreateIndividualObservationBatchUI ui) {
+ super(parentUi.getHandler().getContext(), ui);
+ this.persistenceService = context.getPersistenceService();
+ }
+
+ //------------------------------------------------------------------------//
+ //-- AbstractTuttiUIHandler methods --//
+ //------------------------------------------------------------------------//
+
+ @Override
+ public void beforeInitUI() {
+ CreateIndividualObservationBatchUIModel model = new CreateIndividualObservationBatchUIModel();
+ ui.setContextValue(model);
+ listModelIsModify(model);
+ }
+
+ @Override
+ public void afterInitUI() {
+
+ initUI(ui);
+
+ initBeanFilterableComboBox(ui.getIndividualObservationSpeciesComboBox(),
+ getDataContext().getReferentSpecies(),
+ null);
+
+ initBeanFilterableComboBox(ui.getIndividualObservationLengthStepCaracteristicComboBox(),
+ getDataContext().getLengthStepCaracteristics(),
+ null);
+
+ listenValidatorValid(ui.getValidator(), getModel());
+ }
+
+ @Override
+ public void onCloseUI() {
+
+ if (log.isDebugEnabled()) {
+ log.debug("closing: " + ui);
+ }
+
+ // evict model from validator
+ ui.getValidator().setBean(null);
+
+ // when canceling always invalid model
+ getModel().setValid(false);
+
+ EditCatchesUI parent = SwingUtil.getParentContainer(ui, EditCatchesUI.class);
+ parent.getHandler().setIndividualObservationSelectedCard(EditCatchesUIHandler.MAIN_CARD);
+ }
+
+ @Override
+ public SwingValidator<CreateIndividualObservationBatchUIModel> getValidator() {
+ return ui.getValidator();
+ }
+
+ //------------------------------------------------------------------------//
+ //-- Cancelable methods --//
+ //------------------------------------------------------------------------//
+
+ @Override
+ public void cancel() {
+ if (log.isInfoEnabled()) {
+ log.info("Cancel UI " + ui);
+ }
+ closeUI(ui);
+ }
+
+ //------------------------------------------------------------------------//
+ //-- Public methods --//
+ //------------------------------------------------------------------------//
+
+ public void openUI() {
+
+ CreateIndividualObservationBatchUIModel model = getModel();
+
+ // connect model to validator
+ ui.getValidator().setBean(model);
+
+ model.reset();
+
+ ui.getIndividualObservationSpeciesComboBox().requestFocus();
+ }
+
+ public void save() {
+
+ if (log.isInfoEnabled()) {
+ log.info("Save UI " + ui);
+ }
+
+ EditCatchesUI parent = SwingUtil.getParentContainer(ui, EditCatchesUI.class);
+ parent.getIndividualObservationTabContent().getHandler().addBatch(getModel());
+
+ // close dialog
+ closeUI(ui);
+ }
+
+ public Species openAddSpeciesDialog(String title, List<Species> species) {
+ SelectSpeciesUI dialogContent = new SelectSpeciesUI(ui);
+ SelectSpeciesUIModel model = dialogContent.getModel();
+ model.setSelectedSpecies(null);
+ model.setSpecies(species);
+
+ openDialog(dialogContent, title, new Dimension(400, 130));
+
+ Species result = model.getSelectedSpecies();
+ return result;
+ }
+}
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUIModel.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUIModel.java 2013-04-10 14:16:08 UTC (rev 758)
@@ -0,0 +1,81 @@
+package fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.create;
+
+import fr.ifremer.tutti.persistence.entities.TuttiBeanFactory;
+import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch;
+import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
+import fr.ifremer.tutti.persistence.entities.referential.Species;
+import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel;
+
+/**
+ * @author kmorin <kmorin(a)codelutin.com>
+ * @since 1.4
+ */
+public class CreateIndividualObservationBatchUIModel extends AbstractTuttiBeanUIModel<CreateIndividualObservationBatchUIModel, CreateIndividualObservationBatchUIModel> {
+
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Delegate edit object.
+ *
+ * @since 1.3
+ */
+ protected final IndividualObservationBatch editObject =
+ TuttiBeanFactory.newIndividualObservationBatch();
+
+ public CreateIndividualObservationBatchUIModel() {
+ super(CreateIndividualObservationBatchUIModel.class, null, null);
+ }
+
+ public Species getSpecies() {
+ return editObject.getSpecies();
+ }
+
+ public void setSpecies(Species individualObservationSpecies) {
+ Object oldValue = getSpecies();
+ editObject.setSpecies(individualObservationSpecies);
+ firePropertyChange(IndividualObservationBatch.PROPERTY_SPECIES, oldValue, individualObservationSpecies);
+ }
+
+ public Float getWeight() {
+ return editObject.getWeight();
+ }
+
+ public void setWeight(Float individualObservationWeight) {
+ Object oldValue = getWeight();
+ editObject.setWeight(individualObservationWeight);
+ firePropertyChange(IndividualObservationBatch.PROPERTY_WEIGHT, oldValue, individualObservationWeight);
+ }
+
+ public Float getSize() {
+ return editObject.getSize();
+ }
+
+ public void setSize(Float individualObservationSize) {
+ Object oldValue = getSize();
+ editObject.setSize(individualObservationSize);
+ firePropertyChange(IndividualObservationBatch.PROPERTY_SIZE, oldValue, individualObservationSize);
+ }
+
+ public Caracteristic getLengthStepCaracteristic() {
+ return editObject.getLengthStepCaracteristic();
+ }
+
+ public void setLengthStepCaracteristic(Caracteristic individualObservationLengthStepCaracteristic) {
+ Object oldValue = getLengthStepCaracteristic();
+ editObject.setLengthStepCaracteristic(individualObservationLengthStepCaracteristic);
+ firePropertyChange(IndividualObservationBatch.PROPERTY_LENGTH_STEP_CARACTERISTIC, oldValue, individualObservationLengthStepCaracteristic);
+ }
+
+ @Override
+ protected CreateIndividualObservationBatchUIModel newEntity() {
+ return new CreateIndividualObservationBatchUIModel();
+ }
+
+ public void reset() {
+ setSpecies(null);
+ setWeight(null);
+ setSize(null);
+ setLengthStepCaracteristic(null);
+ }
+}
Added: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/individualObservation/create/CreateIndividualObservationBatchUIModel-error-validation.xml
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/individualObservation/create/CreateIndividualObservationBatchUIModel-error-validation.xml (rev 0)
+++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/individualObservation/create/CreateIndividualObservationBatchUIModel-error-validation.xml 2013-04-10 14:16:08 UTC (rev 758)
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE validators PUBLIC
+ "-//Apache Struts//XWork Validator 1.0.3//EN"
+ "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
+<validators>
+
+ <field name="species">
+ <field-validator type="required" short-circuit="true">
+ <message>
+ tutti.validator.error.createIndividualObservationBatch.individualObservationSpecies.required
+ </message>
+ </field-validator>
+ </field>
+
+</validators>
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-04-08 16:07:19 UTC (rev 757)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-04-10 14:16:08 UTC (rev 758)
@@ -42,6 +42,8 @@
tutti.attachmentEditor.saveAttachment.warning.title=
tutti.attachmentEditor.text=
tutti.attachmentEditor.title=
+tutti.caracteristicMapEditorTable.table.header.key=
+tutti.caracteristicMapEditorTable.table.header.value=
tutti.commentEditor.action.close.tip=
tutti.commentEditor.action.tip=
tutti.commentEditor.none.tip=
@@ -119,6 +121,15 @@
tutti.createBenthosBatch.title=
tutti.createBenthosMelag.error.message=
tutti.createBenthosMelag.error.title=
+tutti.createIndividualObservationBatch.field.individualObservationLengthStepCaracteristic=
+tutti.createIndividualObservationBatch.field.individualObservationLengthStepCaracteristic.tip=
+tutti.createIndividualObservationBatch.field.individualObservationSize=
+tutti.createIndividualObservationBatch.field.individualObservationSize.tip=
+tutti.createIndividualObservationBatch.field.individualObservationSpecies=
+tutti.createIndividualObservationBatch.field.individualObservationSpecies.tip=
+tutti.createIndividualObservationBatch.field.individualObservationWeight=
+tutti.createIndividualObservationBatch.field.individualObservationWeight.tip=
+tutti.createIndividualObservationBatch.title=
tutti.createMarineLitterBatch.action.cancel=
tutti.createMarineLitterBatch.action.cancel.mnemonic=
tutti.createMarineLitterBatch.action.cancel.tip=
@@ -290,6 +301,7 @@
tutti.editBenthosFrequencies.label.no.configuration=
tutti.editBenthosFrequencies.simpleCountingAndFrequencies=
tutti.editBenthosFrequencies.title=
+tutti.editCaracteristics.title=
tutti.editCatchBatch.action.cancelEditCatchBatch=
tutti.editCatchBatch.action.cancelEditCatchBatch.mnemonic=
tutti.editCatchBatch.action.cancelEditCatchBatch.tip=
@@ -494,6 +506,30 @@
tutti.editFishingOperation.label.traitReminder.inCreation=
tutti.editFishingOperation.pane.other=
tutti.editFishingOperation.tab.general=
+tutti.editIndividualObservationBatch.action.createBatch=
+tutti.editIndividualObservationBatch.action.createBatch.mnemonic=
+tutti.editIndividualObservationBatch.action.createBatch.tip=
+tutti.editIndividualObservationBatch.action.removeBatch=
+tutti.editIndividualObservationBatch.action.removeBatch.mnemonic=
+tutti.editIndividualObservationBatch.action.removeBatch.tip=
+tutti.editIndividualObservationBatch.table.header.calcifiedPieceSamplingCode=
+tutti.editIndividualObservationBatch.table.header.calcifiedPieceSamplingCode.tip=
+tutti.editIndividualObservationBatch.table.header.comment=
+tutti.editIndividualObservationBatch.table.header.comment.tip=
+tutti.editIndividualObservationBatch.table.header.file=
+tutti.editIndividualObservationBatch.table.header.file.tip=
+tutti.editIndividualObservationBatch.table.header.lengthStepCaracteristic=
+tutti.editIndividualObservationBatch.table.header.lengthStepCaracteristic.tip=
+tutti.editIndividualObservationBatch.table.header.otherCaracteristics=
+tutti.editIndividualObservationBatch.table.header.otherCaracteristics.tip=
+tutti.editIndividualObservationBatch.table.header.samplingCode=
+tutti.editIndividualObservationBatch.table.header.samplingCode.tip=
+tutti.editIndividualObservationBatch.table.header.size=
+tutti.editIndividualObservationBatch.table.header.size.tip=
+tutti.editIndividualObservationBatch.table.header.species=
+tutti.editIndividualObservationBatch.table.header.species.tip=
+tutti.editIndividualObservationBatch.table.header.weight=
+tutti.editIndividualObservationBatch.table.header.weight.tip=
tutti.editMarineLitterBatch.action.createBatch=
tutti.editMarineLitterBatch.action.createBatch.mnemonic=
tutti.editMarineLitterBatch.action.createBatch.tip=
@@ -792,6 +828,7 @@
tutti.label.tab.catches=
tutti.label.tab.catchesCaracteristics=
tutti.label.tab.fishingOperation=
+tutti.label.tab.individualObservation=
tutti.label.tab.marineLitter=
tutti.label.tab.observationIndividuel=
tutti.label.tab.plancton=
@@ -1030,6 +1067,7 @@
tutti.update.jre=
tutti.update.tutti=
tutti.validator.error.comment.too.long=
+tutti.validator.error.createIndividualObservationBatch.individualObservationSpecies.required=
tutti.validator.error.createMarineLitterBatch.marineLitterCategory.required=
tutti.validator.error.createMarineLitterBatch.marineLitterSizeCategory.required=
tutti.validator.error.createMarineLitterBatch.number.invalidValue=
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-04-08 16:07:19 UTC (rev 757)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-04-10 14:16:08 UTC (rev 758)
@@ -40,6 +40,8 @@
tutti.attachmentEditor.saveAttachment.warning.title=Fichier existant
tutti.attachmentEditor.text=(%s)
tutti.attachmentEditor.title=Pièces jointes
+tutti.caracteristicMapEditorTable.table.header.key=Caractéristique
+tutti.caracteristicMapEditorTable.table.header.value=Valeur
tutti.commentEditor.action.close.tip=Fermer la fenêtre des commentaires
tutti.commentEditor.action.tip=Commentaire
tutti.commentEditor.none.tip=Pas de commentaire
@@ -54,7 +56,6 @@
tutti.common.cancel=Annuler
tutti.common.cancel.mnemonic=A
tutti.common.file.csv=Extension d'un fichier csv
-tutti.common.file.ibts=
tutti.common.file.protocol=Extension d'un fichier de protocole Tutti
tutti.common.file.zip=Extension d'une archive zip
tutti.common.validate=Valider
@@ -121,6 +122,15 @@
tutti.createBenthosMelag.error.title=Erreur
tutti.createBenthosMelag.message=Combien pesait le MELAG (kg) ?
tutti.createBenthosMelag.title=Poids du MELAG (kg)
+tutti.createIndividualObservationBatch.field.individualObservationLengthStepCaracteristic=Classe de taille
+tutti.createIndividualObservationBatch.field.individualObservationLengthStepCaracteristic.tip=Classe de taille
+tutti.createIndividualObservationBatch.field.individualObservationSize=Taille
+tutti.createIndividualObservationBatch.field.individualObservationSize.tip=Taille
+tutti.createIndividualObservationBatch.field.individualObservationSpecies=Espèce
+tutti.createIndividualObservationBatch.field.individualObservationSpecies.tip=Espèce
+tutti.createIndividualObservationBatch.field.individualObservationWeight=Poids
+tutti.createIndividualObservationBatch.field.individualObservationWeight.tip=Poids
+tutti.createIndividualObservationBatch.title=Créer une observation
tutti.createMarineLitterBatch.action.cancel=Annuler
tutti.createMarineLitterBatch.action.cancel.mnemonic=A
tutti.createMarineLitterBatch.action.cancel.tip=Annuler la création du lôt macro-déchet
@@ -298,6 +308,7 @@
tutti.editBenthosFrequencies.table.header.number=Nombre
tutti.editBenthosFrequencies.table.header.weight=Poids observé (kg)
tutti.editBenthosFrequencies.title=Mensuration
+tutti.editCaracteristics.title=Autres caractéristiques
tutti.editCatchBatch.action.cancelEditCatchBatch=Réinitialiser
tutti.editCatchBatch.action.cancelEditCatchBatch.mnemonic=R
tutti.editCatchBatch.action.cancelEditCatchBatch.tip=Réinitialiser l'édition de la capture
@@ -361,6 +372,7 @@
tutti.editCatchBatch.field.speciesTotalWeight=Poids TOTAL (kg)
tutti.editCatchBatch.field.speciesTotalWeight.tip=
tutti.editCatchBatch.legend.benthos=Benthos
+tutti.editCatchBatch.legend.individualObservation=Observations individuelles
tutti.editCatchBatch.legend.marineLitter=Macro déchets
tutti.editCatchBatch.legend.species=Espèces
tutti.editCatchBatch.legend.total=Capture
@@ -500,6 +512,30 @@
tutti.editFishingOperation.label.traitReminder.inCreation=en cours de création
tutti.editFishingOperation.pane.other=Autres caractéristiques
tutti.editFishingOperation.tab.general=Trait
+tutti.editIndividualObservationBatch.action.createBatch=Créer une observation
+tutti.editIndividualObservationBatch.action.createBatch.mnemonic=C
+tutti.editIndividualObservationBatch.action.createBatch.tip=Créer une nouvelle observation
+tutti.editIndividualObservationBatch.action.removeBatch=Supprimer la ligne sélectionnée
+tutti.editIndividualObservationBatch.action.removeBatch.mnemonic=S
+tutti.editIndividualObservationBatch.action.removeBatch.tip=Supprimer la ligne sélectionnée
+tutti.editIndividualObservationBatch.table.header.calcifiedPieceSamplingCode=Code de prélèvement pièce calcifiée
+tutti.editIndividualObservationBatch.table.header.calcifiedPieceSamplingCode.tip=Code de prélèvement pièce calcifiée
+tutti.editIndividualObservationBatch.table.header.comment=Commentaire
+tutti.editIndividualObservationBatch.table.header.comment.tip=Commentaire
+tutti.editIndividualObservationBatch.table.header.file=Pièces jointes
+tutti.editIndividualObservationBatch.table.header.file.tip=Pièces jointes
+tutti.editIndividualObservationBatch.table.header.lengthStepCaracteristic=Classe de taille
+tutti.editIndividualObservationBatch.table.header.lengthStepCaracteristic.tip=Classe de taille
+tutti.editIndividualObservationBatch.table.header.otherCaracteristics=Autres caractéristiques
+tutti.editIndividualObservationBatch.table.header.otherCaracteristics.tip=Autres caractéristiques
+tutti.editIndividualObservationBatch.table.header.samplingCode=Code prélèvement autre
+tutti.editIndividualObservationBatch.table.header.samplingCode.tip=Code prélèvement autre
+tutti.editIndividualObservationBatch.table.header.size=Taille
+tutti.editIndividualObservationBatch.table.header.size.tip=Taille
+tutti.editIndividualObservationBatch.table.header.species=Espèce
+tutti.editIndividualObservationBatch.table.header.species.tip=Espèce
+tutti.editIndividualObservationBatch.table.header.weight=Poids
+tutti.editIndividualObservationBatch.table.header.weight.tip=Poids (Kg)
tutti.editMarineLitterBatch.action.createBatch=Créer un lot de déchet
tutti.editMarineLitterBatch.action.createBatch.mnemonic=C
tutti.editMarineLitterBatch.action.createBatch.tip=Créer un nouveau lot de déchet
@@ -796,8 +832,8 @@
tutti.label.tab.catches=Captures
tutti.label.tab.catchesCaracteristics=Résumé
tutti.label.tab.fishingOperation=Trait
+tutti.label.tab.individualObservation=Observations individuelles
tutti.label.tab.marineLitter=Macro déchets
-tutti.label.tab.observationIndividuel=Observations individuelles
tutti.label.tab.plancton=Plancton
tutti.label.tab.species=Espèces
tutti.legend.frequencyConfiguration=Configuration
@@ -1033,6 +1069,7 @@
tutti.update.jre=Java
tutti.update.tutti=Tutti
tutti.validator.error.comment.too.long=Taille de commentaire trop longue (limitée à %s caractères)
+tutti.validator.error.createIndividualObservationBatch.individualObservationSpecies.required=
tutti.validator.error.createMarineLitterBatch.marineLitterCategory.required=
tutti.validator.error.createMarineLitterBatch.marineLitterSizeCategory.required=
tutti.validator.error.createMarineLitterBatch.number.invalidValue=
1
0
r757 - in trunk: . tutti-persistence tutti-service tutti-ui-swing
by maven-release@users.forge.codelutin.com 08 Apr '13
by maven-release@users.forge.codelutin.com 08 Apr '13
08 Apr '13
Author: maven-release
Date: 2013-04-08 18:07:19 +0200 (Mon, 08 Apr 2013)
New Revision: 757
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/757
Log:
[maven-release-plugin] prepare for next development iteration
Modified:
trunk/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-04-08 16:07:11 UTC (rev 756)
+++ trunk/pom.xml 2013-04-08 16:07:19 UTC (rev 757)
@@ -33,7 +33,7 @@
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>1.3</version>
+ <version>1.4-SNAPSHOT</version>
<modules>
<module>tutti-persistence</module>
@@ -89,12 +89,12 @@
</developers>
<scm>
- <url>http://svn.forge.codelutin.com/svn/tutti/tags/tutti-1.3</url>
+ <url>http://svn.forge.codelutin.com/svn/tutti/trunk</url>
<connection>
- scm:svn:http://svn.forge.codelutin.com/svn/tutti/tags/tutti-1.3
+ scm:svn:http://svn.forge.codelutin.com/svn/tutti/trunk
</connection>
<developerConnection>
- scm:svn:http://svn.forge.codelutin.com/svn/tutti/tags/tutti-1.3
+ scm:svn:http://svn.forge.codelutin.com/svn/tutti/trunk
</developerConnection>
</scm>
Modified: trunk/tutti-persistence/pom.xml
===================================================================
--- trunk/tutti-persistence/pom.xml 2013-04-08 16:07:11 UTC (rev 756)
+++ trunk/tutti-persistence/pom.xml 2013-04-08 16:07:19 UTC (rev 757)
@@ -28,7 +28,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>1.3</version>
+ <version>1.4-SNAPSHOT</version>
</parent>
<groupId>fr.ifremer.tutti</groupId>
Modified: trunk/tutti-service/pom.xml
===================================================================
--- trunk/tutti-service/pom.xml 2013-04-08 16:07:11 UTC (rev 756)
+++ trunk/tutti-service/pom.xml 2013-04-08 16:07:19 UTC (rev 757)
@@ -28,7 +28,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>1.3</version>
+ <version>1.4-SNAPSHOT</version>
</parent>
<groupId>fr.ifremer.tutti</groupId>
Modified: trunk/tutti-ui-swing/pom.xml
===================================================================
--- trunk/tutti-ui-swing/pom.xml 2013-04-08 16:07:11 UTC (rev 756)
+++ trunk/tutti-ui-swing/pom.xml 2013-04-08 16:07:19 UTC (rev 757)
@@ -28,7 +28,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>1.3</version>
+ <version>1.4-SNAPSHOT</version>
</parent>
<groupId>fr.ifremer.tutti</groupId>
1
0
Author: maven-release
Date: 2013-04-08 18:07:11 +0200 (Mon, 08 Apr 2013)
New Revision: 756
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/756
Log:
[maven-release-plugin] copy for tag tutti-1.3
Added:
tags/tutti-1.3/
1
0
r755 - in trunk: . tutti-persistence tutti-service tutti-ui-swing
by maven-release@users.forge.codelutin.com 08 Apr '13
by maven-release@users.forge.codelutin.com 08 Apr '13
08 Apr '13
Author: maven-release
Date: 2013-04-08 18:07:03 +0200 (Mon, 08 Apr 2013)
New Revision: 755
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/755
Log:
[maven-release-plugin] prepare release tutti-1.3
Modified:
trunk/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-04-08 16:02:05 UTC (rev 754)
+++ trunk/pom.xml 2013-04-08 16:07:03 UTC (rev 755)
@@ -33,7 +33,7 @@
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>1.3-SNAPSHOT</version>
+ <version>1.3</version>
<modules>
<module>tutti-persistence</module>
@@ -89,12 +89,12 @@
</developers>
<scm>
- <url>http://svn.forge.codelutin.com/svn/tutti/trunk</url>
+ <url>http://svn.forge.codelutin.com/svn/tutti/tags/tutti-1.3</url>
<connection>
- scm:svn:http://svn.forge.codelutin.com/svn/tutti/trunk
+ scm:svn:http://svn.forge.codelutin.com/svn/tutti/tags/tutti-1.3
</connection>
<developerConnection>
- scm:svn:http://svn.forge.codelutin.com/svn/tutti/trunk
+ scm:svn:http://svn.forge.codelutin.com/svn/tutti/tags/tutti-1.3
</developerConnection>
</scm>
Modified: trunk/tutti-persistence/pom.xml
===================================================================
--- trunk/tutti-persistence/pom.xml 2013-04-08 16:02:05 UTC (rev 754)
+++ trunk/tutti-persistence/pom.xml 2013-04-08 16:07:03 UTC (rev 755)
@@ -28,7 +28,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>1.3-SNAPSHOT</version>
+ <version>1.3</version>
</parent>
<groupId>fr.ifremer.tutti</groupId>
Modified: trunk/tutti-service/pom.xml
===================================================================
--- trunk/tutti-service/pom.xml 2013-04-08 16:02:05 UTC (rev 754)
+++ trunk/tutti-service/pom.xml 2013-04-08 16:07:03 UTC (rev 755)
@@ -28,7 +28,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>1.3-SNAPSHOT</version>
+ <version>1.3</version>
</parent>
<groupId>fr.ifremer.tutti</groupId>
Modified: trunk/tutti-ui-swing/pom.xml
===================================================================
--- trunk/tutti-ui-swing/pom.xml 2013-04-08 16:02:05 UTC (rev 754)
+++ trunk/tutti-ui-swing/pom.xml 2013-04-08 16:07:03 UTC (rev 755)
@@ -28,7 +28,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>1.3-SNAPSHOT</version>
+ <version>1.3</version>
</parent>
<groupId>fr.ifremer.tutti</groupId>
1
0