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
December 2012
- 2 participants
- 109 discussions
Author: tchemit
Date: 2012-12-17 10:22:46 +0100 (Mon, 17 Dec 2012)
New Revision: 84
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/84
Log:
[maven-release-plugin] copy for tag tutti-0.2
Added:
tags/tutti-0.2/
1
0
r83 - in trunk: . tutti-persistence tutti-persistence-dev tutti-service tutti-ui-swing
by tchemit@users.forge.codelutin.com 17 Dec '12
by tchemit@users.forge.codelutin.com 17 Dec '12
17 Dec '12
Author: tchemit
Date: 2012-12-17 10:22:38 +0100 (Mon, 17 Dec 2012)
New Revision: 83
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/83
Log:
[maven-release-plugin] prepare release tutti-0.2
Modified:
trunk/pom.xml
trunk/tutti-persistence-dev/pom.xml
trunk/tutti-persistence/pom.xml
trunk/tutti-service/pom.xml
trunk/tutti-ui-swing/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2012-12-17 09:18:52 UTC (rev 82)
+++ trunk/pom.xml 2012-12-17 09:22:38 UTC (rev 83)
@@ -11,7 +11,7 @@
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>0.2-SNAPSHOT</version>
+ <version>0.2</version>
<modules>
<module>tutti-persistence</module>
@@ -58,12 +58,12 @@
</developers>
<scm>
- <url>http://svn.forge.codelutin.com/svn/tutti/trunk</url>
+ <url>http://svn.forge.codelutin.com/svn/tutti/tags/tutti-0.2</url>
<connection>
- scm:svn:http://svn.forge.codelutin.com/svn/tutti/trunk
+ scm:svn:http://svn.forge.codelutin.com/svn/tutti/tags/tutti-0.2
</connection>
<developerConnection>
- scm:svn:http://svn.forge.codelutin.com/svn/tutti/trunk
+ scm:svn:http://svn.forge.codelutin.com/svn/tutti/tags/tutti-0.2
</developerConnection>
</scm>
Modified: trunk/tutti-persistence/pom.xml
===================================================================
--- trunk/tutti-persistence/pom.xml 2012-12-17 09:18:52 UTC (rev 82)
+++ trunk/tutti-persistence/pom.xml 2012-12-17 09:22:38 UTC (rev 83)
@@ -6,7 +6,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>0.2-SNAPSHOT</version>
+ <version>0.2</version>
</parent>
<groupId>fr.ifremer.tutti</groupId>
Modified: trunk/tutti-persistence-dev/pom.xml
===================================================================
--- trunk/tutti-persistence-dev/pom.xml 2012-12-17 09:18:52 UTC (rev 82)
+++ trunk/tutti-persistence-dev/pom.xml 2012-12-17 09:22:38 UTC (rev 83)
@@ -6,7 +6,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>0.2-SNAPSHOT</version>
+ <version>0.2</version>
</parent>
<groupId>fr.ifremer.tutti</groupId>
Modified: trunk/tutti-service/pom.xml
===================================================================
--- trunk/tutti-service/pom.xml 2012-12-17 09:18:52 UTC (rev 82)
+++ trunk/tutti-service/pom.xml 2012-12-17 09:22:38 UTC (rev 83)
@@ -6,7 +6,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>0.2-SNAPSHOT</version>
+ <version>0.2</version>
</parent>
<groupId>fr.ifremer.tutti</groupId>
Modified: trunk/tutti-ui-swing/pom.xml
===================================================================
--- trunk/tutti-ui-swing/pom.xml 2012-12-17 09:18:52 UTC (rev 82)
+++ trunk/tutti-ui-swing/pom.xml 2012-12-17 09:22:38 UTC (rev 83)
@@ -6,7 +6,7 @@
<parent>
<groupId>fr.ifremer</groupId>
<artifactId>tutti</artifactId>
- <version>0.2-SNAPSHOT</version>
+ <version>0.2</version>
</parent>
<groupId>fr.ifremer.tutti</groupId>
1
0
r82 - in trunk/tutti-ui-swing/src/main: java/fr/ifremer/tutti/ui/swing/content/operation java/fr/ifremer/tutti/ui/swing/content/operation/accidental java/fr/ifremer/tutti/ui/swing/content/operation/benthos java/fr/ifremer/tutti/ui/swing/content/operation/macrowaste java/fr/ifremer/tutti/ui/swing/content/operation/plankton java/fr/ifremer/tutti/ui/swing/content/operation/species resources/i18n resources/icons
by tchemit@users.forge.codelutin.com 17 Dec '12
by tchemit@users.forge.codelutin.com 17 Dec '12
17 Dec '12
Author: tchemit
Date: 2012-12-17 10:18:52 +0100 (Mon, 17 Dec 2012)
New Revision: 82
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/82
Log:
ajout rappel du trait en haut de chaque onglet de batch
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationTabUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/accidental/AccidentalBatchUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/accidental/AccidentalBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/benthos/BenthosBatchUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/benthos/BenthosBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/macrowaste/MacroWasteBatchUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/macrowaste/MacroWasteBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/plankton/PlanktonBatchUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/plankton/PlanktonBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/SpeciesBatchUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/SpeciesBatchUIHandler.java
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
trunk/tutti-ui-swing/src/main/resources/icons/action-edit-comment.png
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationTabUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationTabUI.jaxx 2012-12-17 07:39:44 UTC (rev 81)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationTabUI.jaxx 2012-12-17 09:18:52 UTC (rev 82)
@@ -215,7 +215,7 @@
<!-- Fishing operation valid / invalid-->
<row>
- <cell columns="2">
+ <cell>
<JToolBar id='fishingOperationValidPanel'
layout='{new BorderLayout()}'>
<JButton id='resetValidStateButton'
@@ -225,13 +225,16 @@
constraints='BorderLayout.EAST'/>
</JToolBar>
</cell>
- <cell columns="2">
- <JRadioButton id='fishingOperationValidRadio'
- onActionPerformed='model.setFishingOperationValid(Boolean.TRUE)'/>
+ <cell>
+ <HBox>
+ <JRadioButton id='fishingOperationValidRadio'
+ onActionPerformed='model.setFishingOperationValid(Boolean.TRUE)'/>
+ <JRadioButton id='fishingOperationInvalidRadio'
+ onActionPerformed='model.setFishingOperationValid(Boolean.FALSE)'/>
+ </HBox>
</cell>
- <cell columns="2">
- <JRadioButton id='fishingOperationInvalidRadio'
- onActionPerformed='model.setFishingOperationValid(Boolean.FALSE)'/>
+ <cell columns="4">
+ <JPanel/>
</cell>
</row>
@@ -273,13 +276,13 @@
<!-- Saisisseur -->
<row weighty='0.3'>
<cell columns='6'>
-<!-- <JScrollPane id='saisisseurPane'
- columnHeaderView="{saisisseurHeader}"
- onFocusGained='saisisseurList.requestFocus()'>
- <JList id='saisisseurList'
- onValueChanged='handler.selectListData(event, "saisisseur")'/>
- <BeanListHeader id='saisisseurHeader' genericType='Person'/>
- </JScrollPane>-->
+ <!-- <JScrollPane id='saisisseurPane'
+ columnHeaderView="{saisisseurHeader}"
+ onFocusGained='saisisseurList.requestFocus()'>
+ <JList id='saisisseurList'
+ onValueChanged='handler.selectListData(event, "saisisseur")'/>
+ <BeanListHeader id='saisisseurHeader' genericType='Person'/>
+ </JScrollPane>-->
<BeanDoubleList id='saisisseurList' genericType='Person'/>
</cell>
</row>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/accidental/AccidentalBatchUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/accidental/AccidentalBatchUI.jaxx 2012-12-17 07:39:44 UTC (rev 81)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/accidental/AccidentalBatchUI.jaxx 2012-12-17 09:18:52 UTC (rev 82)
@@ -65,7 +65,11 @@
<LongTextEditorUI id='longTextEditor'/>
<AttachmentEditorUI id='attachmentEditor'/>
-
+ <JPanel constraints='BorderLayout.NORTH' layout='{new BorderLayout()}'>
+ <JLabel id='fishingOperationReminderLabel'
+ constraints='BorderLayout.NORTH'/>
+ <JSeparator constraints='BorderLayout.CENTER'/>
+ </JPanel>
<JScrollPane id='tableScrollPane' constraints='BorderLayout.CENTER'>
<JXTable id='table' onFocusLost='handler.saveSelectedRowIfRequired(event)'/>
</JScrollPane>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/accidental/AccidentalBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/accidental/AccidentalBatchUIHandler.java 2012-12-17 07:39:44 UTC (rev 81)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/accidental/AccidentalBatchUIHandler.java 2012-12-17 09:18:52 UTC (rev 82)
@@ -47,6 +47,7 @@
import javax.swing.table.TableColumnModel;
import java.util.List;
+import static org.nuiton.i18n.I18n._;
import static org.nuiton.i18n.I18n.n_;
/**
@@ -300,14 +301,24 @@
List<AccidentalBatchRowModel> rows;
+ String fishingoperationText;
+
if (empty) {
rows = null;
bean = new FishingOperation();
model.setFishingOperation(null);
+ fishingoperationText = "";
} else {
+ Decorator<FishingOperation> decorator =
+ getDecorator(FishingOperation.class, null);
+
+ fishingoperationText =
+ _("tutti.label.traitReminder", decorator.toString(bean));
+
if (log.isInfoEnabled()) {
- log.info("Get species batch for fishingOperation: " + bean.getId());
+ log.info("Get species batch for fishingOperation: " +
+ bean.getId() + " - " + fishingoperationText);
}
rows = Lists.newArrayList();
@@ -327,6 +338,8 @@
model.setRows(rows);
fishingOperationMonitor.clearModified();
+
+ ui.getFishingOperationReminderLabel().setText(fishingoperationText);
}
//------------------------------------------------------------------------//
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/benthos/BenthosBatchUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/benthos/BenthosBatchUI.jaxx 2012-12-17 07:39:44 UTC (rev 81)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/benthos/BenthosBatchUI.jaxx 2012-12-17 09:18:52 UTC (rev 82)
@@ -60,16 +60,16 @@
]]></script>
<BenthosBatchUIHandler id='handler'
- initializer='getContextValue(BenthosBatchUIHandler.class)'/>
+ initializer='getContextValue(BenthosBatchUIHandler.class)'/>
<BenthosBatchUIModel id='model'
- initializer='getContextValue(BenthosBatchUIModel.class)'/>
+ initializer='getContextValue(BenthosBatchUIModel.class)'/>
<SwingValidatorMessageTableModel id='errorTableModel'/>
<BeanValidator id='validator' bean='model' errorTableModel='errorTableModel'
uiClass='jaxx.runtime.validator.swing.ui.ImageValidationUI'>
- <field name='totalWeight' component='totalWeightField'/>
+ <field name='totalWeight' component='totalWeightField'/>
<field name='sampleTotalWeight' component='sampleTotalWeightField'/>
</BeanValidator>
@@ -77,31 +77,38 @@
<AttachmentEditorUI id='attachmentEditor'/>
- <Table id='form' fill='both' constraints='BorderLayout.NORTH'>
+ <JPanel constraints='BorderLayout.NORTH' layout='{new BorderLayout()}'>
+ <JLabel id='fishingOperationReminderLabel'
+ constraints='BorderLayout.NORTH'/>
+ <JSeparator constraints='BorderLayout.CENTER'/>
- <!-- Poids total -->
- <row>
- <cell anchor='west'>
- <JLabel id='totalWeightLabel'/>
- </cell>
- <cell weightx='1.0'>
+ <Table id='form' fill='both' constraints='BorderLayout.SOUTH'>
+
+ <!-- Poids total -->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='totalWeightLabel'/>
+ </cell>
+ <cell weightx='1.0'>
<NumberEditor id='totalWeightField' constructorParams='this'/>
- </cell>
- </row>
+ </cell>
+ </row>
- <!-- Poids total échantillonné -->
- <row>
- <cell>
- <JLabel id='sampleTotalWeightLabel'/>
- </cell>
- <cell>
- <NumberEditor id='sampleTotalWeightField' constructorParams='this'/>
- </cell>
- </row>
- </Table>
+ <!-- Poids total échantillonné -->
+ <row>
+ <cell>
+ <JLabel id='sampleTotalWeightLabel'/>
+ </cell>
+ <cell>
+ <NumberEditor id='sampleTotalWeightField' constructorParams='this'/>
+ </cell>
+ </row>
+ </Table>
+ </JPanel>
<JScrollPane id='tableScrollPane' constraints='BorderLayout.CENTER'>
- <JXTable id='table' onFocusLost='handler.saveSelectedRowIfRequired(event);'/>
+ <JXTable id='table'
+ onFocusLost='handler.saveSelectedRowIfRequired(event);'/>
</JScrollPane>
</JPanel>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/benthos/BenthosBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/benthos/BenthosBatchUIHandler.java 2012-12-17 07:39:44 UTC (rev 81)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/benthos/BenthosBatchUIHandler.java 2012-12-17 09:18:52 UTC (rev 82)
@@ -46,6 +46,7 @@
import javax.swing.table.TableColumnModel;
import java.util.List;
+import static org.nuiton.i18n.I18n._;
import static org.nuiton.i18n.I18n.n_;
/**
@@ -331,14 +332,24 @@
List<BenthosBatchRowModel> rows;
+ String fishingoperationText;
+
if (empty) {
rows = null;
bean = new FishingOperation();
model.setFishingOperation(null);
+ fishingoperationText = "";
} else {
+ Decorator<FishingOperation> decorator =
+ getDecorator(FishingOperation.class, null);
+
+ fishingoperationText =
+ _("tutti.label.traitReminder", decorator.toString(bean));
+
if (log.isInfoEnabled()) {
- log.info("Get species batch for fishingOperation: " + bean.getId());
+ log.info("Get species batch for fishingOperation: " +
+ bean.getId() + " - " + fishingoperationText);
}
rows = Lists.newArrayList();
@@ -358,6 +369,8 @@
model.setRows(rows);
fishingOperationMonitor.clearModified();
+
+ ui.getFishingOperationReminderLabel().setText(fishingoperationText);
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/macrowaste/MacroWasteBatchUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/macrowaste/MacroWasteBatchUI.jaxx 2012-12-17 07:39:44 UTC (rev 81)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/macrowaste/MacroWasteBatchUI.jaxx 2012-12-17 09:18:52 UTC (rev 82)
@@ -60,37 +60,43 @@
]]></script>
<MacroWasteBatchUIHandler id='handler'
- initializer='getContextValue(MacroWasteBatchUIHandler.class)'/>
+ initializer='getContextValue(MacroWasteBatchUIHandler.class)'/>
<MacroWasteBatchUIModel id='model'
- initializer='getContextValue(MacroWasteBatchUIModel.class)'/>
+ initializer='getContextValue(MacroWasteBatchUIModel.class)'/>
<SwingValidatorMessageTableModel id='errorTableModel'/>
<BeanValidator id='validator' bean='model' errorTableModel='errorTableModel'
uiClass='jaxx.runtime.validator.swing.ui.ImageValidationUI'>
- <field name='totalWeight' component='totalWeightField'/>
+ <field name='totalWeight' component='totalWeightField'/>
</BeanValidator>
<LongTextEditorUI id='longTextEditor'/>
<AttachmentEditorUI id='attachmentEditor'/>
+ <JPanel constraints='BorderLayout.NORTH' layout='{new BorderLayout()}'>
+ <JLabel id='fishingOperationReminderLabel'
+ constraints='BorderLayout.NORTH'/>
+ <JSeparator constraints='BorderLayout.CENTER'/>
- <Table id='form' fill='both' constraints='BorderLayout.NORTH'>
+ <Table id='form' fill='both' constraints='BorderLayout.SOUTH'>
- <!-- Poids total -->
- <row>
- <cell anchor='west'>
- <JLabel id='totalWeightLabel'/>
- </cell>
- <cell weightx='1.0'>
+ <!-- Poids total -->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='totalWeightLabel'/>
+ </cell>
+ <cell weightx='1.0'>
<NumberEditor id='totalWeightField' constructorParams='this'/>
- </cell>
- </row>
- </Table>
+ </cell>
+ </row>
+ </Table>
+ </JPanel>
<JScrollPane id='tableScrollPane' constraints='BorderLayout.CENTER'>
- <JXTable id='table' onFocusLost='handler.saveSelectedRowIfRequired(event);'/>
+ <JXTable id='table'
+ onFocusLost='handler.saveSelectedRowIfRequired(event);'/>
</JScrollPane>
</JPanel>
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/macrowaste/MacroWasteBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/macrowaste/MacroWasteBatchUIHandler.java 2012-12-17 07:39:44 UTC (rev 81)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/macrowaste/MacroWasteBatchUIHandler.java 2012-12-17 09:18:52 UTC (rev 82)
@@ -45,6 +45,7 @@
import javax.swing.table.TableColumnModel;
import java.util.List;
+import static org.nuiton.i18n.I18n._;
import static org.nuiton.i18n.I18n.n_;
/**
@@ -285,14 +286,24 @@
List<MacroWasteBatchRowModel> rows;
+ String fishingoperationText;
+
if (empty) {
rows = null;
bean = new FishingOperation();
model.setFishingOperation(null);
+ fishingoperationText="";
} else {
+ Decorator<FishingOperation> decorator =
+ getDecorator(FishingOperation.class, null);
+
+ fishingoperationText =
+ _("tutti.label.traitReminder", decorator.toString(bean));
+
if (log.isInfoEnabled()) {
- log.info("Get species batch for fishingOperation: " + bean.getId());
+ log.info("Get species batch for fishingOperation: " +
+ bean.getId() + " - " + fishingoperationText);
}
rows = Lists.newArrayList();
@@ -312,6 +323,8 @@
model.setRows(rows);
fishingOperationMonitor.clearModified();
+
+ ui.getFishingOperationReminderLabel().setText(fishingoperationText);
}
//------------------------------------------------------------------------//
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/plankton/PlanktonBatchUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/plankton/PlanktonBatchUI.jaxx 2012-12-17 07:39:44 UTC (rev 81)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/plankton/PlanktonBatchUI.jaxx 2012-12-17 09:18:52 UTC (rev 82)
@@ -60,48 +60,54 @@
]]></script>
<PlanktonBatchUIHandler id='handler'
- initializer='getContextValue(PlanktonBatchUIHandler.class)'/>
+ initializer='getContextValue(PlanktonBatchUIHandler.class)'/>
<PlanktonBatchUIModel id='model'
- initializer='getContextValue(PlanktonBatchUIModel.class)'/>
+ initializer='getContextValue(PlanktonBatchUIModel.class)'/>
<SwingValidatorMessageTableModel id='errorTableModel'/>
<BeanValidator id='validator' bean='model' errorTableModel='errorTableModel'
uiClass='jaxx.runtime.validator.swing.ui.ImageValidationUI'>
- <field name='totalWeight' component='totalWeightField'/>
+ <field name='totalWeight' component='totalWeightField'/>
<field name='sampleTotalWeight' component='sampleTotalWeightField'/>
</BeanValidator>
<LongTextEditorUI id='longTextEditor'/>
<AttachmentEditorUI id='attachmentEditor'/>
+ <JPanel constraints='BorderLayout.NORTH' layout='{new BorderLayout()}'>
+ <JLabel id='fishingOperationReminderLabel'
+ constraints='BorderLayout.NORTH'/>
+ <JSeparator constraints='BorderLayout.CENTER'/>
- <Table id='form' fill='both' constraints='BorderLayout.NORTH'>
+ <Table id='form' fill='both' constraints='BorderLayout.SOUTH'>
- <!-- Poids total -->
- <row>
- <cell anchor='west'>
- <JLabel id='totalWeightLabel'/>
- </cell>
- <cell weightx='1.0'>
+ <!-- Poids total -->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='totalWeightLabel'/>
+ </cell>
+ <cell weightx='1.0'>
<NumberEditor id='totalWeightField' constructorParams='this'/>
- </cell>
- </row>
+ </cell>
+ </row>
- <!-- Poids total échantillonné -->
- <row>
- <cell>
- <JLabel id='sampleTotalWeightLabel'/>
- </cell>
- <cell>
- <NumberEditor id='sampleTotalWeightField' constructorParams='this'/>
- </cell>
- </row>
- </Table>
+ <!-- Poids total échantillonné -->
+ <row>
+ <cell>
+ <JLabel id='sampleTotalWeightLabel'/>
+ </cell>
+ <cell>
+ <NumberEditor id='sampleTotalWeightField' constructorParams='this'/>
+ </cell>
+ </row>
+ </Table>
+ </JPanel>
<JScrollPane id='tableScrollPane' constraints='BorderLayout.CENTER'>
- <JXTable id='table' onFocusLost='handler.saveSelectedRowIfRequired(event);'/>
+ <JXTable id='table'
+ onFocusLost='handler.saveSelectedRowIfRequired(event);'/>
</JScrollPane>
</JPanel>
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/plankton/PlanktonBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/plankton/PlanktonBatchUIHandler.java 2012-12-17 07:39:44 UTC (rev 81)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/plankton/PlanktonBatchUIHandler.java 2012-12-17 09:18:52 UTC (rev 82)
@@ -46,6 +46,7 @@
import javax.swing.table.TableColumnModel;
import java.util.List;
+import static org.nuiton.i18n.I18n._;
import static org.nuiton.i18n.I18n.n_;
/**
@@ -327,14 +328,24 @@
List<PlanktonBatchRowModel> rows;
+ String fishingoperationText;
+
if (empty) {
rows = null;
bean = new FishingOperation();
model.setFishingOperation(null);
+ fishingoperationText = "";
} else {
+ Decorator<FishingOperation> decorator =
+ getDecorator(FishingOperation.class, null);
+
+ fishingoperationText =
+ _("tutti.label.traitReminder", decorator.toString(bean));
+
if (log.isInfoEnabled()) {
- log.info("Get species batch for fishingOperation: " + bean.getId());
+ log.info("Get species batch for fishingOperation: " +
+ bean.getId() + " - " + fishingoperationText);
}
rows = Lists.newArrayList();
@@ -354,6 +365,8 @@
model.setRows(rows);
fishingOperationMonitor.clearModified();
+
+ ui.getFishingOperationReminderLabel().setText(fishingoperationText);
}
//------------------------------------------------------------------------//
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/SpeciesBatchUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/SpeciesBatchUI.jaxx 2012-12-17 07:39:44 UTC (rev 81)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/SpeciesBatchUI.jaxx 2012-12-17 09:18:52 UTC (rev 82)
@@ -62,61 +62,67 @@
]]></script>
<SpeciesBatchUIHandler id='handler'
- initializer='getContextValue(SpeciesBatchUIHandler.class)'/>
+ initializer='getContextValue(SpeciesBatchUIHandler.class)'/>
<SpeciesBatchUIModel id='model'
- initializer='getContextValue(SpeciesBatchUIModel.class)'/>
+ initializer='getContextValue(SpeciesBatchUIModel.class)'/>
<SwingValidatorMessageTableModel id='errorTableModel'/>
<BeanValidator id='validator' bean='model' errorTableModel='errorTableModel'
uiClass='jaxx.runtime.validator.swing.ui.ImageValidationUI'>
- <field name='totalWeight' component='totalWeightField'/>
- <field name='totalVracWeight' component='totalVracWeightField'/>
- <field name='sampleVracWeight' component='sampleVracWeightField'/>
+ <field name='totalWeight' component='totalWeightField'/>
+ <field name='totalVracWeight' component='totalVracWeightField'/>
+ <field name='sampleVracWeight' component='sampleVracWeightField'/>
<field name='totalHorsVracWeight' component='totalHorsVracWeightField'/>
</BeanValidator>
- <SpeciesFrequencyUI id='frequencyEditor' constructorParams='handler.getContext()'/>
-
+ <SpeciesFrequencyUI id='frequencyEditor'
+ constructorParams='handler.getContext()'/>
+
<LongTextEditorUI id='longTextEditor'/>
-
+
<AttachmentEditorUI id='attachmentEditor'/>
+ <JPanel constraints='BorderLayout.NORTH' layout='{new BorderLayout()}'>
+ <JLabel id='fishingOperationReminderLabel'
+ constraints='BorderLayout.NORTH'/>
+ <JSeparator constraints='BorderLayout.CENTER'/>
+ <Table id='form' fill='both' constraints='BorderLayout.SOUTH'>
- <Table id='form' fill='both' constraints='BorderLayout.NORTH'>
+ <!-- Poids total / Poids total vrac -->
+ <row>
+ <cell anchor='west'>
+ <JLabel id='totalWeightLabel'/>
+ </cell>
+ <cell weightx='1.0'>
+ <NumberEditor id='totalWeightField' constructorParams='this'/>
+ </cell>
+ <cell anchor='west'>
+ <JLabel id='totalVracWeightLabel'/>
+ </cell>
+ <cell weightx='1.0'>
+ <NumberEditor id='totalVracWeightField' constructorParams='this'/>
+ </cell>
+ </row>
- <!-- Poids total / Poids total vrac -->
- <row>
- <cell anchor='west'>
- <JLabel id='totalWeightLabel'/>
- </cell>
- <cell weightx='1.0'>
- <NumberEditor id='totalWeightField' constructorParams='this'/>
- </cell>
- <cell anchor='west'>
- <JLabel id='totalVracWeightLabel'/>
- </cell>
- <cell weightx='1.0'>
- <NumberEditor id='totalVracWeightField' constructorParams='this'/>
- </cell>
- </row>
+ <!-- Poids échantillonné vrac / Poids total hors vrac -->
+ <row>
+ <cell>
+ <JLabel id='sampleVracWeightLabel'/>
+ </cell>
+ <cell>
+ <NumberEditor id='sampleVracWeightField' constructorParams='this'/>
+ </cell>
+ <cell>
+ <JLabel id='totalHorsVracWeightLabel'/>
+ </cell>
+ <cell>
+ <JTextField id='totalHorsVracWeightField'/>
+ </cell>
+ </row>
+ </Table>
+ </JPanel>
- <!-- Poids échantillonné vrac / Poids total hors vrac -->
- <row>
- <cell>
- <JLabel id='sampleVracWeightLabel'/>
- </cell>
- <cell>
- <NumberEditor id='sampleVracWeightField' constructorParams='this'/>
- </cell>
- <cell>
- <JLabel id='totalHorsVracWeightLabel'/>
- </cell>
- <cell>
- <JTextField id='totalHorsVracWeightField'/>
- </cell>
- </row>
- </Table>
<JScrollPane id='tableScrollPane' constraints='BorderLayout.CENTER'>
<JXTable id='table' onFocusLost='handler.saveSelectedRowIfRequired(event)'/>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/SpeciesBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/SpeciesBatchUIHandler.java 2012-12-17 07:39:44 UTC (rev 81)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/SpeciesBatchUIHandler.java 2012-12-17 09:18:52 UTC (rev 82)
@@ -53,6 +53,7 @@
import java.util.List;
import java.util.Set;
+import static org.nuiton.i18n.I18n._;
import static org.nuiton.i18n.I18n.n_;
/**
@@ -150,8 +151,6 @@
@Override
protected TableColumnModel createTableColumnModel() {
- List<String> samplingOrder = getModel().getSamplingOrder();
-
DefaultTableColumnModelExt columnModel =
new DefaultTableColumnModelExt();
@@ -188,7 +187,7 @@
}
- if (samplingOrder.contains(SpeciesBatchRowModel.PROPERTY_SORTED_UNSORTED_CATEGORY)) {
+ {
// SortedUnsortedCategory column
@@ -203,7 +202,7 @@
decorator, data);
}
- if (samplingOrder.contains(SpeciesBatchRowModel.PROPERTY_WEIGHT_CATEGORY)) {
+ {
// WeightCategory column
@@ -219,7 +218,7 @@
decorator, data);
}
- if (samplingOrder.contains(SpeciesBatchRowModel.PROPERTY_SEX)) {
+ {
// Sex column
@@ -233,7 +232,7 @@
decorator, data);
}
- if (samplingOrder.contains(SpeciesBatchRowModel.PROPERTY_MATURITY)) {
+ {
// Maturity column
@@ -242,7 +241,7 @@
TuttiUI.DECIMAL3_PATTERN);
}
- if (samplingOrder.contains(SpeciesBatchRowModel.PROPERTY_AGE)) {
+ {
// Age column
@@ -530,14 +529,24 @@
List<SpeciesBatchRowModel> rows;
+ String fishingoperationText;
+
if (empty) {
rows = null;
bean = new FishingOperation();
model.setFishingOperation(null);
+ fishingoperationText = "";
} else {
+ Decorator<FishingOperation> decorator =
+ getDecorator(FishingOperation.class, null);
+
+ fishingoperationText =
+ _("tutti.label.traitReminder", decorator.toString(bean));
+
if (log.isInfoEnabled()) {
- log.info("Get species batch for fishingOperation: " + bean.getId());
+ log.info("Get species batch for fishingOperation: " +
+ bean.getId() + " - " + fishingoperationText);
}
rows = Lists.newArrayList();
@@ -559,6 +568,8 @@
model.setRows(rows);
fishingOperationMonitor.clearModified();
+
+ ui.getFishingOperationReminderLabel().setText(fishingoperationText);
}
//------------------------------------------------------------------------//
@@ -592,7 +603,9 @@
SpeciesBatchRowModel.PROPERTY_SPECIES,
SpeciesBatchRowModel.PROPERTY_SORTED_UNSORTED_CATEGORY,
SpeciesBatchRowModel.PROPERTY_WEIGHT_CATEGORY,
- SpeciesBatchRowModel.PROPERTY_SEX
+ SpeciesBatchRowModel.PROPERTY_SEX,
+ SpeciesBatchRowModel.PROPERTY_MATURITY,
+ SpeciesBatchRowModel.PROPERTY_AGE
);
getModel().setSamplingOrder(samplingOrder);
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 2012-12-17 07:39:44 UTC (rev 81)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2012-12-17 09:18:52 UTC (rev 82)
@@ -132,6 +132,7 @@
tutti.label.tab.observationIndividuel=Observations individuelles
tutti.label.tab.plancton=Plancton
tutti.label.tab.species=Espèces
+tutti.label.traitReminder=Trait \: %s
tutti.legend.frequencyConfiguration=Configuration
tutti.menu.actions=Actions
tutti.menu.actions.tip=Actions
Modified: trunk/tutti-ui-swing/src/main/resources/icons/action-edit-comment.png
===================================================================
(Binary files differ)
1
0
r81 - in trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing: content/operation/species util/table
by tchemit@users.forge.codelutin.com 17 Dec '12
by tchemit@users.forge.codelutin.com 17 Dec '12
17 Dec '12
Author: tchemit
Date: 2012-12-17 08:39:44 +0100 (Mon, 17 Dec 2012)
New Revision: 81
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/81
Log:
add null value in comboeditor in tables + can quit frequency dialog via espace stroke
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/FrequencyCellComponent.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/FrequencyCellComponent.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/FrequencyCellComponent.java 2012-12-17 07:36:36 UTC (rev 80)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/FrequencyCellComponent.java 2012-12-17 07:39:44 UTC (rev 81)
@@ -32,6 +32,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import javax.swing.AbstractAction;
import javax.swing.AbstractCellEditor;
import javax.swing.JButton;
import javax.swing.JTable;
@@ -41,6 +42,7 @@
import java.awt.Color;
import java.awt.Component;
import java.awt.Frame;
+import java.awt.event.ActionEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
@@ -143,8 +145,17 @@
ui.editBatch(editRow);
// open frequency dialog
- TuttiUIUtil.openInDialog(ui, frame, _("tutti.title.frequency"), true, null);
+ TuttiUIUtil.openInDialog(
+ ui, frame, _("tutti.title.frequency"), true,
+ new AbstractAction() {
+ private static final long serialVersionUID = 1L;
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ ui.getHandler().close();
+ }
+ });
+
// at close, synch back frequencies
editRow.updateTotalFromFrequencies();
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java 2012-12-17 07:36:36 UTC (rev 80)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java 2012-12-17 07:39:44 UTC (rev 81)
@@ -280,6 +280,11 @@
List<B> data) {
JComboBox comboBox = new JComboBox();
comboBox.setRenderer(newListCellRender(decorator));
+
+ // add a null value at first position
+ if (!data.isEmpty() && data.get(0) != null) {
+ data.add(0, null);
+ }
SwingUtil.fillComboBox(comboBox, data, null);
ObjectToStringConverter converter = BeanUIUtil.newDecoratedObjectToStringConverter(decorator);
1
0
r80 - in trunk/tutti-persistence-adagio/src: main/java/fr/ifremer/tutti/persistence main/java/fr/ifremer/tutti/persistence/config test/resources
by tchemit@users.forge.codelutin.com 17 Dec '12
by tchemit@users.forge.codelutin.com 17 Dec '12
17 Dec '12
Author: tchemit
Date: 2012-12-17 08:36:36 +0100 (Mon, 17 Dec 2012)
New Revision: 80
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/80
Log:
prepare configuration for the adagio persistence module
Added:
trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/config/
trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceAdagioConfig.java
trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceAdagioConfigOption.java
trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceAdagioProvider.java
trunk/tutti-persistence-adagio/src/test/resources/tutti-test.properties
Modified:
trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceAdagioImpl.java
trunk/tutti-persistence-adagio/src/test/resources/conf.properties
Modified: trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceAdagioImpl.java
===================================================================
--- trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceAdagioImpl.java 2012-12-17 07:32:05 UTC (rev 79)
+++ trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceAdagioImpl.java 2012-12-17 07:36:36 UTC (rev 80)
@@ -24,6 +24,7 @@
* #L%
*/
+import fr.ifremer.tutti.persistence.config.TuttiPersistenceAdagioConfig;
import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch;
import fr.ifremer.tutti.persistence.entities.data.BenthosBatch;
import fr.ifremer.tutti.persistence.entities.data.Cruise;
@@ -46,6 +47,7 @@
import fr.ifremer.tutti.persistence.entities.referential.Vessel;
import fr.ifremer.tutti.persistence.entities.referential.WeightCategory;
import fr.ifremer.tutti.persistence.entities.referential.Zone;
+import org.apache.commons.io.FileUtils;
import org.nuiton.util.ApplicationConfig;
import java.io.IOException;
@@ -57,6 +59,13 @@
*/
public class TuttiPersistenceAdagioImpl implements TuttiPersistence {
+ /**
+ * Persistence config.
+ *
+ * @since 0.2
+ */
+ protected TuttiPersistenceAdagioConfig config;
+
@Override
public String getImplementationName() {
return "Persistence Adagio implementation";
@@ -64,6 +73,12 @@
@Override
public void open(ApplicationConfig config) throws IOException {
+ this.config = new TuttiPersistenceAdagioConfig(config);
+ try {
+ FileUtils.forceMkdir(this.config.getDbDirectory());
+ } catch (IOException e) {
+ throw new RuntimeException("Could not create directory", e);
+ }
}
@Override
Added: trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceAdagioConfig.java
===================================================================
--- trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceAdagioConfig.java (rev 0)
+++ trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceAdagioConfig.java 2012-12-17 07:36:36 UTC (rev 80)
@@ -0,0 +1,66 @@
+package fr.ifremer.tutti.persistence.config;
+
+/*
+ * #%L
+ * Tutti :: Persistence Adagio (impl)
+ * $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%
+ */
+
+import org.nuiton.util.ApplicationConfig;
+
+import java.io.File;
+
+/**
+ * Configuration for the persistence driver.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.2
+ */
+public class TuttiPersistenceAdagioConfig {
+
+ protected final ApplicationConfig config;
+
+ public TuttiPersistenceAdagioConfig(ApplicationConfig config) {
+ this.config = config;
+ config.loadDefaultOptions(TuttiPersistenceAdagioConfigOption.values());
+ }
+
+ public File getDbDirectory() {
+ return config.getOptionAsFile(TuttiPersistenceAdagioConfigOption.DB_PATH.getKey());
+ }
+
+ public File getDbName() {
+ return config.getOptionAsFile(TuttiPersistenceAdagioConfigOption.DB_NAME.getKey());
+ }
+
+ public File getDbConfigurationPath() {
+ return config.getOptionAsFile(TuttiPersistenceAdagioConfigOption.DB_CONFIGURATION_PATH.getKey());
+ }
+
+ public File getDbMappingPath() {
+ return config.getOptionAsFile(TuttiPersistenceAdagioConfigOption.BB_MAPPING_PATH.getKey());
+ }
+
+ public ApplicationConfig getConfig() {
+ return config;
+ }
+
+}
\ No newline at end of file
Property changes on: trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceAdagioConfig.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceAdagioConfigOption.java
===================================================================
--- trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceAdagioConfigOption.java (rev 0)
+++ trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceAdagioConfigOption.java 2012-12-17 07:36:36 UTC (rev 80)
@@ -0,0 +1,141 @@
+package fr.ifremer.tutti.persistence.config;
+
+/*
+ * #%L
+ * Tutti :: Persistence Adagio (impl)
+ * $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%
+ */
+
+import org.nuiton.util.ApplicationConfig;
+
+import java.io.File;
+
+/**
+ * Persistence configuration options.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.2
+ */
+public enum TuttiPersistenceAdagioConfigOption implements ApplicationConfig.OptionDef {
+
+ DB_PATH("tutti.persistence.dbPath",
+ "Répertoire où est la base de données",
+ "${tutti.data.directory}/db",
+ File.class,
+ true,
+ true),
+ DB_NAME("tutti.persistence.dbName",
+ "Nom du fichier de la base de données",
+ "tutti",
+ String.class,
+ true,
+ true),
+
+ DB_CONFIGURATION_PATH("tutti.persistence.dbConfigurationµPath",
+ "Chemin du fichier de configuration de la base",
+ "${tutti.data.directory}/dbConfiguration.properties",
+ File.class,
+ true,
+ true),
+ BB_MAPPING_PATH("tutti.persistence.dbMappingPath",
+ "Chemin du fichier de mapping des constantes de la base",
+ "${tutti.data.directory}/dbMapping.properties",
+ File.class,
+ true,
+ true);
+
+ /** Configuration key. */
+ private final String key;
+
+ /** I18n key of option description */
+ private final String description;
+
+ /** Type of option */
+ private final Class<?> type;
+
+ /** Default value of option. */
+ private String defaultValue;
+
+ /** Flag to not keep option value on disk */
+ private boolean isTransient;
+
+ /** Flag to not allow option value modification */
+ private boolean isFinal;
+
+ TuttiPersistenceAdagioConfigOption(String key,
+ String description,
+ String defaultValue,
+ Class<?> type,
+ boolean isTransient,
+ boolean isFinal) {
+ this.key = key;
+ this.description = description;
+ this.defaultValue = defaultValue;
+ this.type = type;
+ this.isTransient = isTransient;
+ this.isFinal = isFinal;
+ }
+
+ @Override
+ public String getKey() {
+ return key;
+ }
+
+ @Override
+ public Class<?> getType() {
+ return type;
+ }
+
+ @Override
+ public String getDescription() {
+ return description;
+ }
+
+ @Override
+ public String getDefaultValue() {
+ return defaultValue;
+ }
+
+ @Override
+ public boolean isTransient() {
+ return isTransient;
+ }
+
+ @Override
+ public boolean isFinal() {
+ return isFinal;
+ }
+
+ @Override
+ public void setDefaultValue(String defaultValue) {
+ this.defaultValue = defaultValue;
+ }
+
+ @Override
+ public void setTransient(boolean newValue) {
+ // not used
+ }
+
+ @Override
+ public void setFinal(boolean newValue) {
+ // not used
+ }
+}
\ No newline at end of file
Property changes on: trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceAdagioConfigOption.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceAdagioProvider.java
===================================================================
--- trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceAdagioProvider.java (rev 0)
+++ trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceAdagioProvider.java 2012-12-17 07:36:36 UTC (rev 80)
@@ -0,0 +1,59 @@
+package fr.ifremer.tutti.persistence.config;
+
+/*
+ * #%L
+ * Tutti :: Persistence Adagio (impl)
+ * $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%
+ */
+
+import org.nuiton.util.ApplicationConfig;
+import org.nuiton.util.ApplicationConfigProvider;
+
+import java.util.Locale;
+
+/**
+ * Persistence config provider (for site generation).
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.2
+ */
+public class TuttiPersistenceAdagioProvider implements ApplicationConfigProvider {
+
+ @Override
+ public String getName() {
+ return "tutti-adagio-persistence";
+ }
+
+ @Override
+ public String getDescription(Locale locale) {
+ return "Configuration de la persistence de Tutti (Adagio implantation).";
+ }
+
+ @Override
+ public ApplicationConfig.OptionDef[] getOptions() {
+ return TuttiPersistenceAdagioConfigOption.values();
+ }
+
+ @Override
+ public ApplicationConfig.ActionDef[] getActions() {
+ return new ApplicationConfig.ActionDef[0];
+ }
+}
Property changes on: trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/config/TuttiPersistenceAdagioProvider.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/tutti-persistence-adagio/src/test/resources/conf.properties
===================================================================
--- trunk/tutti-persistence-adagio/src/test/resources/conf.properties 2012-12-17 07:32:05 UTC (rev 79)
+++ trunk/tutti-persistence-adagio/src/test/resources/conf.properties 2012-12-17 07:36:36 UTC (rev 80)
@@ -21,21 +21,6 @@
# <http://www.gnu.org/licenses/gpl-3.0.html>.
# #L%
###
-#--------------------------------------------------------------------------
-#
-# WARNING : For UNIT TEST ONLY
-# --------------
-# Configuration file for agadio-persistence
-#
-# project : ${pom.name}
-# version : ${pom.version} for ${pom.env}
-# env : ${pom.env} - ${pom.profil}
-# date : ${pom.date.fr}
-#
-# Copyright INRH/Ifremer 2012
-#
-# 25/11/12 BL Creation
-#--------------------------------------------------------------------------
# dataSource : jndi ou local
dataSource.type=local
@@ -50,6 +35,7 @@
dataSource.jdbc.username=sa
dataSource.jdbc.password=
dataSource.jdbc.url=jdbc:hsqldb:file:src/test/db/allegro
+#dataSource.jdbc.url=jdbc:hsqldb:file:${tutti.persistence.dbPath}/${tutti.persistence.dbName}
#dataSource.jdbc.url=jdbc:hsqldb:hsql://localhost/toto
# Hibernate configuration :
Added: trunk/tutti-persistence-adagio/src/test/resources/tutti-test.properties
===================================================================
--- trunk/tutti-persistence-adagio/src/test/resources/tutti-test.properties (rev 0)
+++ trunk/tutti-persistence-adagio/src/test/resources/tutti-test.properties 2012-12-17 07:36:36 UTC (rev 80)
@@ -0,0 +1,24 @@
+###
+# #%L
+# Tutti :: Persistence Adagio (impl)
+# $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%
+###
+tutti.data.directory=${testDirectory}
Property changes on: trunk/tutti-persistence-adagio/src/test/resources/tutti-test.properties
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
1
0
r79 - trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence
by tchemit@users.forge.codelutin.com 17 Dec '12
by tchemit@users.forge.codelutin.com 17 Dec '12
17 Dec '12
Author: tchemit
Date: 2012-12-17 08:32:05 +0100 (Mon, 17 Dec 2012)
New Revision: 79
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/79
Log:
remove too hard test for the moment on entity removal
Modified:
trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevImpl.java
Modified: trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevImpl.java
===================================================================
--- trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevImpl.java 2012-12-15 16:15:44 UTC (rev 78)
+++ trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevImpl.java 2012-12-17 07:32:05 UTC (rev 79)
@@ -769,7 +769,13 @@
protected <B extends IdAware> void remove(Class<B> type, String id) {
Preconditions.checkNotNull(id, "Can't delete a null id");
B bean = getBean(type, id);
- Preconditions.checkNotNull(bean, "Can't delete a null bean");
+ //FIXME tchemit Should never happen!
+ if (bean == null) {
+ if (log.isWarnEnabled()) {
+ log.warn("No bean with id: " + id);
+ }
+ }
+// Preconditions.checkNotNull(bean, "Can't delete a null bean");
cache.remove(type, bean);
persistToFile(type);
}
1
0
15 Dec '12
Author: tchemit
Date: 2012-12-15 17:15:44 +0100 (Sat, 15 Dec 2012)
New Revision: 78
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/78
Log:
optimize i18n
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 2012-12-15 16:05:45 UTC (rev 77)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2012-12-15 16:15:44 UTC (rev 78)
@@ -163,8 +163,6 @@
tutti.table.macrowaste.batch.header.comment=Commentaire
tutti.table.macrowaste.batch.header.file=Pièces jointes
tutti.table.macrowaste.batch.header.macroWasteCategory=Catégorie
-tutti.table.macrowaste.batch.header.speciesByCode=Espèce
-tutti.table.macrowaste.batch.header.speciesByGenusCode=Espèce
tutti.table.macrowaste.batch.header.weight=Poids
tutti.table.plankton.batch.header.comment=Commentaire
tutti.table.plankton.batch.header.elevationRate=Fraction d'élévation
@@ -207,7 +205,6 @@
tutti.title.selectedCruise=Campagne %s
tutti.title.selectedProgram=Série de campagne %s
tutti.to.be.done=< A FAIRE >
-tutti.tooltip.=
tutti.tooltip.attachment.none=Pas de pièce-jointes
tutti.tooltip.comment.none=Pas de commentaire
tutti.validator.error.cruise.beginDate.required=La date de début est obligatoire
1
0
15 Dec '12
Author: tchemit
Date: 2012-12-15 17:05:45 +0100 (Sat, 15 Dec 2012)
New Revision: 77
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/77
Log:
add new entities (macroWasteCategory, SortedUnsortedCategory)
improve batch handler design
add filter on batch tables
improve longtext editor
improve attachment editor
Added:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/AbstractTuttiBatchTableUIHandler.java
trunk/tutti-ui-swing/src/main/resources/icons/action-edit-attachment.png
trunk/tutti-ui-swing/src/main/resources/icons/action-edit-comment.png
Modified:
trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceAdagioImpl.java
trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevFixtures.java
trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevImpl.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java
trunk/tutti-persistence/src/main/resources/META-INF/services/fr.ifremer.tutti.persistence.entities.IdAware
trunk/tutti-persistence/src/main/xmi/tutti-persistence.zargo
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/DecoratorService.java
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java
trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/accidental/AccidentalBatchRowModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/accidental/AccidentalBatchTableModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/accidental/AccidentalBatchUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/accidental/AccidentalBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/benthos/BenthosBatchRowModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/benthos/BenthosBatchTableModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/benthos/BenthosBatchUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/benthos/BenthosBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/macrowaste/MacroWasteBatchRowModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/macrowaste/MacroWasteBatchTableModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/macrowaste/MacroWasteBatchUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/macrowaste/MacroWasteBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/plankton/PlanktonBatchRowModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/plankton/PlanktonBatchTableModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/plankton/PlanktonBatchUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/plankton/PlanktonBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/SpeciesBatchRowModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/SpeciesBatchTableModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/SpeciesBatchTreeModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/SpeciesBatchUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/SpeciesBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/AttachmentCellComponent.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/LongTextCellComponent.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/LongTextEditorUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/LongTextEditorUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java 2012-12-15 00:14:45 UTC (rev 76)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java 2012-12-15 16:05:45 UTC (rev 77)
@@ -36,9 +36,11 @@
import fr.ifremer.tutti.persistence.entities.referential.BeaufortScale;
import fr.ifremer.tutti.persistence.entities.referential.Country;
import fr.ifremer.tutti.persistence.entities.referential.Gear;
+import fr.ifremer.tutti.persistence.entities.referential.MacroWasteCategory;
import fr.ifremer.tutti.persistence.entities.referential.Person;
import fr.ifremer.tutti.persistence.entities.referential.SeaState;
import fr.ifremer.tutti.persistence.entities.referential.Sex;
+import fr.ifremer.tutti.persistence.entities.referential.SortedUnsortedCategory;
import fr.ifremer.tutti.persistence.entities.referential.Species;
import fr.ifremer.tutti.persistence.entities.referential.Strata;
import fr.ifremer.tutti.persistence.entities.referential.Vessel;
@@ -72,6 +74,8 @@
//-- Referential methods --//
//------------------------------------------------------------------------//
+ List<SortedUnsortedCategory> getAllSortedUnsortedCategory();
+
List<WeightCategory> getAllWeightCategory();
List<Sex> getAllSex();
@@ -94,6 +98,8 @@
List<Person> getAllPerson();
+ List<MacroWasteCategory> getAllMacroWasteCategory();
+
//------------------------------------------------------------------------//
//-- Program methods --//
//------------------------------------------------------------------------//
Modified: trunk/tutti-persistence/src/main/resources/META-INF/services/fr.ifremer.tutti.persistence.entities.IdAware
===================================================================
--- trunk/tutti-persistence/src/main/resources/META-INF/services/fr.ifremer.tutti.persistence.entities.IdAware 2012-12-15 00:14:45 UTC (rev 76)
+++ trunk/tutti-persistence/src/main/resources/META-INF/services/fr.ifremer.tutti.persistence.entities.IdAware 2012-12-15 16:05:45 UTC (rev 77)
@@ -1,3 +1,4 @@
+fr.ifremer.tutti.persistence.entities.data.Attachment
fr.ifremer.tutti.persistence.entities.data.AccidentalBatch
fr.ifremer.tutti.persistence.entities.data.BenthosBatch
fr.ifremer.tutti.persistence.entities.data.FishingOperation
@@ -10,9 +11,11 @@
fr.ifremer.tutti.persistence.entities.referential.BeaufortScale
fr.ifremer.tutti.persistence.entities.referential.Country
fr.ifremer.tutti.persistence.entities.referential.Gear
+fr.ifremer.tutti.persistence.entities.referential.MacroWasteCategory
fr.ifremer.tutti.persistence.entities.referential.Person
fr.ifremer.tutti.persistence.entities.referential.SeaState
fr.ifremer.tutti.persistence.entities.referential.Sex
+fr.ifremer.tutti.persistence.entities.referential.SortedUnsortedCategory
fr.ifremer.tutti.persistence.entities.referential.Species
fr.ifremer.tutti.persistence.entities.referential.Strata
fr.ifremer.tutti.persistence.entities.referential.Vessel
Modified: trunk/tutti-persistence/src/main/xmi/tutti-persistence.zargo
===================================================================
(Binary files differ)
Modified: trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceAdagioImpl.java
===================================================================
--- trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceAdagioImpl.java 2012-12-15 00:14:45 UTC (rev 76)
+++ trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceAdagioImpl.java 2012-12-15 16:05:45 UTC (rev 77)
@@ -36,9 +36,11 @@
import fr.ifremer.tutti.persistence.entities.referential.BeaufortScale;
import fr.ifremer.tutti.persistence.entities.referential.Country;
import fr.ifremer.tutti.persistence.entities.referential.Gear;
+import fr.ifremer.tutti.persistence.entities.referential.MacroWasteCategory;
import fr.ifremer.tutti.persistence.entities.referential.Person;
import fr.ifremer.tutti.persistence.entities.referential.SeaState;
import fr.ifremer.tutti.persistence.entities.referential.Sex;
+import fr.ifremer.tutti.persistence.entities.referential.SortedUnsortedCategory;
import fr.ifremer.tutti.persistence.entities.referential.Species;
import fr.ifremer.tutti.persistence.entities.referential.Strata;
import fr.ifremer.tutti.persistence.entities.referential.Vessel;
@@ -69,6 +71,11 @@
}
@Override
+ public List<SortedUnsortedCategory> getAllSortedUnsortedCategory() {
+ return null;
+ }
+
+ @Override
public List<WeightCategory> getAllWeightCategory() {
return null;
}
@@ -124,6 +131,11 @@
}
@Override
+ public List<MacroWasteCategory> getAllMacroWasteCategory() {
+ return null;
+ }
+
+ @Override
public List<Program> getAllProgram() {
return null;
}
Modified: trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevFixtures.java
===================================================================
--- trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevFixtures.java 2012-12-15 00:14:45 UTC (rev 76)
+++ trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevFixtures.java 2012-12-15 16:05:45 UTC (rev 77)
@@ -26,14 +26,16 @@
import com.google.common.collect.ArrayListMultimap;
import fr.ifremer.tutti.persistence.entities.IdAware;
-import fr.ifremer.tutti.persistence.entities.referential.Person;
-import fr.ifremer.tutti.persistence.entities.referential.Strata;
import fr.ifremer.tutti.persistence.entities.referential.BeaufortScale;
import fr.ifremer.tutti.persistence.entities.referential.Country;
import fr.ifremer.tutti.persistence.entities.referential.Gear;
+import fr.ifremer.tutti.persistence.entities.referential.MacroWasteCategory;
+import fr.ifremer.tutti.persistence.entities.referential.Person;
import fr.ifremer.tutti.persistence.entities.referential.SeaState;
import fr.ifremer.tutti.persistence.entities.referential.Sex;
+import fr.ifremer.tutti.persistence.entities.referential.SortedUnsortedCategory;
import fr.ifremer.tutti.persistence.entities.referential.Species;
+import fr.ifremer.tutti.persistence.entities.referential.Strata;
import fr.ifremer.tutti.persistence.entities.referential.Vessel;
import fr.ifremer.tutti.persistence.entities.referential.WeightCategory;
import fr.ifremer.tutti.persistence.entities.referential.Zone;
@@ -257,6 +259,39 @@
wc.setName("Gros");
cache.put(WeightCategory.class, wc);
+ SortedUnsortedCategory suc;
+
+ suc = new SortedUnsortedCategory();
+ suc.setId(UUID.randomUUID().toString());
+ suc.setName("Vrac");
+ cache.put(SortedUnsortedCategory.class, suc);
+
+ suc = new SortedUnsortedCategory();
+ suc.setId(UUID.randomUUID().toString());
+ suc.setName("Hors Vrac");
+ cache.put(SortedUnsortedCategory.class, suc);
+
+ MacroWasteCategory mwc;
+
+ mwc = new MacroWasteCategory();
+ mwc.setId(UUID.randomUUID().toString());
+ mwc.setName("Pneu");
+ cache.put(MacroWasteCategory.class, mwc);
+
+ mwc = new MacroWasteCategory();
+ mwc.setId(UUID.randomUUID().toString());
+ mwc.setName("Plastique");
+ cache.put(MacroWasteCategory.class, mwc);
+
+ mwc = new MacroWasteCategory();
+ mwc.setId(UUID.randomUUID().toString());
+ mwc.setName("Machine à laver");
+ cache.put(MacroWasteCategory.class, mwc);
+
+ mwc = new MacroWasteCategory();
+ mwc.setId(UUID.randomUUID().toString());
+ mwc.setName("Métal");
+ cache.put(MacroWasteCategory.class, mwc);
}
public List<Zone> zone() {
@@ -304,7 +339,15 @@
return getData(WeightCategory.class);
}
- protected <B extends IdAware> List<B> getData(Class<B> entityType) {
+ public List<SortedUnsortedCategory> sortedUnsortedCategory() {
+ return getData(SortedUnsortedCategory.class);
+ }
+
+ public List<MacroWasteCategory> macroWasteCategory() {
+ return getData(MacroWasteCategory.class);
+ }
+
+ public <B extends IdAware> List<B> getData(Class<B> entityType) {
List<B> result = (List<B>) cache.get(entityType);
return result;
}
Modified: trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevImpl.java
===================================================================
--- trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevImpl.java 2012-12-15 00:14:45 UTC (rev 76)
+++ trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevImpl.java 2012-12-15 16:05:45 UTC (rev 77)
@@ -48,9 +48,11 @@
import fr.ifremer.tutti.persistence.entities.referential.BeaufortScale;
import fr.ifremer.tutti.persistence.entities.referential.Country;
import fr.ifremer.tutti.persistence.entities.referential.Gear;
+import fr.ifremer.tutti.persistence.entities.referential.MacroWasteCategory;
import fr.ifremer.tutti.persistence.entities.referential.Person;
import fr.ifremer.tutti.persistence.entities.referential.SeaState;
import fr.ifremer.tutti.persistence.entities.referential.Sex;
+import fr.ifremer.tutti.persistence.entities.referential.SortedUnsortedCategory;
import fr.ifremer.tutti.persistence.entities.referential.Species;
import fr.ifremer.tutti.persistence.entities.referential.Strata;
import fr.ifremer.tutti.persistence.entities.referential.Vessel;
@@ -171,6 +173,13 @@
//------------------------------------------------------------------------//
@Override
+ public List<SortedUnsortedCategory> getAllSortedUnsortedCategory() {
+ List<SortedUnsortedCategory> result =
+ getDataInNewList(SortedUnsortedCategory.class);
+ return result;
+ }
+
+ @Override
public List<WeightCategory> getAllWeightCategory() {
List<WeightCategory> result =
getDataInNewList(WeightCategory.class);
@@ -220,6 +229,13 @@
}
@Override
+ public List<MacroWasteCategory> getAllMacroWasteCategory() {
+ List<MacroWasteCategory> result =
+ getDataInNewList(MacroWasteCategory.class);
+ return result;
+ }
+
+ @Override
public List<SeaState> getAllSeaState() {
List<SeaState> result = getDataInNewList(SeaState.class);
return result;
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/DecoratorService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/DecoratorService.java 2012-12-15 00:14:45 UTC (rev 76)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/DecoratorService.java 2012-12-15 16:05:45 UTC (rev 77)
@@ -24,17 +24,20 @@
* #L%
*/
+import fr.ifremer.tutti.persistence.entities.data.Attachment;
import fr.ifremer.tutti.persistence.entities.data.Cruise;
import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
-import fr.ifremer.tutti.persistence.entities.referential.Person;
-import fr.ifremer.tutti.persistence.entities.referential.Strata;
import fr.ifremer.tutti.persistence.entities.data.Program;
import fr.ifremer.tutti.persistence.entities.referential.BeaufortScale;
import fr.ifremer.tutti.persistence.entities.referential.Country;
import fr.ifremer.tutti.persistence.entities.referential.Gear;
+import fr.ifremer.tutti.persistence.entities.referential.MacroWasteCategory;
+import fr.ifremer.tutti.persistence.entities.referential.Person;
import fr.ifremer.tutti.persistence.entities.referential.SeaState;
import fr.ifremer.tutti.persistence.entities.referential.Sex;
+import fr.ifremer.tutti.persistence.entities.referential.SortedUnsortedCategory;
import fr.ifremer.tutti.persistence.entities.referential.Species;
+import fr.ifremer.tutti.persistence.entities.referential.Strata;
import fr.ifremer.tutti.persistence.entities.referential.Vessel;
import fr.ifremer.tutti.persistence.entities.referential.WeightCategory;
import fr.ifremer.tutti.persistence.entities.referential.Zone;
@@ -57,6 +60,8 @@
public static final String BY_NAME = "byName";
+ public static final String SEPARATOR = "#";
+
/** Delegate decorator provider. */
protected DecoratorProvider decoratorProvider;
@@ -84,23 +89,26 @@
@Override
protected void loadDecorators() {
- registerMultiJXPathDecorator(Program.class, "${name}$s", "#", " - ");
- registerMultiJXPathDecorator(Cruise.class, "${name}$s", "#", " - ");
- registerMultiJXPathDecorator(FishingOperation.class, "${stationNumber}$s#${fishingOperationNumber}$s#${date}$td/%3$tm/%3$tY", "#", " - ");
- registerMultiJXPathDecorator(Zone.class, "${name}$s", "#", " - ");
- registerMultiJXPathDecorator(Vessel.class, "${name}$s#", "#", " - ");
- registerMultiJXPathDecorator(Country.class, "${name}$s", "#", " - ");
- registerMultiJXPathDecorator(Gear.class, "${name}$s", "#", " - ");
- registerMultiJXPathDecorator(Person.class, "${firstName}$s#${lastName}$s", "#", " ");
- registerMultiJXPathDecorator(BeaufortScale.class, "${name}$s", "#", " - ");
- registerMultiJXPathDecorator(SeaState.class, "${name}$s", "#", " - ");
- registerMultiJXPathDecorator(Strata.class, "${name}$s", "#", " - ");
- registerMultiJXPathDecorator(Sex.class, "${name}$s", "#", " - ");
- registerMultiJXPathDecorator(Species.class, "${codeMemo}#${genusSpecies}$s", "#", " - ");
- registerJXPathDecorator(Species.class, SPECIES_BY_CODE, "${codeMemo}$s");
- registerJXPathDecorator(Species.class, SPECIES_BY_GENUS, "${genusSpecies}$s");
- registerJXPathDecorator(WeightCategory.class, BY_NAME, "${name}$s");
- registerJXPathDecorator(Sex.class, BY_NAME, "${name}$s");
+ registerMultiJXPathDecorator(Program.class, "${name}$s", SEPARATOR, " - ");
+ registerMultiJXPathDecorator(Cruise.class, "${name}$s", SEPARATOR, " - ");
+ registerMultiJXPathDecorator(FishingOperation.class, "${stationNumber}$s#${fishingOperationNumber}$s#${date}$td/%3$tm/%3$tY", SEPARATOR, " - ");
+ registerMultiJXPathDecorator(Zone.class, "${name}$s", SEPARATOR, " - ");
+ registerMultiJXPathDecorator(Vessel.class, "${name}$s", SEPARATOR, " - ");
+ registerMultiJXPathDecorator(Country.class, "${name}$s", SEPARATOR, " - ");
+ registerMultiJXPathDecorator(Gear.class, "${name}$s", SEPARATOR, " - ");
+ registerMultiJXPathDecorator(Person.class, "${firstName}$s#${lastName}$s", SEPARATOR, " ");
+ registerMultiJXPathDecorator(BeaufortScale.class, "${name}$s", SEPARATOR, " - ");
+ registerMultiJXPathDecorator(SeaState.class, "${name}$s", SEPARATOR, " - ");
+ registerMultiJXPathDecorator(Strata.class, "${name}$s", SEPARATOR, " - ");
+ registerMultiJXPathDecorator(Sex.class, "${name}$s", SEPARATOR, " - ");
+ registerMultiJXPathDecorator(SortedUnsortedCategory.class, "${name}$s", SEPARATOR, " - ");
+ registerMultiJXPathDecorator(MacroWasteCategory.class, "${name}$s", SEPARATOR, " - ");
+ registerMultiJXPathDecorator(Species.class, "${codeMemo}$s#${genusSpecies}$s", SEPARATOR, " - ");
+ registerMultiJXPathDecorator(Species.class, SPECIES_BY_CODE, "${codeMemo}$s", SEPARATOR, " - ");
+ registerMultiJXPathDecorator(Species.class, SPECIES_BY_GENUS, "${genusSpecies}$s", SEPARATOR, " - ");
+ registerMultiJXPathDecorator(WeightCategory.class, BY_NAME, "${name}$s", SEPARATOR, " - ");
+ registerMultiJXPathDecorator(Sex.class, BY_NAME, "${name}$s", SEPARATOR, " - ");
+ registerMultiJXPathDecorator(Attachment.class, "${name}$s", SEPARATOR, " - ");
}
};
}
@@ -124,6 +132,9 @@
n_("tutti.property.strata");
n_("tutti.property.codeMemo");
n_("tutti.property.genusSpecies");
+ n_("tutti.property.sortedUnsortedCategory");
+ n_("tutti.property.macroWasteCategory");
+ n_("tutti.property.attachment");
}
}
Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java 2012-12-15 00:14:45 UTC (rev 76)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java 2012-12-15 16:05:45 UTC (rev 77)
@@ -38,9 +38,11 @@
import fr.ifremer.tutti.persistence.entities.referential.BeaufortScale;
import fr.ifremer.tutti.persistence.entities.referential.Country;
import fr.ifremer.tutti.persistence.entities.referential.Gear;
+import fr.ifremer.tutti.persistence.entities.referential.MacroWasteCategory;
import fr.ifremer.tutti.persistence.entities.referential.Person;
import fr.ifremer.tutti.persistence.entities.referential.SeaState;
import fr.ifremer.tutti.persistence.entities.referential.Sex;
+import fr.ifremer.tutti.persistence.entities.referential.SortedUnsortedCategory;
import fr.ifremer.tutti.persistence.entities.referential.Species;
import fr.ifremer.tutti.persistence.entities.referential.Strata;
import fr.ifremer.tutti.persistence.entities.referential.Vessel;
@@ -133,6 +135,12 @@
//------------------------------------------------------------------------//
@Override
+ public List<SortedUnsortedCategory> getAllSortedUnsortedCategory() {
+ checkDriverExists();
+ return driver.getAllSortedUnsortedCategory();
+ }
+
+ @Override
public List<WeightCategory> getAllWeightCategory() {
checkDriverExists();
return driver.getAllWeightCategory();
@@ -181,6 +189,12 @@
}
@Override
+ public List<MacroWasteCategory> getAllMacroWasteCategory() {
+ checkDriverExists();
+ return driver.getAllMacroWasteCategory();
+ }
+
+ @Override
public List<SeaState> getAllSeaState() {
checkDriverExists();
return driver.getAllSeaState();
Modified: trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties
===================================================================
--- trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties 2012-12-15 00:14:45 UTC (rev 76)
+++ trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties 2012-12-15 16:05:45 UTC (rev 77)
@@ -3,6 +3,7 @@
tutti.config.data.directory=Répertoire de données de l'application. Vous pouvez utiliser l'expression ${tutti.data.directory} pour le référence dans d'autres propriétés de configuration (ex\: ${tutti.data.directory}/tmp).
tutti.config.license.organizationName=Nom de l'organisation dans la licence
tutti.config.tmp.directory=Répertoire temporaire utilisée par l'application (est nettoyé à chaque démarrage de l'application)
+tutti.property.attachment=Pièce jointe
tutti.property.beaufortScale=Vent beaufort
tutti.property.codeMemo=Code Memo
tutti.property.country=Pays
@@ -13,9 +14,11 @@
tutti.property.gear=Engin
tutti.property.genusSpecies=Nom scientifique
tutti.property.lastName=Nom de Famille
+tutti.property.macroWasteCategory=Type de macro déchet
tutti.property.name=Nom
tutti.property.program=Série de campagne
tutti.property.seaState=État de la mer
+tutti.property.sortedUnsortedCategory=Vrac / Hors Vrac
tutti.property.stationNumber=Numéro de station
tutti.property.strata=Strate d'association
tutti.property.user=Utilisateur
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiUIHandler.java 2012-12-15 00:14:45 UTC (rev 76)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiUIHandler.java 2012-12-15 16:05:45 UTC (rev 77)
@@ -33,10 +33,9 @@
import fr.ifremer.tutti.ui.swing.config.TuttiConfig;
import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
import fr.ifremer.tutti.ui.swing.util.editor.SimpleTimeEditor;
-import jaxx.runtime.swing.OneClicListSelectionModel;
import jaxx.runtime.swing.editor.NumberEditor;
import jaxx.runtime.swing.editor.bean.BeanComboBox;
-import jaxx.runtime.swing.editor.bean.BeanListHeader;
+import jaxx.runtime.swing.editor.bean.BeanDoubleList;
import jaxx.runtime.swing.renderer.DecoratorListCellRenderer;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -62,7 +61,6 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
-import jaxx.runtime.swing.editor.bean.BeanDoubleList;
/**
* Contract of any UI handler.
@@ -186,7 +184,9 @@
* Prépare un component de choix d'entités pour un type d'entité donné et
* pour un service de persistance donné.
*
- * @param listHeader le component graphique à initialiser
+ * @param list le component graphique à initialiser
+ * @param data
+ * @param selectedData
*/
protected <E extends IdAware> void initBeanList(
BeanDoubleList<E> list,
@@ -206,7 +206,7 @@
// add data list to combo box
list.init((JXPathDecorator<E>) decorator, data, selectedData);
-
+
// OneClicListSelectionModel.installModel(listHeader.getList());
// updateIndices(listHeader.getList(), selectedData);
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/AbstractTuttiBatchTableUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/AbstractTuttiBatchTableUIHandler.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/AbstractTuttiBatchTableUIHandler.java 2012-12-15 16:05:45 UTC (rev 77)
@@ -0,0 +1,197 @@
+package fr.ifremer.tutti.ui.swing.content.operation;
+
+/*
+ * #%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%
+ */
+
+import com.ezware.oxbow.swingbits.table.filter.DistinctColumnItem;
+import com.ezware.oxbow.swingbits.table.filter.IFilterChangeListener;
+import com.ezware.oxbow.swingbits.table.filter.ITableFilter;
+import com.ezware.oxbow.swingbits.table.filter.JTableFilter;
+import com.ezware.oxbow.swingbits.table.filter.TableRowFilterSupport;
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.service.PersistenceService;
+import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel;
+import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor;
+import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
+import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableModel;
+import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIHandler;
+import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIModel;
+import fr.ifremer.tutti.ui.swing.util.table.TableRowModificationListener;
+import jaxx.runtime.SwingUtil;
+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.sort.TableSortController;
+
+import javax.swing.event.ListSelectionListener;
+import javax.swing.table.TableColumnModel;
+import javax.swing.table.TableModel;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.event.FocusEvent;
+import java.util.Collection;
+
+/**
+ * Abstract ui handler forbatch ui.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 0.2
+ */
+public abstract class AbstractTuttiBatchTableUIHandler<R extends AbstractTuttiBeanUIModel, M extends AbstractTuttiTableUIModel<?, R, M>> extends AbstractTuttiTableUIHandler<R, M> {
+
+
+ /** Logger. */
+ private static final Log log =
+ LogFactory.getLog(AbstractTuttiBatchTableUIHandler.class);
+
+ protected abstract void saveSelectedRowIfRequired();
+
+ protected abstract boolean isRowValid(R row);
+
+ protected abstract void saveRow(R row);
+
+ protected abstract FishingOperation getFishingOperation();
+
+ public abstract void selectFishingOperation(FishingOperation bean);
+
+ /**
+ * Persistence service.
+ *
+ * @since 0.2
+ */
+ protected final PersistenceService persistenceService;
+
+ /**
+ * To monitor changes on the fishing operation.
+ *
+ * @since 0.2
+ */
+ protected final TuttiBeanMonitor<M> fishingOperationMonitor;
+
+ protected AbstractTuttiBatchTableUIHandler(FishingOperationsUI parentUi,
+ String[] fishingProperties,
+ String... properties) {
+ super(parentUi.getHandler().getContext(), properties);
+ this.persistenceService = context.getService(PersistenceService.class);
+ this.fishingOperationMonitor = new TuttiBeanMonitor<M>(
+ fishingProperties);
+ }
+
+ public final void saveSelectedRowIfRequired(FocusEvent event) {
+
+ Component oppositeComponent = event.getOppositeComponent();
+
+ JXTable parentContainer = null;
+
+ if (oppositeComponent != null) {
+
+ // check out if still on table
+ parentContainer = SwingUtil.getParentContainer(
+ oppositeComponent, JXTable.class);
+ }
+
+ if (parentContainer == null) {
+
+ // out of the table can save
+ if (getFishingOperation() != null) {
+ saveSelectedRowIfRequired();
+ }
+ }
+ }
+
+ protected void initBatchTable(JXTable table,
+ TableColumnModel columnModel,
+ AbstractTuttiTableModel<R> tableModel) {
+
+ installTableKeyListener(columnModel, table);
+ table.getTableHeader().setReorderingAllowed(false);
+
+ JTableFilter tableFilter = new JTableFilter(table);
+ TableRowFilterSupport.forFilter(tableFilter).searchable(true).useTableRenderers(true).actions(true).apply();
+
+ tableFilter.addChangeListener(new IFilterChangeListener() {
+ @Override
+ public void filterChanged(ITableFilter<?> filter) {
+ if (log.isInfoEnabled()) {
+ log.info("Filter changed " + filter);
+ }
+ TableModel model = filter.getTable().getModel();
+ int columnCount = model.getColumnCount();
+ for (int i = 0; i < columnCount; i++) {
+ if (filter.isFiltered(i)) {
+ Collection<DistinctColumnItem> filterState = filter.getFilterState(i);
+ if (log.isInfoEnabled()) {
+ log.info("Column " + i + " is filtered: " + filterState);
+ }
+ }
+ }
+ }
+ });
+
+ TableSortController<TableModel> sorter = new TableSortController<TableModel>(tableModel);
+ sorter.setSortable(false);
+
+ table.setRowSorter(sorter);
+
+ Highlighter readOnlyHighlighter = TuttiUIUtil.newBackgroundColorHighlighter(
+ HighlightPredicate.READ_ONLY, Color.LIGHT_GRAY);
+
+ table.addHighlighter(readOnlyHighlighter);
+ Highlighter validHighlighter = TuttiUIUtil.newBackgroundColorHighlighter(
+ new HighlightPredicate.AndHighlightPredicate(HighlightPredicate.EDITABLE, new HighlightPredicate() {
+ @Override
+ public boolean isHighlighted(Component renderer, ComponentAdapter adapter) {
+
+ boolean result = false;
+ if (adapter.isEditable()) {
+ int rowIndex = adapter.convertRowIndexToModel(adapter.row);
+ R row = getTableModel().getEntry(rowIndex);
+ result = !row.isValid();
+ }
+ return result;
+ }
+ }), Color.RED);
+ table.addHighlighter(validHighlighter);
+
+ // when model datas change let's propagate it table model
+ listenRowsFromModel();
+
+ // save when row chaged and was modified
+ ListSelectionListener listener = new TableRowModificationListener<R>(
+ tableModel, getRowMonitor()) {
+ @Override
+ protected void saveSelectedRow() {
+ saveSelectedRowIfRequired();
+ }
+ };
+ table.getSelectionModel().addListSelectionListener(listener);
+
+ // always scroll to selected row
+ SwingUtil.scrollToTableSelection(table);
+ }
+
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/AbstractTuttiBatchTableUIHandler.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/accidental/AccidentalBatchRowModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/accidental/AccidentalBatchRowModel.java 2012-12-15 00:14:45 UTC (rev 76)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/accidental/AccidentalBatchRowModel.java 2012-12-15 16:05:45 UTC (rev 77)
@@ -25,11 +25,14 @@
*/
import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch;
+import fr.ifremer.tutti.persistence.entities.data.Attachment;
import fr.ifremer.tutti.persistence.entities.referential.Species;
import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel;
import org.nuiton.util.beans.Binder;
import org.nuiton.util.beans.BinderFactory;
+import java.util.List;
+
/**
* Define a benthos batch row.
*
@@ -46,6 +49,8 @@
public static final String PROPERTY_COMMENT = "comment";
+ public static final String PROPERTY_ATTACHMENTS = "attachments";
+
/**
* Species observed.
*
@@ -67,6 +72,13 @@
*/
protected String comment;
+ /**
+ * Attachments
+ *
+ * @since 0.2
+ */
+ protected List<Attachment> attachments;
+
protected static final Binder<AccidentalBatch, AccidentalBatchRowModel> fromBeanBinder =
BinderFactory.newBinder(AccidentalBatch.class,
AccidentalBatchRowModel.class);
@@ -113,4 +125,14 @@
this.comment = comment;
firePropertyChange(PROPERTY_COMMENT, oldValue, comment);
}
+
+ public List<Attachment> getAttachments() {
+ return attachments;
+ }
+
+ public void setAttachments(List<Attachment> attachments) {
+ Object oldValue = getAttachments();
+ this.attachments = attachments;
+ firePropertyChange(PROPERTY_ATTACHMENTS, oldValue, attachments);
+ }
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/accidental/AccidentalBatchTableModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/accidental/AccidentalBatchTableModel.java 2012-12-15 00:14:45 UTC (rev 76)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/accidental/AccidentalBatchTableModel.java 2012-12-15 16:05:45 UTC (rev 77)
@@ -42,36 +42,34 @@
public static final ColumnIdentifier<AccidentalBatchRowModel> SPECIES_BY_CODE = ColumnIdentifier.newId(
BenthosBatchRowModel.PROPERTY_SPECIES,
- n_("tutti.table.benthos.batch.header.speciesByCode"),
- n_("tutti.table.benthos.batch.header.speciesByCode"));
+ n_("tutti.table.accidental.batch.header.speciesByCode"),
+ n_("tutti.table.accidental.batch.header.speciesByCode"));
public static final ColumnIdentifier<AccidentalBatchRowModel> SPECIES_BY_GENUS_CODE = ColumnIdentifier.newId(
BenthosBatchRowModel.PROPERTY_SPECIES,
- n_("tutti.table.benthos.batch.header.speciesByGenusCode"),
- n_("tutti.table.benthos.batch.header.speciesByGenusCode"));
+ n_("tutti.table.accidental.batch.header.speciesByGenusCode"),
+ n_("tutti.table.accidental.batch.header.speciesByGenusCode"));
public static final ColumnIdentifier<AccidentalBatchRowModel> WEIGHT = ColumnIdentifier.newId(
BenthosBatchRowModel.PROPERTY_WEIGHT,
- n_("tutti.table.benthos.batch.header.weight"),
- n_("tutti.table.benthos.batch.header.weight"));
+ n_("tutti.table.accidental.batch.header.weight"),
+ n_("tutti.table.accidental.batch.header.weight"));
public static final ColumnIdentifier<AccidentalBatchRowModel> COMMENT = ColumnIdentifier.newId(
BenthosBatchRowModel.PROPERTY_COMMENT,
- n_("tutti.table.benthos.batch.header.comment"),
- n_("tutti.table.benthos.batch.header.comment"));
+ n_("tutti.table.accidental.batch.header.comment"),
+ n_("tutti.table.accidental.batch.header.comment"));
- public static final ColumnIdentifier<AccidentalBatchRowModel> FILE = ColumnIdentifier.newId(
- null,
- n_("tutti.table.benthos.batch.header.file"),
- n_("tutti.table.benthos.batch.header.file"));
+ public static final ColumnIdentifier<AccidentalBatchRowModel> ATTACHMENTS = ColumnIdentifier.newId(
+ AccidentalBatchRowModel.PROPERTY_ATTACHMENTS,
+ n_("tutti.table.accidental.batch.header.file"),
+ n_("tutti.table.accidental.batch.header.file"));
public AccidentalBatchTableModel(TableColumnModel columnModel) {
super(columnModel);
- setNoneEditableCols(
- FILE
- );
+ setNoneEditableCols();
}
@Override
@@ -94,14 +92,12 @@
if (propertyName == SPECIES_BY_CODE) {
// update also other columns
- fireTableCellUpdated(rowIndex,
- SPECIES_BY_GENUS_CODE);
+ fireTableCellUpdated(rowIndex, SPECIES_BY_GENUS_CODE);
} else if (propertyName == SPECIES_BY_GENUS_CODE) {
// update also other columns
- fireTableCellUpdated(rowIndex,
- SPECIES_BY_CODE);
+ fireTableCellUpdated(rowIndex, SPECIES_BY_CODE);
}
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/accidental/AccidentalBatchUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/accidental/AccidentalBatchUI.jaxx 2012-12-15 00:14:45 UTC (rev 76)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/accidental/AccidentalBatchUI.jaxx 2012-12-15 16:05:45 UTC (rev 77)
@@ -30,6 +30,7 @@
fr.ifremer.tutti.ui.swing.TuttiUIContext
fr.ifremer.tutti.ui.swing.content.operation.FishingOperationsUI
fr.ifremer.tutti.ui.swing.util.editor.LongTextEditorUI
+ fr.ifremer.tutti.ui.swing.util.editor.AttachmentEditorUI
jaxx.runtime.swing.editor.NumberEditor
@@ -61,10 +62,12 @@
<AccidentalBatchUIModel id='model'
initializer='getContextValue(AccidentalBatchUIModel.class)'/>
- <LongTextEditorUI id='longTextEditorUI'/>
+ <LongTextEditorUI id='longTextEditor'/>
+
+ <AttachmentEditorUI id='attachmentEditor'/>
<JScrollPane id='tableScrollPane' constraints='BorderLayout.CENTER'>
- <JXTable id='table' onFocusLost='handler.saveSelectedRowIfRequired(event);'/>
+ <JXTable id='table' onFocusLost='handler.saveSelectedRowIfRequired(event)'/>
</JScrollPane>
</JPanel>
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/accidental/AccidentalBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/accidental/AccidentalBatchUIHandler.java 2012-12-15 00:14:45 UTC (rev 76)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/accidental/AccidentalBatchUIHandler.java 2012-12-15 16:05:45 UTC (rev 77)
@@ -27,42 +27,37 @@
import com.google.common.collect.Lists;
import fr.ifremer.tutti.persistence.entities.TuttiEntities;
import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch;
+import fr.ifremer.tutti.persistence.entities.data.Attachment;
import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
import fr.ifremer.tutti.persistence.entities.referential.Species;
import fr.ifremer.tutti.service.DecoratorService;
-import fr.ifremer.tutti.service.PersistenceService;
import fr.ifremer.tutti.ui.swing.TuttiUI;
+import fr.ifremer.tutti.ui.swing.content.operation.AbstractTuttiBatchTableUIHandler;
import fr.ifremer.tutti.ui.swing.content.operation.FishingOperationsUI;
import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor;
-import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
+import fr.ifremer.tutti.ui.swing.util.editor.AttachmentCellComponent;
import fr.ifremer.tutti.ui.swing.util.editor.LongTextCellComponent;
-import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIHandler;
-import fr.ifremer.tutti.ui.swing.util.table.TableRowModificationListener;
-import jaxx.runtime.SwingUtil;
+import org.apache.commons.lang3.ArrayUtils;
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 javax.swing.event.ListSelectionListener;
import javax.swing.table.TableColumnModel;
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.event.FocusEvent;
import java.util.List;
+import static org.nuiton.i18n.I18n.n_;
+
/**
* @author tchemit <chemit(a)codelutin.com>
* @since 0.2
*/
-public class AccidentalBatchUIHandler extends AbstractTuttiTableUIHandler<AccidentalBatchRowModel, AccidentalBatchUIModel> {
+public class AccidentalBatchUIHandler extends AbstractTuttiBatchTableUIHandler<AccidentalBatchRowModel, AccidentalBatchUIModel> {
/** Logger. */
- private static final Log log = LogFactory.getLog(AccidentalBatchUIHandler.class);
+ private static final Log log =
+ LogFactory.getLog(AccidentalBatchUIHandler.class);
/**
* UI.
@@ -71,28 +66,13 @@
*/
private final AccidentalBatchUI ui;
- /**
- * Persistence service.
- *
- * @since 0.2
- */
- private final PersistenceService persistenceService;
-
- /**
- * To monitor changes on the fishing operation.
- *
- * @since 0.2
- */
- private final TuttiBeanMonitor<AccidentalBatchUIModel> fishingOperationMonitor;
-
- public AccidentalBatchUIHandler(FishingOperationsUI parentUi, AccidentalBatchUI ui) {
- super(parentUi.getHandler().getContext(),
+ public AccidentalBatchUIHandler(FishingOperationsUI parentUi,
+ AccidentalBatchUI ui) {
+ super(parentUi, ArrayUtils.EMPTY_STRING_ARRAY,
AccidentalBatchRowModel.PROPERTY_SPECIES,
AccidentalBatchRowModel.PROPERTY_WEIGHT,
AccidentalBatchRowModel.PROPERTY_COMMENT);
this.ui = ui;
- this.persistenceService = context.getService(PersistenceService.class);
- this.fishingOperationMonitor = new TuttiBeanMonitor<AccidentalBatchUIModel>();
}
//------------------------------------------------------------------------//
@@ -115,6 +95,11 @@
}
@Override
+ protected FishingOperation getFishingOperation() {
+ return getModel().getFishingOperation();
+ }
+
+ @Override
protected TableColumnModel createTableColumnModel() {
DefaultTableColumnModelExt columnModel =
@@ -155,15 +140,19 @@
{ // Comment column
addColumnToModel(columnModel,
- LongTextCellComponent.newEditor(ui.getLongTextEditorUI()),
- LongTextCellComponent.newRender(),
+ LongTextCellComponent.newEditor(ui.getLongTextEditor()),
+ LongTextCellComponent.newRender(n_("tutti.tooltip.comment.none")),
AccidentalBatchTableModel.COMMENT);
}
{ // File column
addColumnToModel(columnModel,
- AccidentalBatchTableModel.FILE);
+ AttachmentCellComponent.newEditor(ui.getAttachmentEditor()),
+ AttachmentCellComponent.newRender(
+ getDecorator(Attachment.class, null),
+ n_("tutti.tooltip.attachment.none")),
+ AccidentalBatchTableModel.ATTACHMENTS);
}
return columnModel;
}
@@ -212,118 +201,71 @@
}
}
- //------------------------------------------------------------------------//
- //-- AbstractTuttiUIHandler methods --//
- //------------------------------------------------------------------------//
-
@Override
- public void beforeInitUI() {
+ protected void saveSelectedRowIfRequired() {
- if (log.isInfoEnabled()) {
- log.info("beforeInit: " + ui);
- }
+ TuttiBeanMonitor<AccidentalBatchRowModel> rowMonitor = getRowMonitor();
- AccidentalBatchUIModel model = new AccidentalBatchUIModel();
- ui.setContextValue(model);
+ AccidentalBatchRowModel bean = rowMonitor.getBean();
+ if (bean != null) {
- fishingOperationMonitor.setBean(model);
- }
+ if (bean.isValid()) {
+ // there is a valid bean attached to the monitor
- @Override
- public void afterInitUI() {
+ if (rowMonitor.wasModified()) {
- if (log.isInfoEnabled()) {
- log.info("afterInit: " + ui);
- }
+ // monitored bean was modified, save it
+ if (log.isInfoEnabled()) {
+ log.info("Row " + bean + " was modified, will save it");
+ }
- initUI(ui);
+ saveRow(bean);
- JXTable table = getTable();
+ // clear modified flag on the monitor
+ rowMonitor.clearModified();
+ }
+ } else {
- // create table column model
- TableColumnModel columnModel = createTableColumnModel();
+ // row is not valid can not save it
- // create table model
- AccidentalBatchTableModel tableModel =
- new AccidentalBatchTableModel(columnModel);
+ AccidentalBatch catchBean = bean.toBean();
- table.setModel(tableModel);
- table.setColumnModel(columnModel);
- installTableKeyListener(columnModel, table);
+ if (!TuttiEntities.isNew(catchBean)) {
- table.getTableHeader().setReorderingAllowed(false);
-
-
- Highlighter readOnlyHighlighter = TuttiUIUtil.newBackgroundColorHighlighter(
- HighlightPredicate.READ_ONLY, Color.LIGHT_GRAY);
-
- table.addHighlighter(readOnlyHighlighter);
- Highlighter validHighlighter = TuttiUIUtil.newBackgroundColorHighlighter(
- new HighlightPredicate.AndHighlightPredicate(HighlightPredicate.EDITABLE, new HighlightPredicate() {
- @Override
- public boolean isHighlighted(Component renderer, ComponentAdapter adapter) {
-
- boolean result = false;
- if (adapter.isEditable()) {
- int rowIndex = adapter.convertRowIndexToModel(adapter.row);
- AccidentalBatchRowModel row = getTableModel().getEntry(rowIndex);
- result = !row.isValid();
- }
- return result;
- }
- }), Color.RED);
- table.addHighlighter(validHighlighter);
-
- // when model datas change let's propagate it table model
- listenRowsFromModel();
-
- // save when row chaged and was modified
- ListSelectionListener listener = new TableRowModificationListener<AccidentalBatchRowModel>(
- getTableModel(), getRowMonitor()) {
- @Override
- protected void saveSelectedRow() {
- saveSelectedRowIfRequired();
+ // remove this
+ persistenceService.deleteAccidentalBatch(catchBean.getId());
+ }
}
- };
- table.getSelectionModel().addListSelectionListener(listener);
-
- // always scroll to selected row
- SwingUtil.scrollToTableSelection(getTable());
+ }
}
@Override
- public void onCloseUI() {
- if (log.isInfoEnabled()) {
- log.info("closing: " + ui);
- }
+ protected boolean isRowValid(AccidentalBatchRowModel row) {
+ boolean result = row.getSpecies() != null && row.getWeight() != null;
+ return result;
}
- //------------------------------------------------------------------------//
- //-- Public methods --//
- //------------------------------------------------------------------------//
+ @Override
+ protected void saveRow(AccidentalBatchRowModel row) {
- public void saveSelectedRowIfRequired(FocusEvent event) {
+ AccidentalBatch catchBean = row.toBean();
- Component oppositeComponent = event.getOppositeComponent();
-
- JXTable parentContainer = null;
-
- if (oppositeComponent != null) {
-
- // check out if still on table
- parentContainer = SwingUtil.getParentContainer(
- oppositeComponent, JXTable.class);
+ FishingOperation fishingOperation = getModel().getFishingOperation();
+ catchBean.setFishingOperation(fishingOperation);
+ if (log.isInfoEnabled()) {
+ log.info("Selected fishingOperation: " + fishingOperation.getId());
}
- if (parentContainer == null) {
+ if (TuttiEntities.isNew(catchBean)) {
- // out of the table can save
- if (getModel().getFishingOperation() != null) {
- saveSelectedRowIfRequired();
- }
+ catchBean = persistenceService.createAccidentalBatch(catchBean);
+ row.setId(catchBean.getId());
+ } else {
+ persistenceService.saveAccidentalBatch(catchBean);
}
}
+ @Override
public void selectFishingOperation(FishingOperation bean) {
JXTable table = getTable();
@@ -387,81 +329,60 @@
fishingOperationMonitor.clearModified();
}
- public void cancel() {
+ //------------------------------------------------------------------------//
+ //-- AbstractTuttiUIHandler methods --//
+ //------------------------------------------------------------------------//
- if (log.isInfoEnabled()) {
- log.info("Cancel edition");
- }
- }
+ @Override
+ public void beforeInitUI() {
- public void save() {
if (log.isInfoEnabled()) {
- log.info("Will save");
+ log.info("beforeInit: " + ui);
}
- }
- //------------------------------------------------------------------------//
- //-- Internal methods --//
- //------------------------------------------------------------------------//
+ AccidentalBatchUIModel model = new AccidentalBatchUIModel();
+ ui.setContextValue(model);
- protected boolean isRowValid(AccidentalBatchRowModel row) {
- boolean result = row.getSpecies() != null && row.getWeight() != null;
- return result;
+ fishingOperationMonitor.setBean(model);
}
- protected void saveSelectedRowIfRequired() {
+ @Override
+ public void afterInitUI() {
- TuttiBeanMonitor<AccidentalBatchRowModel> rowMonitor = getRowMonitor();
+ if (log.isInfoEnabled()) {
+ log.info("afterInit: " + ui);
+ }
- AccidentalBatchRowModel bean = rowMonitor.getBean();
- if (bean != null) {
+ initUI(ui);
- if (bean.isValid()) {
- // there is a valid bean attached to the monitor
+ JXTable table = getTable();
- if (rowMonitor.wasModified()) {
+ // create table column model
+ TableColumnModel columnModel = createTableColumnModel();
- // monitored bean was modified, save it
- if (log.isInfoEnabled()) {
- log.info("Row " + bean + " was modified, will save it");
- }
+ // create table model
+ AccidentalBatchTableModel tableModel =
+ new AccidentalBatchTableModel(columnModel);
- saveRow(bean);
+ table.setModel(tableModel);
+ table.setColumnModel(columnModel);
- // clear modified flag on the monitor
- rowMonitor.clearModified();
- }
- } else {
-
- // row is not valid can not save it
-
- AccidentalBatch catchBean = bean.toBean();
-
- if (!TuttiEntities.isNew(catchBean)) {
-
- // remove this
- persistenceService.deleteAccidentalBatch(catchBean.getId());
- }
- }
- }
+ initBatchTable(table, columnModel, tableModel);
}
- protected void saveRow(AccidentalBatchRowModel row) {
-
- AccidentalBatch catchBean = row.toBean();
-
- FishingOperation fishingOperation = getModel().getFishingOperation();
- catchBean.setFishingOperation(fishingOperation);
+ @Override
+ public void onCloseUI() {
if (log.isInfoEnabled()) {
- log.info("Selected fishingOperation: " + fishingOperation.getId());
+ log.info("closing: " + ui);
}
+ }
- if (TuttiEntities.isNew(catchBean)) {
+ //------------------------------------------------------------------------//
+ //-- Public methods --//
+ //------------------------------------------------------------------------//
- catchBean = persistenceService.createAccidentalBatch(catchBean);
- row.setId(catchBean.getId());
- } else {
- persistenceService.saveAccidentalBatch(catchBean);
- }
- }
+ //------------------------------------------------------------------------//
+ //-- Internal methods --//
+ //------------------------------------------------------------------------//
+
}
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/benthos/BenthosBatchRowModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/benthos/BenthosBatchRowModel.java 2012-12-15 00:14:45 UTC (rev 76)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/benthos/BenthosBatchRowModel.java 2012-12-15 16:05:45 UTC (rev 77)
@@ -24,12 +24,15 @@
* #L%
*/
+import fr.ifremer.tutti.persistence.entities.data.Attachment;
import fr.ifremer.tutti.persistence.entities.data.BenthosBatch;
import fr.ifremer.tutti.persistence.entities.referential.Species;
import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel;
import org.nuiton.util.beans.Binder;
import org.nuiton.util.beans.BinderFactory;
+import java.util.List;
+
/**
* Define a benthos batch row.
*
@@ -52,6 +55,8 @@
public static final String PROPERTY_COMMENT = "comment";
+ public static final String PROPERTY_ATTACHMENTS = "attachments";
+
/**
* Species observed.
*
@@ -94,6 +99,13 @@
*/
protected String comment;
+ /**
+ * Attachments
+ *
+ * @since 0.2
+ */
+ protected List<Attachment> attachments;
+
protected static final Binder<BenthosBatch, BenthosBatchRowModel> fromBeanBinder =
BinderFactory.newBinder(BenthosBatch.class,
BenthosBatchRowModel.class);
@@ -170,4 +182,15 @@
this.comment = comment;
firePropertyChange(PROPERTY_COMMENT, oldValue, comment);
}
+
+ public List<Attachment> getAttachments() {
+ return attachments;
+ }
+
+ public void setAttachments(List<Attachment> attachments) {
+ Object oldValue = getAttachments();
+ this.attachments = attachments;
+ firePropertyChange(PROPERTY_ATTACHMENTS, oldValue, attachments);
+ }
+
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/benthos/BenthosBatchTableModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/benthos/BenthosBatchTableModel.java 2012-12-15 00:14:45 UTC (rev 76)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/benthos/BenthosBatchTableModel.java 2012-12-15 16:05:45 UTC (rev 77)
@@ -24,6 +24,7 @@
* #L%
*/
+import fr.ifremer.tutti.ui.swing.content.operation.species.SpeciesBatchRowModel;
import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableModel;
import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier;
@@ -75,8 +76,8 @@
n_("tutti.table.benthos.batch.header.comment"),
n_("tutti.table.benthos.batch.header.comment"));
- public static final ColumnIdentifier<BenthosBatchRowModel> FILE = ColumnIdentifier.newId(
- null,
+ public static final ColumnIdentifier<BenthosBatchRowModel> ATTACHMENTS = ColumnIdentifier.newId(
+ SpeciesBatchRowModel.PROPERTY_ATTACHMENTS,
n_("tutti.table.benthos.batch.header.file"),
n_("tutti.table.benthos.batch.header.file"));
@@ -84,11 +85,7 @@
public BenthosBatchTableModel(TableColumnModel columnModel) {
super(columnModel);
- setNoneEditableCols(
- SAMPLE_WEIGHT,
- SAMPLING_RATIO,
- FILE
- );
+ setNoneEditableCols(SAMPLE_WEIGHT, SAMPLING_RATIO);
}
@Override
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/benthos/BenthosBatchUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/benthos/BenthosBatchUI.jaxx 2012-12-15 00:14:45 UTC (rev 76)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/benthos/BenthosBatchUI.jaxx 2012-12-15 16:05:45 UTC (rev 77)
@@ -30,6 +30,7 @@
fr.ifremer.tutti.ui.swing.TuttiUIContext
fr.ifremer.tutti.ui.swing.content.operation.FishingOperationsUI
fr.ifremer.tutti.ui.swing.util.editor.LongTextEditorUI
+ fr.ifremer.tutti.ui.swing.util.editor.AttachmentEditorUI
jaxx.runtime.swing.editor.NumberEditor
@@ -72,8 +73,10 @@
<field name='sampleTotalWeight' component='sampleTotalWeightField'/>
</BeanValidator>
- <LongTextEditorUI id='longTextEditorUI'/>
+ <LongTextEditorUI id='longTextEditor'/>
+ <AttachmentEditorUI id='attachmentEditor'/>
+
<Table id='form' fill='both' constraints='BorderLayout.NORTH'>
<!-- Poids total -->
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/benthos/BenthosBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/benthos/BenthosBatchUIHandler.java 2012-12-15 00:14:45 UTC (rev 76)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/benthos/BenthosBatchUIHandler.java 2012-12-15 16:05:45 UTC (rev 77)
@@ -26,43 +26,37 @@
import com.google.common.collect.Lists;
import fr.ifremer.tutti.persistence.entities.TuttiEntities;
+import fr.ifremer.tutti.persistence.entities.data.Attachment;
import fr.ifremer.tutti.persistence.entities.data.BenthosBatch;
import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
import fr.ifremer.tutti.persistence.entities.referential.Species;
import fr.ifremer.tutti.service.DecoratorService;
-import fr.ifremer.tutti.service.PersistenceService;
import fr.ifremer.tutti.ui.swing.TuttiUI;
+import fr.ifremer.tutti.ui.swing.content.operation.AbstractTuttiBatchTableUIHandler;
import fr.ifremer.tutti.ui.swing.content.operation.FishingOperationsUI;
import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor;
-import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
+import fr.ifremer.tutti.ui.swing.util.editor.AttachmentCellComponent;
import fr.ifremer.tutti.ui.swing.util.editor.LongTextCellComponent;
-import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIHandler;
-import fr.ifremer.tutti.ui.swing.util.table.TableRowModificationListener;
-import jaxx.runtime.SwingUtil;
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 javax.swing.event.ListSelectionListener;
import javax.swing.table.TableColumnModel;
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.event.FocusEvent;
import java.util.List;
+import static org.nuiton.i18n.I18n.n_;
+
/**
* @author tchemit <chemit(a)codelutin.com>
* @since 0.1
*/
-public class BenthosBatchUIHandler extends AbstractTuttiTableUIHandler<BenthosBatchRowModel, BenthosBatchUIModel> {
+public class BenthosBatchUIHandler extends AbstractTuttiBatchTableUIHandler<BenthosBatchRowModel, BenthosBatchUIModel> {
/** Logger. */
- private static final Log log = LogFactory.getLog(BenthosBatchUIHandler.class);
+ private static final Log log =
+ LogFactory.getLog(BenthosBatchUIHandler.class);
/**
* UI.
@@ -71,32 +65,17 @@
*/
private final BenthosBatchUI ui;
- /**
- * Persistence service.
- *
- * @since 0.2
- */
- private final PersistenceService persistenceService;
-
- /**
- * To monitor changes on the fishing operation.
- *
- * @since 0.2
- */
- private final TuttiBeanMonitor<BenthosBatchUIModel> fishingOperationMonitor;
-
- public BenthosBatchUIHandler(FishingOperationsUI parentUi, BenthosBatchUI ui) {
- super(parentUi.getHandler().getContext(),
+ public BenthosBatchUIHandler(FishingOperationsUI parentUi,
+ BenthosBatchUI ui) {
+ super(parentUi,
+ new String[]{BenthosBatchUIModel.PROPERTY_TOTAL_WEIGHT,
+ BenthosBatchUIModel.PROPERTY_SAMPLE_TOTAL_WEIGHT},
BenthosBatchRowModel.PROPERTY_SPECIES_TO_CONFIRM,
BenthosBatchRowModel.PROPERTY_SPECIES,
BenthosBatchRowModel.PROPERTY_WEIGHT,
BenthosBatchRowModel.PROPERTY_COMMENT);
this.ui = ui;
- this.persistenceService = context.getService(PersistenceService.class);
- this.fishingOperationMonitor = new TuttiBeanMonitor<BenthosBatchUIModel>(
- BenthosBatchUIModel.PROPERTY_TOTAL_WEIGHT,
- BenthosBatchUIModel.PROPERTY_SAMPLE_TOTAL_WEIGHT
- );
+
}
//------------------------------------------------------------------------//
@@ -119,6 +98,11 @@
}
@Override
+ protected FishingOperation getFishingOperation() {
+ return getModel().getFishingOperation();
+ }
+
+ @Override
protected String[] getRowPropertiesToIgnore() {
return new String[]{
BenthosBatchRowModel.PROPERTY_SAMPLE_WEIGHT,
@@ -187,15 +171,19 @@
{ // Comment column
addColumnToModel(columnModel,
- LongTextCellComponent.newEditor(ui.getLongTextEditorUI()),
- LongTextCellComponent.newRender(),
+ LongTextCellComponent.newEditor(ui.getLongTextEditor()),
+ LongTextCellComponent.newRender(n_("tutti.tooltip.comment.none")),
BenthosBatchTableModel.COMMENT);
}
{ // File column
addColumnToModel(columnModel,
- BenthosBatchTableModel.FILE);
+ AttachmentCellComponent.newEditor(ui.getAttachmentEditor()),
+ AttachmentCellComponent.newRender(
+ getDecorator(Attachment.class, null),
+ n_("tutti.tooltip.attachment.none")),
+ BenthosBatchTableModel.ATTACHMENTS);
}
return columnModel;
}
@@ -244,118 +232,71 @@
}
}
- //------------------------------------------------------------------------//
- //-- AbstractTuttiUIHandler methods --//
- //------------------------------------------------------------------------//
-
@Override
- public void beforeInitUI() {
+ protected void saveSelectedRowIfRequired() {
- if (log.isInfoEnabled()) {
- log.info("beforeInit: " + ui);
- }
+ TuttiBeanMonitor<BenthosBatchRowModel> rowMonitor = getRowMonitor();
- BenthosBatchUIModel model = new BenthosBatchUIModel();
- ui.setContextValue(model);
+ BenthosBatchRowModel bean = rowMonitor.getBean();
+ if (bean != null) {
- fishingOperationMonitor.setBean(model);
- }
+ if (bean.isValid()) {
+ // there is a valid bean attached to the monitor
- @Override
- public void afterInitUI() {
+ if (rowMonitor.wasModified()) {
- if (log.isInfoEnabled()) {
- log.info("afterInit: " + ui);
- }
+ // monitored bean was modified, save it
+ if (log.isInfoEnabled()) {
+ log.info("Row " + bean + " was modified, will save it");
+ }
- initUI(ui);
+ saveRow(bean);
- JXTable table = getTable();
+ // clear modified flag on the monitor
+ rowMonitor.clearModified();
+ }
+ } else {
- // create table column model
- TableColumnModel columnModel = createTableColumnModel();
+ // row is not valid can not save it
- // create table model
- BenthosBatchTableModel tableModel =
- new BenthosBatchTableModel(columnModel);
+ BenthosBatch catchBean = bean.toBean();
- table.setModel(tableModel);
- table.setColumnModel(columnModel);
- installTableKeyListener(columnModel, table);
+ if (!TuttiEntities.isNew(catchBean)) {
- table.getTableHeader().setReorderingAllowed(false);
-
-
- Highlighter readOnlyHighlighter = TuttiUIUtil.newBackgroundColorHighlighter(
- HighlightPredicate.READ_ONLY, Color.LIGHT_GRAY);
-
- table.addHighlighter(readOnlyHighlighter);
- Highlighter validHighlighter = TuttiUIUtil.newBackgroundColorHighlighter(
- new HighlightPredicate.AndHighlightPredicate(HighlightPredicate.EDITABLE, new HighlightPredicate() {
- @Override
- public boolean isHighlighted(Component renderer, ComponentAdapter adapter) {
-
- boolean result = false;
- if (adapter.isEditable()) {
- int rowIndex = adapter.convertRowIndexToModel(adapter.row);
- BenthosBatchRowModel row = getTableModel().getEntry(rowIndex);
- result = !row.isValid();
- }
- return result;
- }
- }), Color.RED);
- table.addHighlighter(validHighlighter);
-
- // when model datas change let's propagate it table model
- listenRowsFromModel();
-
- // save when row chaged and was modified
- ListSelectionListener listener = new TableRowModificationListener<BenthosBatchRowModel>(
- getTableModel(), getRowMonitor()) {
- @Override
- protected void saveSelectedRow() {
- saveSelectedRowIfRequired();
+ // remove this
+ persistenceService.deleteBenthosBatch(catchBean.getId());
+ }
}
- };
- table.getSelectionModel().addListSelectionListener(listener);
-
- // always scroll to selected row
- SwingUtil.scrollToTableSelection(getTable());
+ }
}
@Override
- public void onCloseUI() {
- if (log.isInfoEnabled()) {
- log.info("closing: " + ui);
- }
+ protected boolean isRowValid(BenthosBatchRowModel row) {
+ boolean result = row.getSpecies() != null && row.getWeight() != null;
+ return result;
}
- //------------------------------------------------------------------------//
- //-- Public methods --//
- //------------------------------------------------------------------------//
+ @Override
+ protected void saveRow(BenthosBatchRowModel row) {
- public void saveSelectedRowIfRequired(FocusEvent event) {
+ BenthosBatch catchBean = row.toBean();
- Component oppositeComponent = event.getOppositeComponent();
-
- JXTable parentContainer = null;
-
- if (oppositeComponent != null) {
-
- // check out if still on table
- parentContainer = SwingUtil.getParentContainer(
- oppositeComponent, JXTable.class);
+ FishingOperation fishingOperation = getModel().getFishingOperation();
+ catchBean.setFishingOperation(fishingOperation);
+ if (log.isInfoEnabled()) {
+ log.info("Selected fishingOperation: " + fishingOperation.getId());
}
- if (parentContainer == null) {
+ if (TuttiEntities.isNew(catchBean)) {
- // out of the table can save
- if (getModel().getFishingOperation() != null) {
- saveSelectedRowIfRequired();
- }
+ catchBean = persistenceService.createBenthosBatch(catchBean);
+ row.setId(catchBean.getId());
+ } else {
+ persistenceService.saveBenthosBatch(catchBean);
}
}
+ @Override
public void selectFishingOperation(FishingOperation bean) {
JXTable table = getTable();
@@ -419,81 +360,61 @@
fishingOperationMonitor.clearModified();
}
- public void cancel() {
- if (log.isInfoEnabled()) {
- log.info("Cancel edition");
- }
- }
+ //------------------------------------------------------------------------//
+ //-- AbstractTuttiUIHandler methods --//
+ //------------------------------------------------------------------------//
- public void save() {
+ @Override
+ public void beforeInitUI() {
+
if (log.isInfoEnabled()) {
- log.info("Will save");
+ log.info("beforeInit: " + ui);
}
- }
- //------------------------------------------------------------------------//
- //-- Internal methods --//
- //------------------------------------------------------------------------//
+ BenthosBatchUIModel model = new BenthosBatchUIModel();
+ ui.setContextValue(model);
- protected boolean isRowValid(BenthosBatchRowModel row) {
- boolean result = row.getSpecies() != null && row.getWeight() != null;
- return result;
+ fishingOperationMonitor.setBean(model);
}
- protected void saveSelectedRowIfRequired() {
+ @Override
+ public void afterInitUI() {
- TuttiBeanMonitor<BenthosBatchRowModel> rowMonitor = getRowMonitor();
+ if (log.isInfoEnabled()) {
+ log.info("afterInit: " + ui);
+ }
- BenthosBatchRowModel bean = rowMonitor.getBean();
- if (bean != null) {
+ initUI(ui);
- if (bean.isValid()) {
- // there is a valid bean attached to the monitor
+ JXTable table = getTable();
- if (rowMonitor.wasModified()) {
+ // create table column model
+ TableColumnModel columnModel = createTableColumnModel();
- // monitored bean was modified, save it
- if (log.isInfoEnabled()) {
- log.info("Row " + bean + " was modified, will save it");
- }
+ // create table model
+ BenthosBatchTableModel tableModel =
+ new BenthosBatchTableModel(columnModel);
- saveRow(bean);
+ table.setModel(tableModel);
+ table.setColumnModel(columnModel);
- // clear modified flag on the monitor
- rowMonitor.clearModified();
- }
- } else {
-
- // row is not valid can not save it
-
- BenthosBatch catchBean = bean.toBean();
-
- if (!TuttiEntities.isNew(catchBean)) {
-
- // remove this
- persistenceService.deleteBenthosBatch(catchBean.getId());
- }
- }
- }
+ initBatchTable(table, columnModel, tableModel);
}
- protected void saveRow(BenthosBatchRowModel row) {
-
- BenthosBatch catchBean = row.toBean();
-
- FishingOperation fishingOperation = getModel().getFishingOperation();
- catchBean.setFishingOperation(fishingOperation);
+ @Override
+ public void onCloseUI() {
if (log.isInfoEnabled()) {
- log.info("Selected fishingOperation: " + fishingOperation.getId());
+ log.info("closing: " + ui);
}
+ }
- if (TuttiEntities.isNew(catchBean)) {
+ //------------------------------------------------------------------------//
+ //-- Public methods --//
+ //------------------------------------------------------------------------//
- catchBean = persistenceService.createBenthosBatch(catchBean);
- row.setId(catchBean.getId());
- } else {
- persistenceService.saveBenthosBatch(catchBean);
- }
- }
+ //------------------------------------------------------------------------//
+ //-- Internal methods --//
+ //------------------------------------------------------------------------//
+
}
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/macrowaste/MacroWasteBatchRowModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/macrowaste/MacroWasteBatchRowModel.java 2012-12-15 00:14:45 UTC (rev 76)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/macrowaste/MacroWasteBatchRowModel.java 2012-12-15 16:05:45 UTC (rev 77)
@@ -24,12 +24,15 @@
* #L%
*/
+import fr.ifremer.tutti.persistence.entities.data.Attachment;
import fr.ifremer.tutti.persistence.entities.data.MacroWasteBatch;
-import fr.ifremer.tutti.persistence.entities.referential.Species;
+import fr.ifremer.tutti.persistence.entities.referential.MacroWasteCategory;
import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel;
import org.nuiton.util.beans.Binder;
import org.nuiton.util.beans.BinderFactory;
+import java.util.List;
+
/**
* Define a benthos batch row.
*
@@ -40,18 +43,20 @@
private static final long serialVersionUID = 1L;
- public static final String PROPERTY_SPECIES = "species";
+ public static final String PROPERTY_MACRO_WASTE_CATEGORY = "macroWasteCategory";
public static final String PROPERTY_WEIGHT = "weight";
public static final String PROPERTY_COMMENT = "comment";
+ public static final String PROPERTY_ATTACHMENTS = "attachments";
+
/**
- * Species observed.
+ * macroWaste category.
*
* @since 0.2
*/
- protected Species species;
+ protected MacroWasteCategory macroWasteCategory;
/**
* Observed weight.
@@ -61,12 +66,19 @@
protected Float weight;
/**
- * Comment on this catches.
+ * Comment on this batch.
*
* @since 0.2
*/
protected String comment;
+ /**
+ * Attachments.
+ *
+ * @since 0.2
+ */
+ protected List<Attachment> attachments;
+
protected static final Binder<MacroWasteBatch, MacroWasteBatchRowModel> fromBeanBinder =
BinderFactory.newBinder(MacroWasteBatch.class,
MacroWasteBatchRowModel.class);
@@ -84,14 +96,14 @@
fromBean(aBatch);
}
- public Species getSpecies() {
- return species;
+ public MacroWasteCategory getMacroWasteCategory() {
+ return macroWasteCategory;
}
- public void setSpecies(Species species) {
- Object oldValue = getSpecies();
- this.species = species;
- firePropertyChange(PROPERTY_SPECIES, oldValue, species);
+ public void setMacroWasteCategory(MacroWasteCategory macroWasteCategory) {
+ Object oldValue = getMacroWasteCategory();
+ this.macroWasteCategory = macroWasteCategory;
+ firePropertyChange(PROPERTY_MACRO_WASTE_CATEGORY, oldValue, macroWasteCategory);
}
public Float getWeight() {
@@ -113,4 +125,14 @@
this.comment = comment;
firePropertyChange(PROPERTY_COMMENT, oldValue, comment);
}
+
+ public List<Attachment> getAttachments() {
+ return attachments;
+ }
+
+ public void setAttachments(List<Attachment> attachments) {
+ Object oldValue = getAttachments();
+ this.attachments = attachments;
+ firePropertyChange(PROPERTY_ATTACHMENTS, oldValue, attachments);
+ }
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/macrowaste/MacroWasteBatchTableModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/macrowaste/MacroWasteBatchTableModel.java 2012-12-15 00:14:45 UTC (rev 76)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/macrowaste/MacroWasteBatchTableModel.java 2012-12-15 16:05:45 UTC (rev 77)
@@ -39,16 +39,11 @@
private static final long serialVersionUID = 1L;
- public static final ColumnIdentifier<MacroWasteBatchRowModel> SPECIES_BY_CODE = ColumnIdentifier.newId(
- MacroWasteBatchRowModel.PROPERTY_SPECIES,
- n_("tutti.table.macrowaste.batch.header.speciesByCode"),
- n_("tutti.table.macrowaste.batch.header.speciesByCode"));
+ public static final ColumnIdentifier<MacroWasteBatchRowModel> MACRO_WASTE_CATEGORY = ColumnIdentifier.newId(
+ MacroWasteBatchRowModel.PROPERTY_MACRO_WASTE_CATEGORY,
+ n_("tutti.table.macrowaste.batch.header.macroWasteCategory"),
+ n_("tutti.table.macrowaste.batch.header.macroWasteCategory"));
- public static final ColumnIdentifier<MacroWasteBatchRowModel> SPECIES_BY_GENUS_CODE = ColumnIdentifier.newId(
- MacroWasteBatchRowModel.PROPERTY_SPECIES,
- n_("tutti.table.macrowaste.batch.header.speciesByGenusCode"),
- n_("tutti.table.macrowaste.batch.header.speciesByGenusCode"));
-
public static final ColumnIdentifier<MacroWasteBatchRowModel> WEIGHT = ColumnIdentifier.newId(
MacroWasteBatchRowModel.PROPERTY_WEIGHT,
n_("tutti.table.macrowaste.batch.header.weight"),
@@ -59,16 +54,15 @@
n_("tutti.table.macrowaste.batch.header.comment"),
n_("tutti.table.macrowaste.batch.header.comment"));
- public static final ColumnIdentifier<MacroWasteBatchRowModel> FILE = ColumnIdentifier.newId(
- null,
+ public static final ColumnIdentifier<MacroWasteBatchRowModel> ATTACHMENTS = ColumnIdentifier.newId(
+ MacroWasteBatchRowModel.PROPERTY_ATTACHMENTS,
n_("tutti.table.macrowaste.batch.header.file"),
n_("tutti.table.macrowaste.batch.header.file"));
-
public MacroWasteBatchTableModel(TableColumnModel columnModel) {
super(columnModel);
- setNoneEditableCols(FILE);
+ setNoneEditableCols();
}
@Override
@@ -80,25 +74,4 @@
return result;
}
- @Override
- public void setValueAt(Object aValue,
- int rowIndex,
- int columnIndex,
- ColumnIdentifier<MacroWasteBatchRowModel> propertyName,
- MacroWasteBatchRowModel entry) {
- super.setValueAt(aValue, rowIndex, columnIndex, propertyName, entry);
-
- if (propertyName == SPECIES_BY_CODE) {
-
- // update also other columns
- fireTableCellUpdated(rowIndex,
- SPECIES_BY_GENUS_CODE);
-
- } else if (propertyName == SPECIES_BY_GENUS_CODE) {
-
- // update also other columns
- fireTableCellUpdated(rowIndex,
- SPECIES_BY_CODE);
- }
- }
}
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/macrowaste/MacroWasteBatchUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/macrowaste/MacroWasteBatchUI.jaxx 2012-12-15 00:14:45 UTC (rev 76)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/macrowaste/MacroWasteBatchUI.jaxx 2012-12-15 16:05:45 UTC (rev 77)
@@ -30,6 +30,7 @@
fr.ifremer.tutti.ui.swing.TuttiUIContext
fr.ifremer.tutti.ui.swing.content.operation.FishingOperationsUI
fr.ifremer.tutti.ui.swing.util.editor.LongTextEditorUI
+ fr.ifremer.tutti.ui.swing.util.editor.AttachmentEditorUI
jaxx.runtime.swing.editor.NumberEditor
@@ -71,8 +72,10 @@
<field name='totalWeight' component='totalWeightField'/>
</BeanValidator>
- <LongTextEditorUI id='longTextEditorUI'/>
+ <LongTextEditorUI id='longTextEditor'/>
+ <AttachmentEditorUI id='attachmentEditor'/>
+
<Table id='form' fill='both' constraints='BorderLayout.NORTH'>
<!-- Poids total -->
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/macrowaste/MacroWasteBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/macrowaste/MacroWasteBatchUIHandler.java 2012-12-15 00:14:45 UTC (rev 76)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/macrowaste/MacroWasteBatchUIHandler.java 2012-12-15 16:05:45 UTC (rev 77)
@@ -26,43 +26,36 @@
import com.google.common.collect.Lists;
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.MacroWasteBatch;
-import fr.ifremer.tutti.persistence.entities.referential.Species;
-import fr.ifremer.tutti.service.DecoratorService;
-import fr.ifremer.tutti.service.PersistenceService;
+import fr.ifremer.tutti.persistence.entities.referential.MacroWasteCategory;
import fr.ifremer.tutti.ui.swing.TuttiUI;
+import fr.ifremer.tutti.ui.swing.content.operation.AbstractTuttiBatchTableUIHandler;
import fr.ifremer.tutti.ui.swing.content.operation.FishingOperationsUI;
import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor;
-import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
+import fr.ifremer.tutti.ui.swing.util.editor.AttachmentCellComponent;
import fr.ifremer.tutti.ui.swing.util.editor.LongTextCellComponent;
-import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIHandler;
-import fr.ifremer.tutti.ui.swing.util.table.TableRowModificationListener;
-import jaxx.runtime.SwingUtil;
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 javax.swing.event.ListSelectionListener;
import javax.swing.table.TableColumnModel;
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.event.FocusEvent;
import java.util.List;
+import static org.nuiton.i18n.I18n.n_;
+
/**
* @author tchemit <chemit(a)codelutin.com>
* @since 0.2
*/
-public class MacroWasteBatchUIHandler extends AbstractTuttiTableUIHandler<MacroWasteBatchRowModel, MacroWasteBatchUIModel> {
+public class MacroWasteBatchUIHandler extends AbstractTuttiBatchTableUIHandler<MacroWasteBatchRowModel, MacroWasteBatchUIModel> {
/** Logger. */
- private static final Log log = LogFactory.getLog(MacroWasteBatchUIHandler.class);
+ private static final Log log =
+ LogFactory.getLog(MacroWasteBatchUIHandler.class);
/**
* UI.
@@ -71,31 +64,13 @@
*/
private final MacroWasteBatchUI ui;
- /**
- * Persistence service.
- *
- * @since 0.2
- */
- private final PersistenceService persistenceService;
-
- /**
- * To monitor changes on the fishing operation.
- *
- * @since 0.2
- */
- private final TuttiBeanMonitor<MacroWasteBatchUIModel> fishingOperationMonitor;
-
-
public MacroWasteBatchUIHandler(FishingOperationsUI parentUi, MacroWasteBatchUI ui) {
- super(parentUi.getHandler().getContext(),
- MacroWasteBatchRowModel.PROPERTY_SPECIES,
+ super(parentUi,
+ new String[]{MacroWasteBatchUIModel.PROPERTY_TOTAL_WEIGHT},
+ MacroWasteBatchRowModel.PROPERTY_MACRO_WASTE_CATEGORY,
MacroWasteBatchRowModel.PROPERTY_WEIGHT,
MacroWasteBatchRowModel.PROPERTY_COMMENT);
this.ui = ui;
- this.persistenceService = context.getService(PersistenceService.class);
- this.fishingOperationMonitor = new TuttiBeanMonitor<MacroWasteBatchUIModel>(
- MacroWasteBatchUIModel.PROPERTY_TOTAL_WEIGHT
- );
}
//------------------------------------------------------------------------//
@@ -118,36 +93,27 @@
}
@Override
+ protected FishingOperation getFishingOperation() {
+ return getModel().getFishingOperation();
+ }
+
+ @Override
protected TableColumnModel createTableColumnModel() {
DefaultTableColumnModelExt columnModel =
new DefaultTableColumnModelExt();
- List<Species> allSpecies = persistenceService.getAllSpecies();
-
{
- // Species (by code) column
+ // MacroWaste Category column
- Decorator<Species> decorator = getDecorator(
- Species.class, DecoratorService.SPECIES_BY_CODE);
+ Decorator<MacroWasteCategory> decorator = getDecorator(
+ MacroWasteCategory.class, null);
addComboDataColumnToModel(columnModel,
- MacroWasteBatchTableModel.SPECIES_BY_CODE,
- decorator, allSpecies);
+ MacroWasteBatchTableModel.MACRO_WASTE_CATEGORY,
+ decorator, persistenceService.getAllMacroWasteCategory());
}
- {
- // Species (by genusCode) column
-
- Decorator<Species> decorator = getDecorator(
- Species.class, DecoratorService.SPECIES_BY_GENUS);
-
- addComboDataColumnToModel(columnModel,
- MacroWasteBatchTableModel.SPECIES_BY_GENUS_CODE,
- decorator, allSpecies);
-
- }
-
{ // Weight column
addFloatColumnToModel(columnModel,
@@ -158,15 +124,19 @@
{ // Comment column
addColumnToModel(columnModel,
- LongTextCellComponent.newEditor(ui.getLongTextEditorUI()),
- LongTextCellComponent.newRender(),
+ LongTextCellComponent.newEditor(ui.getLongTextEditor()),
+ LongTextCellComponent.newRender(n_("tutti.tooltip.comment.none")),
MacroWasteBatchTableModel.COMMENT);
}
{ // File column
addColumnToModel(columnModel,
- MacroWasteBatchTableModel.FILE);
+ AttachmentCellComponent.newEditor(ui.getAttachmentEditor()),
+ AttachmentCellComponent.newRender(
+ getDecorator(Attachment.class, null),
+ n_("tutti.tooltip.attachment.none")),
+ MacroWasteBatchTableModel.ATTACHMENTS);
}
return columnModel;
}
@@ -215,118 +185,72 @@
}
}
- //------------------------------------------------------------------------//
- //-- AbstractTuttiUIHandler methods --//
- //------------------------------------------------------------------------//
-
@Override
- public void beforeInitUI() {
+ protected void saveSelectedRowIfRequired() {
- if (log.isInfoEnabled()) {
- log.info("beforeInit: " + ui);
- }
+ TuttiBeanMonitor<MacroWasteBatchRowModel> rowMonitor = getRowMonitor();
- MacroWasteBatchUIModel model = new MacroWasteBatchUIModel();
- ui.setContextValue(model);
+ MacroWasteBatchRowModel bean = rowMonitor.getBean();
+ if (bean != null) {
- fishingOperationMonitor.setBean(model);
- }
+ if (bean.isValid()) {
+ // there is a valid bean attached to the monitor
- @Override
- public void afterInitUI() {
+ if (rowMonitor.wasModified()) {
- if (log.isInfoEnabled()) {
- log.info("afterInit: " + ui);
- }
+ // monitored bean was modified, save it
+ if (log.isInfoEnabled()) {
+ log.info("Row " + bean + " was modified, will save it");
+ }
- initUI(ui);
+ saveRow(bean);
- JXTable table = getTable();
+ // clear modified flag on the monitor
+ rowMonitor.clearModified();
+ }
+ } else {
- // create table column model
- TableColumnModel columnModel = createTableColumnModel();
+ // row is not valid can not save it
- // create table model
- MacroWasteBatchTableModel tableModel =
- new MacroWasteBatchTableModel(columnModel);
+ MacroWasteBatch catchBean = bean.toBean();
- table.setModel(tableModel);
- table.setColumnModel(columnModel);
- installTableKeyListener(columnModel, table);
+ if (!TuttiEntities.isNew(catchBean)) {
- table.getTableHeader().setReorderingAllowed(false);
-
-
- Highlighter readOnlyHighlighter = TuttiUIUtil.newBackgroundColorHighlighter(
- HighlightPredicate.READ_ONLY, Color.LIGHT_GRAY);
-
- table.addHighlighter(readOnlyHighlighter);
- Highlighter validHighlighter = TuttiUIUtil.newBackgroundColorHighlighter(
- new HighlightPredicate.AndHighlightPredicate(HighlightPredicate.EDITABLE, new HighlightPredicate() {
- @Override
- public boolean isHighlighted(Component renderer, ComponentAdapter adapter) {
-
- boolean result = false;
- if (adapter.isEditable()) {
- int rowIndex = adapter.convertRowIndexToModel(adapter.row);
- MacroWasteBatchRowModel row = getTableModel().getEntry(rowIndex);
- result = !row.isValid();
- }
- return result;
- }
- }), Color.RED);
- table.addHighlighter(validHighlighter);
-
- // when model datas change let's propagate it table model
- listenRowsFromModel();
-
- // save when row chaged and was modified
- ListSelectionListener listener = new TableRowModificationListener<MacroWasteBatchRowModel>(
- getTableModel(), getRowMonitor()) {
- @Override
- protected void saveSelectedRow() {
- saveSelectedRowIfRequired();
+ // remove this
+ persistenceService.deleteMacroWasteBatch(catchBean.getId());
+ }
}
- };
- table.getSelectionModel().addListSelectionListener(listener);
-
- // always scroll to selected row
- SwingUtil.scrollToTableSelection(getTable());
+ }
}
@Override
- public void onCloseUI() {
- if (log.isInfoEnabled()) {
- log.info("closing: " + ui);
- }
+ protected boolean isRowValid(MacroWasteBatchRowModel row) {
+ boolean result = row.getMacroWasteCategory() != null &&
+ row.getWeight() != null;
+ return result;
}
- //------------------------------------------------------------------------//
- //-- Public methods --//
- //------------------------------------------------------------------------//
+ @Override
+ protected void saveRow(MacroWasteBatchRowModel row) {
- public void saveSelectedRowIfRequired(FocusEvent event) {
+ MacroWasteBatch catchBean = row.toBean();
- Component oppositeComponent = event.getOppositeComponent();
-
- JXTable parentContainer = null;
-
- if (oppositeComponent != null) {
-
- // check out if still on table
- parentContainer = SwingUtil.getParentContainer(
- oppositeComponent, JXTable.class);
+ FishingOperation fishingOperation = getModel().getFishingOperation();
+ catchBean.setFishingOperation(fishingOperation);
+ if (log.isInfoEnabled()) {
+ log.info("Selected fishingOperation: " + fishingOperation.getId());
}
- if (parentContainer == null) {
+ if (TuttiEntities.isNew(catchBean)) {
- // out of the table can save
- if (getModel().getFishingOperation() != null) {
- saveSelectedRowIfRequired();
- }
+ catchBean = persistenceService.createMacroWasteBatch(catchBean);
+ row.setId(catchBean.getId());
+ } else {
+ persistenceService.saveMacroWasteBatch(catchBean);
}
}
+ @Override
public void selectFishingOperation(FishingOperation bean) {
JXTable table = getTable();
@@ -390,81 +314,60 @@
fishingOperationMonitor.clearModified();
}
- public void cancel() {
+ //------------------------------------------------------------------------//
+ //-- AbstractTuttiUIHandler methods --//
+ //------------------------------------------------------------------------//
- if (log.isInfoEnabled()) {
- log.info("Cancel edition");
- }
- }
+ @Override
+ public void beforeInitUI() {
- public void save() {
if (log.isInfoEnabled()) {
- log.info("Will save");
+ log.info("beforeInit: " + ui);
}
- }
- //------------------------------------------------------------------------//
- //-- Internal methods --//
- //------------------------------------------------------------------------//
+ MacroWasteBatchUIModel model = new MacroWasteBatchUIModel();
+ ui.setContextValue(model);
- protected boolean isRowValid(MacroWasteBatchRowModel row) {
- boolean result = row.getSpecies() != null && row.getWeight() != null;
- return result;
+ fishingOperationMonitor.setBean(model);
}
- protected void saveSelectedRowIfRequired() {
+ @Override
+ public void afterInitUI() {
- TuttiBeanMonitor<MacroWasteBatchRowModel> rowMonitor = getRowMonitor();
+ if (log.isInfoEnabled()) {
+ log.info("afterInit: " + ui);
+ }
- MacroWasteBatchRowModel bean = rowMonitor.getBean();
- if (bean != null) {
+ initUI(ui);
- if (bean.isValid()) {
- // there is a valid bean attached to the monitor
+ JXTable table = getTable();
- if (rowMonitor.wasModified()) {
+ // create table column model
+ TableColumnModel columnModel = createTableColumnModel();
- // monitored bean was modified, save it
- if (log.isInfoEnabled()) {
- log.info("Row " + bean + " was modified, will save it");
- }
+ // create table model
+ MacroWasteBatchTableModel tableModel =
+ new MacroWasteBatchTableModel(columnModel);
- saveRow(bean);
+ table.setModel(tableModel);
+ table.setColumnModel(columnModel);
- // clear modified flag on the monitor
- rowMonitor.clearModified();
- }
- } else {
-
- // row is not valid can not save it
-
- MacroWasteBatch catchBean = bean.toBean();
-
- if (!TuttiEntities.isNew(catchBean)) {
-
- // remove this
- persistenceService.deleteMacroWasteBatch(catchBean.getId());
- }
- }
- }
+ initBatchTable(table, columnModel, tableModel);
}
- protected void saveRow(MacroWasteBatchRowModel row) {
-
- MacroWasteBatch catchBean = row.toBean();
-
- FishingOperation fishingOperation = getModel().getFishingOperation();
- catchBean.setFishingOperation(fishingOperation);
+ @Override
+ public void onCloseUI() {
if (log.isInfoEnabled()) {
- log.info("Selected fishingOperation: " + fishingOperation.getId());
+ log.info("closing: " + ui);
}
+ }
- if (TuttiEntities.isNew(catchBean)) {
+ //------------------------------------------------------------------------//
+ //-- Public methods --//
+ //------------------------------------------------------------------------//
- catchBean = persistenceService.createMacroWasteBatch(catchBean);
- row.setId(catchBean.getId());
- } else {
- persistenceService.saveMacroWasteBatch(catchBean);
- }
- }
+ //------------------------------------------------------------------------//
+ //-- Internal methods --//
+ //------------------------------------------------------------------------//
+
}
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/plankton/PlanktonBatchRowModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/plankton/PlanktonBatchRowModel.java 2012-12-15 00:14:45 UTC (rev 76)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/plankton/PlanktonBatchRowModel.java 2012-12-15 16:05:45 UTC (rev 77)
@@ -24,12 +24,15 @@
* #L%
*/
+import fr.ifremer.tutti.persistence.entities.data.Attachment;
import fr.ifremer.tutti.persistence.entities.data.PlanktonBatch;
import fr.ifremer.tutti.persistence.entities.referential.Species;
import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel;
import org.nuiton.util.beans.Binder;
import org.nuiton.util.beans.BinderFactory;
+import java.util.List;
+
/**
* Define a benthos batch row.
*
@@ -52,6 +55,8 @@
public static final String PROPERTY_COMMENT = "comment";
+ public static final String PROPERTY_ATTACHMENTS = "attachments";
+
/**
* Species observed.
*
@@ -94,6 +99,13 @@
*/
protected String comment;
+ /**
+ * Attachments
+ *
+ * @since 0.2
+ */
+ protected List<Attachment> attachments;
+
protected static final Binder<PlanktonBatch, PlanktonBatchRowModel> fromBeanBinder =
BinderFactory.newBinder(PlanktonBatch.class,
PlanktonBatchRowModel.class);
@@ -170,4 +182,14 @@
this.comment = comment;
firePropertyChange(PROPERTY_COMMENT, oldValue, comment);
}
+
+ public List<Attachment> getAttachments() {
+ return attachments;
+ }
+
+ public void setAttachments(List<Attachment> attachments) {
+ Object oldValue = getAttachments();
+ this.attachments = attachments;
+ firePropertyChange(PROPERTY_ATTACHMENTS, oldValue, attachments);
+ }
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/plankton/PlanktonBatchTableModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/plankton/PlanktonBatchTableModel.java 2012-12-15 00:14:45 UTC (rev 76)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/plankton/PlanktonBatchTableModel.java 2012-12-15 16:05:45 UTC (rev 77)
@@ -74,20 +74,15 @@
n_("tutti.table.plankton.batch.header.comment"),
n_("tutti.table.plankton.batch.header.comment"));
- public static final ColumnIdentifier<PlanktonBatchRowModel> FILE = ColumnIdentifier.newId(
- null,
+ public static final ColumnIdentifier<PlanktonBatchRowModel> ATTACHMENTS = ColumnIdentifier.newId(
+ PlanktonBatchRowModel.PROPERTY_ATTACHMENTS,
n_("tutti.table.plankton.batch.header.file"),
n_("tutti.table.plankton.batch.header.file"));
-
public PlanktonBatchTableModel(TableColumnModel columnModel) {
super(columnModel);
- setNoneEditableCols(
- SAMPLE_WEIGHT,
- SAMPLING_RATIO,
- FILE
- );
+ setNoneEditableCols(SAMPLE_WEIGHT, SAMPLING_RATIO);
}
@Override
@@ -110,14 +105,12 @@
if (propertyName == SPECIES_BY_CODE) {
// update also other columns
- fireTableCellUpdated(rowIndex,
- SPECIES_BY_GENUS_CODE);
+ fireTableCellUpdated(rowIndex, SPECIES_BY_GENUS_CODE);
} else if (propertyName == SPECIES_BY_GENUS_CODE) {
// update also other columns
- fireTableCellUpdated(rowIndex,
- SPECIES_BY_CODE);
+ fireTableCellUpdated(rowIndex, SPECIES_BY_CODE);
}
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/plankton/PlanktonBatchUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/plankton/PlanktonBatchUI.jaxx 2012-12-15 00:14:45 UTC (rev 76)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/plankton/PlanktonBatchUI.jaxx 2012-12-15 16:05:45 UTC (rev 77)
@@ -30,6 +30,7 @@
fr.ifremer.tutti.ui.swing.TuttiUIContext
fr.ifremer.tutti.ui.swing.content.operation.FishingOperationsUI
fr.ifremer.tutti.ui.swing.util.editor.LongTextEditorUI
+ fr.ifremer.tutti.ui.swing.util.editor.AttachmentEditorUI
jaxx.runtime.swing.editor.NumberEditor
@@ -72,8 +73,10 @@
<field name='sampleTotalWeight' component='sampleTotalWeightField'/>
</BeanValidator>
- <LongTextEditorUI id='longTextEditorUI'/>
+ <LongTextEditorUI id='longTextEditor'/>
+ <AttachmentEditorUI id='attachmentEditor'/>
+
<Table id='form' fill='both' constraints='BorderLayout.NORTH'>
<!-- Poids total -->
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/plankton/PlanktonBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/plankton/PlanktonBatchUIHandler.java 2012-12-15 00:14:45 UTC (rev 76)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/plankton/PlanktonBatchUIHandler.java 2012-12-15 16:05:45 UTC (rev 77)
@@ -26,40 +26,33 @@
import com.google.common.collect.Lists;
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.PlanktonBatch;
import fr.ifremer.tutti.persistence.entities.referential.Species;
import fr.ifremer.tutti.service.DecoratorService;
-import fr.ifremer.tutti.service.PersistenceService;
import fr.ifremer.tutti.ui.swing.TuttiUI;
+import fr.ifremer.tutti.ui.swing.content.operation.AbstractTuttiBatchTableUIHandler;
import fr.ifremer.tutti.ui.swing.content.operation.FishingOperationsUI;
import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor;
-import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
+import fr.ifremer.tutti.ui.swing.util.editor.AttachmentCellComponent;
import fr.ifremer.tutti.ui.swing.util.editor.LongTextCellComponent;
-import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIHandler;
-import fr.ifremer.tutti.ui.swing.util.table.TableRowModificationListener;
-import jaxx.runtime.SwingUtil;
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 javax.swing.event.ListSelectionListener;
import javax.swing.table.TableColumnModel;
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.event.FocusEvent;
import java.util.List;
+import static org.nuiton.i18n.I18n.n_;
+
/**
* @author tchemit <chemit(a)codelutin.com>
* @since 0.2
*/
-public class PlanktonBatchUIHandler extends AbstractTuttiTableUIHandler<PlanktonBatchRowModel, PlanktonBatchUIModel> {
+public class PlanktonBatchUIHandler extends AbstractTuttiBatchTableUIHandler<PlanktonBatchRowModel, PlanktonBatchUIModel> {
/** Logger. */
private static final Log log = LogFactory.getLog(PlanktonBatchUIHandler.class);
@@ -71,32 +64,14 @@
*/
private final PlanktonBatchUI ui;
- /**
- * Persistence service.
- *
- * @since 0.2
- */
- private final PersistenceService persistenceService;
-
- /**
- * To monitor changes on the fishing operation.
- *
- * @since 0.2
- */
- private final TuttiBeanMonitor<PlanktonBatchUIModel> fishingOperationMonitor;
-
public PlanktonBatchUIHandler(FishingOperationsUI parentUi, PlanktonBatchUI ui) {
- super(parentUi.getHandler().getContext(),
+ super(parentUi, new String[]{PlanktonBatchUIModel.PROPERTY_TOTAL_WEIGHT,
+ PlanktonBatchUIModel.PROPERTY_SAMPLE_TOTAL_WEIGHT},
PlanktonBatchRowModel.PROPERTY_SPECIES_TO_CONFIRM,
PlanktonBatchRowModel.PROPERTY_SPECIES,
PlanktonBatchRowModel.PROPERTY_WEIGHT,
PlanktonBatchRowModel.PROPERTY_COMMENT);
this.ui = ui;
- this.persistenceService = context.getService(PersistenceService.class);
- this.fishingOperationMonitor = new TuttiBeanMonitor<PlanktonBatchUIModel>(
- PlanktonBatchUIModel.PROPERTY_TOTAL_WEIGHT,
- PlanktonBatchUIModel.PROPERTY_SAMPLE_TOTAL_WEIGHT
- );
}
//------------------------------------------------------------------------//
@@ -119,6 +94,11 @@
}
@Override
+ protected FishingOperation getFishingOperation() {
+ return getModel().getFishingOperation();
+ }
+
+ @Override
protected String[] getRowPropertiesToIgnore() {
return new String[]{
PlanktonBatchRowModel.PROPERTY_SAMPLE_WEIGHT,
@@ -187,15 +167,19 @@
{ // Comment column
addColumnToModel(columnModel,
- LongTextCellComponent.newEditor(ui.getLongTextEditorUI()),
- LongTextCellComponent.newRender(),
+ LongTextCellComponent.newEditor(ui.getLongTextEditor()),
+ LongTextCellComponent.newRender(n_("tutti.tooltip.comment.none")),
PlanktonBatchTableModel.COMMENT);
}
{ // File column
addColumnToModel(columnModel,
- PlanktonBatchTableModel.FILE);
+ AttachmentCellComponent.newEditor(ui.getAttachmentEditor()),
+ AttachmentCellComponent.newRender(
+ getDecorator(Attachment.class, null),
+ n_("tutti.tooltip.attachment.none")),
+ PlanktonBatchTableModel.ATTACHMENTS);
}
return columnModel;
}
@@ -244,118 +228,71 @@
}
}
- //------------------------------------------------------------------------//
- //-- AbstractTuttiUIHandler methods --//
- //------------------------------------------------------------------------//
-
@Override
- public void beforeInitUI() {
+ protected void saveSelectedRowIfRequired() {
- if (log.isInfoEnabled()) {
- log.info("beforeInit: " + ui);
- }
+ TuttiBeanMonitor<PlanktonBatchRowModel> rowMonitor = getRowMonitor();
- PlanktonBatchUIModel model = new PlanktonBatchUIModel();
- ui.setContextValue(model);
+ PlanktonBatchRowModel bean = rowMonitor.getBean();
+ if (bean != null) {
- fishingOperationMonitor.setBean(model);
- }
+ if (bean.isValid()) {
+ // there is a valid bean attached to the monitor
- @Override
- public void afterInitUI() {
+ if (rowMonitor.wasModified()) {
- if (log.isInfoEnabled()) {
- log.info("afterInit: " + ui);
- }
+ // monitored bean was modified, save it
+ if (log.isInfoEnabled()) {
+ log.info("Row " + bean + " was modified, will save it");
+ }
- initUI(ui);
+ saveRow(bean);
- JXTable table = getTable();
+ // clear modified flag on the monitor
+ rowMonitor.clearModified();
+ }
+ } else {
- // create table column model
- TableColumnModel columnModel = createTableColumnModel();
+ // row is not valid can not save it
- // create table model
- PlanktonBatchTableModel tableModel =
- new PlanktonBatchTableModel(columnModel);
+ PlanktonBatch catchBean = bean.toBean();
- table.setModel(tableModel);
- table.setColumnModel(columnModel);
- installTableKeyListener(columnModel, table);
+ if (!TuttiEntities.isNew(catchBean)) {
- table.getTableHeader().setReorderingAllowed(false);
-
-
- Highlighter readOnlyHighlighter = TuttiUIUtil.newBackgroundColorHighlighter(
- HighlightPredicate.READ_ONLY, Color.LIGHT_GRAY);
-
- table.addHighlighter(readOnlyHighlighter);
- Highlighter validHighlighter = TuttiUIUtil.newBackgroundColorHighlighter(
- new HighlightPredicate.AndHighlightPredicate(HighlightPredicate.EDITABLE, new HighlightPredicate() {
- @Override
- public boolean isHighlighted(Component renderer, ComponentAdapter adapter) {
-
- boolean result = false;
- if (adapter.isEditable()) {
- int rowIndex = adapter.convertRowIndexToModel(adapter.row);
- PlanktonBatchRowModel row = getTableModel().getEntry(rowIndex);
- result = !row.isValid();
- }
- return result;
- }
- }), Color.RED);
- table.addHighlighter(validHighlighter);
-
- // when model datas change let's propagate it table model
- listenRowsFromModel();
-
- // save when row chaged and was modified
- ListSelectionListener listener = new TableRowModificationListener<PlanktonBatchRowModel>(
- getTableModel(), getRowMonitor()) {
- @Override
- protected void saveSelectedRow() {
- saveSelectedRowIfRequired();
+ // remove this
+ persistenceService.deletePlanktonBatch(catchBean.getId());
+ }
}
- };
- table.getSelectionModel().addListSelectionListener(listener);
-
- // always scroll to selected row
- SwingUtil.scrollToTableSelection(getTable());
+ }
}
@Override
- public void onCloseUI() {
- if (log.isInfoEnabled()) {
- log.info("closing: " + ui);
- }
+ protected boolean isRowValid(PlanktonBatchRowModel row) {
+ boolean result = row.getSpecies() != null && row.getWeight() != null;
+ return result;
}
- //------------------------------------------------------------------------//
- //-- Public methods --//
- //------------------------------------------------------------------------//
+ @Override
+ protected void saveRow(PlanktonBatchRowModel row) {
- public void saveSelectedRowIfRequired(FocusEvent event) {
+ PlanktonBatch catchBean = row.toBean();
- Component oppositeComponent = event.getOppositeComponent();
-
- JXTable parentContainer = null;
-
- if (oppositeComponent != null) {
-
- // check out if still on table
- parentContainer = SwingUtil.getParentContainer(
- oppositeComponent, JXTable.class);
+ FishingOperation fishingOperation = getModel().getFishingOperation();
+ catchBean.setFishingOperation(fishingOperation);
+ if (log.isInfoEnabled()) {
+ log.info("Selected fishingOperation: " + fishingOperation.getId());
}
- if (parentContainer == null) {
+ if (TuttiEntities.isNew(catchBean)) {
- // out of the table can save
- if (getModel().getFishingOperation() != null) {
- saveSelectedRowIfRequired();
- }
+ catchBean = persistenceService.createPlanktonBatch(catchBean);
+ row.setId(catchBean.getId());
+ } else {
+ persistenceService.savePlanktonBatch(catchBean);
}
}
+ @Override
public void selectFishingOperation(FishingOperation bean) {
JXTable table = getTable();
@@ -419,81 +356,60 @@
fishingOperationMonitor.clearModified();
}
- public void cancel() {
+ //------------------------------------------------------------------------//
+ //-- AbstractTuttiUIHandler methods --//
+ //------------------------------------------------------------------------//
- if (log.isInfoEnabled()) {
- log.info("Cancel edition");
- }
- }
+ @Override
+ public void beforeInitUI() {
- public void save() {
if (log.isInfoEnabled()) {
- log.info("Will save");
+ log.info("beforeInit: " + ui);
}
- }
- //------------------------------------------------------------------------//
- //-- Internal methods --//
- //------------------------------------------------------------------------//
+ PlanktonBatchUIModel model = new PlanktonBatchUIModel();
+ ui.setContextValue(model);
- protected boolean isRowValid(PlanktonBatchRowModel row) {
- boolean result = row.getSpecies() != null && row.getWeight() != null;
- return result;
+ fishingOperationMonitor.setBean(model);
}
- protected void saveSelectedRowIfRequired() {
+ @Override
+ public void afterInitUI() {
- TuttiBeanMonitor<PlanktonBatchRowModel> rowMonitor = getRowMonitor();
+ if (log.isInfoEnabled()) {
+ log.info("afterInit: " + ui);
+ }
- PlanktonBatchRowModel bean = rowMonitor.getBean();
- if (bean != null) {
+ initUI(ui);
- if (bean.isValid()) {
- // there is a valid bean attached to the monitor
+ JXTable table = getTable();
- if (rowMonitor.wasModified()) {
+ // create table column model
+ TableColumnModel columnModel = createTableColumnModel();
- // monitored bean was modified, save it
- if (log.isInfoEnabled()) {
- log.info("Row " + bean + " was modified, will save it");
- }
+ // create table model
+ PlanktonBatchTableModel tableModel =
+ new PlanktonBatchTableModel(columnModel);
- saveRow(bean);
+ table.setModel(tableModel);
+ table.setColumnModel(columnModel);
- // clear modified flag on the monitor
- rowMonitor.clearModified();
- }
- } else {
-
- // row is not valid can not save it
-
- PlanktonBatch catchBean = bean.toBean();
-
- if (!TuttiEntities.isNew(catchBean)) {
-
- // remove this
- persistenceService.deletePlanktonBatch(catchBean.getId());
- }
- }
- }
+ initBatchTable(table, columnModel, tableModel);
}
- protected void saveRow(PlanktonBatchRowModel row) {
-
- PlanktonBatch catchBean = row.toBean();
-
- FishingOperation fishingOperation = getModel().getFishingOperation();
- catchBean.setFishingOperation(fishingOperation);
+ @Override
+ public void onCloseUI() {
if (log.isInfoEnabled()) {
- log.info("Selected fishingOperation: " + fishingOperation.getId());
+ log.info("closing: " + ui);
}
+ }
- if (TuttiEntities.isNew(catchBean)) {
+ //------------------------------------------------------------------------//
+ //-- Public methods --//
+ //------------------------------------------------------------------------//
- catchBean = persistenceService.createPlanktonBatch(catchBean);
- row.setId(catchBean.getId());
- } else {
- persistenceService.savePlanktonBatch(catchBean);
- }
- }
+ //------------------------------------------------------------------------//
+ //-- Internal methods --//
+ //------------------------------------------------------------------------//
+
}
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/SpeciesBatchRowModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/SpeciesBatchRowModel.java 2012-12-15 00:14:45 UTC (rev 76)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/SpeciesBatchRowModel.java 2012-12-15 16:05:45 UTC (rev 77)
@@ -28,8 +28,8 @@
import fr.ifremer.tutti.persistence.entities.data.Attachment;
import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch;
import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency;
-import fr.ifremer.tutti.persistence.entities.data.VracHorsVracEnum;
import fr.ifremer.tutti.persistence.entities.referential.Sex;
+import fr.ifremer.tutti.persistence.entities.referential.SortedUnsortedCategory;
import fr.ifremer.tutti.persistence.entities.referential.Species;
import fr.ifremer.tutti.persistence.entities.referential.WeightCategory;
import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel;
@@ -54,7 +54,7 @@
public static final String PROPERTY_SPECIES_TO_CONFIRM = "speciesToConfirm";
- public static final String PROPERTY_VRAC_HORS_VRAC = "vracHorsVrac";
+ public static final String PROPERTY_SORTED_UNSORTED_CATEGORY = "sortedUnsortedCategory";
public static final String PROPERTY_WEIGHT_CATEGORY = "weightCategory";
@@ -99,7 +99,7 @@
*
* @since 0.2
*/
- protected VracHorsVracEnum vracHorsVrac;
+ protected SortedUnsortedCategory sortedUnsortedCategory;
/**
* Weight category (can be null).
@@ -254,14 +254,14 @@
firePropertyChange(PROPERTY_SPECIES_TO_CONFIRM, oldValue, speciesToConfirm);
}
- public VracHorsVracEnum getVracHorsVrac() {
- return vracHorsVrac;
+ public SortedUnsortedCategory getSortedUnsortedCategory() {
+ return sortedUnsortedCategory;
}
- public void setVracHorsVrac(VracHorsVracEnum vracHorsVrac) {
- Object oldValue = getVracHorsVrac();
- this.vracHorsVrac = vracHorsVrac;
- firePropertyChange(PROPERTY_VRAC_HORS_VRAC, oldValue, vracHorsVrac);
+ public void setSortedUnsortedCategory(SortedUnsortedCategory sortedUnsortedCategory) {
+ Object oldValue = getSortedUnsortedCategory();
+ this.sortedUnsortedCategory = sortedUnsortedCategory;
+ firePropertyChange(PROPERTY_SORTED_UNSORTED_CATEGORY, oldValue, sortedUnsortedCategory);
}
public WeightCategory getWeightCategory() {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/SpeciesBatchTableModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/SpeciesBatchTableModel.java 2012-12-15 00:14:45 UTC (rev 76)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/SpeciesBatchTableModel.java 2012-12-15 16:05:45 UTC (rev 77)
@@ -56,10 +56,10 @@
n_("tutti.table.species.batch.header.speciesByGenusCode"),
n_("tutti.table.species.batch.header.speciesByGenusCode"));
- public static final ColumnIdentifier<SpeciesBatchRowModel> VRAC_HORS_VRAC = ColumnIdentifier.newId(
- SpeciesBatchRowModel.PROPERTY_VRAC_HORS_VRAC,
- n_("tutti.table.species.batch.header.vracHorsVrac"),
- n_("tutti.table.species.batch.header.vracHorsVrac"));
+ public static final ColumnIdentifier<SpeciesBatchRowModel> SORTED_UNSORTED_CATEGORY = ColumnIdentifier.newId(
+ SpeciesBatchRowModel.PROPERTY_SORTED_UNSORTED_CATEGORY,
+ n_("tutti.table.species.batch.header.sortedUnsortedCategory"),
+ n_("tutti.table.species.batch.header.sortedUnsortedCategory"));
public static final ColumnIdentifier<SpeciesBatchRowModel> WEIGHT_CATEGORY = ColumnIdentifier.newId(
SpeciesBatchRowModel.PROPERTY_WEIGHT_CATEGORY,
@@ -122,11 +122,7 @@
public SpeciesBatchTableModel(TableColumnModel columnModel) {
super(columnModel);
- setNoneEditableCols(
- SAMPLE_WEIGHT,
- SAMPLING_RATIO/*,
- FILE*/
- );
+ setNoneEditableCols(SAMPLE_WEIGHT, SAMPLING_RATIO);
noneEditableColIfNoSpecies = Sets.newHashSet();
noneEditableColIfNoSpecies.add(COMPUTED_NUMBER);
noneEditableColIfNoSpecies.add(COMPUTED_WEIGHT);
@@ -167,23 +163,19 @@
} else if (propertyName == COMPUTED_NUMBER) {
// update also other columns
- fireTableCellUpdated(rowIndex,
- COMPUTED_WEIGHT);
+ fireTableCellUpdated(rowIndex, COMPUTED_WEIGHT);
} else if (propertyName == COMPUTED_WEIGHT) {
// update also other columns
- fireTableCellUpdated(rowIndex,
- COMPUTED_NUMBER);
+ fireTableCellUpdated(rowIndex, COMPUTED_NUMBER);
}
}
public void updateSamplingRatio(Set<SpeciesBatchRowModel> rows) {
for (SpeciesBatchRowModel row : rows) {
int rowIndex = getRows().indexOf(row);
- fireTableCellUpdated(rowIndex,
- SAMPLE_WEIGHT,
- SAMPLING_RATIO);
+ fireTableCellUpdated(rowIndex, SAMPLE_WEIGHT, SAMPLING_RATIO);
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/SpeciesBatchTreeModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/SpeciesBatchTreeModel.java 2012-12-15 00:14:45 UTC (rev 76)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/SpeciesBatchTreeModel.java 2012-12-15 16:05:45 UTC (rev 77)
@@ -28,7 +28,7 @@
import com.google.common.collect.Maps;
import com.google.common.collect.Multimap;
import com.google.common.collect.Sets;
-import fr.ifremer.tutti.persistence.entities.data.VracHorsVracEnum;
+import fr.ifremer.tutti.persistence.entities.referential.SortedUnsortedCategory;
import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
import org.apache.commons.collections.CollectionUtils;
@@ -197,8 +197,9 @@
SpeciesBatchRowModel row = getNodeToRow(node);
if (row != null) {
- VracHorsVracEnum vracHorsVrac = row.getVracHorsVrac();
- if (VracHorsVracEnum.HORS_VRAC.equals(vracHorsVrac)) {
+ SortedUnsortedCategory sortedUnsortedCategory = row.getSortedUnsortedCategory();
+ if (sortedUnsortedCategory != null &&
+ "unsorted".equals(sortedUnsortedCategory.getName())) {
// never take account of a such child
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/SpeciesBatchUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/SpeciesBatchUI.jaxx 2012-12-15 00:14:45 UTC (rev 76)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/SpeciesBatchUI.jaxx 2012-12-15 16:05:45 UTC (rev 77)
@@ -77,11 +77,11 @@
<field name='totalHorsVracWeight' component='totalHorsVracWeightField'/>
</BeanValidator>
- <SpeciesFrequencyUI id='frequencyUI' constructorParams='handler.getContext()'/>
+ <SpeciesFrequencyUI id='frequencyEditor' constructorParams='handler.getContext()'/>
- <LongTextEditorUI id='longTextEditorUI'/>
+ <LongTextEditorUI id='longTextEditor'/>
- <AttachmentEditorUI id='attachmentEditorUI'/>
+ <AttachmentEditorUI id='attachmentEditor'/>
<Table id='form' fill='both' constraints='BorderLayout.NORTH'>
@@ -119,7 +119,7 @@
</Table>
<JScrollPane id='tableScrollPane' constraints='BorderLayout.CENTER'>
- <JXTable id='table' onFocusLost='handler.saveSelectedRowIfRequired(event);'/>
+ <JXTable id='table' onFocusLost='handler.saveSelectedRowIfRequired(event)'/>
</JScrollPane>
</JPanel>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/SpeciesBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/SpeciesBatchUIHandler.java 2012-12-15 00:14:45 UTC (rev 76)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/SpeciesBatchUIHandler.java 2012-12-15 16:05:45 UTC (rev 77)
@@ -28,64 +28,54 @@
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
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.SpeciesBatch;
import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency;
-import fr.ifremer.tutti.persistence.entities.data.VracHorsVracEnum;
import fr.ifremer.tutti.persistence.entities.referential.Sex;
+import fr.ifremer.tutti.persistence.entities.referential.SortedUnsortedCategory;
import fr.ifremer.tutti.persistence.entities.referential.Species;
import fr.ifremer.tutti.persistence.entities.referential.WeightCategory;
import fr.ifremer.tutti.service.DecoratorService;
-import fr.ifremer.tutti.service.PersistenceService;
import fr.ifremer.tutti.ui.swing.TuttiUI;
+import fr.ifremer.tutti.ui.swing.content.operation.AbstractTuttiBatchTableUIHandler;
import fr.ifremer.tutti.ui.swing.content.operation.FishingOperationsUI;
import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor;
-import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
import fr.ifremer.tutti.ui.swing.util.editor.AttachmentCellComponent;
import fr.ifremer.tutti.ui.swing.util.editor.LongTextCellComponent;
-import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIHandler;
-import fr.ifremer.tutti.ui.swing.util.table.TableRowModificationListener;
-import jaxx.runtime.SwingUtil;
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 javax.swing.event.ListSelectionListener;
import javax.swing.table.TableColumnModel;
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.event.FocusEvent;
import java.util.List;
import java.util.Set;
-import com.ezware.oxbow.swingbits.table.filter.TableRowFilterSupport;
+import static org.nuiton.i18n.I18n.n_;
+
/**
* @author tchemit <chemit(a)codelutin.com>
* @since 0.1
*/
-public class SpeciesBatchUIHandler extends AbstractTuttiTableUIHandler<SpeciesBatchRowModel, SpeciesBatchUIModel> {
+public class SpeciesBatchUIHandler extends AbstractTuttiBatchTableUIHandler<SpeciesBatchRowModel, SpeciesBatchUIModel> {
/** Logger. */
- private static final Log log = LogFactory.getLog(SpeciesBatchUIHandler.class);
+ private static final Log log =
+ LogFactory.getLog(SpeciesBatchUIHandler.class);
public static final Set<String> RECOMPUTE_TOTAL_WEIGHT = Sets.newHashSet(
- SpeciesBatchRowModel.PROPERTY_VRAC_HORS_VRAC,
- SpeciesBatchRowModel.PROPERTY_WEIGHT
- );
+ SpeciesBatchRowModel.PROPERTY_SORTED_UNSORTED_CATEGORY,
+ SpeciesBatchRowModel.PROPERTY_WEIGHT);
public static final Set<String> SAMPLING_PROPERTIES = Sets.newHashSet(
SpeciesBatchRowModel.PROPERTY_SPECIES,
- SpeciesBatchRowModel.PROPERTY_VRAC_HORS_VRAC,
+ SpeciesBatchRowModel.PROPERTY_SORTED_UNSORTED_CATEGORY,
SpeciesBatchRowModel.PROPERTY_WEIGHT_CATEGORY,
SpeciesBatchRowModel.PROPERTY_SEX,
SpeciesBatchRowModel.PROPERTY_MATURITY,
- SpeciesBatchRowModel.PROPERTY_AGE
- );
+ SpeciesBatchRowModel.PROPERTY_AGE);
/**
* UI.
@@ -94,25 +84,18 @@
*/
private final SpeciesBatchUI ui;
- /**
- * Persistence service.
- *
- * @since 0.2
- */
- private final PersistenceService persistenceService;
-
- /**
- * To monitor changes on the fishing operation.
- *
- * @since 0.2
- */
- private final TuttiBeanMonitor<SpeciesBatchUIModel> fishingOperationMonitor;
-
- public SpeciesBatchUIHandler(FishingOperationsUI parentUi, SpeciesBatchUI ui) {
- super(parentUi.getHandler().getContext(),
+ public SpeciesBatchUIHandler(FishingOperationsUI parentUi,
+ SpeciesBatchUI ui) {
+ super(parentUi,
+ new String[]{
+ SpeciesBatchUIModel.PROPERTY_SAMPLE_VRAC_WEIGHT,
+ SpeciesBatchUIModel.PROPERTY_TOTAL_HORS_VRAC_WEIGHT,
+ SpeciesBatchUIModel.PROPERTY_TOTAL_VRAC_WEIGHT,
+ SpeciesBatchUIModel.PROPERTY_TOTAL_WEIGHT
+ },
SpeciesBatchRowModel.PROPERTY_SPECIES_TO_CONFIRM,
SpeciesBatchRowModel.PROPERTY_SPECIES,
- SpeciesBatchRowModel.PROPERTY_VRAC_HORS_VRAC,
+ SpeciesBatchRowModel.PROPERTY_SORTED_UNSORTED_CATEGORY,
SpeciesBatchRowModel.PROPERTY_WEIGHT_CATEGORY,
SpeciesBatchRowModel.PROPERTY_SEX,
SpeciesBatchRowModel.PROPERTY_MATURITY,
@@ -122,13 +105,6 @@
SpeciesBatchRowModel.PROPERTY_ATTACHMENTS,
SpeciesBatchRowModel.PROPERTY_FREQUENCY);
this.ui = ui;
- this.persistenceService = context.getService(PersistenceService.class);
- this.fishingOperationMonitor = new TuttiBeanMonitor<SpeciesBatchUIModel>(
- SpeciesBatchUIModel.PROPERTY_SAMPLE_VRAC_WEIGHT,
- SpeciesBatchUIModel.PROPERTY_TOTAL_HORS_VRAC_WEIGHT,
- SpeciesBatchUIModel.PROPERTY_TOTAL_VRAC_WEIGHT,
- SpeciesBatchUIModel.PROPERTY_TOTAL_WEIGHT
- );
}
//------------------------------------------------------------------------//
@@ -151,6 +127,11 @@
}
@Override
+ protected FishingOperation getFishingOperation() {
+ return getModel().getFishingOperation();
+ }
+
+ @Override
protected void onModelRowsChanged(List<SpeciesBatchRowModel> rows) {
super.onModelRowsChanged(rows);
@@ -163,8 +144,7 @@
return new String[]{
SpeciesBatchRowModel.PROPERTY_SAMPLE_WEIGHT,
SpeciesBatchRowModel.PROPERTY_SAMPLING_RATIO,
- SpeciesBatchRowModel.PROPERTY_FREQUENCY
- };
+ SpeciesBatchRowModel.PROPERTY_FREQUENCY};
}
@Override
@@ -208,13 +188,19 @@
}
- if (samplingOrder.contains(SpeciesBatchRowModel.PROPERTY_VRAC_HORS_VRAC)) {
+ if (samplingOrder.contains(SpeciesBatchRowModel.PROPERTY_SORTED_UNSORTED_CATEGORY)) {
- // Vrac / Hors vrac column
+ // SortedUnsortedCategory column
- addComboEnumColumnToModel(columnModel,
- SpeciesBatchTableModel.VRAC_HORS_VRAC,
- VracHorsVracEnum.values());
+ Decorator<SortedUnsortedCategory> decorator =
+ getDecorator(SortedUnsortedCategory.class, null);
+
+ List<SortedUnsortedCategory> data =
+ persistenceService.getAllSortedUnsortedCategory();
+
+ addComboDataColumnToModel(columnModel,
+ SpeciesBatchTableModel.SORTED_UNSORTED_CATEGORY,
+ decorator, data);
}
if (samplingOrder.contains(SpeciesBatchRowModel.PROPERTY_WEIGHT_CATEGORY)) {
@@ -275,7 +261,7 @@
{ // Computed weight column (from frequencies)
addColumnToModel(columnModel,
- FrequencyCellComponent.newEditor(ui.getFrequencyUI()),
+ FrequencyCellComponent.newEditor(ui.getFrequencyEditor()),
FrequencyCellComponent.newRender(),
SpeciesBatchTableModel.COMPUTED_WEIGHT);
}
@@ -283,7 +269,7 @@
{ // Computed number column (from frequencies)
addColumnToModel(columnModel,
- FrequencyCellComponent.newEditor(ui.getFrequencyUI()),
+ FrequencyCellComponent.newEditor(ui.getFrequencyEditor()),
FrequencyCellComponent.newRender(),
SpeciesBatchTableModel.COMPUTED_NUMBER);
}
@@ -303,16 +289,18 @@
{ // Comment column
addColumnToModel(columnModel,
- LongTextCellComponent.newEditor(ui.getLongTextEditorUI()),
- LongTextCellComponent.newRender(),
+ LongTextCellComponent.newEditor(ui.getLongTextEditor()),
+ LongTextCellComponent.newRender(n_("tutti.tooltip.comment.none")),
SpeciesBatchTableModel.COMMENT);
}
{ // File column
addColumnToModel(columnModel,
- AttachmentCellComponent.newEditor(ui.getAttachmentEditorUI()),
- AttachmentCellComponent.newRender(),
+ AttachmentCellComponent.newEditor(ui.getAttachmentEditor()),
+ AttachmentCellComponent.newRender(
+ getDecorator(Attachment.class, null),
+ n_("tutti.tooltip.attachment.none")),
SpeciesBatchTableModel.ATTACHMENTS);
}
return columnModel;
@@ -423,130 +411,91 @@
Boolean newValue) {
}
- //------------------------------------------------------------------------//
- //-- AbstractTuttiUIHandler methods --//
- //------------------------------------------------------------------------//
-
@Override
- public void beforeInitUI() {
+ protected void saveSelectedRowIfRequired() {
- if (log.isInfoEnabled()) {
- log.info("beforeInit: " + ui);
- }
+ TuttiBeanMonitor<SpeciesBatchRowModel> rowMonitor = getRowMonitor();
- SpeciesBatchUIModel model = new SpeciesBatchUIModel();
- ui.setContextValue(model);
+ SpeciesBatchRowModel bean = rowMonitor.getBean();
+ if (bean != null) {
- fishingOperationMonitor.setBean(model);
- }
+ if (bean.isValid()) {
+ // there is a valid bean attached to the monitor
- @Override
- public void afterInitUI() {
+ if (rowMonitor.wasModified()) {
- if (log.isInfoEnabled()) {
- log.info("afterInit: " + ui);
- }
+ // monitored bean was modified, save it
+ if (log.isInfoEnabled()) {
+ log.info("Row " + bean + " was modified, will save it");
+ }
- initUI(ui);
+ saveRow(bean);
- //TODO Will come from protocol
- List<String> samplingOrder = Lists.newArrayList(
- SpeciesBatchRowModel.PROPERTY_SPECIES,
- SpeciesBatchRowModel.PROPERTY_VRAC_HORS_VRAC,
- SpeciesBatchRowModel.PROPERTY_WEIGHT_CATEGORY,
- SpeciesBatchRowModel.PROPERTY_SEX
- );
+ // clear modified flag on the monitor
+ rowMonitor.clearModified();
+ }
+ } else {
- getModel().setSamplingOrder(samplingOrder);
+ // row is not valid can not save it
- JXTable table = getTable();
+ SpeciesBatch catchBean = bean.toBean();
- TableRowFilterSupport.forTable(table).searchable(true).useTableRenderers(true).apply();
+ if (!TuttiEntities.isNew(catchBean)) {
- // create table column model
- TableColumnModel columnModel = createTableColumnModel();
+ // remove this
+ persistenceService.deleteSpeciesBatch(catchBean.getId());
+ }
+ }
+ }
+ }
- // create table model
- SpeciesBatchTableModel tableModel =
- new SpeciesBatchTableModel(columnModel);
+ @Override
+ protected boolean isRowValid(SpeciesBatchRowModel row) {
- table.setModel(tableModel);
- table.setColumnModel(columnModel);
- installTableKeyListener(columnModel, table);
+ SpeciesBatchUIModel model = getModel();
- table.getTableHeader().setReorderingAllowed(false);
-
-
- Highlighter readOnlyHighlighter = TuttiUIUtil.newBackgroundColorHighlighter(
- HighlightPredicate.READ_ONLY, Color.LIGHT_GRAY);
-
- table.addHighlighter(readOnlyHighlighter);
- Highlighter validHighlighter = TuttiUIUtil.newBackgroundColorHighlighter(
- new HighlightPredicate.AndHighlightPredicate(HighlightPredicate.EDITABLE, new HighlightPredicate() {
- @Override
- public boolean isHighlighted(Component renderer, ComponentAdapter adapter) {
-
- boolean result = false;
- if (adapter.isEditable()) {
- int rowIndex = adapter.convertRowIndexToModel(adapter.row);
- SpeciesBatchRowModel row = getTableModel().getEntry(rowIndex);
- result = !row.isValid();
- }
- return result;
- }
- }), Color.RED);
- table.addHighlighter(validHighlighter);
-
- // when model datas change let's propagate it table model
- listenRowsFromModel();
-
- // save when row chaged and was modified
- ListSelectionListener listener = new TableRowModificationListener<SpeciesBatchRowModel>(
- getTableModel(), getRowMonitor()) {
- @Override
- protected void saveSelectedRow() {
- saveSelectedRowIfRequired();
- }
- };
- table.getSelectionModel().addListSelectionListener(listener);
-
- // always scroll to selected row
- SwingUtil.scrollToTableSelection(getTable());
+ SpeciesBatchTreeModel samplingTreeModel = model.getSamplingTreeModel();
+ SpeciesBatchTreeNode node = samplingTreeModel.getSamplingNode(row);
+ boolean rowValid = samplingTreeModel.isValid(row, node);
+ return rowValid;
}
@Override
- public void onCloseUI() {
+ protected void saveRow(SpeciesBatchRowModel row) {
+
+ SpeciesBatch catchBean = row.toBean();
+
+ FishingOperation fishingOperation = getModel().getFishingOperation();
+ catchBean.setFishingOperation(fishingOperation);
if (log.isInfoEnabled()) {
- log.info("closing: " + ui);
+ log.info("Selected fishingOperation: " + fishingOperation.getId());
}
- }
- //------------------------------------------------------------------------//
- //-- Public methods --//
- //------------------------------------------------------------------------//
+ if (TuttiEntities.isNew(catchBean)) {
- public void saveSelectedRowIfRequired(FocusEvent event) {
+ catchBean = persistenceService.createSpeciesBatch(catchBean);
+ row.setId(catchBean.getId());
+ } else {
+ persistenceService.saveSpeciesBatch(catchBean);
+ }
- Component oppositeComponent = event.getOppositeComponent();
+ List<SpeciesFrequencyRowModel> frequencyRows = row.getFrequency();
- JXTable parentContainer = null;
+ List<SpeciesBatchFrequency> frequency =
+ SpeciesFrequencyRowModel.toBeans(frequencyRows, catchBean);
- if (oppositeComponent != null) {
-
- // check out if still on table
- parentContainer = SwingUtil.getParentContainer(
- oppositeComponent, JXTable.class);
+ if (log.isInfoEnabled()) {
+ log.info("Will save " + frequency.size() + " frequencies.");
}
+ frequency = persistenceService.saveSpeciesBatchFrequency(
+ catchBean.getId(), frequency);
- if (parentContainer == null) {
-
- // out of the table can save
- if (getModel().getFishingOperation() != null) {
- saveSelectedRowIfRequired();
- }
- }
+ // push it back to row model
+ frequencyRows = SpeciesFrequencyRowModel.fromBeans(frequency);
+ row.setFrequency(frequencyRows);
}
+ @Override
public void selectFishingOperation(FishingOperation bean) {
JXTable table = ui.getTable();
@@ -613,6 +562,68 @@
}
//------------------------------------------------------------------------//
+ //-- AbstractTuttiUIHandler methods --//
+ //------------------------------------------------------------------------//
+
+ @Override
+ public void beforeInitUI() {
+
+ if (log.isInfoEnabled()) {
+ log.info("beforeInit: " + ui);
+ }
+
+ SpeciesBatchUIModel model = new SpeciesBatchUIModel();
+ ui.setContextValue(model);
+
+ fishingOperationMonitor.setBean(model);
+ }
+
+ @Override
+ public void afterInitUI() {
+
+ if (log.isInfoEnabled()) {
+ log.info("afterInit: " + ui);
+ }
+
+ initUI(ui);
+
+ //TODO Will come from protocol
+ List<String> samplingOrder = Lists.newArrayList(
+ SpeciesBatchRowModel.PROPERTY_SPECIES,
+ SpeciesBatchRowModel.PROPERTY_SORTED_UNSORTED_CATEGORY,
+ SpeciesBatchRowModel.PROPERTY_WEIGHT_CATEGORY,
+ SpeciesBatchRowModel.PROPERTY_SEX
+ );
+
+ getModel().setSamplingOrder(samplingOrder);
+
+ JXTable table = getTable();
+
+ // create table column model
+ TableColumnModel columnModel = createTableColumnModel();
+
+ // create table model
+ SpeciesBatchTableModel tableModel =
+ new SpeciesBatchTableModel(columnModel);
+
+ table.setModel(tableModel);
+ table.setColumnModel(columnModel);
+
+ initBatchTable(table, columnModel, tableModel);
+ }
+
+ @Override
+ public void onCloseUI() {
+ if (log.isInfoEnabled()) {
+ log.info("closing: " + ui);
+ }
+ }
+
+ //------------------------------------------------------------------------//
+ //-- Public methods --//
+ //------------------------------------------------------------------------//
+
+ //------------------------------------------------------------------------//
//-- Internal methods --//
//------------------------------------------------------------------------//
@@ -660,7 +671,6 @@
getTableModel().updateSamplingRatio(samplingContext.getSamplingRows());
}
-
protected void recomputeTotalHorsVrac() {
// recompute total hors vrac
@@ -668,20 +678,24 @@
Float totalVrac = 0f;
for (SpeciesBatchRowModel batch : getModel().getRows()) {
- VracHorsVracEnum vracHorsVrac = batch.getVracHorsVrac();
+ SortedUnsortedCategory vracHorsVrac = batch.getSortedUnsortedCategory();
+
if (vracHorsVrac == null) {
// can't sum anything
- } else if (vracHorsVrac == VracHorsVracEnum.HORS_VRAC) {
- Float weight = batch.getWeight();
- if (weight != null) {
- totalHorsVrac += weight;
+ } else {
+ boolean unsorted = "unsorted".equals(vracHorsVrac.getName());
+ if (unsorted) {
+ Float weight = batch.getWeight();
+ if (weight != null) {
+ totalHorsVrac += weight;
+ }
+ } else {
+ Float weight = batch.getWeight();
+ if (weight != null) {
+ totalVrac += weight;
+ }
}
- } else if (vracHorsVrac == VracHorsVracEnum.VRAC) {
- Float weight = batch.getWeight();
- if (weight != null) {
- totalVrac += weight;
- }
}
}
if (log.isInfoEnabled()) {
@@ -692,75 +706,4 @@
//TODO Should we also set the total vrac weight ?
// getModel().setTotalVracWeight(totalVrac);
}
-
- protected void saveSelectedRowIfRequired() {
-
- TuttiBeanMonitor<SpeciesBatchRowModel> rowMonitor = getRowMonitor();
-
- SpeciesBatchRowModel bean = rowMonitor.getBean();
- if (bean != null) {
-
- if (bean.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 " + bean + " was modified, will save it");
- }
-
- saveRow(bean);
-
- // clear modified flag on the monitor
- rowMonitor.clearModified();
- }
- } else {
-
- // row is not valid can not save it
-
- SpeciesBatch catchBean = bean.toBean();
-
- if (!TuttiEntities.isNew(catchBean)) {
-
- // remove this
- persistenceService.deleteSpeciesBatch(catchBean.getId());
- }
- }
- }
- }
-
- protected void saveRow(SpeciesBatchRowModel row) {
-
- SpeciesBatch 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.createSpeciesBatch(catchBean);
- row.setId(catchBean.getId());
- } else {
- persistenceService.saveSpeciesBatch(catchBean);
- }
-
- List<SpeciesFrequencyRowModel> frequencyRows = row.getFrequency();
-
- List<SpeciesBatchFrequency> frequency =
- SpeciesFrequencyRowModel.toBeans(frequencyRows, catchBean);
-
- if (log.isInfoEnabled()) {
- log.info("Will save " + frequency.size() + " frequencies.");
- }
- frequency = persistenceService.saveSpeciesBatchFrequency(
- catchBean.getId(), frequency);
-
- // push it back to row model
- frequencyRows = SpeciesFrequencyRowModel.fromBeans(frequency);
- row.setFrequency(frequencyRows);
- }
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/AttachmentCellComponent.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/AttachmentCellComponent.java 2012-12-15 00:14:45 UTC (rev 76)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/AttachmentCellComponent.java 2012-12-15 16:05:45 UTC (rev 77)
@@ -25,6 +25,7 @@
*/
import com.google.common.base.Preconditions;
+import fr.ifremer.tutti.persistence.entities.data.Attachment;
import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel;
import fr.ifremer.tutti.ui.swing.util.ComponentMover;
import fr.ifremer.tutti.ui.swing.util.ComponentResizer;
@@ -36,24 +37,31 @@
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.AbstractAction;
import javax.swing.AbstractCellEditor;
import javax.swing.BorderFactory;
import javax.swing.JButton;
+import javax.swing.JComponent;
import javax.swing.JDialog;
+import javax.swing.JRootPane;
import javax.swing.JTable;
+import javax.swing.KeyStroke;
import javax.swing.border.LineBorder;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;
import java.awt.Color;
import java.awt.Component;
import java.awt.Frame;
+import java.awt.event.ActionEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
+import java.util.Collection;
import static org.nuiton.i18n.I18n._;
@@ -73,11 +81,11 @@
public AttachmentCellComponent() {
setContentAreaFilled(false);
setOpaque(false);
- setIcon(SwingUtil.createActionIcon("edit"));
+ setIcon(SwingUtil.createActionIcon("edit-attachment"));
}
- public static TableCellRenderer newRender() {
- return new AttachmentCellRenderer();
+ public static TableCellRenderer newRender(Decorator<Attachment> decorator, String noneText) {
+ return new AttachmentCellRenderer(decorator, noneText);
}
public static TableCellEditor newEditor(AttachmentEditorUI ui) {
@@ -145,6 +153,16 @@
editor.setUndecorated(true);
editor.add(ui);
editor.setResizable(true);
+ JRootPane rootPane = editor.getRootPane();
+ rootPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("ESCAPE"), "close");
+ rootPane.getActionMap().put("close", new AbstractAction() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ ui.getHandler().close();
+ }
+ });
editor.pack();
ComponentResizer cr = new ComponentResizer();
@@ -250,10 +268,19 @@
protected final AttachmentCellComponent component;
+ public static final String TEXT_PATTERN = "<html><body>%s</body></html>";
+
+ private final String noneText;
+
+ private final Decorator<Attachment> decorator;
+
protected String propertyName;
- public AttachmentCellRenderer() {
+ public AttachmentCellRenderer(Decorator<Attachment> decorator,
+ String noneText) {
component = new AttachmentCellComponent();
+ this.noneText = noneText;
+ this.decorator = decorator;
}
@Override
@@ -264,7 +291,8 @@
int row,
int column) {
- String text;
+ String textValue;
+
if (value == null) {
if (propertyName == null) {
AbstractTuttiTableModel tableModel =
@@ -273,13 +301,18 @@
propertyName = columnIdentifier.getPropertyName();
}
// use HTML to show the tooltip in italic
- text = "<html><body><i>" + _("tutti.tooltip." + propertyName + ".none") + "</i></body></html>";
+ textValue = "<i>" + _(noneText) + "</i>";
} else {
+ Collection<Attachment> attachments = (Collection<Attachment>) value;
+ StringBuilder sb = new StringBuilder();
+ for (Attachment attachment : attachments) {
+ sb.append("<br/>").append(decorator.toString(attachment));
+ }
// use html to display the tooltip on several lines
- text = "<html><body>" + String.valueOf(value).replace("\n", "<br/>") + "</body></html>";
+ textValue = sb.substring(5);
}
-
+ String text = String.format(TEXT_PATTERN, textValue);
boolean editable = table.isCellEditable(row, column);
component.setEnabled(editable);
component.setToolTipText(text);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/LongTextCellComponent.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/LongTextCellComponent.java 2012-12-15 00:14:45 UTC (rev 76)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/LongTextCellComponent.java 2012-12-15 16:05:45 UTC (rev 77)
@@ -34,20 +34,26 @@
import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier;
import jaxx.runtime.JAXXUtil;
import jaxx.runtime.SwingUtil;
+import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import javax.swing.AbstractAction;
import javax.swing.AbstractCellEditor;
import javax.swing.BorderFactory;
import javax.swing.JButton;
+import javax.swing.JComponent;
import javax.swing.JDialog;
+import javax.swing.JRootPane;
import javax.swing.JTable;
+import javax.swing.KeyStroke;
import javax.swing.border.LineBorder;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;
import java.awt.Color;
import java.awt.Component;
import java.awt.Frame;
+import java.awt.event.ActionEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
@@ -73,11 +79,11 @@
public LongTextCellComponent() {
setContentAreaFilled(false);
setOpaque(false);
- setIcon(SwingUtil.createActionIcon("edit"));
+ setIcon(SwingUtil.createActionIcon("edit-comment"));
}
- public static TableCellRenderer newRender() {
- return new LongTextCellRenderer();
+ public static TableCellRenderer newRender(String noneText) {
+ return new LongTextCellRenderer(noneText);
}
public static TableCellEditor newEditor(LongTextEditorUI ui) {
@@ -150,7 +156,16 @@
editor.add(ui);
editor.setSize(DEFAULT_EDITOR_WIDTH, DEFAULT_EDITOR_HEIGHT);
editor.setResizable(true);
+ JRootPane rootPane = editor.getRootPane();
+ rootPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("ESCAPE"), "close");
+ rootPane.getActionMap().put("close", new AbstractAction() {
+ private static final long serialVersionUID = 1L;
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ ui.getHandler().close();
+ }
+ });
ComponentResizer cr = new ComponentResizer();
cr.registerComponent(editor);
ComponentMover cm = new ComponentMover();
@@ -256,8 +271,13 @@
protected String propertyName;
- public LongTextCellRenderer() {
+ public static final String TEXT_PATTERN = "<html><body>%s</body></html>";
+
+ private final String noneText;
+
+ public LongTextCellRenderer(String noneText) {
component = new LongTextCellComponent();
+ this.noneText = noneText;
}
@Override
@@ -268,22 +288,26 @@
int row,
int column) {
- String text;
- if (value == null) {
+// String text;
+ String textValue;
+ if (StringUtils.isBlank((String)value)) {
if (propertyName == null) {
AbstractTuttiTableModel tableModel =
(AbstractTuttiTableModel) table.getModel();
- ColumnIdentifier columnIdentifier = tableModel.getPropertyName(column);
+ ColumnIdentifier columnIdentifier =
+ tableModel.getPropertyName(column);
propertyName = columnIdentifier.getPropertyName();
}
// use HTML to show the tooltip in italic
- text = "<html><body><i>" + _("tutti.tooltip." + propertyName + ".none") + "</i></body></html>";
+ textValue = "<i>" + _(noneText) + "</i>";
} else {
// use html to display the tooltip on several lines
- text = "<html><body>" + String.valueOf(value).replace("\n", "<br/>") + "</body></html>";
+ textValue = String.valueOf(value).replace("\n", "<br/>");
}
+ String text = String.format(TEXT_PATTERN, textValue);
+
boolean editable = table.isCellEditable(row, column);
component.setEnabled(editable);
component.setToolTipText(text);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/LongTextEditorUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/LongTextEditorUI.jaxx 2012-12-15 00:14:45 UTC (rev 76)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/LongTextEditorUI.jaxx 2012-12-15 16:05:45 UTC (rev 77)
@@ -27,7 +27,7 @@
<String id='property' javaBean='""'/>
<!-- bean property -->
- <fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel id='bean' javaBean='null'/>
+ <Object id='bean' javaBean='null'/>
<LongTextEditorUIHandler id='handler' constructorParams='this'/>
@@ -35,7 +35,7 @@
<cell fill='both' weightx='1'>
<JScrollPane>
<JTextArea id='textContent'
- onKeyReleased='handler.setText()'/>
+ onKeyReleased='handler.setText(((JTextArea)event.getSource()).getText())'/>
</JScrollPane>
</cell>
</row>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/LongTextEditorUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/LongTextEditorUIHandler.java 2012-12-15 00:14:45 UTC (rev 76)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/LongTextEditorUIHandler.java 2012-12-15 16:05:45 UTC (rev 77)
@@ -24,7 +24,6 @@
* #L%
*/
-import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel;
import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
import jaxx.runtime.SwingUtil;
import org.apache.commons.lang3.StringUtils;
@@ -43,7 +42,8 @@
*/
public class LongTextEditorUIHandler {
- private static final Log log = LogFactory.getLog(LongTextEditorUIHandler.class);
+ private static final Log log =
+ LogFactory.getLog(LongTextEditorUIHandler.class);
private final LongTextEditorUI ui;
@@ -53,35 +53,23 @@
ui.addPropertyChangeListener(new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
- AbstractTuttiBeanUIModel bean = ui.getBean();
+ Object bean = ui.getBean();
String property = ui.getProperty();
if (bean != null && !StringUtils.isEmpty(property)) {
Object value = TuttiUIUtil.getProperty(bean, property);
- if (value == null) {
- value = "";
- }
- ui.getTextContent().setText(value.toString());
+ ui.getTextContent().setText(SwingUtil.getStringValue(value));
}
}
});
}
/** pushes the typed text in the property of the bean */
- public void setText() {
- String value = ui.getTextContent().getText();
- AbstractTuttiBeanUIModel bean = ui.getBean();
+ public void setText(String value) {
+ Object bean = ui.getBean();
String property = ui.getProperty();
TuttiUIUtil.setProperty(bean, property, value);
}
- public void resetText() {
- AbstractTuttiBeanUIModel bean = ui.getBean();
- String property = ui.getProperty();
- TuttiUIUtil.setProperty(bean, property, null);
-
- ui.getTextContent().setText("");
- }
-
/** closes the editor */
public void close() {
if (log.isInfoEnabled()) {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java 2012-12-15 00:14:45 UTC (rev 76)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java 2012-12-15 16:05:45 UTC (rev 77)
@@ -32,13 +32,13 @@
import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor;
import jaxx.runtime.SwingUtil;
import jaxx.runtime.swing.JAXXWidgetUtil;
-import jaxx.runtime.swing.editor.EnumEditor;
import jaxx.runtime.swing.editor.bean.BeanUIUtil;
import jaxx.runtime.swing.editor.cell.NumberCellEditor;
import jaxx.runtime.swing.renderer.DecoratorTableCellRenderer;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.jdesktop.swingx.JXTable;
import org.jdesktop.swingx.autocomplete.ComboBoxCellEditor;
import org.jdesktop.swingx.autocomplete.ObjectToStringConverter;
import org.jdesktop.swingx.table.TableColumnExt;
@@ -82,7 +82,7 @@
*/
private final TuttiBeanMonitor<R> rowMonitor;
- protected abstract JTable getTable();
+ protected abstract JXTable getTable();
protected abstract AbstractTuttiTableModel<R> getTableModel();
@@ -101,6 +101,7 @@
Boolean oldValue,
Boolean newValue);
+
protected String[] getRowPropertiesToIgnore() {
return ArrayUtils.EMPTY_STRING_ARRAY;
}
@@ -211,7 +212,6 @@
editor.getNumberEditor().getTextField().addKeyListener(keyAdapter);
}
}
-
return keyAdapter;
}
@@ -276,7 +276,8 @@
protected <B> void addComboDataColumnToModel(TableColumnModel model,
ColumnIdentifier<R> identifier,
- Decorator<B> decorator, List<B> data) {
+ Decorator<B> decorator,
+ List<B> data) {
JComboBox comboBox = new JComboBox();
comboBox.setRenderer(newListCellRender(decorator));
SwingUtil.fillComboBox(comboBox, data, null);
@@ -291,19 +292,6 @@
identifier);
}
- protected <B extends Enum<B>> void addComboEnumColumnToModel(TableColumnModel model,
- ColumnIdentifier<R> identifier,
- B[] data) {
- EnumEditor<B> comboBox = EnumEditor.newEditor(data);
- BeanUIUtil.decorate(comboBox, ObjectToStringConverter.DEFAULT_IMPLEMENTATION);
- TableCellEditor editor = new ComboBoxCellEditor(comboBox);
-
- addColumnToModel(model,
- editor,
- null,
- identifier);
- }
-
protected void listenRowsFromModel() {
getModel().addPropertyChangeListener(AbstractTuttiTableUIModel.PROPERTY_ROWS, new PropertyChangeListener() {
@Override
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 2012-12-15 00:14:45 UTC (rev 76)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2012-12-15 16:05:45 UTC (rev 77)
@@ -108,6 +108,7 @@
tutti.label.list.gear=Engin(s)
tutti.label.list.headOfMission=Chef(s) de mission
tutti.label.list.headOfSortRoom=Reponsable(s) de salle de tri
+tutti.label.list.saisisseur=Saisisseur(s)
tutti.label.list.vessel=Navire(s)
tutti.label.macroWaste.totalWeight=Poids total
tutti.label.no.fishingOperation.selected=< Aucun trait sélectionné >
@@ -146,6 +147,11 @@
tutti.menu.synchronisationImport.tip=Effectuer des imports
tutti.menu.synchronisations=Synchronisation
tutti.menu.synchronisations.tip=Import/Export
+tutti.table.accidental.batch.header.comment=Commentaire
+tutti.table.accidental.batch.header.file=Pièces-jointes
+tutti.table.accidental.batch.header.speciesByCode=Espèce
+tutti.table.accidental.batch.header.speciesByGenusCode=Espèce
+tutti.table.accidental.batch.header.weight=Poids observé
tutti.table.benthos.batch.header.comment=Commentaire
tutti.table.benthos.batch.header.elevationRate=Fraction d'élévation
tutti.table.benthos.batch.header.file=Pièces jointes
@@ -156,6 +162,7 @@
tutti.table.benthos.batch.header.weight=Poids
tutti.table.macrowaste.batch.header.comment=Commentaire
tutti.table.macrowaste.batch.header.file=Pièces jointes
+tutti.table.macrowaste.batch.header.macroWasteCategory=Catégorie
tutti.table.macrowaste.batch.header.speciesByCode=Espèce
tutti.table.macrowaste.batch.header.speciesByGenusCode=Espèce
tutti.table.macrowaste.batch.header.weight=Poids
@@ -176,10 +183,10 @@
tutti.table.species.batch.header.maturity=Maturité
tutti.table.species.batch.header.sampleWeight=Poids échantillonné
tutti.table.species.batch.header.sex=Sexe
+tutti.table.species.batch.header.sortedUnsortedCategory=Vrac / Hors Vrac
tutti.table.species.batch.header.speciesByCode=Espèce
tutti.table.species.batch.header.speciesByGenusCode=Espèce
tutti.table.species.batch.header.toConfirm=A Confirmer
-tutti.table.species.batch.header.vracHorsVrac=Vrac / Hors Vrac
tutti.table.species.batch.header.weight=Poids
tutti.table.species.batch.header.weightCategory=Catégorie Poids
tutti.table.species.frequency.header.computedWeight=Poids calculé
@@ -200,7 +207,9 @@
tutti.title.selectedCruise=Campagne %s
tutti.title.selectedProgram=Série de campagne %s
tutti.to.be.done=< A FAIRE >
-tutti.tooltip.comment.none=Aucun
+tutti.tooltip.=
+tutti.tooltip.attachment.none=Pas de pièce-jointes
+tutti.tooltip.comment.none=Pas de commentaire
tutti.validator.error.cruise.beginDate.required=La date de début est obligatoire
tutti.validator.error.cruise.country.required=Le pays est obligatoire
tutti.validator.error.cruise.endDate.required=La date de fin est obligatoire
Added: trunk/tutti-ui-swing/src/main/resources/icons/action-edit-attachment.png
===================================================================
(Binary files differ)
Property changes on: trunk/tutti-ui-swing/src/main/resources/icons/action-edit-attachment.png
___________________________________________________________________
Added: svn:mime-type
+ image/png
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: trunk/tutti-ui-swing/src/main/resources/icons/action-edit-comment.png
===================================================================
(Binary files differ)
Property changes on: trunk/tutti-ui-swing/src/main/resources/icons/action-edit-comment.png
___________________________________________________________________
Added: svn:mime-type
+ image/png
Added: svn:keywords
+ Author Date Id Revision HeadURL
1
0
Author: tchemit
Date: 2012-12-15 01:14:45 +0100 (Sat, 15 Dec 2012)
New Revision: 76
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/76
Log:
use last stable of jaxx
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2012-12-15 00:09:07 UTC (rev 75)
+++ trunk/pom.xml 2012-12-15 00:14:45 UTC (rev 76)
@@ -91,7 +91,7 @@
<h2Version>1.3.168</h2Version>
<postgresqlVersion>9.1-901-1.jdbc4</postgresqlVersion>
- <jaxxVersion>2.5.8-SNAPSHOT</jaxxVersion>
+ <jaxxVersion>2.5.8</jaxxVersion>
<swingXVersion>1.6.4</swingXVersion>
<xworkVersion>2.3.7</xworkVersion>
1
0
Author: tchemit
Date: 2012-12-15 01:09:07 +0100 (Sat, 15 Dec 2012)
New Revision: 75
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/75
Log:
can not release with a snapshot
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2012-12-14 23:53:10 UTC (rev 74)
+++ trunk/pom.xml 2012-12-15 00:09:07 UTC (rev 75)
@@ -16,7 +16,7 @@
<modules>
<module>tutti-persistence</module>
<module>tutti-persistence-dev</module>
- <module>tutti-persistence-adagio</module>
+ <!--module>tutti-persistence-adagio</module-->
<module>tutti-service</module>
<module>tutti-ui-swing</module>
</modules>
1
0