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
March 2013
- 5 participants
- 242 discussions
r677 - in trunk/tutti-persistence/src: main/java/fr/ifremer/tutti/persistence/entities/data test/java/fr/ifremer/tutti/persistence/service
by tchemit@users.forge.codelutin.com 24 Mar '13
by tchemit@users.forge.codelutin.com 24 Mar '13
24 Mar '13
Author: tchemit
Date: 2013-03-24 16:40:11 +0100 (Sun, 24 Mar 2013)
New Revision: 677
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/677
Log:
fix test build + add missing svn properties
Modified:
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/SortedUnsortedEnum.java
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/BatchPersistenceServiceWriteTest.java
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/SortedUnsortedEnum.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/SortedUnsortedEnum.java 2013-03-24 15:33:27 UTC (rev 676)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/SortedUnsortedEnum.java 2013-03-24 15:40:11 UTC (rev 677)
@@ -1,5 +1,29 @@
package fr.ifremer.tutti.persistence.entities.data;
+/*
+ * #%L
+ * Tutti :: Persistence
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
import com.google.common.base.Preconditions;
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
Property changes on: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/SortedUnsortedEnum.java
___________________________________________________________________
Modified: svn:keywords
- Author Date Id Revision
+ Author Date Id Revision HeadURL
Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/BatchPersistenceServiceWriteTest.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/BatchPersistenceServiceWriteTest.java 2013-03-24 15:33:27 UTC (rev 676)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/BatchPersistenceServiceWriteTest.java 2013-03-24 15:40:11 UTC (rev 677)
@@ -855,7 +855,7 @@
}
protected SpeciesBatch getBenthosBatch(String fishingOperationId, String speciesBatchId) {
- return getSpeciesBatch(speciesBatchId, service.getRootBenthosBatch(fishingOperationId));
+ return getSpeciesBatch(speciesBatchId, service.getRootBenthosBatch(fishingOperationId).getChildren());
}
protected SpeciesBatch getSpeciesBatch(String speciesBatchId, List<SpeciesBatch> speciesBatchs) {
1
0
r676 - trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service
by tchemit@users.forge.codelutin.com 24 Mar '13
by tchemit@users.forge.codelutin.com 24 Mar '13
24 Mar '13
Author: tchemit
Date: 2013-03-24 16:33:27 +0100 (Sun, 24 Mar 2013)
New Revision: 676
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/676
Log:
fix test build
Modified:
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceWriteTest.java
Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceWriteTest.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceWriteTest.java 2013-03-24 14:58:00 UTC (rev 675)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceWriteTest.java 2013-03-24 15:33:27 UTC (rev 676)
@@ -358,7 +358,7 @@
fishingOperation.setStrata(null);
fishingOperation.setSubStrata(null);
fishingOperation.setLocation(null);
- fishingOperation.setVessel(cruise.getVessel(0));
+ fishingOperation.setVessel(cruise.getVessel());
fishingOperation.setVesselUseFeatures(environmentValuesOneEntry);
fishingOperation.setGearUseFeatures(gearShootingCaracteristicsOneEntry);
fishingOperation.setComment(fishingOperation.getComment() + "\n\nUnit test createFishingOperation() - Part n°5 : check if deleted sub items in DB");
1
0
r675 - in trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing: content/cruise content/home content/operation content/operation/catches content/operation/catches/benthos content/operation/catches/species content/program content/protocol util
by tchemit@users.forge.codelutin.com 24 Mar '13
by tchemit@users.forge.codelutin.com 24 Mar '13
24 Mar '13
Author: tchemit
Date: 2013-03-24 15:58:00 +0100 (Sun, 24 Mar 2013)
New Revision: 675
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/675
Log:
fixes #2171: [TRAIT] champ heure minute comportement ?\195?\160 corriger
refs #2186: [CAMPAGNE] Navire - remplacer la double liste par une simple liste (am?\195?\169lioration layout)
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css 2013-03-24 13:33:40 UTC (rev 674)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css 2013-03-24 14:58:00 UTC (rev 675)
@@ -39,8 +39,17 @@
showPopupButton: {handler.getConfig().isShowNumberEditorButton()};
bean: {model};
showReset: true;
+ _selectOnFocus: {true};
}
+JXDatePicker {
+ _selectOnFocus: {true};
+}
+
+JTextField {
+ _selectOnFocus: {true};
+}
+
#editCruiseTopPanel {
_help: {"tutti.editCruise.help"};
}
@@ -181,17 +190,13 @@
buttonGroup: "filterVesselType";
}
-#vesselLabel {
- text: "tutti.editCruise.field.vessel";
- labelFor: {vesselComboBox};
- toolTipText: "tutti.editCruise.field.vessel.tip";
- _help: {"tutti.editCruise.field.vessel.help"};
-}
-
#vesselComboBox {
+ border: {BorderFactory.createTitledBorder(_("tutti.editCruise.field.vessel"))};
property: vessel;
selectedItem: {model.getVessel()};
+ toolTipText: "tutti.editCruise.field.vessel.tip";
_validatorLabel : {_("tutti.editCruise.field.vessel")};
+ _help: {"tutti.editCruise.field.vessel.help"};
}
#gearList {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx 2013-03-24 13:33:40 UTC (rev 674)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx 2013-03-24 14:58:00 UTC (rev 675)
@@ -191,13 +191,17 @@
</cell>
</row>
<row weighty='0.3'>
- <cell>
+ <!--cell>
<JLabel id='vesselLabel'/>
+ </cell-->
+ <cell weightx='0.3' columns="3">
+ <JPanel layout='{new BorderLayout()}'>
+ <BeanFilterableComboBox id='vesselComboBox' constructorParams='this'
+ genericType='Vessel'
+ constraints='BorderLayout.NORTH'/>
+ </JPanel>
+
</cell>
- <cell weightx='0.3' columns="2">
- <BeanFilterableComboBox id='vesselComboBox' constructorParams='this'
- genericType='Vessel'/>
- </cell>
<cell columns="3">
<BeanDoubleList id='gearList' genericType='Gear'/>
</cell>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java 2013-03-24 13:33:40 UTC (rev 674)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java 2013-03-24 14:58:00 UTC (rev 675)
@@ -223,6 +223,7 @@
getValidator().setBean(model);
ui.applyDataBinding(SelectCruiseUI.BINDING_EDIT_PROGRAM_BUTTON_ENABLED);
+ ui.applyDataBinding(SelectCruiseUI.BINDING_NEW_CRUISE_BUTTON_ENABLED);
ui.applyDataBinding(SelectCruiseUI.BINDING_EDIT_CRUISE_BUTTON_ENABLED);
ui.applyDataBinding(SelectCruiseUI.BINDING_EDIT_CATCHES_BUTTON_ENABLED);
ui.applyDataBinding(SelectCruiseUI.BINDING_VALIDATE_CATCHES_BUTTON_ENABLED);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css 2013-03-24 13:33:40 UTC (rev 674)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css 2013-03-24 14:58:00 UTC (rev 675)
@@ -48,15 +48,22 @@
showPopupButton: {handler.getConfig().isShowNumberEditorButton()};
bean: {model};
showReset: true;
+ _selectOnFocus: {true};
}
SimpleTimeEditor {
bean: {model};
+ _selectOnFocus: {true};
}
+JXDatePicker {
+ _selectOnFocus: {true};
+}
+
#editFishingOperationTopPanel {
_help: {"tutti.editFishingOperation.help"};
}
+
#traitGeneralTabPaneToolBar {
floatable: false;
opaque: false;
@@ -83,6 +90,7 @@
#stationNumberField {
text: {model.getStationNumber()};
_validatorLabel : {_("tutti.editFishingOperation.field.stationNumber")};
+ _selectOnFocus: {true};
}
#fishingOperationNumberLabel {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.jaxx 2013-03-24 13:33:40 UTC (rev 674)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.jaxx 2013-03-24 14:58:00 UTC (rev 675)
@@ -24,9 +24,7 @@
<JPanel id='editFishingOperationTopPanel' layout='{new BorderLayout()}'
decorator='help'
implements='fr.ifremer.tutti.ui.swing.util.TuttiUI<EditFishingOperationUIModel, EditFishingOperationUIHandler>'>
-
<import>
- fr.ifremer.tutti.persistence.entities.data.FishingOperation
fr.ifremer.tutti.persistence.entities.referential.FishingOperationLocation
fr.ifremer.tutti.persistence.entities.referential.Gear
fr.ifremer.tutti.persistence.entities.referential.Person
@@ -36,29 +34,19 @@
fr.ifremer.tutti.ui.swing.content.operation.fishing.GearUseFeatureTabUI
fr.ifremer.tutti.ui.swing.TuttiHelpBroker
- fr.ifremer.tutti.ui.swing.util.TuttiUIUtil
fr.ifremer.tutti.ui.swing.util.attachment.ButtonAttachment
fr.ifremer.tutti.ui.swing.util.editor.CoordinateEditorType
fr.ifremer.tutti.ui.swing.util.editor.SimpleTimeEditor
jaxx.runtime.swing.editor.bean.BeanFilterableComboBox
- jaxx.runtime.swing.editor.bean.BeanListHeader
jaxx.runtime.swing.editor.bean.BeanDoubleList
jaxx.runtime.swing.editor.NumberEditor
- jaxx.runtime.swing.editor.TimeEditor
jaxx.runtime.swing.CardLayout2Ext
org.jdesktop.swingx.JXDatePicker
- org.jdesktop.swingx.JXTable
org.jdesktop.swingx.JXTitledPanel
- java.awt.Dimension
-
- javax.swing.DefaultListModel
- javax.swing.ListSelectionModel
-
static org.nuiton.i18n.I18n._
- static jaxx.runtime.SwingUtil.getStringValue
</import>
<script><![CDATA[
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.css 2013-03-24 13:33:40 UTC (rev 674)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.css 2013-03-24 14:58:00 UTC (rev 675)
@@ -29,6 +29,7 @@
showReset: true;
useFloat: true;
numberPattern: {DECIMAL3_PATTERN};
+ _selectOnFocus: {true};
}
TuttiComputedOrNotDataEditor {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUI.css 2013-03-24 13:33:40 UTC (rev 674)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUI.css 2013-03-24 14:58:00 UTC (rev 675)
@@ -29,6 +29,7 @@
showReset: true;
useFloat: true;
numberPattern: {DECIMAL3_PATTERN};
+ _selectOnFocus: {true};
}
TuttiComputedOrNotDataEditor {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.css 2013-03-24 13:33:40 UTC (rev 674)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.css 2013-03-24 14:58:00 UTC (rev 675)
@@ -29,6 +29,7 @@
showReset: true;
useFloat: true;
numberPattern: {DECIMAL3_PATTERN};
+ _selectOnFocus: {true};
}
TuttiComputedOrNotDataEditor {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUI.css 2013-03-24 13:33:40 UTC (rev 674)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUI.css 2013-03-24 14:58:00 UTC (rev 675)
@@ -28,6 +28,10 @@
bean: {model};
}
+JTextField {
+ _selectOnFocus: {true};
+}
+
#editProgramTopPanel {
_help: {"tutti.editProgram.help"};
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.css 2013-03-24 13:33:40 UTC (rev 674)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.css 2013-03-24 14:58:00 UTC (rev 675)
@@ -33,6 +33,10 @@
bean: {model};
}
+JTextField {
+ _selectOnFocus: {true};
+}
+
#editProtocolTopPanel {
_help: {"tutti.editProtocol.help"};
}
@@ -50,7 +54,7 @@
#nameField {
text: {model.getName()};
- _validatorLabel : {_("tutti.editProtocol.field.protocol.name")};
+ _validatorLabel: {_("tutti.editProtocol.field.protocol.name")};
}
#commentPane {
@@ -61,7 +65,7 @@
#commentField {
text: {getStringValue(model.getComment())};
- _validatorLabel : {_("tutti.editProtocol.field.comment")};
+ _validatorLabel: {_("tutti.editProtocol.field.comment")};
}
#saveWarningContainer {
@@ -73,7 +77,48 @@
actionIcon: warning;
border: {new javax.swing.border.EmptyBorder(5, 10, 5, 10)};
}
-
+
+#speciesComboBox {
+ enabled: {!speciesComboBox.isEmpty()};
+ toolTipText: "tutti.editProtocol.field.species.tip";
+ _help: {"tutti.editProtocol.field.species.help"};
+}
+
+#tablePopup {
+ label: "tutti.editProtocol.title.batchActions";
+}
+
+#speciesTable {
+ selectionMode: {ListSelectionModel.SINGLE_SELECTION};
+ selectionBackground: {null};
+ selectionForeground: {Color.BLACK};
+ sortable: false;
+ _help: {"tutti.editProtocol.field.species.help"};
+}
+
+#caracteristicPane {
+ tabPlacement: {JTabbedPane.LEFT};
+ _help: {"tutti.editProtocol.pane.caracteristic.help"};
+}
+
+#gearUseFeatureList {
+ property: gearUseFeaturePmfm;
+ beanType: {Caracteristic.class};
+ _help: {"tutti.editProtocol.field.gearUseFeature.help"};
+}
+
+#vesselUseFeatureList {
+ property: vesselUseFeaturePmfm;
+ beanType: {Caracteristic.class};
+ _help: {"tutti.editProtocol.field.vesselUseFeature.help"};
+}
+
+#lengthClassesList {
+ property: lengthClassesPmfm;
+ beanType: {Caracteristic.class};
+ _help: {"tutti.editProtocol.field.lengthClasses.help"};
+}
+
#saveButton {
actionIcon: save;
text: "tutti.editProtocol.action.saveProtocol";
@@ -93,12 +138,6 @@
_help: {"tutti.editProtocol.action.closeEditProtocol.help"};
}
-#speciesComboBox {
- enabled: {!speciesComboBox.isEmpty()};
- toolTipText: "tutti.editProtocol.field.species.tip";
- _help: {"tutti.editProtocol.field.species.help"};
-}
-
#selectOtherSpeciesButton {
text: "tutti.editProtocol.action.selectOtherSpecies";
toolTipText: "tutti.editProtocol.action.selectOtherSpecies.tip";
@@ -116,10 +155,6 @@
_help: {"tutti.editProtocol.action.addSpeciesProtocol.help"};
}
-#tablePopup {
- label: "tutti.editProtocol.title.batchActions";
-}
-
#removeSpeciesProtocolButton {
actionIcon: batch-delete;
text: "tutti.editProtocol.action.removeSpeciesProtocol";
@@ -130,19 +165,6 @@
_help: {"tutti.editProtocol.action.removeSpeciesProtocol.help"};
}
-#speciesTable {
- selectionMode: {ListSelectionModel.SINGLE_SELECTION};
- selectionBackground: {null};
- selectionForeground: {Color.BLACK};
- sortable: false;
- _help: {"tutti.editProtocol.field.species.help"};
-}
-
-#caracteristicPane {
- tabPlacement: {JTabbedPane.LEFT};
- _help: {"tutti.editProtocol.pane.caracteristic.help"};
-}
-
#importSpeciesButton {
actionIcon: import;
text: "tutti.editProtocol.action.importProtocolSpecies";
@@ -188,21 +210,3 @@
_help: {"tutti.editProtocol.action.exportProtocolAllCaracteristic.help"};
}
-#gearUseFeatureList {
- property: gearUseFeaturePmfm;
- beanType: {Caracteristic.class};
- _help: {"tutti.editProtocol.field.gearUseFeature.help"};
-}
-
-#vesselUseFeatureList {
- property: vesselUseFeaturePmfm;
- beanType: {Caracteristic.class};
- _help: {"tutti.editProtocol.field.vesselUseFeature.help"};
-}
-
-#lengthClassesList {
- property: lengthClassesPmfm;
- beanType: {Caracteristic.class};
- _help: {"tutti.editProtocol.field.lengthClasses.help"};
-}
-
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java 2013-03-24 13:33:40 UTC (rev 674)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java 2013-03-24 14:58:00 UTC (rev 675)
@@ -35,7 +35,6 @@
import fr.ifremer.tutti.ui.swing.config.TuttiApplicationConfig;
import fr.ifremer.tutti.ui.swing.content.MainUI;
import fr.ifremer.tutti.ui.swing.content.MainUIHandler;
-import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction;
import fr.ifremer.tutti.ui.swing.util.action.TuttiActionHelper;
import fr.ifremer.tutti.ui.swing.util.action.TuttiActionUI;
import fr.ifremer.tutti.ui.swing.util.attachment.ButtonAttachment;
@@ -64,10 +63,12 @@
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JRootPane;
+import javax.swing.JSpinner;
import javax.swing.JTextField;
import javax.swing.KeyStroke;
import javax.swing.ListCellRenderer;
import javax.swing.ListSelectionModel;
+import javax.swing.SwingUtilities;
import javax.swing.event.ListSelectionEvent;
import javax.swing.text.JTextComponent;
import java.awt.Component;
@@ -352,8 +353,9 @@
}
return result;
}
+
//------------------------------------------------------------------------//
- //-- Internal methods --//
+ //-- Init methods --//
//------------------------------------------------------------------------//
protected void initUI(TuttiUI ui) {
@@ -361,175 +363,74 @@
for (Map.Entry<String, Object> entry : ui.get$objectMap().entrySet()) {
Object component = entry.getValue();
if (component instanceof NumberEditor) {
+
initNumberEditor((NumberEditor) component);
+ } else if (component instanceof JXDatePicker) {
- } else if (component instanceof JXDatePicker) {
initDatePicker((JXDatePicker) component);
+ } else if (component instanceof SimpleTimeEditor) {
- } else if (component instanceof SimpleTimeEditor) {
initTimeEditor((SimpleTimeEditor) component);
+ } else if (component instanceof ButtonAttachment) {
- } else if (component instanceof ButtonAttachment) {
initButtonAttachment((ButtonAttachment) component);
-
} else if (component instanceof JLabel) {
- JLabel jLabel = (JLabel) component;
- Boolean strongStyle = (Boolean) jLabel.getClientProperty("strongStyle");
- Boolean italicStyle = (Boolean) jLabel.getClientProperty("italicStyle");
- boolean addHtml = strongStyle != null && strongStyle || italicStyle != null && italicStyle;
- if (addHtml) {
- String text = jLabel.getText();
- if (strongStyle != null && strongStyle) {
- text = "<strong>" + text + "</strong>";
- }
- if (italicStyle != null && italicStyle) {
- text = "<em>" + text + "</em>";
- }
- jLabel.setText("<html>" + text + "</html>");
- }
+ initLabel((JLabel) component);
} else if (component instanceof JTextField) {
- JTextField jTextField = (JTextField) component;
- Boolean computed = (Boolean) jTextField.getClientProperty("computed");
- if (computed != null && computed) {
- Font font = jTextField.getFont().deriveFont(Font.ITALIC);
- jTextField.setFont(font);
- jTextField.setEditable(!computed);
- jTextField.setEnabled(!computed);
- jTextField.setDisabledTextColor(getConfig().getColorComputedWeights());
- }
+ initTextField((JTextField) component);
} else if (component instanceof AbstractButton) {
- AbstractButton abstractButton = (AbstractButton) component;
- Class<AbstractTuttiAction> actionName = (Class<AbstractTuttiAction>) abstractButton.getClientProperty("tuttiAction");
- if (actionName != null) {
- initAction(abstractButton, actionName);
- }
+
+ initButton((AbstractButton) component);
}
}
}
- protected void initButtonAttachment(ButtonAttachment component) {
+ protected void initTextField(JTextField jTextField) {
+ Boolean computed = (Boolean) jTextField.getClientProperty("computed");
+ if (computed != null && computed) {
+ Font font = jTextField.getFont().deriveFont(Font.ITALIC);
+ jTextField.setFont(font);
+ jTextField.setEditable(!computed);
+ jTextField.setEnabled(!computed);
+ jTextField.setDisabledTextColor(getConfig().getColorComputedWeights());
+ }
+ if (isAutoSelectOnFocus(jTextField)) {
+ addAutoSelectOnFocus(jTextField);
+ }
+ }
- component.init();
+ protected void initLabel(JLabel jLabel) {
+ Boolean strongStyle = (Boolean) jLabel.getClientProperty("strongStyle");
+ Boolean italicStyle = (Boolean) jLabel.getClientProperty("italicStyle");
+ boolean addHtml = strongStyle != null && strongStyle || italicStyle != null && italicStyle;
+ if (addHtml) {
+ String text = jLabel.getText();
+ if (strongStyle != null && strongStyle) {
+ text = "<strong>" + text + "</strong>";
+ }
+ if (italicStyle != null && italicStyle) {
+ text = "<em>" + text + "</em>";
+ }
+ jLabel.setText("<html>" + text + "</html>");
+ }
}
- protected <A extends AbstractTuttiAction> void initAction(AbstractButton abstractButton,
- Class<A> actionName) {
+ protected void initButtonAttachment(ButtonAttachment component) {
- Action action = TuttiActionHelper.createUIAction(this, abstractButton, actionName);
- abstractButton.setAction(action);
+ component.init();
}
-// public <A extends AbstractTuttiAction> TuttiUIAction<A> createUIAction(AbstractButton abstractButton,
-// Class<A> actionName) {
-// try {
-//
-// // create logic action
-// A logicAction = createLogicAction(actionName);
-//
-// // create ui action
-// TuttiUIAction<A> result = new TuttiUIAction<A>(abstractButton,
-// logicAction);
-// return result;
-// } catch (Exception e) {
-// throw new TuttiTechnicalException(
-// "Could not instanciate action " + actionName, e);
-// }
-//
-// }
+ protected void initButton(AbstractButton abstractButton) {
-// public <A extends AbstractTuttiAction> A createLogicAction(Class<A> actionName) {
-// try {
-//
-// AbstractTuttiUIHandler handler = this;
-//
-// if (AbstractMainUITuttiAction.class.isAssignableFrom(actionName) &&
-// getContext().getMainUI() != null) {
-// handler = getContext().getMainUI().getHandler();
-// }
-//
-// // create action
-// A result = ConstructorUtils.invokeConstructor(actionName, handler);
-// return result;
-// } catch (Exception e) {
-// throw new RuntimeException(
-// "Could not instanciate action " + actionName, e);
-// }
-// }
-
-// public <A extends AbstractTuttiAction> A getLogicAction(AbstractButton b) {
-// Action action = b.getAction();
-// Preconditions.checkNotNull(action);
-// Preconditions.checkState(action instanceof TuttiUIAction);
-// return ((TuttiUIAction<A>) action).getLogicAction();
-// }
-
-// protected void doAction(AbstractButton button, ActionEvent event) {
-// button.getAction().actionPerformed(event);
-// }
-
- protected boolean quitScreen(boolean modelIsValid,
- boolean modelIsModify,
- String askGiveUpMessage,
- String askSaveMessage,
- Action saveAction) {
- boolean result;
-
- if (!modelIsValid) {
-
- // model is not valid
- // ask user to qui or not
- result = askCancelEditBeforeLeaving(askGiveUpMessage);
-
- } else if (modelIsModify) {
-
- // something is modify ask user what to do
- int answer = askSaveBeforeLeaving(askSaveMessage);
- switch (answer) {
- case JOptionPane.YES_OPTION:
-
- // ok save
- saveAction.actionPerformed(null);
- result = true;
- break;
- case JOptionPane.NO_OPTION:
-
- // do not save but can still quit the screen (so nothing to do)
- result = true;
- break;
- default:
- // do not save and stay here (so nothing to do)
- result = false;
-
- }
- } else {
-
- // model is valid and not modify, can safely quit screen
- result = true;
+ Class actionName = (Class) abstractButton.getClientProperty("tuttiAction");
+ if (actionName != null) {
+ Action action = TuttiActionHelper.createUIAction(this, abstractButton, actionName);
+ abstractButton.setAction(action);
}
- return result;
}
- protected void registerValidators(SwingValidator... validators) {
- MainUI main = context.getMainUI();
- Preconditions.checkNotNull(
- main, "No mainUI registred in application context");
- MainUIHandler handler = main.getHandler();
- handler.clearValidators();
- for (SwingValidator validator : validators) {
- handler.registerValidator(validator);
- }
- }
-
- public void clearValidators() {
- MainUI main = context.getMainUI();
- Preconditions.checkNotNull(
- main, "No mainUI registred in application context");
- MainUIHandler handler = main.getHandler();
- handler.clearValidators();
- }
-
/**
* Prépare un component de choix d'entités pour un type d'entité donné et
* pour un service de persistance donné.
@@ -626,6 +527,11 @@
editor.setModel(null);
editor.setModel(model);
}
+
+ if (isAutoSelectOnFocus(editor)) {
+
+ addAutoSelectOnFocus(editor.getTextField());
+ }
}
protected void initTimeEditor(SimpleTimeEditor editor) {
@@ -634,6 +540,11 @@
" for property " + editor.getModel().getProperty());
}
editor.init();
+
+ if (isAutoSelectOnFocus(editor)) {
+ addAutoSelectOnFocus(((JSpinner.DefaultEditor) editor.getHour().getEditor()).getTextField());
+ addAutoSelectOnFocus(((JSpinner.DefaultEditor) editor.getMinute().getEditor()).getTextField());
+ }
}
protected void initDatePicker(final JXDatePicker picker) {
@@ -656,10 +567,100 @@
}
}
}
+ });
+ if (isAutoSelectOnFocus(picker)) {
+ addAutoSelectOnFocus(picker.getEditor());
+ }
+ }
+
+ protected boolean isAutoSelectOnFocus(JComponent comp) {
+ Object selectOnFocus = comp.getClientProperty("selectOnFocus");
+ return selectOnFocus != null && Boolean.valueOf(selectOnFocus.toString());
+ }
+
+ protected void addAutoSelectOnFocus(JTextField jTextField) {
+ jTextField.addFocusListener(new FocusAdapter() {
+ @Override
+ public void focusGained(final FocusEvent e) {
+ SwingUtilities.invokeLater(new Runnable() {
+ @Override
+ public void run() {
+ JTextField source = (JTextField) e.getSource();
+ source.selectAll();
+ }
+ });
+
+ }
});
}
+ //------------------------------------------------------------------------//
+ //-- Internal methods --//
+ //------------------------------------------------------------------------//
+
+
+ protected boolean quitScreen(boolean modelIsValid,
+ boolean modelIsModify,
+ String askGiveUpMessage,
+ String askSaveMessage,
+ Action saveAction) {
+ boolean result;
+
+ if (!modelIsValid) {
+
+ // model is not valid
+ // ask user to qui or not
+ result = askCancelEditBeforeLeaving(askGiveUpMessage);
+
+ } else if (modelIsModify) {
+
+ // something is modify ask user what to do
+ int answer = askSaveBeforeLeaving(askSaveMessage);
+ switch (answer) {
+ case JOptionPane.YES_OPTION:
+
+ // ok save
+ saveAction.actionPerformed(null);
+ result = true;
+ break;
+ case JOptionPane.NO_OPTION:
+
+ // do not save but can still quit the screen (so nothing to do)
+ result = true;
+ break;
+ default:
+ // do not save and stay here (so nothing to do)
+ result = false;
+
+ }
+ } else {
+
+ // model is valid and not modify, can safely quit screen
+ result = true;
+ }
+ return result;
+ }
+
+ protected void registerValidators(SwingValidator... validators) {
+ MainUI main = context.getMainUI();
+ Preconditions.checkNotNull(
+ main, "No mainUI registred in application context");
+ MainUIHandler handler = main.getHandler();
+ handler.clearValidators();
+ for (SwingValidator validator : validators) {
+ handler.registerValidator(validator);
+ }
+ }
+
+ public void clearValidators() {
+ MainUI main = context.getMainUI();
+ Preconditions.checkNotNull(
+ main, "No mainUI registred in application context");
+ MainUIHandler handler = main.getHandler();
+ handler.clearValidators();
+ }
+
public <O> Decorator<O> getDecorator(Class<O> type, String name) {
DecoratorService decoratorService =
context.getDecoratorService();
1
0
Author: tchemit
Date: 2013-03-24 14:33:40 +0100 (Sun, 24 Mar 2013)
New Revision: 674
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/674
Log:
fixes #2030: [TECH] Logiciel en Version 32 et 64 bits
fixes #2153: [TECH] Installation version 64 bits : ne marche pas
Modified:
trunk/tutti-ui-swing/pom.xml
Modified: trunk/tutti-ui-swing/pom.xml
===================================================================
--- trunk/tutti-ui-swing/pom.xml 2013-03-24 13:03:42 UTC (rev 673)
+++ trunk/tutti-ui-swing/pom.xml 2013-03-24 13:33:40 UTC (rev 674)
@@ -463,9 +463,9 @@
<redmine.releaseFiles>
target/${bundlePrefix}-full-windows-i586.zip,
- target/${bundlePrefix}-full-windows-x64.zip,
- target/${bundlePrefix}-full-linux-i586.zip,
- target/${bundlePrefix}-full-linux-x64.zip
+ target/${bundlePrefix}-full-linux-i586.zip
+ <!--target/${bundlePrefix}-full-windows-x64.zip,-->
+ <!--target/${bundlePrefix}-full-linux-x64.zip-->
</redmine.releaseFiles>
</properties>
<build>
@@ -475,12 +475,12 @@
<profile>
<id>linux-x64-bundle</id>
- <activation>
+ <!--activation>
<property>
<name>performFullRelease</name>
<value>true</value>
</property>
- </activation>
+ </activation-->
<build>
<defaultGoal>package</defaultGoal>
<plugins>
@@ -673,12 +673,12 @@
<profile>
<id>window-x64-bundle</id>
- <activation>
+ <!--activation>
<property>
<name>performFullRelease</name>
<value>true</value>
</property>
- </activation>
+ </activation-->
<build>
<defaultGoal>package</defaultGoal>
<plugins>
1
0
24 Mar '13
Author: tchemit
Date: 2013-03-24 14:03:42 +0100 (Sun, 24 Mar 2013)
New Revision: 673
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/673
Log:
fixes #2056: [TECH] Am?\195?\169liorer le processus de mise ?\195?\160 jour de l'application
fixes #2190: [TECH] ajouter un onglet ?\195?\160 l'?\195?\169cran *?\195?\128 propos* pour r?\195?\169capituler les mises ?\195?\160 jour des modules
Added:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/ShowAboutAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateDbAction.java
Removed:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateReferentialAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/InstallDbAction.java
Modified:
trunk/pom.xml
trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties
trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/RunTutti.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiApplicationUpdaterCallBack.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/AbstractChangeScreenAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/CloseApplicationAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/ReloadTuttiAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateApplicationAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/config/TuttiConfigUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/DbManagerUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/DbManagerUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/ExportAndCleanDbAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/ImportDbAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ImportPupitriAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SampleCategoryColumnIdentifier.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SpeciesBatchRootRowModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionHelper.java
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIModel-error-validation.xml
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-03-24 12:59:45 UTC (rev 672)
+++ trunk/pom.xml 2013-03-24 13:03:42 UTC (rev 673)
@@ -120,8 +120,8 @@
<!-- libraries version -->
- <nuitonUtilsVersion>2.6.11</nuitonUtilsVersion>
- <nuitonUpdaterVersion>2.6.11.2</nuitonUpdaterVersion>
+ <nuitonUtilsVersion>2.6.12-SNAPSHOT</nuitonUtilsVersion>
+ <nuitonUpdaterVersion>2.6.12-SNAPSHOT</nuitonUpdaterVersion>
<nuitonI18nVersion>2.5</nuitonI18nVersion>
<eugenePluginVersion>2.6.1</eugenePluginVersion>
Modified: trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties 2013-03-24 12:59:45 UTC (rev 672)
+++ trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-en.properties 2013-03-24 13:03:42 UTC (rev 673)
@@ -1,3 +1,26 @@
+###
+# #%L
+# Tutti :: UI
+# $Id$
+# $HeadURL$
+# %%
+# Copyright (C) 2012 - 2013 Ifremer
+# %%
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public
+# License along with this program. If not, see
+# <http://www.gnu.org/licenses/gpl-3.0.html>.
+# #L%
+###
#Generated by org.nuiton.jaxx.plugin.GenerateHelpIdsMojo
#Sat Mar 23 16:49:12 CET 2013
tutti.createBenthosBatch.action.addSpecies.help=
Modified: trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties 2013-03-24 12:59:45 UTC (rev 672)
+++ trunk/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties 2013-03-24 13:03:42 UTC (rev 673)
@@ -1,3 +1,26 @@
+###
+# #%L
+# Tutti :: UI
+# $Id$
+# $HeadURL$
+# %%
+# Copyright (C) 2012 - 2013 Ifremer
+# %%
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public
+# License along with this program. If not, see
+# <http://www.gnu.org/licenses/gpl-3.0.html>.
+# #L%
+###
#Generated by org.nuiton.jaxx.plugin.GenerateHelpIdsMojo
#Sat Mar 23 16:49:12 CET 2013
tutti.createBenthosBatch.action.addSpecies.help=createBenthosBatch.html\#actions
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/RunTutti.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/RunTutti.java 2013-03-24 12:59:45 UTC (rev 672)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/RunTutti.java 2013-03-24 13:03:42 UTC (rev 673)
@@ -52,6 +52,8 @@
public static final int UPATE_EXIT_CODE = 88;
+ public static final int NORMAL_EXIT_CODE = 0;
+
public static void main(String... args) {
if (log.isInfoEnabled()) {
@@ -86,6 +88,8 @@
UIManager.put("Table.focusCellHighlightBorder",
new BorderUIResource.LineBorderUIResource(Color.BLACK));
+ boolean reload = false;
+
if (config.isFullLaunchMode()) {
if (log.isInfoEnabled()) {
@@ -93,14 +97,19 @@
}
// try to update jre - i18n - application - help and exit if so
- TuttiActionHelper.runActionAndWait(new MainUIHandler(context),
- UpdateApplicationAction.class);
+ UpdateApplicationAction logicAction = TuttiActionHelper.createLogicAction(new MainUIHandler(context),
+ UpdateApplicationAction.class);
+ TuttiActionHelper.runActionAndWait(logicAction);
+
+ reload = logicAction.isReload();
}
- if (log.isInfoEnabled()) {
- log.info("Will start Tutti...");
+ if (!reload) {
+ if (log.isInfoEnabled()) {
+ log.info("Will start Tutti...");
+ }
+ startTutti(context, true);
}
- startTutti(context, true);
}
public static void startTutti(TuttiUIContext context, boolean openContext) {
@@ -114,19 +123,19 @@
mainUI.setVisible(true);
}
- public static void closeTutti(MainUI ui, boolean exit) {
+ public static void closeTutti(MainUIHandler handler, Integer exitCode) {
- TuttiUIContext context = ui.getHandler().getContext();
+ TuttiUIContext context = handler.getContext();
// close ui
- ui.getHandler().onCloseUI();
+ handler.onCloseUI();
//close context
context.getSwingSession().save();
context.close();
- if (exit) {
- System.exit(0);
+ if (exitCode != null) {
+ System.exit(exitCode);
}
}
}
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiApplicationUpdaterCallBack.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiApplicationUpdaterCallBack.java 2013-03-24 12:59:45 UTC (rev 672)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiApplicationUpdaterCallBack.java 2013-03-24 13:03:42 UTC (rev 673)
@@ -27,6 +27,7 @@
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
+import fr.ifremer.tutti.LabelAware;
import fr.ifremer.tutti.TuttiIOUtil;
import fr.ifremer.tutti.TuttiTechnicalException;
import fr.ifremer.tutti.persistence.ProgressionModel;
@@ -50,6 +51,9 @@
import java.util.List;
import java.util.Map;
+import static org.nuiton.i18n.I18n._;
+import static org.nuiton.i18n.I18n.n_;
+
/**
* CallBack to update jre, application, i18n or db.
*
@@ -62,13 +66,23 @@
private static final Log log =
LogFactory.getLog(TuttiApplicationUpdaterCallBack.class);
+ public enum UpdateType implements LabelAware {
+ JRE(n_("tutti.update.jre")),
+ TUTTI(n_("tutti.update.tutti")),
+ I18N(n_("tutti.update.i18n")),
+ HELP(n_("tutti.update.help")),
+ DB(n_("tutti.update.db"));
- public enum UpdateType {
- JRE,
- TUTTI,
- I18N,
- HELP,
- DB
+ private final String i18nKey;
+
+ private UpdateType(String i18nKey) {
+ this.i18nKey = i18nKey;
+ }
+
+ @Override
+ public String getLabel() {
+ return _(i18nKey);
+ }
}
protected final TuttiUIContext context;
@@ -79,6 +93,8 @@
protected boolean applicationUpdated;
+ protected boolean dbInstalled;
+
protected boolean dbUpdated;
protected final AbstractTuttiAction action;
@@ -102,6 +118,10 @@
return dbUpdated;
}
+ public boolean isDbInstalled() {
+ return dbInstalled;
+ }
+
@Override
public Map<String, ApplicationInfo> updateToDo(Map<String, ApplicationInfo> appToUpdate) {
Map<String, ApplicationInfo> result = Maps.newHashMap();
@@ -122,11 +142,22 @@
if (types.contains(UpdateType.DB)) {
ApplicationInfo info = getInfo(UpdateType.DB, result);
- dbUpdated = info != null;
+
+ if (info == null) {
+ dbInstalled = false;
+ dbUpdated = false;
+ } else {
+ if (ApplicationUpdater.ZERO_VERSION.equals(info.oldVersion)) {
+ dbInstalled = true;
+ } else {
+ dbUpdated = true;
+ }
+ }
}
return result;
}
+ @Override
public void startUpdate(ApplicationInfo info) {
if (UpdateType.DB.name().toLowerCase().equals(info.name)) {
@@ -172,10 +203,6 @@
}
}
- public void restart() {
- System.exit(RunTutti.UPATE_EXIT_CODE);
- }
-
@Override
public void aborted(String propertiesURL, Exception eee) {
if (log.isErrorEnabled()) {
@@ -334,7 +361,7 @@
persistenceConfig.generateExternalDbFiles(true);
- if (Version.VZERO.toString().equals(info.oldVersion)) {
+ if (ApplicationUpdater.ZERO_VERSION.equals(info.oldVersion)) {
// first database, just copy it to correct directory
@@ -429,12 +456,12 @@
// replace the version.appup file content
File target = context.getConfig().getServiceConfig().getPersistenceConfig().getDbDirectory();
- File versionFile = new File(target, ApplicationUpdater.VERSION_FILE);
+ File versionFile = ApplicationUpdater.getVersionFile(target);
if (log.isInfoEnabled()) {
log.info("Replace content of file " + versionFile + " with " + info.newVersion);
}
try {
- FileUtils.writeStringToFile(versionFile, info.newVersion);
+ ApplicationUpdater.storeVersionFile(target, info.newVersion);
} catch (IOException e) {
throw new TuttiTechnicalException("Could not write back new db version to file " + versionFile);
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java 2013-03-24 12:59:45 UTC (rev 672)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java 2013-03-24 13:03:42 UTC (rev 673)
@@ -321,7 +321,7 @@
public TuttiProtocolImportExportService getTuttiProtocolImportExportService() {
return serviceContext.getService(TuttiProtocolImportExportService.class);
}
-
+
public TuttiPupitriImportExportService getTuttiPupitriImportExportService() {
return serviceContext.getService(TuttiPupitriImportExportService.class);
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/AbstractChangeScreenAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/AbstractChangeScreenAction.java 2013-03-24 12:59:45 UTC (rev 672)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/AbstractChangeScreenAction.java 2013-03-24 13:03:42 UTC (rev 673)
@@ -90,10 +90,12 @@
try {
TuttiScreen previousScreen = context.getScreen();
- if (previousScreen == null) {
- PREVIOUS_SCREEN.removeContextValue(getUI());
- } else {
- PREVIOUS_SCREEN.setContextValue(getUI(), previousScreen);
+ if (getUI() != null) {
+ if (previousScreen == null) {
+ PREVIOUS_SCREEN.removeContextValue(getUI());
+ } else {
+ PREVIOUS_SCREEN.setContextValue(getUI(), previousScreen);
+ }
}
// clean current screen
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/CloseApplicationAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/CloseApplicationAction.java 2013-03-24 12:59:45 UTC (rev 672)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/CloseApplicationAction.java 2013-03-24 13:03:42 UTC (rev 673)
@@ -26,6 +26,8 @@
import fr.ifremer.tutti.ui.swing.RunTutti;
+import static org.nuiton.i18n.I18n._;
+
/**
* To close Tutti Application.
*
@@ -34,16 +36,30 @@
*/
public class CloseApplicationAction extends AbstractChangeScreenAction {
+ protected int exitCode = RunTutti.NORMAL_EXIT_CODE;
+
public CloseApplicationAction(MainUIHandler handler) {
super(handler, false, null);
setSkipCheckCurrentScreen(true);
+ setActionDescription(_("tutti.main.action.exit.tip"));
}
+ public void setExitCode(int exitCode) {
+ this.exitCode = exitCode;
+ }
+
@Override
protected void doAction() throws Exception {
super.doAction();
- RunTutti.closeTutti(getUI(), true);
+ RunTutti.closeTutti(getHandler(), exitCode);
}
+
+
+ @Override
+ protected void releaseAction() {
+ exitCode = RunTutti.NORMAL_EXIT_CODE;
+ super.releaseAction();
+ }
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUI.css 2013-03-24 12:59:45 UTC (rev 672)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUI.css 2013-03-24 13:03:42 UTC (rev 673)
@@ -222,6 +222,7 @@
toolTipText: "tutti.main.action.about.tip";
actionIcon: about;
i18nMnemonic: "tutti.main.action.about.mnemonic";
+ _tuttiAction: {ShowAboutAction.class};
_help: {"tutti.main.menu.action.about.help"};
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUI.jaxx 2013-03-24 12:59:45 UTC (rev 672)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUI.jaxx 2013-03-24 13:03:42 UTC (rev 673)
@@ -91,8 +91,7 @@
onActionPerformed="handler.showHelp()"/>
<JMenuItem id='menuHelpSite'
onActionPerformed='handler.gotoSite()'/>
- <JMenuItem id='menuHelpAbout'
- onActionPerformed='handler.showAbout()'/>
+ <JMenuItem id='menuHelpAbout'/>
<JMenu id='menuChangeLocale'>
<JMenuItem id='menuChangeLocaleUK'/>
<JMenuItem id='menuChangeLocaleFR'/>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUIHandler.java 2013-03-24 12:59:45 UTC (rev 672)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUIHandler.java 2013-03-24 13:03:42 UTC (rev 673)
@@ -54,25 +54,20 @@
import fr.ifremer.tutti.ui.swing.util.action.TuttiActionUI;
import fr.ifremer.tutti.ui.swing.util.action.TuttiUIAction;
import jaxx.runtime.SwingUtil;
-import jaxx.runtime.swing.AboutPanel;
import jaxx.runtime.validator.swing.SwingValidator;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.i18n.I18n;
-import org.nuiton.util.config.ApplicationConfig;
import org.nuiton.widget.SwingSession;
import javax.swing.Icon;
import javax.swing.JButton;
import javax.swing.JComponent;
-import javax.swing.JEditorPane;
import javax.swing.JLabel;
-import javax.swing.JScrollPane;
import javax.swing.JToolBar;
import java.awt.Cursor;
import java.beans.PropertyChangeEvent;
import java.net.URL;
-import java.util.Calendar;
import java.util.Locale;
import static org.nuiton.i18n.I18n._;
@@ -223,9 +218,13 @@
context.removeMessageNotifier(this);
TuttiUIUtil.closeBean(context);
- TuttiUIUtil.closeUI(ui);
- ui.setVisible(false);
- ui.dispose();
+
+ if (ui != null) {
+
+ TuttiUIUtil.closeUI(ui);
+ ui.setVisible(false);
+ ui.dispose();
+ }
}
@Override
@@ -240,7 +239,7 @@
public void reloadUI() {
//close ui
- getUI().getHandler().onCloseUI();
+ onCloseUI();
// restart ui
RunTutti.startTutti(getContext(), false);
@@ -265,58 +264,6 @@
reloadUI();
}
- public void showAbout() {
-
- ApplicationConfig applicationConfig =
- context.getConfig().getApplicationConfig();
-
- String iconPath = applicationConfig.getOption("application.icon.path");
- String name = "tutti";
- String licensePath = "META-INF/" + name + "-LICENSE.txt";
- String thirdPartyPath = "META-INF/" + name + "-THIRD-PARTY.txt";
-
- AboutPanel about = new AboutPanel();
- about.setTitle(_("tutti.about.title"));
- about.setAboutText(_("tutti.about.message"));
-
- TuttiApplicationConfig config = context.getConfig();
- int currentYear = Calendar.getInstance().get(Calendar.YEAR);
- int inceptionYear = config.getInceptionYear();
- String years;
- if (currentYear != inceptionYear) {
- years = inceptionYear + "-" + currentYear;
- } else {
- years = inceptionYear + "";
- }
-
- about.setBottomText(_("tutti.about.bottomText",
- config.getOrganizationName(),
- years,
- config.getVersion()));
- about.setIconPath(iconPath);
- about.setLicenseFile(licensePath);
- about.setThirdpartyFile(thirdPartyPath);
- about.buildTopPanel();
-
- JScrollPane component = new JScrollPane();
- JEditorPane translateArea = new JEditorPane();
- translateArea.setContentType("text/html");
- translateArea.setEditable(false);
- if (translateArea.getFont() != null) {
- translateArea.setFont(translateArea.getFont().deriveFont((float) 11));
- }
- translateArea.setBorder(null);
- String text = _("tutti.about.translate.content");
- translateArea.setText(text);
- component.getViewport().add(translateArea);
- about.getTabs().add(_("tutti.about.translate.title"), component);
- about.init();
- about.showInDialog(ui, true);
-
- // register on swing session
- context.getSwingSession().add(about);
- }
-
public void gotoSite() {
TuttiApplicationConfig config = context.getConfig();
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/ReloadTuttiAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/ReloadTuttiAction.java 2013-03-24 12:59:45 UTC (rev 672)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/ReloadTuttiAction.java 2013-03-24 13:03:42 UTC (rev 673)
@@ -45,7 +45,7 @@
protected void doAction() throws Exception {
// Close the application
- RunTutti.closeTutti(getUI(), false);
+ RunTutti.closeTutti(getHandler(), null);
// Restart
RunTutti.startTutti(getContext(), true);
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/ShowAboutAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/ShowAboutAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/ShowAboutAction.java 2013-03-24 13:03:42 UTC (rev 673)
@@ -0,0 +1,268 @@
+package fr.ifremer.tutti.ui.swing.content;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Joiner;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import fr.ifremer.tutti.ui.swing.TuttiApplicationUpdaterCallBack;
+import fr.ifremer.tutti.ui.swing.config.TuttiApplicationConfig;
+import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
+import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction;
+import fr.ifremer.tutti.ui.swing.util.action.TuttiActionHelper;
+import jaxx.runtime.swing.AboutPanel;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.util.config.ApplicationConfig;
+import org.nuiton.util.updater.ApplicationInfo;
+import org.nuiton.util.updater.ApplicationUpdater;
+
+import javax.swing.JEditorPane;
+import javax.swing.JScrollPane;
+import javax.swing.event.HyperlinkEvent;
+import javax.swing.event.HyperlinkListener;
+import java.io.File;
+import java.net.URL;
+import java.util.Calendar;
+import java.util.List;
+import java.util.Map;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * To show about panel.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.2
+ */
+public class ShowAboutAction extends AbstractMainUITuttiAction {
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(ShowAboutAction.class);
+
+ protected AboutPanel about;
+
+ public ShowAboutAction(MainUIHandler handler) {
+ super(handler, false);
+ }
+
+ @Override
+ public void postSuccessAction() {
+ super.postSuccessAction();
+
+ about.showInDialog(getUI(), true);
+
+ // register on swing session
+ getContext().getSwingSession().add(about);
+ }
+
+ @Override
+ protected void doAction() throws Exception {
+
+ about = null;
+
+ ApplicationConfig applicationConfig =
+ getContext().getConfig().getApplicationConfig();
+
+ String iconPath = applicationConfig.getOption("application.icon.path");
+ String name = "tutti";
+ String licensePath = "META-INF/" + name + "-LICENSE.txt";
+ String thirdPartyPath = "META-INF/" + name + "-THIRD-PARTY.txt";
+
+ about = new AboutPanel();
+ about.setTitle(_("tutti.about.title"));
+ about.setAboutText(_("tutti.about.message"));
+
+ TuttiApplicationConfig config = getContext().getConfig();
+ int currentYear = Calendar.getInstance().get(Calendar.YEAR);
+ int inceptionYear = config.getInceptionYear();
+ String years;
+ if (currentYear != inceptionYear) {
+ years = inceptionYear + "-" + currentYear;
+ } else {
+ years = inceptionYear + "";
+ }
+
+ about.setBottomText(_("tutti.about.bottomText",
+ config.getOrganizationName(),
+ years,
+ config.getVersion()));
+ about.setIconPath(iconPath);
+ about.setLicenseFile(licensePath);
+ about.setThirdpartyFile(thirdPartyPath);
+ about.buildTopPanel();
+
+ //
+ // translate tab
+ //
+
+ JScrollPane translatePane = new JScrollPane();
+ JEditorPane translateArea = new JEditorPane();
+ translateArea.setContentType("text/html");
+ translateArea.setEditable(false);
+ if (translateArea.getFont() != null) {
+ translateArea.setFont(translateArea.getFont().deriveFont((float) 11));
+ }
+
+ translateArea.setBorder(null);
+ File csvFile = new File(config.getI18nDirectory(), "tutti-i18n.csv");
+ String translateText = _("tutti.about.translate.content", csvFile.toURI().toURL());
+ translateArea.setText(translateText);
+ translatePane.getViewport().add(translateArea);
+ translateArea.addHyperlinkListener(new HyperlinkListener() {
+ @Override
+ public void hyperlinkUpdate(HyperlinkEvent e) {
+ if (HyperlinkEvent.EventType.ACTIVATED == e.getEventType()) {
+ URL url = e.getURL();
+ if (log.isInfoEnabled()) {
+ log.info("edit url: " + url);
+ }
+ TuttiUIUtil.openLink(url);
+ }
+ }
+ });
+
+ about.getTabs().add(_("tutti.about.translate.title"), translatePane);
+
+ //
+ // update tab
+ //
+
+ String url = config.getUpdateUrl();
+ File current = config.getTuttiBasedir();
+
+ ApplicationUpdater up = new ApplicationUpdater();
+
+ // get application updates
+ Map<String, ApplicationInfo> applicationVersions = up.getVersions(url, current);
+
+ // get db updates
+ Map<String, ApplicationInfo> dbVersions = up.getVersions(url, config.getDataDirectory());
+
+ // create final update map
+ final Map<String, ApplicationInfo> versions = Maps.newTreeMap();
+ addUpdate(applicationVersions, versions,
+ UpdateApplicationAction.ALL_APPLICATION_TYPES);
+ addUpdate(dbVersions, versions,
+ TuttiApplicationUpdaterCallBack.UpdateType.DB);
+
+ JScrollPane updatePane = new JScrollPane();
+ JEditorPane updateArea = new JEditorPane();
+ updateArea.setContentType("text/html");
+ updateArea.setEditable(false);
+ if (updateArea.getFont() != null) {
+ updateArea.setFont(updateArea.getFont().deriveFont((float) 11));
+ }
+ updateArea.setBorder(null);
+
+ List<String> params = Lists.newArrayList();
+ for (TuttiApplicationUpdaterCallBack.UpdateType type : TuttiApplicationUpdaterCallBack.UpdateType.values()) {
+ String appName = type.name().toLowerCase();
+ ApplicationInfo info = versions.get(appName);
+ String oldVersion = info.oldVersion;
+ String newVersion = info.newVersion;
+ String appLabel = type.getLabel();
+
+ if (log.isInfoEnabled()) {
+ log.info(String.format(
+ "Module %s, version courante %s, nouvelle version %s",
+ appLabel, oldVersion, newVersion));
+ }
+ if (newVersion == null) {
+
+ // no update
+ params.add(_("tutti.about.update.app.noup.detail", appLabel, oldVersion));
+ } else {
+ // update exists
+ params.add(_("tutti.about.update.app.up.detail", appLabel, oldVersion, newVersion, appName));
+ }
+ }
+ String updateText = _("tutti.about.update.content", url, Joiner.on("\n").join(params));
+ updateArea.setText(updateText);
+ updatePane.getViewport().add(updateArea);
+ updateArea.addHyperlinkListener(new HyperlinkListener() {
+ @Override
+ public void hyperlinkUpdate(HyperlinkEvent e) {
+ if (HyperlinkEvent.EventType.ACTIVATED == e.getEventType()) {
+ URL url = e.getURL();
+ if (url != null) {
+ TuttiUIUtil.openLink(url);
+ } else {
+ String appType = e.getDescription();
+ TuttiApplicationUpdaterCallBack.UpdateType updateType =
+ TuttiApplicationUpdaterCallBack.UpdateType.valueOf(appType.toUpperCase());
+
+ if (log.isInfoEnabled()) {
+ log.info("Open url: " + updateType);
+ }
+ AbstractTuttiAction action;
+
+ switch (updateType) {
+ case DB: {
+ UpdateDbAction logicAction = TuttiActionHelper.createLogicAction(getHandler(), UpdateDbAction.class);
+ action = logicAction;
+ ApplicationInfo info = versions.get(appType);
+ if (ApplicationUpdater.ZERO_VERSION.equals(info.oldVersion)) {
+
+ // install db
+ action.setActionDescription(
+ _("tutti.dbManager.action.installDb.tip"));
+ }
+ }
+ break;
+ default: {
+ UpdateApplicationAction logicAction = TuttiActionHelper.createLogicAction(getHandler(), UpdateApplicationAction.class);
+ logicAction.setTypes(updateType);
+ logicAction.setActionDescription(_("tutti.main.action.updateSpecificApplication.tip", updateType.getLabel()));
+ action = logicAction;
+ }
+ }
+ // close this dialog
+ TuttiActionHelper.runAction(about.getClose());
+
+ // do update
+ TuttiActionHelper.runAction(action);
+ }
+
+ }
+ }
+ });
+ about.getTabs().add(_("tutti.about.update.title"), updatePane);
+
+ about.init();
+ }
+
+ protected void addUpdate(Map<String, ApplicationInfo> source,
+ Map<String, ApplicationInfo> target,
+ TuttiApplicationUpdaterCallBack.UpdateType... types) {
+ for (TuttiApplicationUpdaterCallBack.UpdateType type : types) {
+ String appName = type.name().toLowerCase();
+ ApplicationInfo info = source.get(appName);
+ target.put(appName, info);
+ }
+ }
+
+
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/ShowAboutAction.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/UpdateApplicationAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateApplicationAction.java 2013-03-24 12:59:45 UTC (rev 672)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateApplicationAction.java 2013-03-24 13:03:42 UTC (rev 673)
@@ -25,11 +25,12 @@
*/
import fr.ifremer.tutti.persistence.ProgressionModel;
+import fr.ifremer.tutti.ui.swing.RunTutti;
import fr.ifremer.tutti.ui.swing.TuttiApplicationUpdaterCallBack;
import fr.ifremer.tutti.ui.swing.TuttiUIContext;
import fr.ifremer.tutti.ui.swing.config.TuttiApplicationConfig;
-import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction;
+import fr.ifremer.tutti.ui.swing.util.action.TuttiActionHelper;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.util.updater.ApplicationUpdater;
@@ -50,14 +51,34 @@
private static final Log log =
LogFactory.getLog(UpdateApplicationAction.class);
+ public static final TuttiApplicationUpdaterCallBack.UpdateType[] ALL_APPLICATION_TYPES = new TuttiApplicationUpdaterCallBack.UpdateType[]{
+ TuttiApplicationUpdaterCallBack.UpdateType.JRE,
+ TuttiApplicationUpdaterCallBack.UpdateType.I18N,
+ TuttiApplicationUpdaterCallBack.UpdateType.TUTTI,
+ TuttiApplicationUpdaterCallBack.UpdateType.HELP
+ };
+
public UpdateApplicationAction(MainUIHandler handler) {
super(handler, true);
setActionDescription(_("tutti.main.action.updateApplication.tip"));
+ types = ALL_APPLICATION_TYPES;
}
+ protected TuttiApplicationUpdaterCallBack.UpdateType[] types;
+
+ protected boolean reload;
+
@Override
+ protected void releaseAction() {
+ super.releaseAction();
+ types = ALL_APPLICATION_TYPES;
+ }
+
+ @Override
protected void doAction() throws Exception {
+ reload = false;
+
TuttiUIContext context = getContext();
TuttiApplicationConfig config = context.getConfig();
@@ -79,40 +100,65 @@
ProgressionModel progressionModel = new ProgressionModel();
context.getActionUI().getModel().setProgressionModel(progressionModel);
- progressionModel.setMessage("Recherche de mises à jour de JRE / Tutti / I18N / Help");
+ progressionModel.setMessage("Recherche de mises à jour");
TuttiApplicationUpdaterCallBack callback =
new TuttiApplicationUpdaterCallBack(this, progressionModel);
- callback.setTypes(TuttiApplicationUpdaterCallBack.UpdateType.JRE,
- TuttiApplicationUpdaterCallBack.UpdateType.I18N,
- TuttiApplicationUpdaterCallBack.UpdateType.TUTTI,
- TuttiApplicationUpdaterCallBack.UpdateType.HELP);
+ callback.setTypes(types);
+
ApplicationUpdater up = new ApplicationUpdater();
- up.setDownloadMonitor(progressionModel);
up.update(url,
current,
dest,
false,
- callback);
+ callback,
+ progressionModel);
if (callback.isApplicationUpdated()) {
- // tell user restart will be done
+ reload = true;
- TuttiUIUtil.showSuccessMessage(
- getUI(),
- "Redémarrage de Tutti nécessaire...",
- "La mise à jour nécessite le rédémarrage du Tutti.\nL'application va se fermer puis se réouvrir automatiquement."
- );
-
- callback.restart();
-
} else {
sendMessage("Aucune mise à jour de l'application détectée.");
}
-// getContext().getActionUI().getModel().clear();
}
}
+
+ public void setTypes(TuttiApplicationUpdaterCallBack.UpdateType... types) {
+ this.types = types;
+ }
+
+ @Override
+ public void postSuccessAction() {
+ super.postSuccessAction();
+
+ if (reload) {
+ // wait 1 second to be sure action ui is up
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ if (log.isWarnEnabled()) {
+ log.warn("Could not wait 1 second...", e);
+ }
+ }
+
+ // tell user restart will be done
+
+ getHandler().showSuccessMessage(
+ "Redémarrage de Tutti nécessaire...",
+ "La mise à jour nécessite le rédémarrage du Tutti.\nL'application va se fermer puis se réouvrir automatiquement."
+ );
+
+ CloseApplicationAction action = TuttiActionHelper.createLogicAction(
+ getHandler(), CloseApplicationAction.class);
+ action.setExitCode(RunTutti.UPATE_EXIT_CODE);
+ TuttiActionHelper.runAction(action);
+ }
+ }
+
+ public boolean isReload() {
+ return reload;
+ }
}
\ No newline at end of file
Copied: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateDbAction.java (from rev 665, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateReferentialAction.java)
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateDbAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateDbAction.java 2013-03-24 13:03:42 UTC (rev 673)
@@ -0,0 +1,105 @@
+package fr.ifremer.tutti.ui.swing.content;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.persistence.ProgressionModel;
+import fr.ifremer.tutti.ui.swing.TuttiApplicationUpdaterCallBack;
+import fr.ifremer.tutti.ui.swing.TuttiUIContext;
+import fr.ifremer.tutti.ui.swing.config.TuttiApplicationConfig;
+import fr.ifremer.tutti.ui.swing.content.db.OpenDbAction;
+import fr.ifremer.tutti.ui.swing.util.action.TuttiActionHelper;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.util.updater.ApplicationUpdater;
+
+import java.io.File;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * To update - install database.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class UpdateDbAction extends AbstractMainUITuttiAction {
+
+ /** Logger. */
+ private static final Log log =
+ LogFactory.getLog(UpdateDbAction.class);
+
+ public UpdateDbAction(MainUIHandler handler) {
+ super(handler, true);
+ setActionDescription(_("tutti.dbManager.action.upgradeDb.tip"));
+ }
+
+ @Override
+ protected void doAction() {
+ TuttiUIContext context = getContext();
+ TuttiApplicationConfig config = context.getConfig();
+
+ File current = config.getDataDirectory();
+ String url = config.getUpdateUrl();
+
+ if (log.isInfoEnabled()) {
+ log.info(String.format("Try to install / update db (current data location: %s), using update url: %s", current, url));
+ }
+
+ File dest = new File(config.getTuttiBasedir(), "NEW");
+ ProgressionModel progressionModel = new ProgressionModel();
+ context.getActionUI().getModel().setProgressionModel(progressionModel);
+ progressionModel.setMessage("Recherche de mises à jour de base");
+ TuttiApplicationUpdaterCallBack callback =
+ new TuttiApplicationUpdaterCallBack(this, progressionModel);
+ callback.setTypes(TuttiApplicationUpdaterCallBack.UpdateType.DB);
+ ApplicationUpdater up = new ApplicationUpdater();
+ up.update(url,
+ current,
+ dest,
+ false,
+ callback,
+ progressionModel);
+
+ if (callback.isDbInstalled()) {
+
+ progressionModel.setMessage("Ouverture de la base de données");
+
+ getContext().setDbExist(true);
+
+ // open db
+ TuttiActionHelper.runInternalAction(getHandler(), OpenDbAction.class);
+
+ } else if (callback.isDbUpdated()) {
+
+ progressionModel.setMessage("Rechargement de la base de données");
+
+ // open db
+ TuttiActionHelper.runInternalAction(getHandler(), OpenDbAction.class);
+
+ } else {
+ sendMessage("Aucune mise à jour de base détectée.");
+ }
+ }
+}
\ No newline at end of file
Deleted: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateReferentialAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateReferentialAction.java 2013-03-24 12:59:45 UTC (rev 672)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateReferentialAction.java 2013-03-24 13:03:42 UTC (rev 673)
@@ -1,94 +0,0 @@
-package fr.ifremer.tutti.ui.swing.content;
-
-/*
- * #%L
- * Tutti :: UI
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 - 2013 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import fr.ifremer.tutti.persistence.ProgressionModel;
-import fr.ifremer.tutti.ui.swing.TuttiApplicationUpdaterCallBack;
-import fr.ifremer.tutti.ui.swing.TuttiUIContext;
-import fr.ifremer.tutti.ui.swing.config.TuttiApplicationConfig;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.nuiton.util.updater.ApplicationUpdater;
-
-import java.io.File;
-
-/**
- * To update referential using the {@link ApplicationUpdater} mecanism.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 1.0
- */
-public class UpdateReferentialAction extends AbstractMainUITuttiAction {
-
- /** Logger. */
- private static final Log log =
- LogFactory.getLog(UpdateReferentialAction.class);
-
- public UpdateReferentialAction(MainUIHandler handler) {
- super(handler, true);
- }
-
- @Override
- protected void doAction() {
- TuttiUIContext context = getContext();
- TuttiApplicationConfig config = context.getConfig();
-
- File current = config.getDataDirectory();
- String url = config.getUpdateUrl();
-
- if (log.isInfoEnabled()) {
- log.info(String.format("Try to update db (current data location: %s), using update url: %s", current, url));
- }
-
- File dest = new File(config.getTuttiBasedir(), "NEW");
- ProgressionModel progressionModel = new ProgressionModel();
- context.getActionUI().getModel().setProgressionModel(progressionModel);
- progressionModel.setMessage("Recherche de mises à jour de base");
- TuttiApplicationUpdaterCallBack callback =
- new TuttiApplicationUpdaterCallBack(this, progressionModel);
- callback.setTypes(TuttiApplicationUpdaterCallBack.UpdateType.DB);
- ApplicationUpdater up = new ApplicationUpdater();
- up.setDownloadMonitor(progressionModel);
- up.update(url,
- current,
- dest,
- false,
- callback);
-
- if (callback.isDbUpdated()) {
-
- progressionModel.setMessage("Rechargement de la base de données");
-
- context.setDbLoaded(true);
- context.reloadPersistenceService();
-
- // make sure title is reloaded
- getUI().getHandler().changeTitle();
-
- } else {
- sendMessage("Aucune mise à jour de base détectée.");
- }
- }
-}
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/config/TuttiConfigUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/config/TuttiConfigUIHandler.java 2013-03-24 12:59:45 UTC (rev 672)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/config/TuttiConfigUIHandler.java 2013-03-24 13:03:42 UTC (rev 673)
@@ -30,12 +30,10 @@
import fr.ifremer.tutti.ui.swing.config.TuttiApplicationConfig;
import fr.ifremer.tutti.ui.swing.config.TuttiApplicationConfigOption;
import fr.ifremer.tutti.ui.swing.content.GoToPreviousScreenAction;
-import fr.ifremer.tutti.ui.swing.content.MainUIHandler;
import fr.ifremer.tutti.ui.swing.content.ReloadTuttiAction;
import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler;
import fr.ifremer.tutti.ui.swing.util.TuttiUI;
import fr.ifremer.tutti.ui.swing.util.action.TuttiActionHelper;
-import fr.ifremer.tutti.ui.swing.util.action.TuttiUIAction;
import fr.ifremer.tutti.ui.swing.util.editor.VesselTableCell;
import jaxx.runtime.SwingUtil;
import jaxx.runtime.swing.config.ConfigUI;
@@ -160,14 +158,6 @@
.addOption(TuttiApplicationConfigOption.DATE_FORMAT)
.addOption(TuttiApplicationConfigOption.COORDINATE_EDITOR_TYPE);
- // SHORTCUT
-
- /*helper.addCategory(n_("tutti.config.category.shortcuts"),
- n_("tutti.config.category.shortcuts.description"),
- CALLBACK_SHORTCUT)
- .addOption(TuttiApplicationConfigOption.SHORTCUT_CLOSE_POPUP);
- */
-
helper.addCategory(n_("tutti.config.category.technical"),
n_("tutti.config.category.technical.description"))
.addOption(TuttiServiceConfigOption.BASEDIR)
@@ -191,8 +181,9 @@
@Override
public void run() {
- TuttiActionHelper.runAction(
- getContext().getMainUI().getHandler(), GoToPreviousScreenAction.class);
+ TuttiActionHelper.runInternalAction(
+ TuttiConfigUIHandler.this,
+ GoToPreviousScreenAction.class);
}
});
@@ -212,12 +203,7 @@
}
protected void reloadApplication() {
- MainUIHandler handler = getContext().getMainUI().getHandler();
-
- TuttiUIAction<ReloadTuttiAction> action =
- TuttiActionHelper.createUIAction(handler, ReloadTuttiAction.class);
- action.launchActionAndWait();
- action.actionPerformed(null);
+ TuttiActionHelper.runActionAndWait(this, ReloadTuttiAction.class);
}
protected void reloadUI() {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/DbManagerUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/DbManagerUI.css 2013-03-24 12:59:45 UTC (rev 672)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/DbManagerUI.css 2013-03-24 13:03:42 UTC (rev 673)
@@ -39,9 +39,9 @@
#installDbButton {
actionIcon: install-db;
text: "tutti.dbManager.action.installDb";
+ toolTipText: "tutti.dbManager.action.installDb.tip";
i18nMnemonic: "tutti.dbManager.action.installDb.mnemonic";
- _tuttiAction: {InstallDbAction.class};
- toolTipText: "tutti.dbManager.action.installDb.tip";
+ _tuttiAction: {UpdateDbAction.class};
_help: {"tutti.dbManager.action.installDb.help"};
}
@@ -73,7 +73,7 @@
text: "tutti.dbManager.action.upgradeDb";
i18nMnemonic: "tutti.dbManager.action.upgradeDb.mnemonic";
enabled: {model.isDbLoaded()};
- _tuttiAction: {UpdateReferentialAction.class};
+ _tuttiAction: {UpdateDbAction.class};
toolTipText: "tutti.dbManager.action.upgradeDb.tip";
_help: {"tutti.dbManager.action.upgradeDb.help"};
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/DbManagerUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/DbManagerUI.jaxx 2013-03-24 12:59:45 UTC (rev 672)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/DbManagerUI.jaxx 2013-03-24 13:03:42 UTC (rev 673)
@@ -27,7 +27,7 @@
<import>
fr.ifremer.tutti.ui.swing.TuttiHelpBroker
fr.ifremer.tutti.ui.swing.TuttiUIContext
- fr.ifremer.tutti.ui.swing.content.UpdateReferentialAction
+ fr.ifremer.tutti.ui.swing.content.UpdateDbAction
fr.ifremer.tutti.ui.swing.util.TuttiUI
static org.nuiton.i18n.I18n._
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/ExportAndCleanDbAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/ExportAndCleanDbAction.java 2013-03-24 12:59:45 UTC (rev 672)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/ExportAndCleanDbAction.java 2013-03-24 13:03:42 UTC (rev 673)
@@ -105,7 +105,7 @@
progressionModel.setMessage("Fermeture de la base courante");
- TuttiActionHelper.runAction(getHandler(), CloseDbAction.class);
+ TuttiActionHelper.runInternalAction(getHandler(), CloseDbAction.class);
PersistenceService persistenceService =
getContext().getPersistenceService();
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/ImportDbAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/ImportDbAction.java 2013-03-24 12:59:45 UTC (rev 672)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/ImportDbAction.java 2013-03-24 13:03:42 UTC (rev 673)
@@ -109,7 +109,7 @@
progressionModel.increments(1);
progressionModel.setMessage("Ouverture de la base de données");
- TuttiActionHelper.runAction(getHandler(), OpenDbAction.class);
+ TuttiActionHelper.runInternalAction(getHandler(), OpenDbAction.class);
}
@Override
Deleted: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/InstallDbAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/InstallDbAction.java 2013-03-24 12:59:45 UTC (rev 672)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/InstallDbAction.java 2013-03-24 13:03:42 UTC (rev 673)
@@ -1,99 +0,0 @@
-package fr.ifremer.tutti.ui.swing.content.db;
-
-/*
- * #%L
- * Tutti :: UI
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 - 2013 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import fr.ifremer.tutti.persistence.ProgressionModel;
-import fr.ifremer.tutti.persistence.config.TuttiPersistenceConfig;
-import fr.ifremer.tutti.ui.swing.TuttiApplicationUpdaterCallBack;
-import fr.ifremer.tutti.ui.swing.config.TuttiApplicationConfig;
-import fr.ifremer.tutti.ui.swing.content.AbstractMainUITuttiAction;
-import fr.ifremer.tutti.ui.swing.content.MainUIHandler;
-import fr.ifremer.tutti.ui.swing.util.action.TuttiActionHelper;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.nuiton.util.updater.ApplicationUpdater;
-
-import java.io.File;
-
-import static org.nuiton.i18n.I18n._;
-
-/**
- * To install db when no db is attached to Tutti.
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 1.0
- */
-public class InstallDbAction extends AbstractMainUITuttiAction {
-
- /** Logger. */
- private static final Log log = LogFactory.getLog(InstallDbAction.class);
-
- public InstallDbAction(MainUIHandler handler) {
- super(handler, true);
- }
-
- @Override
- protected void doAction() throws Exception {
- TuttiApplicationConfig config = getContext().getConfig();
-
- File current = config.getDataDirectory();
- String url = config.getUpdateUrl();
-
- if (log.isInfoEnabled()) {
- log.info(String.format("Try to install db (current data location: %s), using update url: %s", current, url));
- }
- ApplicationUpdater up = new ApplicationUpdater();
-
- File dest = new File(config.getTuttiBasedir(), "NEW");
- ProgressionModel progressionModel = new ProgressionModel();
- up.setDownloadMonitor(progressionModel);
- setProgressionModel(progressionModel);
- progressionModel.setMessage("Recherche de mises à jour de base");
-
- TuttiApplicationUpdaterCallBack callback =
- new TuttiApplicationUpdaterCallBack(this, progressionModel);
- callback.setTypes(TuttiApplicationUpdaterCallBack.UpdateType.DB);
-
- up.update(url, current, dest, false, callback);
-
- progressionModel.setMessage("Ouverture de la base de données");
-
- getContext().setDbExist(true);
-
- // open db
- TuttiActionHelper.runAction(getHandler(), OpenDbAction.class);
- }
-
- @Override
- public void postSuccessAction() {
- super.postSuccessAction();
- String jdbcUrl = TuttiPersistenceConfig.getInstance().getJdbcUrl();
-
- sendMessage(_("tutti.flash.info.db.installed", jdbcUrl));
-
- // make sure title is reloaded
- getUI().getHandler().changeTitle();
- }
-}
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ImportPupitriAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ImportPupitriAction.java 2013-03-24 12:59:45 UTC (rev 672)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ImportPupitriAction.java 2013-03-24 13:03:42 UTC (rev 673)
@@ -208,7 +208,7 @@
@Override
public void postSuccessAction() {
super.postSuccessAction();
- sendMessage(_(""));
+ sendMessage("TODO");
}
@Override
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SampleCategoryColumnIdentifier.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SampleCategoryColumnIdentifier.java 2013-03-24 12:59:45 UTC (rev 672)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SampleCategoryColumnIdentifier.java 2013-03-24 13:03:42 UTC (rev 673)
@@ -1,5 +1,29 @@
package fr.ifremer.tutti.ui.swing.content.operation.catches;
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
import fr.ifremer.tutti.persistence.entities.data.SampleCategoryEnum;
import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SpeciesBatchRootRowModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SpeciesBatchRootRowModel.java 2013-03-24 12:59:45 UTC (rev 672)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SpeciesBatchRootRowModel.java 2013-03-24 13:03:42 UTC (rev 673)
@@ -1,5 +1,29 @@
package fr.ifremer.tutti.ui.swing.content.operation.catches;
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue;
import fr.ifremer.tutti.persistence.entities.referential.Species;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java 2013-03-24 12:59:45 UTC (rev 672)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java 2013-03-24 13:03:42 UTC (rev 673)
@@ -317,6 +317,31 @@
return result;
}
+ public void showSuccessMessage(String title, String message) {
+
+ Component topestUI = getTopestUI();
+ boolean alwaysOnTop = false;
+
+ if (topestUI instanceof JDialog) {
+ alwaysOnTop = ((JDialog) topestUI).isAlwaysOnTop();
+ }
+
+ if (alwaysOnTop) {
+ ((JDialog) topestUI).setAlwaysOnTop(false);
+ }
+ try {
+
+ TuttiUIUtil.showSuccessMessage(
+ topestUI,
+ title,
+ message);
+ } finally {
+ if (alwaysOnTop) {
+ ((JDialog) topestUI).setAlwaysOnTop(true);
+ }
+ }
+ }
+
protected Component getTopestUI() {
Component result;
TuttiActionUI actionUI = getContext().getActionUI();
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java 2013-03-24 12:59:45 UTC (rev 672)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java 2013-03-24 13:03:42 UTC (rev 673)
@@ -256,6 +256,30 @@
}
}
+ public static void editLink(File uri) {
+
+ try {
+ if (!Desktop.isDesktopSupported()) {
+ throw new TuttiTechnicalException(
+ _("swing.error.desktop.not.supported"));
+ }
+
+
+ Desktop desktop = Desktop.getDesktop();
+
+ if (!desktop.isSupported(Desktop.Action.EDIT)) {
+
+ throw new TuttiTechnicalException(
+ _("swing.error.desktop.browse.not.supported"));
+ }
+
+ desktop.edit(uri);
+ } catch (Exception e) {
+
+ throw new TuttiTechnicalException("Could not open link: " + uri, e);
+ }
+ }
+
public static void closeBean(AbstractBean bean) {
PropertyChangeListener[] propertyChangeListeners =
bean.getPropertyChangeListeners();
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionHelper.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionHelper.java 2013-03-24 12:59:45 UTC (rev 672)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionHelper.java 2013-03-24 13:03:42 UTC (rev 673)
@@ -1,5 +1,29 @@
package fr.ifremer.tutti.ui.swing.util.action;
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
import com.google.common.base.Preconditions;
import fr.ifremer.tutti.TuttiTechnicalException;
import fr.ifremer.tutti.ui.swing.content.AbstractMainUITuttiAction;
@@ -8,7 +32,6 @@
import javax.swing.AbstractButton;
import javax.swing.Action;
-import java.awt.event.ActionEvent;
/**
* Useful method around TuttiUIAction.
@@ -18,11 +41,9 @@
*/
public class TuttiActionHelper {
- public static <A extends AbstractTuttiAction> void runAction(AbstractTuttiUIHandler handler,
- Class<A> actionName) {
+ public static <A extends AbstractTuttiAction> void runInternalAction(A action) {
Throwable error = null;
- A action = createLogicAction(handler, actionName);
try {
action.doAction();
action.postSuccessAction();
@@ -37,23 +58,35 @@
}
}
+ public static <A extends AbstractTuttiAction> void runInternalAction(AbstractTuttiUIHandler handler,
+ Class<A> actionName) {
+ A action = createLogicAction(handler, actionName);
+ runInternalAction(action);
+ }
+
+ public static <A extends AbstractTuttiAction> void runAction(A action) {
+ TuttiUIAction<A> uiAction = createUIAction(null, action);
+ uiAction.actionPerformed(null);
+ }
+
public static void runAction(AbstractButton button) {
button.getAction().actionPerformed(null);
}
- public static <A extends AbstractTuttiAction> TuttiUIAction<A> runActionAndWait(AbstractTuttiUIHandler handler,
- Class<A> actionName) {
- TuttiUIAction<A> uiAction = createUIAction(handler, null, actionName);
+ public static <A extends AbstractTuttiAction> void runActionAndWait(A action) {
+ TuttiUIAction<A> uiAction = createUIAction(null, action);
uiAction.launchActionAndWait();
- return uiAction;
+ }
+ public static <A extends AbstractTuttiAction> void runActionAndWait(AbstractTuttiUIHandler handler,
+ Class<A> actionName) {
+ A logicAction = createLogicAction(handler, actionName);
+ runActionAndWait(logicAction);
}
-
public static <A extends AbstractTuttiAction> TuttiUIAction<A> createUIAction(AbstractTuttiUIHandler handler,
Class<A> actionName) {
- return createUIAction(handler, null,actionName);
-
+ return createUIAction(handler, null, actionName);
}
@@ -66,8 +99,7 @@
A logicAction = createLogicAction(handler, actionName);
// create ui action
- TuttiUIAction<A> result = new TuttiUIAction<A>(abstractButton,
- logicAction);
+ TuttiUIAction<A> result = createUIAction(abstractButton, logicAction);
return result;
} catch (Exception e) {
throw new TuttiTechnicalException(
@@ -76,6 +108,17 @@
}
+ public static <A extends AbstractTuttiAction> TuttiUIAction<A> createUIAction(AbstractButton abstractButton,
+ A logicAction) {
+
+ // create ui action
+ TuttiUIAction<A> result = new TuttiUIAction<A>(abstractButton,
+ logicAction);
+ return result;
+
+
+ }
+
public static <A extends AbstractTuttiAction> A createLogicAction(AbstractTuttiUIHandler handler,
Class<A> actionName) {
try {
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionHelper.java
___________________________________________________________________
Modified: svn:keywords
- Author Date Id Revision
+ Author Date Id Revision HeadURL
Modified: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIModel-error-validation.xml
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIModel-error-validation.xml 2013-03-24 12:59:45 UTC (rev 672)
+++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIModel-error-validation.xml 2013-03-24 13:03:42 UTC (rev 673)
@@ -2,7 +2,7 @@
#%L
Tutti :: UI
$Id$
- $HeadURL: http://svn.forge.codelutin.com/svn/tutti/trunk/tutti-ui-swing/src/main/reso… $
+ $HeadURL$
%%
Copyright (C) 2012 - 2013 Ifremer
%%
Property changes on: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIModel-error-validation.xml
___________________________________________________________________
Modified: svn:keywords
- Author Date Id Revision
+ Author Date Id Revision HeadURL
Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-03-24 12:59:45 UTC (rev 672)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties 2013-03-24 13:03:42 UTC (rev 673)
@@ -1,4 +1,3 @@
-=
swing.error.desktop.browse.not.supported=
swing.error.desktop.not.supported=
tutti.about.bottomText=
@@ -6,6 +5,10 @@
tutti.about.title=
tutti.about.translate.content=
tutti.about.translate.title=
+tutti.about.update.app.noup.detail=
+tutti.about.update.app.up.detail=
+tutti.about.update.content=
+tutti.about.update.title=
tutti.action.cancel=
tutti.action.removeCaracteristic=
tutti.action.validate=
@@ -755,6 +758,7 @@
tutti.main.action.updateApplication=
tutti.main.action.updateApplication.mnemonic=
tutti.main.action.updateApplication.tip=
+tutti.main.action.updateSpecificApplication.tip=
tutti.main.action.validateCatches=
tutti.main.action.validateCatches.mnemonic=
tutti.main.action.validateCatches.tip=
@@ -924,6 +928,11 @@
tutti.splitSpeciesBatch.title=
tutti.timeeditor.H=
tutti.to.be.done=
+tutti.update.db=
+tutti.update.help=
+tutti.update.i18n=
+tutti.update.jre=
+tutti.update.tutti=
tutti.validator.error.comment.too.long=
tutti.validator.error.createSpeciesBatch.batchWeight.invalidValue=
tutti.validator.error.createSpeciesBatch.sortedUnsortedCategory.required=
Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-03-24 12:59:45 UTC (rev 672)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-03-24 13:03:42 UTC (rev 673)
@@ -1,11 +1,14 @@
-=
swing.error.desktop.browse.not.supported=
swing.error.desktop.not.supported=
tutti.about.bottomText=Copyright %s - %s - version %s
tutti.about.message=<h3>Tutti</h3><p><strong>Outil de saisie de données d'opérations et de captures au cours des campagnes halieutiques.</strong></p><br/><p>Ce logiciel permettra la saisie en mer des données d'opération de pêche (positions, environnement, engin, etc) et des captures associées (composition de la capture en espèces scientifiques avec poids, nombres, tailles etc) pour l'ensemble des campagnes halieutiques réalisées par l'Ifremer.</p><p>Ce projet a été initiée en 2012 par l'<a href\="http\://www.ifremer.fr">Ifremer</a> et réalisé par la société <a href\="http\://codelutin.com">Codelutin</a>.</p><hr/><br/><p>Pour plus d'informations, vous pouvez visiter le <a href\="http\://maven-site.forge.codelutin.com/tutti">site du projet</a>.</p><p>Projet hébergé sur la forge <a href\="http\://forge.codelutin.com/projects/tutti">Forge.codelutin.com</a>.</p>
tutti.about.title=À propos de Tutti
-tutti.about.translate.content=<h2>Comment traduire Tutti</h2>Vous pouvez nous aider à traduire Tutti.<hr/><br/><ul><li>Récupérer le fichier <strong>tutti-i18n.csv</strong> dans le répertoire <strong>i18n</strong></li><li>ouvrez le avec un tableur (le caractère séprateur est une Tabultation)</li><li>Traduisez, Améliorer, ...</li><li>Enfin renvoyez-le nous</li></ul><br/>Nous intégrerons vos modifications avant la prochaine version.
+tutti.about.translate.content=<h2>Comment traduire Tutti</h2>Vous pouvez nous aider à traduire Tutti.<hr/><br/><ul><li>Récupérer le fichier <a href\="%s">tutti-i18n.csv</a> dans le répertoire <strong>i18n</strong></li><li>ouvrez le avec un tableur (le caractère séprateur est une Tabultation)</li><li>Traduisez, Améliorer, ...</li><li>Enfin renvoyez-le nous</li></ul><br/>Nous intégrerons vos modifications avant la prochaine version.
tutti.about.translate.title=Traduire Tutti
+tutti.about.update.app.noup.detail=<tr><td>%1$s</td><td>%2$s</td><td>%2$s<td><td></td></tr>
+tutti.about.update.app.up.detail=<tr><td>%1$s</td><td>%2$s</td><td><strong>%3$s</strong></td><td><a href\="%4$s">Mettre à jour</a><td></tr>
+tutti.about.update.content=<h2>Mise à jour de Tutti</h2><p>Fichier des mises à jour \: <a href\="%1$s">%1$s</a></p><br/><hr/><br/><table><CAPTION><EM>Mises à jour des modules</EM></CAPTION><tr><th>Module</th><th>Version installée</th><th>Dernière version</th><th></th></tr>%2$s</table>
+tutti.about.update.title=Mise à jour Tutti
tutti.attachmentEditor.action.add.mnemonic=A
tutti.attachmentEditor.action.add.tip=Ajouter une pièce jointe
tutti.attachmentEditor.action.close=Fermer
@@ -767,6 +770,7 @@
tutti.main.action.updateApplication=Vérifier les mises à jour
tutti.main.action.updateApplication.mnemonic=V
tutti.main.action.updateApplication.tip=Vérifier les mises à jour logicielles
+tutti.main.action.updateSpecificApplication.tip=Mettre à jour le module <strong>%s</strong>
tutti.main.action.validateCatches=Valider les captures
tutti.main.action.validateCatches.mnemonic=V
tutti.main.action.validateCatches.tip=Valider les captures
@@ -936,6 +940,11 @@
tutti.splitSpeciesBatch.title=Catégorisation du lot
tutti.timeeditor.H=H
tutti.to.be.done=< A FAIRE >
+tutti.update.db=Base de données
+tutti.update.help=Aide en ligne
+tutti.update.i18n=Traductions
+tutti.update.jre=Java
+tutti.update.tutti=Tutti
tutti.validator.error.comment.too.long=Taille de commentaire trop longue (limitée à %s caractères)
tutti.validator.error.createSpeciesBatch.batchWeight.invalidValue=Le poids du lot doit être strictement positif
tutti.validator.error.createSpeciesBatch.sortedUnsortedCategory.required=La catégorie Vrac / Hors Vrac est obligatoire
1
0
24 Mar '13
Author: tchemit
Date: 2013-03-24 13:59:45 +0100 (Sun, 24 Mar 2013)
New Revision: 672
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/672
Log:
fixes #2189: [TECH] Le fichier d'aide ?\195?\160 la traduction n'est pas embarqu?\195?\169
Modified:
trunk/tutti-ui-swing/src/main/assembly/tutti-full-component.xml
Modified: trunk/tutti-ui-swing/src/main/assembly/tutti-full-component.xml
===================================================================
--- trunk/tutti-ui-swing/src/main/assembly/tutti-full-component.xml 2013-03-24 12:57:25 UTC (rev 671)
+++ trunk/tutti-ui-swing/src/main/assembly/tutti-full-component.xml 2013-03-24 12:59:45 UTC (rev 672)
@@ -100,6 +100,7 @@
<outputDirectory>i18n</outputDirectory>
<includes>
<include>tutti-i18n*.properties</include>
+ <include>tutti-i18n*.csv</include>
</includes>
</fileSet>
1
0
24 Mar '13
Author: tchemit
Date: 2013-03-24 13:57:25 +0100 (Sun, 24 Mar 2013)
New Revision: 671
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/671
Log:
fixes #2188: La mise ?\195?\160 jour de l'aide n'est pas prise en compte
Modified:
trunk/tutti-ui-swing/src/main/assembly/min/update.bat
trunk/tutti-ui-swing/src/main/assembly/min/update.sh
Modified: trunk/tutti-ui-swing/src/main/assembly/min/update.bat
===================================================================
--- trunk/tutti-ui-swing/src/main/assembly/min/update.bat 2013-03-24 12:56:17 UTC (rev 670)
+++ trunk/tutti-ui-swing/src/main/assembly/min/update.bat 2013-03-24 12:57:25 UTC (rev 671)
@@ -29,7 +29,7 @@
:i18n
-if not exist "NEW\i18n" goto end
+if not exist "NEW\i18n" goto help
rem deplacement de l'ancien i18n
set /p oldVersion=<i18n\version.appup
@@ -40,6 +40,19 @@
move i18n "%backupdir%"
move NEW\i18n i18n
+:help
+
+if not exist "NEW\help" goto end
+
+rem deplacement de l'ancien help
+set /p oldVersion=<help\version.appup
+set /p newVersion=<NEW\help\version.appup
+set backupdir=OLD\tutti-%oldVersion: =%-%BACKUP_DATE: =%
+echo Update help version %oldVersion: =% to %newVersion: =% old help keep in "%backupdir%"
+if not exist "OLD" mkdir OLD
+move help "%backupdir%"
+move NEW\help help
+
:end
if exist "NEW" rmdir /Q NEW
\ No newline at end of file
Modified: trunk/tutti-ui-swing/src/main/assembly/min/update.sh
===================================================================
--- trunk/tutti-ui-swing/src/main/assembly/min/update.sh 2013-03-24 12:56:17 UTC (rev 670)
+++ trunk/tutti-ui-swing/src/main/assembly/min/update.sh 2013-03-24 12:57:25 UTC (rev 671)
@@ -38,5 +38,16 @@
mv NEW/i18n .
fi
+if [ -d NEW/help ]; then
+ oldVersion=`cat help/version.appup`
+ newVersion=`cat NEW/help/version.appup`
+ echo "Update help version $oldVersion to $newVersion"
+ mkdir -p OLD
+ backupdir=OLD/help-$oldVersion-$BACKUP_DATE
+ echo "Backup help old version to $backupdir"
+ mv help $backupdir
+ mv NEW/help .
+fi
+
rm -rf NEW
1
0
r670 - trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/attachment
by tchemit@users.forge.codelutin.com 24 Mar '13
by tchemit@users.forge.codelutin.com 24 Mar '13
24 Mar '13
Author: tchemit
Date: 2013-03-24 13:56:17 +0100 (Sun, 24 Mar 2013)
New Revision: 670
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/670
Log:
use Tutti helper class
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/attachment/AttachmentEditorUIHandler.java
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/attachment/AttachmentEditorUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/attachment/AttachmentEditorUIHandler.java 2013-03-23 23:46:38 UTC (rev 669)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/attachment/AttachmentEditorUIHandler.java 2013-03-24 12:56:17 UTC (rev 670)
@@ -242,7 +242,7 @@
public void openAttachment(Attachment attachment) {
File file = persistenceService.getAttachmentFile(attachment.getId());
- SwingUtil.openLink("file://" + file.getAbsolutePath());
+ TuttiUIUtil.openLink(file.toURI());
}
public void saveAttachment(Attachment attachment) {
1
0
r669 - in trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing: . content content/config content/db content/home content/operation content/operation/catches util util/action
by tchemit@users.forge.codelutin.com 23 Mar '13
by tchemit@users.forge.codelutin.com 23 Mar '13
23 Mar '13
Author: tchemit
Date: 2013-03-24 00:46:38 +0100 (Sun, 24 Mar 2013)
New Revision: 669
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/669
Log:
refs #2056: [TECH] Am?\195?\169liorer le processus de mise ?\195?\160 jour de l'application
amelioration api d'action
Added:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionHelper.java
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/RunTutti.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiHelpBroker.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateApplicationAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/config/TuttiConfigUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/ExportAndCleanDbAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/ImportDbAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/InstallDbAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/CancelEditFishingOperationAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/CancelEditCatchBatchAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiUIAction.java
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/RunTutti.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/RunTutti.java 2013-03-23 19:21:10 UTC (rev 668)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/RunTutti.java 2013-03-23 23:46:38 UTC (rev 669)
@@ -24,19 +24,16 @@
* #L%
*/
-import fr.ifremer.tutti.TuttiTechnicalException;
import fr.ifremer.tutti.ui.swing.config.TuttiApplicationConfig;
import fr.ifremer.tutti.ui.swing.content.MainUI;
import fr.ifremer.tutti.ui.swing.content.MainUIHandler;
import fr.ifremer.tutti.ui.swing.content.UpdateApplicationAction;
import fr.ifremer.tutti.ui.swing.util.TuttiExceptionHandler;
-import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction;
-import fr.ifremer.tutti.ui.swing.util.action.TuttiUIAction;
+import fr.ifremer.tutti.ui.swing.util.action.TuttiActionHelper;
import jaxx.runtime.SwingUtil;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.plaf.BorderUIResource;
import java.awt.Color;
@@ -71,7 +68,7 @@
new TuttiApplicationConfig("tutti.config", args);
// Create application context
- final TuttiUIContext context = TuttiUIContext.newContext(config);
+ TuttiUIContext context = TuttiUIContext.newContext(config);
// prepare context (mainly init configs, i18n)
context.init();
@@ -96,30 +93,8 @@
}
// try to update jre - i18n - application - help and exit if so
- MainUIHandler handler = new MainUIHandler(context);
- AbstractTuttiAction.runAction(new UpdateApplicationAction(handler));
-
- //FIXME-TC Msut use this later (version 1.2)
-// try {
-// SwingUtilities.invokeAndWait(
-// new Runnable() {
-// @Override
-// public void run() {
-//
-// TuttiUIAction<UpdateApplicationAction> uiAction =
-// handler.createUIAction(null, UpdateApplicationAction.class);
-// uiAction.actionPerformed(null);
-// if (log.isInfoEnabled()) {
-// log.info("After action.");
-// }
-// }
-// }
-// );
-// } catch (Exception e) {
-// throw new TuttiTechnicalException("Could not update application", e);
-// }
-
-
+ TuttiActionHelper.runActionAndWait(new MainUIHandler(context),
+ UpdateApplicationAction.class);
}
if (log.isInfoEnabled()) {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiHelpBroker.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiHelpBroker.java 2013-03-23 19:21:10 UTC (rev 668)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiHelpBroker.java 2013-03-23 23:46:38 UTC (rev 669)
@@ -24,6 +24,7 @@
* #L%
*/
+import com.google.common.base.Preconditions;
import jaxx.runtime.JAXXObject;
import jaxx.runtime.SwingUtil;
import jaxx.runtime.awt.visitor.BuildTreeVisitor;
@@ -60,9 +61,7 @@
@Override
public void prepareUI(JAXXObject c) {
- if (c == null) {
- throw new NullPointerException("parameter c can not be null!");
- }
+ Preconditions.checkNotNull(c, "parameter c can not be null!");
// l'ui doit avoir un boutton showHelp
AbstractButton help = getShowHelpButton(c);
@@ -91,8 +90,10 @@
@Override
public String findHelpId(Component comp) {
- JAXXHelpUI parentContainer = SwingUtil.getParent(comp,
- JAXXHelpUI.class);
+ if (comp == null) {
+ comp = TuttiUIContext.getApplicationContext().getMainUI();
+ }
+ JAXXHelpUI parentContainer = SwingUtil.getParent(comp, JAXXHelpUI.class);
String result;
if (parentContainer != null && this != parentContainer.getBroker()) {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUIHandler.java 2013-03-23 19:21:10 UTC (rev 668)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUIHandler.java 2013-03-23 23:46:38 UTC (rev 669)
@@ -50,6 +50,7 @@
import fr.ifremer.tutti.ui.swing.util.RemoveablePropertyChangeListener;
import fr.ifremer.tutti.ui.swing.util.TuttiUI;
import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
+import fr.ifremer.tutti.ui.swing.util.action.TuttiActionHelper;
import fr.ifremer.tutti.ui.swing.util.action.TuttiActionUI;
import fr.ifremer.tutti.ui.swing.util.action.TuttiUIAction;
import jaxx.runtime.SwingUtil;
@@ -188,7 +189,7 @@
// db already opened (happens when reloading ui)
// just go to select cruise screen
- TuttiUIAction<SelectCruiseAction> uiAction = createUIAction(null, SelectCruiseAction.class);
+ TuttiUIAction<SelectCruiseAction> uiAction = TuttiActionHelper.createUIAction(this, SelectCruiseAction.class);
SelectCruiseAction logicAction = uiAction.getLogicAction();
logicAction.setSkipCheckCurrentScreen(true);
logicAction.setActionDescription(ui.getMenuActionSelectCruise().getToolTipText());
@@ -199,7 +200,7 @@
if (context.isDbExist()) {
// open tutti db (using a fake button to have simple api)
- TuttiUIAction<OpenDbAction> uiAction = createUIAction(null, OpenDbAction.class);
+ TuttiUIAction<OpenDbAction> uiAction = TuttiActionHelper.createUIAction(this, OpenDbAction.class);
OpenDbAction logicAction = uiAction.getLogicAction();
logicAction.setSkipCheckCurrentScreen(true);
uiAction.actionPerformed(null);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateApplicationAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateApplicationAction.java 2013-03-23 19:21:10 UTC (rev 668)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/UpdateApplicationAction.java 2013-03-23 23:46:38 UTC (rev 669)
@@ -36,6 +36,8 @@
import java.io.File;
+import static org.nuiton.i18n.I18n._;
+
/**
* To update jre / i18n or tutti using the {@link ApplicationUpdater} mecanism.
*
@@ -50,6 +52,7 @@
public UpdateApplicationAction(MainUIHandler handler) {
super(handler, true);
+ setActionDescription(_("tutti.main.action.updateApplication.tip"));
}
@Override
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/config/TuttiConfigUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/config/TuttiConfigUIHandler.java 2013-03-23 19:21:10 UTC (rev 668)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/config/TuttiConfigUIHandler.java 2013-03-23 23:46:38 UTC (rev 669)
@@ -34,6 +34,7 @@
import fr.ifremer.tutti.ui.swing.content.ReloadTuttiAction;
import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler;
import fr.ifremer.tutti.ui.swing.util.TuttiUI;
+import fr.ifremer.tutti.ui.swing.util.action.TuttiActionHelper;
import fr.ifremer.tutti.ui.swing.util.action.TuttiUIAction;
import fr.ifremer.tutti.ui.swing.util.editor.VesselTableCell;
import jaxx.runtime.SwingUtil;
@@ -190,10 +191,9 @@
@Override
public void run() {
- TuttiUIAction<GoToPreviousScreenAction> action =
- getContext().getMainUI().getHandler().createUIAction(
- null, GoToPreviousScreenAction.class);
- action.actionPerformed(null);
+ TuttiActionHelper.runAction(
+ getContext().getMainUI().getHandler(), GoToPreviousScreenAction.class);
+
}
});
ConfigUI configUI = helper.buildUI(
@@ -215,7 +215,8 @@
MainUIHandler handler = getContext().getMainUI().getHandler();
TuttiUIAction<ReloadTuttiAction> action =
- handler.createUIAction(null, ReloadTuttiAction.class);
+ TuttiActionHelper.createUIAction(handler, ReloadTuttiAction.class);
+ action.launchActionAndWait();
action.actionPerformed(null);
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/ExportAndCleanDbAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/ExportAndCleanDbAction.java 2013-03-23 19:21:10 UTC (rev 668)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/ExportAndCleanDbAction.java 2013-03-23 23:46:38 UTC (rev 669)
@@ -32,6 +32,7 @@
import fr.ifremer.tutti.ui.swing.content.AbstractMainUITuttiAction;
import fr.ifremer.tutti.ui.swing.content.MainUIHandler;
import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
+import fr.ifremer.tutti.ui.swing.util.action.TuttiActionHelper;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -103,8 +104,9 @@
progressionModel.setMessage("Fermeture de la base courante");
- runAction(getHandler().createLogicAction(CloseDbAction.class));
+ TuttiActionHelper.runAction(getHandler(), CloseDbAction.class);
+
PersistenceService persistenceService =
getContext().getPersistenceService();
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/ImportDbAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/ImportDbAction.java 2013-03-23 19:21:10 UTC (rev 668)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/ImportDbAction.java 2013-03-23 23:46:38 UTC (rev 669)
@@ -30,6 +30,7 @@
import fr.ifremer.tutti.ui.swing.content.AbstractMainUITuttiAction;
import fr.ifremer.tutti.ui.swing.content.MainUIHandler;
import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
+import fr.ifremer.tutti.ui.swing.util.action.TuttiActionHelper;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -108,7 +109,7 @@
progressionModel.increments(1);
progressionModel.setMessage("Ouverture de la base de données");
- runAction(getHandler().createLogicAction(OpenDbAction.class));
+ TuttiActionHelper.runAction(getHandler(), OpenDbAction.class);
}
@Override
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/InstallDbAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/InstallDbAction.java 2013-03-23 19:21:10 UTC (rev 668)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/InstallDbAction.java 2013-03-23 23:46:38 UTC (rev 669)
@@ -30,6 +30,7 @@
import fr.ifremer.tutti.ui.swing.config.TuttiApplicationConfig;
import fr.ifremer.tutti.ui.swing.content.AbstractMainUITuttiAction;
import fr.ifremer.tutti.ui.swing.content.MainUIHandler;
+import fr.ifremer.tutti.ui.swing.util.action.TuttiActionHelper;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.util.updater.ApplicationUpdater;
@@ -82,7 +83,7 @@
getContext().setDbExist(true);
// open db
- runAction(getHandler().createLogicAction(OpenDbAction.class));
+ TuttiActionHelper.runAction(getHandler(), OpenDbAction.class);
}
@Override
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java 2013-03-23 19:21:10 UTC (rev 668)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java 2013-03-23 23:46:38 UTC (rev 669)
@@ -31,6 +31,7 @@
import fr.ifremer.tutti.service.PersistenceService;
import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler;
import fr.ifremer.tutti.ui.swing.util.TuttiUI;
+import fr.ifremer.tutti.ui.swing.util.action.TuttiActionHelper;
import jaxx.runtime.swing.editor.bean.BeanFilterableComboBox;
import jaxx.runtime.validator.swing.SwingValidator;
import org.apache.commons.collections.CollectionUtils;
@@ -174,7 +175,7 @@
boolean noProgram = newValue == null;
context.setProgramId(noProgram ? null : newValue.getId());
if (log.isInfoEnabled()) {
- log.info("Selected program: "+newValue);
+ log.info("Selected program: " + newValue);
}
List<Cruise> cruises;
if (noProgram) {
@@ -252,7 +253,7 @@
public void startExistingProtocolAction(MouseEvent event) {
JComboBox existingProtocolCombo = (JComboBox) event.getSource();
- doAction((AbstractButton) existingProtocolCombo.getItemAt(0), null);
+ TuttiActionHelper.runAction((AbstractButton) existingProtocolCombo.getItemAt(0));
}
public void startExistingProtocolAction(ActionEvent event) {
@@ -265,13 +266,13 @@
// (see http://forge.codelutin.com/issues/2032)
existingProtocolCombo.setSelectedIndex(0);
existingProtocolCombo.hidePopup();
- doAction(selectedAction, event);
+ TuttiActionHelper.runAction(selectedAction);
}
}
public void startNewProtocolAction(MouseEvent event) {
JComboBox newProtocolCombo = (JComboBox) event.getSource();
- doAction((AbstractButton) newProtocolCombo.getItemAt(0), null);
+ TuttiActionHelper.runAction((AbstractButton) newProtocolCombo.getItemAt(0));
}
public void startNewProtocolAction(ActionEvent event) {
@@ -283,6 +284,6 @@
// (see http://forge.codelutin.com/issues/2032)
newProtocolCombo.setSelectedIndex(0);
newProtocolCombo.hidePopup();
- doAction(selectedAction, event);
+ TuttiActionHelper.runAction(selectedAction);
}
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/CancelEditFishingOperationAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/CancelEditFishingOperationAction.java 2013-03-23 19:21:10 UTC (rev 668)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/CancelEditFishingOperationAction.java 2013-03-23 23:46:38 UTC (rev 669)
@@ -26,6 +26,7 @@
*/
import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction;
+import fr.ifremer.tutti.ui.swing.util.action.TuttiActionHelper;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -53,7 +54,8 @@
public EditFishingOperationAction getEditAction() {
if (editAction == null) {
- editAction = getHandler().getParentUi().getHandler().createLogicAction(
+ editAction = TuttiActionHelper.createLogicAction(
+ getHandler().getParentUi().getHandler(),
EditFishingOperationAction.class);
}
return editAction;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-03-23 19:21:10 UTC (rev 668)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-03-23 23:46:38 UTC (rev 669)
@@ -46,6 +46,7 @@
import fr.ifremer.tutti.ui.swing.util.TabHandler;
import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor;
import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
+import fr.ifremer.tutti.ui.swing.util.action.TuttiActionHelper;
import fr.ifremer.tutti.ui.swing.util.editor.CoordinateEditorType;
import jaxx.runtime.validator.swing.SwingValidator;
import org.apache.commons.collections.CollectionUtils;
@@ -347,7 +348,7 @@
public void propertyChange(PropertyChangeEvent evt) {
JButton button = ui.getCancelButton();
CancelEditFishingOperationAction action =
- getLogicAction(button);
+ TuttiActionHelper.getLogicAction(button);
if (evt.getNewValue() == null) {
button.setText(_("tutti.editFishingOperation.action.cancelEditFishingOperation"));
button.setToolTipText(_("tutti.editFishingOperation.action.cancelEditFishingOperation.tip"));
@@ -408,12 +409,12 @@
ActionEvent event = new ActionEvent(this, newIndex, null);
switch (answer) {
case JOptionPane.OK_OPTION:
- doAction(ui.getSaveButton(), event);
+ TuttiActionHelper.runAction(ui.getSaveButton());
result = true;
break;
case JOptionPane.NO_OPTION:
- doAction(ui.getCancelButton(), event);
+ TuttiActionHelper.runAction(ui.getCancelButton());
result = true;
break;
default:
@@ -430,8 +431,7 @@
if (result) {
// ok will revert any modification
- ActionEvent event = new ActionEvent(this, newIndex, null);
- doAction(ui.getCancelButton(), event);
+ TuttiActionHelper.runAction(ui.getCancelButton());
}
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java 2013-03-23 19:21:10 UTC (rev 668)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java 2013-03-23 23:46:38 UTC (rev 669)
@@ -34,6 +34,7 @@
import fr.ifremer.tutti.ui.swing.util.CloseableUI;
import fr.ifremer.tutti.ui.swing.util.TuttiUI;
import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction;
+import fr.ifremer.tutti.ui.swing.util.action.TuttiActionHelper;
import jaxx.runtime.validator.swing.SwingValidator;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -114,7 +115,7 @@
initUI(ui);
editFishingOperationAction =
- createLogicAction(EditFishingOperationAction.class);
+ TuttiActionHelper.createLogicAction(this, EditFishingOperationAction.class);
FishingOperationsUIModel model = getModel();
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/CancelEditCatchBatchAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/CancelEditCatchBatchAction.java 2013-03-23 19:21:10 UTC (rev 668)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/CancelEditCatchBatchAction.java 2013-03-23 23:46:38 UTC (rev 669)
@@ -29,6 +29,7 @@
import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
import fr.ifremer.tutti.ui.swing.content.operation.EditFishingOperationAction;
import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction;
+import fr.ifremer.tutti.ui.swing.util.action.TuttiActionHelper;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -59,7 +60,8 @@
public EditFishingOperationAction getEditAction() {
if (editAction == null) {
- editAction = getHandler().getParentHandler().createLogicAction(EditFishingOperationAction.class);
+ editAction = TuttiActionHelper.createLogicAction( getHandler().getParentHandler(),
+ EditFishingOperationAction.class);
}
return editAction;
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java 2013-03-23 19:21:10 UTC (rev 668)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java 2013-03-23 23:46:38 UTC (rev 669)
@@ -33,6 +33,7 @@
import fr.ifremer.tutti.ui.swing.util.TabHandler;
import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor;
import fr.ifremer.tutti.ui.swing.util.TuttiUI;
+import fr.ifremer.tutti.ui.swing.util.action.TuttiActionHelper;
import jaxx.runtime.swing.CardLayout2Ext;
import jaxx.runtime.validator.swing.SwingValidator;
import org.apache.commons.logging.Log;
@@ -42,7 +43,6 @@
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
-import java.awt.event.ActionEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.Set;
@@ -204,7 +204,7 @@
case JOptionPane.OK_OPTION:
// persist catch batch
- doAction(getUI().getSaveButton(), null);
+ TuttiActionHelper.runAction(getUI().getSaveButton());
result = true;
break;
@@ -215,7 +215,7 @@
// so since we will edit a new operation, nothing to do here
// persist catch batch
- doAction(getUI().getCancelButton(), null);
+ TuttiActionHelper.runAction(getUI().getCancelButton());
result = true;
break;
@@ -233,8 +233,7 @@
if (result) {
// ok will revert any modification
- ActionEvent event = new ActionEvent(this, newIndex, null);
- doAction(ui.getCancelButton(), event);
+ TuttiActionHelper.runAction(ui.getCancelButton());
}
}
@@ -350,7 +349,7 @@
}
}
}
-
+
public void selectCatchTotalSortedWeightPanel(Vessel vessel) {
String card;
String carousselTremieVesselId = getConfig().getTremieCarousselVesselId();
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java 2013-03-23 19:21:10 UTC (rev 668)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java 2013-03-23 23:46:38 UTC (rev 669)
@@ -27,19 +27,17 @@
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
-import fr.ifremer.tutti.TuttiTechnicalException;
+import fr.ifremer.tutti.LabelAware;
import fr.ifremer.tutti.persistence.entities.IdAware;
import fr.ifremer.tutti.service.DecoratorService;
-import fr.ifremer.tutti.LabelAware;
import fr.ifremer.tutti.ui.swing.TuttiDataContext;
import fr.ifremer.tutti.ui.swing.TuttiUIContext;
import fr.ifremer.tutti.ui.swing.config.TuttiApplicationConfig;
-import fr.ifremer.tutti.ui.swing.content.AbstractMainUITuttiAction;
import fr.ifremer.tutti.ui.swing.content.MainUI;
import fr.ifremer.tutti.ui.swing.content.MainUIHandler;
import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction;
+import fr.ifremer.tutti.ui.swing.util.action.TuttiActionHelper;
import fr.ifremer.tutti.ui.swing.util.action.TuttiActionUI;
-import fr.ifremer.tutti.ui.swing.util.action.TuttiUIAction;
import fr.ifremer.tutti.ui.swing.util.attachment.ButtonAttachment;
import fr.ifremer.tutti.ui.swing.util.editor.SimpleTimeEditor;
import jaxx.runtime.JAXXUtil;
@@ -49,7 +47,6 @@
import jaxx.runtime.swing.editor.bean.BeanFilterableComboBox;
import jaxx.runtime.swing.renderer.DecoratorListCellRenderer;
import jaxx.runtime.validator.swing.SwingValidator;
-import org.apache.commons.lang3.reflect.ConstructorUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jdesktop.swingx.JXDatePicker;
@@ -395,58 +392,58 @@
protected <A extends AbstractTuttiAction> void initAction(AbstractButton abstractButton,
Class<A> actionName) {
- Action action = createUIAction(abstractButton, actionName);
+ Action action = TuttiActionHelper.createUIAction(this, abstractButton, actionName);
abstractButton.setAction(action);
}
- public <A extends AbstractTuttiAction> TuttiUIAction<A> createUIAction(AbstractButton abstractButton,
- Class<A> actionName) {
- try {
+// public <A extends AbstractTuttiAction> TuttiUIAction<A> createUIAction(AbstractButton abstractButton,
+// Class<A> actionName) {
+// try {
+//
+// // create logic action
+// A logicAction = createLogicAction(actionName);
+//
+// // create ui action
+// TuttiUIAction<A> result = new TuttiUIAction<A>(abstractButton,
+// logicAction);
+// return result;
+// } catch (Exception e) {
+// throw new TuttiTechnicalException(
+// "Could not instanciate action " + actionName, e);
+// }
+//
+// }
- // create logic action
- A logicAction = createLogicAction(actionName);
+// public <A extends AbstractTuttiAction> A createLogicAction(Class<A> actionName) {
+// try {
+//
+// AbstractTuttiUIHandler handler = this;
+//
+// if (AbstractMainUITuttiAction.class.isAssignableFrom(actionName) &&
+// getContext().getMainUI() != null) {
+// handler = getContext().getMainUI().getHandler();
+// }
+//
+// // create action
+// A result = ConstructorUtils.invokeConstructor(actionName, handler);
+// return result;
+// } catch (Exception e) {
+// throw new RuntimeException(
+// "Could not instanciate action " + actionName, e);
+// }
+// }
- // create ui action
- TuttiUIAction<A> result = new TuttiUIAction<A>(abstractButton,
- logicAction);
- return result;
- } catch (Exception e) {
- throw new TuttiTechnicalException(
- "Could not instanciate action " + actionName, e);
- }
+// public <A extends AbstractTuttiAction> A getLogicAction(AbstractButton b) {
+// Action action = b.getAction();
+// Preconditions.checkNotNull(action);
+// Preconditions.checkState(action instanceof TuttiUIAction);
+// return ((TuttiUIAction<A>) action).getLogicAction();
+// }
- }
+// protected void doAction(AbstractButton button, ActionEvent event) {
+// button.getAction().actionPerformed(event);
+// }
- public <A extends AbstractTuttiAction> A createLogicAction(Class<A> actionName) {
- try {
-
- AbstractTuttiUIHandler handler = this;
-
- if (AbstractMainUITuttiAction.class.isAssignableFrom(actionName) &&
- getContext().getMainUI() != null) {
- handler = getContext().getMainUI().getHandler();
- }
-
- // create action
- A result = ConstructorUtils.invokeConstructor(actionName, handler);
- return result;
- } catch (Exception e) {
- throw new RuntimeException(
- "Could not instanciate action " + actionName, e);
- }
- }
-
- public <A extends AbstractTuttiAction> A getLogicAction(AbstractButton b) {
- Action action = b.getAction();
- Preconditions.checkNotNull(action);
- Preconditions.checkState(action instanceof TuttiUIAction);
- return ((TuttiUIAction<A>) action).getLogicAction();
- }
-
- protected void doAction(AbstractButton button, ActionEvent event) {
- button.getAction().actionPerformed(event);
- }
-
protected boolean quitScreen(boolean modelIsValid,
boolean modelIsModify,
String askGiveUpMessage,
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionHelper.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionHelper.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionHelper.java 2013-03-23 23:46:38 UTC (rev 669)
@@ -0,0 +1,103 @@
+package fr.ifremer.tutti.ui.swing.util.action;
+
+import com.google.common.base.Preconditions;
+import fr.ifremer.tutti.TuttiTechnicalException;
+import fr.ifremer.tutti.ui.swing.content.AbstractMainUITuttiAction;
+import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler;
+import org.apache.commons.lang3.reflect.ConstructorUtils;
+
+import javax.swing.AbstractButton;
+import javax.swing.Action;
+import java.awt.event.ActionEvent;
+
+/**
+ * Useful method around TuttiUIAction.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.2
+ */
+public class TuttiActionHelper {
+
+ public static <A extends AbstractTuttiAction> void runAction(AbstractTuttiUIHandler handler,
+ Class<A> actionName) {
+ Throwable error = null;
+
+ A action = createLogicAction(handler, actionName);
+ try {
+ action.doAction();
+ action.postSuccessAction();
+ } catch (Throwable e) {
+ error = e;
+ throw TuttiActionException.propagateError(action, e);
+ } finally {
+ if (error != null) {
+ action.postFailedAction(error);
+ }
+ action.releaseAction();
+ }
+ }
+
+ public static void runAction(AbstractButton button) {
+ button.getAction().actionPerformed(null);
+ }
+
+ public static <A extends AbstractTuttiAction> TuttiUIAction<A> runActionAndWait(AbstractTuttiUIHandler handler,
+ Class<A> actionName) {
+ TuttiUIAction<A> uiAction = createUIAction(handler, null, actionName);
+ uiAction.launchActionAndWait();
+ return uiAction;
+
+ }
+
+
+ public static <A extends AbstractTuttiAction> TuttiUIAction<A> createUIAction(AbstractTuttiUIHandler handler,
+ Class<A> actionName) {
+ return createUIAction(handler, null,actionName);
+
+ }
+
+
+ public static <A extends AbstractTuttiAction> TuttiUIAction<A> createUIAction(AbstractTuttiUIHandler handler,
+ AbstractButton abstractButton,
+ Class<A> actionName) {
+ try {
+
+ // create logic action
+ A logicAction = createLogicAction(handler, actionName);
+
+ // create ui action
+ TuttiUIAction<A> result = new TuttiUIAction<A>(abstractButton,
+ logicAction);
+ return result;
+ } catch (Exception e) {
+ throw new TuttiTechnicalException(
+ "Could not instanciate action " + actionName, e);
+ }
+
+ }
+
+ public static <A extends AbstractTuttiAction> A createLogicAction(AbstractTuttiUIHandler handler,
+ Class<A> actionName) {
+ try {
+
+ if (AbstractMainUITuttiAction.class.isAssignableFrom(actionName) &&
+ handler.getContext().getMainUI() != null) {
+ handler = handler.getContext().getMainUI().getHandler();
+ }
+
+ // create action
+ A result = ConstructorUtils.invokeConstructor(actionName, handler);
+ return result;
+ } catch (Exception e) {
+ throw new RuntimeException(
+ "Could not instanciate action " + actionName, e);
+ }
+ }
+
+ public static <A extends AbstractTuttiAction> A getLogicAction(AbstractButton b) {
+ Action action = b.getAction();
+ Preconditions.checkNotNull(action);
+ Preconditions.checkState(action instanceof TuttiUIAction);
+ return ((TuttiUIAction<A>) action).getLogicAction();
+ }
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionHelper.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiUIAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiUIAction.java 2013-03-23 19:21:10 UTC (rev 668)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiUIAction.java 2013-03-23 23:46:38 UTC (rev 669)
@@ -24,6 +24,7 @@
* #L%
*/
+import fr.ifremer.tutti.persistence.entities.referential.ObjectType;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -55,6 +56,10 @@
private static final String LOGIC_ACTION = "logicAction";
+ private final Object lock = new ObjectType();
+
+ private boolean wait;
+
public TuttiUIAction(AbstractButton button, A action) {
putValue(LOGIC_ACTION, action);
@@ -69,6 +74,13 @@
}
}
+ public void launchActionAndWait() {
+ wait = true;
+ actionPerformed(null);
+ lock();
+ }
+
+
@Override
public final void actionPerformed(final ActionEvent event) {
@@ -120,24 +132,26 @@
public void run() {
A action = getLogicAction();
-
try {
- worker.get();
- } catch (ExecutionException e) {
- // don't care .
- } catch (CancellationException e) {
- // dont care ?
+ try {
+ worker.get();
+ } catch (ExecutionException e) {
+ // don't care .
+ } catch (CancellationException e) {
+ // dont care ?
+ } catch (InterruptedException e) {
+ // don't care ?
+ }
+ if (log.isInfoEnabled()) {
+ log.info("After execute of action " + action + " (worker done? " + worker.isDone() + ")");
+ }
- } catch (InterruptedException e) {
- // don't care ?
- }
- if (log.isInfoEnabled()) {
- log.info("After execute of action " + action + " (worker done? " + worker.isDone() + ")");
- }
+ if (worker.isFailed()) {
- if (worker.isFailed()) {
-
- throw TuttiActionException.propagateError(action, worker.getError());
+ throw TuttiActionException.propagateError(action, worker.getError());
+ }
+ } finally {
+ unlock();
}
}
}
@@ -145,8 +159,13 @@
} else {
- // release action
- action.releaseAction();
+ try {
+ // release action
+ action.releaseAction();
+
+ } finally {
+ unlock();
+ }
}
}
@@ -176,4 +195,27 @@
return (A) getValue(LOGIC_ACTION);
}
+ protected void lock() {
+ if (wait) {
+ synchronized (lock) {
+ try {
+
+ lock.wait();
+
+ } catch (InterruptedException e) {
+ throw TuttiActionException.propagateError(getLogicAction(), e);
+ } finally {
+ wait = false;
+ }
+ }
+ }
+ }
+
+ protected void unlock() {
+ if (wait) {
+ synchronized (lock) {
+ lock.notifyAll();
+ }
+ }
+ }
}
1
0
23 Mar '13
Author: tchemit
Date: 2013-03-23 20:21:10 +0100 (Sat, 23 Mar 2013)
New Revision: 668
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/668
Log:
fixes #2186: [CAMPAGNE] Navire - remplacer la double liste par une simple liste
Modified:
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java
trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java
trunk/tutti-persistence/src/main/xmi/tutti-persistence.properties
trunk/tutti-persistence/src/main/xmi/tutti-persistence.zargo
trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceWriteTest.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIModel.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/NewFishingOperationAction.java
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIModel-error-validation.xml
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java 2013-03-23 18:46:00 UTC (rev 667)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java 2013-03-23 19:21:10 UTC (rev 668)
@@ -36,6 +36,7 @@
import fr.ifremer.tutti.persistence.entities.data.FishingOperationAware;
import fr.ifremer.tutti.persistence.entities.referential.Caracteristic;
import fr.ifremer.tutti.persistence.entities.referential.CaracteristicType;
+import fr.ifremer.tutti.persistence.entities.referential.Gear;
import fr.ifremer.tutti.persistence.entities.referential.Species;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.logging.Log;
@@ -78,6 +79,20 @@
};
+ public static final Predicate<Gear> IS_FISHING_GEAR = new Predicate<Gear>() {
+
+ public boolean apply(Gear input) {
+ return !input.isScientificGear();
+ }
+ };
+
+ public static final Predicate<Gear> IS_SCIENTIFIC_GEAR = new Predicate<Gear>() {
+
+ public boolean apply(Gear input) {
+ return input.isScientificGear();
+ }
+ };
+
/** Logger. */
private static final Log log = LogFactory.getLog(TuttiEntities.class);
Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java 2013-03-23 18:46:00 UTC (rev 667)
+++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java 2013-03-23 19:21:10 UTC (rev 668)
@@ -87,8 +87,6 @@
private static final Log log =
LogFactory.getLog(CruisePersistenceServiceImpl.class);
- protected static String CRUISE_MISC_DATA_VESSELS_TAG = "#VESSELS=";
-
protected static String CRUISE_MISC_DATA_MANAGERS_TAG = "#MANAGERS=";
protected static String CRUISE_MISC_DATA_SORT_MANAGERS_TAG = "#SORT_MANAGERS=";
@@ -193,7 +191,7 @@
String vesselCode = (String) source[8];
Vessel vessel = referentialService.getVessel(vesselCode);
- result.setVessel(Lists.newArrayList(vessel));
+ result.setVessel(vessel);
Integer managerId = (Integer) source[9];
if (managerId != null && managerId.equals(enumeration.PERSON_ID_UNKNOWN_RECORDER_PERSON)) {
@@ -207,19 +205,19 @@
String miscData = (String) source[11];
if (miscData != null && miscData.length() > 0) {
- // Retrieve secondary vessels :
- int vesselTagIndex = miscData.indexOf(CRUISE_MISC_DATA_VESSELS_TAG);
- if (vesselTagIndex != -1) {
- String vesselCodesStr = miscData.substring(vesselTagIndex + CRUISE_MISC_DATA_VESSELS_TAG.length()).trim();
- miscData = miscData.substring(0, vesselTagIndex);
- if (!vesselCodesStr.isEmpty()) {
- String[] vesselCodes = vesselCodesStr.split(",");
- for (String vesselCode1 : vesselCodes) {
- vesselCode = vesselCode1;
- result.addVessel(referentialService.getVessel(vesselCode));
- }
- }
- }
+// // Retrieve secondary vessels :
+// int vesselTagIndex = miscData.indexOf(CRUISE_MISC_DATA_VESSELS_TAG);
+// if (vesselTagIndex != -1) {
+// String vesselCodesStr = miscData.substring(vesselTagIndex + CRUISE_MISC_DATA_VESSELS_TAG.length()).trim();
+// miscData = miscData.substring(0, vesselTagIndex);
+// if (!vesselCodesStr.isEmpty()) {
+// String[] vesselCodes = vesselCodesStr.split(",");
+// for (String vesselCode1 : vesselCodes) {
+// vesselCode = vesselCode1;
+// result.addVessel(referentialService.getVessel(vesselCode));
+// }
+// }
+// }
// Retrieve cruise managers
int managersIndex = miscData.indexOf(CRUISE_MISC_DATA_MANAGERS_TAG);
@@ -378,20 +376,10 @@
}
// Vessel
- if (source.getVessel() == null || source.getVessel().size() == 0) {
+ if (source.getVessel() == null) {
target.setProgram(null);
- } else if (source.getVessel() != null && source.getVessel().size() > 0) {
- List<Vessel> vessels = source.getVessel();
- target.setVessel(vesselDao.load(vessels.get(0).getId()));
-
- if (vessels.size() > 1) {
- //throw new UnsupportedOperationException("Cruise could not yet support more than one vessel.");
- miscDataBuffer.append(CRUISE_MISC_DATA_VESSELS_TAG);
- for (int i = 1; i < vessels.size(); i++) {
- if (i > 1) miscDataBuffer.append(',');
- miscDataBuffer.append(vessels.get(i).getId());
- }
- }
+ } else {
+ target.setVessel(vesselDao.load(source.getVessel().getId()));
}
// Year
@@ -418,11 +406,7 @@
}
// Comment
- if (source.getComment() == null) {
- target.setComments(null);
- } else if (source.getComment() != null) {
- target.setComments(source.getComment());
- }
+ target.setComments(source.getComment());
// Manager
if (source.getHeadOfMission() == null || source.getHeadOfMission().size() == 0) {
Modified: trunk/tutti-persistence/src/main/xmi/tutti-persistence.properties
===================================================================
--- trunk/tutti-persistence/src/main/xmi/tutti-persistence.properties 2013-03-23 18:46:00 UTC (rev 667)
+++ trunk/tutti-persistence/src/main/xmi/tutti-persistence.properties 2013-03-23 19:21:10 UTC (rev 668)
@@ -31,7 +31,6 @@
fr.ifremer.tutti.persistence.entities.data.Cruise.attribute.gear.stereotype=ordered
fr.ifremer.tutti.persistence.entities.data.Cruise.attribute.headOfMission.stereotype=ordered
fr.ifremer.tutti.persistence.entities.data.Cruise.attribute.headOfSortRoom.stereotype=ordered
-fr.ifremer.tutti.persistence.entities.data.Cruise.attribute.vessel.stereotype=ordered
fr.ifremer.tutti.persistence.entities.data.FishingOperation.attribute.recorderPerson.stereotype=ordered
fr.ifremer.tutti.persistence.entities.data.MacroWasteBatch.attribute.macroWasteCategory.stereotype=ordered
Modified: trunk/tutti-persistence/src/main/xmi/tutti-persistence.zargo
===================================================================
(Binary files differ)
Modified: trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceWriteTest.java
===================================================================
--- trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceWriteTest.java 2013-03-23 18:46:00 UTC (rev 667)
+++ trunk/tutti-persistence/src/test/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceWriteTest.java 2013-03-23 19:21:10 UTC (rev 668)
@@ -115,13 +115,10 @@
Person managerPerson = referentialService.getAllPerson().get(0);
cruise.setHeadOfMission(Lists.newArrayList(managerPerson));
- List<Vessel> vessels = Lists.newArrayList();
- vessels.add(referentialService.getAllScientificVessel().get(0));
Vessel fishingVessel = new Vessel();
fishingVessel.setId(dbResource.getFixtures().fishingVesselCode());
- vessels.add(fishingVessel);
- cruise.setVessel(vessels);
+ cruise.setVessel(fishingVessel);
cruise.setMultirigNumber(2);
@@ -178,10 +175,9 @@
assertEquals(1, reloadedCruise.getMultirigNumber(), 0);
assertNull(reloadedCruise.getHeadOfMission());
assertNotNull(reloadedCruise.getVessel());
- assertEquals(createdCruise.getVessel().get(0), reloadedCruise.getVessel().get(0));
+ assertEquals(createdCruise.getVessel(), reloadedCruise.getVessel());
assertEquals(cruise.getCountry().getId(), reloadedCruise.getCountry().getId());
assertNotNull(reloadedCruise.getVessel());
- assertEquals(vessels.size(), reloadedCruise.getVessel().size());
assertNotNull(reloadedCruise.getGear());
assertEquals(gears.size(), reloadedCruise.getGear().size());
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css 2013-03-23 18:46:00 UTC (rev 667)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css 2013-03-23 19:21:10 UTC (rev 668)
@@ -181,14 +181,19 @@
buttonGroup: "filterVesselType";
}
-#vesselList {
- property: vessel;
- border: {BorderFactory.createTitledBorder(_("tutti.editCruise.field.vessel"))};
- _validatorLabel : {_("tutti.editCruise.field.vessel")};
+#vesselLabel {
+ text: "tutti.editCruise.field.vessel";
+ labelFor: {vesselComboBox};
toolTipText: "tutti.editCruise.field.vessel.tip";
_help: {"tutti.editCruise.field.vessel.help"};
}
+#vesselComboBox {
+ property: vessel;
+ selectedItem: {model.getVessel()};
+ _validatorLabel : {_("tutti.editCruise.field.vessel")};
+}
+
#gearList {
property: gear;
border: {BorderFactory.createTitledBorder(_("tutti.editCruise.field.gear"))};
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx 2013-03-23 18:46:00 UTC (rev 667)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx 2013-03-23 19:21:10 UTC (rev 668)
@@ -84,7 +84,7 @@
<field name='country' component='countryComboBox'/>
<field name='beginDate' component='beginDateField'/>
<field name='endDate' component='endDateField'/>
- <field name='vessel' component='vesselList'/>
+ <field name='vessel' component='vesselComboBox'/>
<field name='gear' component='gearList'/>
<field name='headOfMission' component='headOfMissionList'/>
<field name='headOfSortRoom' component='headOfSortRoomList'/>
@@ -191,12 +191,16 @@
</cell>
</row>
<row weighty='0.3'>
- <cell columns='6'>
- <JPanel layout='{new GridLayout(1, 0)}'>
- <BeanDoubleList id='vesselList' genericType='Vessel'/>
- <BeanDoubleList id='gearList' genericType='Gear'/>
- </JPanel>
+ <cell>
+ <JLabel id='vesselLabel'/>
</cell>
+ <cell weightx='0.3' columns="2">
+ <BeanFilterableComboBox id='vesselComboBox' constructorParams='this'
+ genericType='Vessel'/>
+ </cell>
+ <cell columns="3">
+ <BeanDoubleList id='gearList' genericType='Gear'/>
+ </cell>
</row>
<!-- cruise headOfMission / headOfSortRoom -->
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java 2013-03-23 18:46:00 UTC (rev 667)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java 2013-03-23 19:21:10 UTC (rev 668)
@@ -26,6 +26,7 @@
import com.google.common.base.Predicate;
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.Cruise;
import fr.ifremer.tutti.persistence.entities.data.Program;
@@ -124,15 +125,15 @@
EditCruiseUIModel model = getModel();
- final List<Vessel> scientificVesselList = getDataContext().getScientificVessels();
- final List<Vessel> fishingVesselList = getDataContext().getFishingVessels();
- final List<Vessel> allVesselList = Lists.newArrayList();
+ List<Vessel> scientificVesselList = getDataContext().getScientificVessels();
+ List<Vessel> fishingVesselList = getDataContext().getFishingVessels();
+ List<Vessel> allVesselList = Lists.newArrayList();
allVesselList.addAll(scientificVesselList);
allVesselList.addAll(fishingVesselList);
- final List<Gear> scientificGearList = getDataContext().getScientificGears();
- final List<Gear> fishingGearList = getDataContext().getFishingGears();
- final List<Gear> allGearList = Lists.newArrayList();
+ List<Gear> scientificGearList = getDataContext().getScientificGears();
+ List<Gear> fishingGearList = getDataContext().getFishingGears();
+ List<Gear> allGearList = Lists.newArrayList();
allGearList.addAll(scientificGearList);
allGearList.addAll(fishingGearList);
@@ -143,47 +144,32 @@
VesselTypeEnum vesselType = (VesselTypeEnum) evt.getNewValue();
- Predicate<Vessel> vesselPredicate = null;
Predicate<Gear> gearPredicate = null;
- switch (vesselType) {
- case FISHING:
- vesselPredicate = new Predicate<Vessel>() {
+ List<Vessel> allVesselList = Lists.newArrayList();
- public boolean apply(Vessel input) {
- return !input.isScientificVessel();
- }
- };
- gearPredicate = new Predicate<Gear>() {
- public boolean apply(Gear input) {
- return !input.isScientificGear();
- }
- };
+ switch (vesselType) {
+ case FISHING:
+ gearPredicate = TuttiEntities.IS_FISHING_GEAR;
+ allVesselList.addAll(getDataContext().getFishingVessels());
break;
case SCIENTIFIC:
- vesselPredicate = new Predicate<Vessel>() {
+ gearPredicate = TuttiEntities.IS_SCIENTIFIC_GEAR;
- public boolean apply(Vessel input) {
- return input.isScientificVessel();
- }
- };
- gearPredicate = new Predicate<Gear>() {
-
- public boolean apply(Gear input) {
- return input.isScientificGear();
- }
- };
+ allVesselList.addAll(getDataContext().getScientificVessels());
break;
-
+ default: {
+ allVesselList.addAll(getDataContext().getScientificVessels());
+ allVesselList.addAll(getDataContext().getFishingVessels());
+ }
}
- ui.getVesselList().getHandler().clearFilters();
+
ui.getGearList().getHandler().clearFilters();
+ ui.getVesselComboBox().setData(null);
+ ui.getVesselComboBox().setData(allVesselList);
- if (vesselPredicate != null) {
- ui.getVesselList().getHandler().addFilter(vesselPredicate);
- }
if (gearPredicate != null) {
ui.getGearList().getHandler().addFilter(gearPredicate);
}
@@ -199,11 +185,10 @@
persistenceService.getAllCountry(),
model.getCountry());
+ initBeanFilterableComboBox(ui.getVesselComboBox(),
+ allVesselList,
+ model.getVessel());
- initBeanList(ui.getVesselList(),
- allVesselList,
- model.getVessel());
-
initBeanList(ui.getGearList(),
allGearList,
model.getGear());
@@ -220,7 +205,7 @@
listenValidatorValid(validator, model);
model.setVesselType(VesselTypeEnum.SCIENTIFIC);
-
+
// if new fishingOperation can already cancel his creation
model.setModify(model.isCreate());
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIModel.java 2013-03-23 18:46:00 UTC (rev 667)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIModel.java 2013-03-23 19:21:10 UTC (rev 668)
@@ -97,7 +97,7 @@
protected String surveyPart;
- protected List<Vessel> vessel;
+ protected Vessel vessel;
protected List<Gear> gear;
@@ -222,13 +222,14 @@
firePropertyChange(PROPERTY_END_DATE, oldValue, endDate);
}
- public List<Vessel> getVessel() {
+ public Vessel getVessel() {
return vessel;
}
- public void setVessel(List<Vessel> vessel) {
+ public void setVessel(Vessel vessel) {
+ Object oldValue = getVessel();
this.vessel = vessel;
- firePropertyChange(PROPERTY_VESSEL, null, vessel);
+ firePropertyChange(PROPERTY_VESSEL, oldValue, vessel);
}
public List<Gear> getGear() {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/NewFishingOperationAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/NewFishingOperationAction.java 2013-03-23 18:46:00 UTC (rev 667)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/NewFishingOperationAction.java 2013-03-23 19:21:10 UTC (rev 668)
@@ -27,7 +27,6 @@
import fr.ifremer.tutti.persistence.entities.data.Cruise;
import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
import fr.ifremer.tutti.persistence.entities.referential.Gear;
-import fr.ifremer.tutti.persistence.entities.referential.Vessel;
import java.util.List;
@@ -65,12 +64,8 @@
FishingOperation newFishingOperation = new FishingOperation();
Cruise cruise = getDataContext().getCruise();
newFishingOperation.setCruise(cruise);
+ newFishingOperation.setVessel(cruise.getVessel());
- List<Vessel> vessels = cruise.getVessel();
- if (vessels.size() == 1) {
- newFishingOperation.setVessel(vessels.get(0));
- }
-
List<Gear> gears = cruise.getGear();
if (gears.size() == 1) {
newFishingOperation.setGear(gears.get(0));
Modified: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIModel-error-validation.xml
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIModel-error-validation.xml 2013-03-23 18:46:00 UTC (rev 667)
+++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIModel-error-validation.xml 2013-03-23 19:21:10 UTC (rev 668)
@@ -55,7 +55,7 @@
<field-validator type="required" short-circuit="true">
<message>tutti.validator.error.cruise.beginDate.required</message>
</field-validator>
-
+
<field-validator type="fieldexpression" short-circuit="true">
<param name="expression">
<![CDATA[ endDate == null || beginDate.compareTo(endDate) < 0 ]]>
@@ -68,7 +68,7 @@
<field-validator type="required" short-circuit="true">
<message>tutti.validator.error.cruise.endDate.required</message>
</field-validator>
-
+
<field-validator type="fieldexpression" short-circuit="true">
<param name="expression">
<![CDATA[ beginDate == null || beginDate.compareTo(endDate) < 0 ]]>
@@ -85,10 +85,7 @@
</field>
<field name="vessel">
- <field-validator type="fieldexpression" short-circuit="true">
- <param name="expression">
- <![CDATA[ vessel != null && !vessel.empty ]]>
- </param>
+ <field-validator type="required" short-circuit="true">
<message>tutti.validator.error.cruise.vessel.required</message>
</field-validator>
</field>
1
0