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
January 2013
- 4 participants
- 143 discussions
r229 - in trunk/tutti-ui-swing/src/main: java/fr/ifremer/tutti/ui/swing/content/home java/fr/ifremer/tutti/ui/swing/content/protocol resources/i18n
by tchemit@users.forge.codelutin.com 19 Jan '13
by tchemit@users.forge.codelutin.com 19 Jan '13
19 Jan '13
Author: tchemit
Date: 2013-01-19 03:23:42 +0100 (Sat, 19 Jan 2013)
New Revision: 229
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/229
Log:
do not persist imported protocol
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java 2013-01-19 01:59:45 UTC (rev 228)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java 2013-01-19 02:23:42 UTC (rev 229)
@@ -102,7 +102,7 @@
" to file: " + file);
}
- if (file.getName().endsWith(".tuttiProtocol")) {
+ if (!file.getName().endsWith(".tuttiProtocol")) {
file = new File(file.getParentFile(), file.getName() + ".tuttiProtocol");
}
// export protocol
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java 2013-01-19 01:59:45 UTC (rev 228)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java 2013-01-19 02:23:42 UTC (rev 229)
@@ -25,11 +25,11 @@
*/
import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
-import fr.ifremer.tutti.service.PersistenceService;
import fr.ifremer.tutti.service.TuttiProtocolImportExportService;
import fr.ifremer.tutti.ui.swing.AbstractTuttiAction;
import fr.ifremer.tutti.ui.swing.TuttiScreen;
import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
+import jaxx.runtime.context.JAXXContextEntryDef;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -52,6 +52,8 @@
private static final Log log =
LogFactory.getLog(ImportProtocolAction.class);
+ public static final JAXXContextEntryDef<TuttiProtocol> IMPORT_PROTOCOL_ENTRY = new JAXXContextEntryDef<TuttiProtocol>("importProtocol", TuttiProtocol.class);
+
private File file;
public ImportProtocolAction(SelectCruiseUIHandler handler) {
@@ -105,20 +107,12 @@
sendMessage("Protocole [" + protocol.getName() + "] lu depuis le fichier.");
+ IMPORT_PROTOCOL_ENTRY.setContextValue(getContext().getMainUI(), protocol);
+
// remove id
protocol.setId(null);
- // persist protocol
- PersistenceService persistenceService =
- getContext().getService(PersistenceService.class);
-
- TuttiProtocol savedProtocol =
- persistenceService.createProtocol(protocol);
-
- if (log.isInfoEnabled()) {
- log.info("Edit saved protocol: " + savedProtocol.getId());
- }
- getContext().setProtocolId(savedProtocol.getId());
+ getContext().setProtocolId(null);
getContext().setScreen(TuttiScreen.EDIT_PROTOCOL);
}
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java 2013-01-19 01:59:45 UTC (rev 228)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java 2013-01-19 02:23:42 UTC (rev 229)
@@ -39,6 +39,7 @@
import fr.ifremer.tutti.ui.swing.MainUI;
import fr.ifremer.tutti.ui.swing.MainUIHandler;
import fr.ifremer.tutti.ui.swing.TuttiUI;
+import fr.ifremer.tutti.ui.swing.content.home.ImportProtocolAction;
import fr.ifremer.tutti.ui.swing.util.HydrologicCaracteristicUtil;
import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor;
import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIHandler;
@@ -197,27 +198,38 @@
EditProtocolUIModel model = getModel();
- // load protocol if existing
+ TuttiProtocol protocol = ImportProtocolAction.IMPORT_PROTOCOL_ENTRY.getContextValue(ui);
- String protocolId = context.getProtocolId();
- TuttiProtocol protocol = null;
- if (protocolId == null) {
+ if (protocol != null) {
- // create new protocol
+ // import a protocol
- if (log.isDebugEnabled()) {
- log.debug("Will create a new protocol");
- }
+ ImportProtocolAction.IMPORT_PROTOCOL_ENTRY.removeContextValue(ui);
+
+ model.fromBean(protocol);
+
} else {
- // load existing protocol
- protocol = persistenceService.getProtocol(protocolId);
- Boolean mustClone = ui.getContextValue(Boolean.class, MainUIHandler.CLONE_PROTOCOL);
+ // load protocol if existing
- model.fromBean(protocol);
- if (mustClone != null && mustClone) {
- ui.setContextValue(false, MainUIHandler.CLONE_PROTOCOL);
- model.setId(null);
+ if (context.isProtocolFilled()) {
+
+ // load existing protocol
+ protocol = persistenceService.getProtocol(context.getProtocolId());
+ Boolean mustClone = ui.getContextValue(Boolean.class, MainUIHandler.CLONE_PROTOCOL);
+
+ model.fromBean(protocol);
+ if (mustClone != null && mustClone) {
+ ui.setContextValue(false, MainUIHandler.CLONE_PROTOCOL);
+ model.setId(null);
+ }
+ } else {
+
+ // create new protocol
+
+ if (log.isDebugEnabled()) {
+ log.debug("Will create a new protocol");
+ }
}
}
@@ -309,7 +321,7 @@
}
}
if (log.isDebugEnabled()) {
- log.debug("Will edit protocol: " + protocolId + " with " +
+ log.debug("Will edit protocol with " +
rows.size() + " species declared.");
}
}
Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-19 01:59:45 UTC (rev 228)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-19 02:23:42 UTC (rev 229)
@@ -21,9 +21,9 @@
tutti.action.editCatches.tip=Saisir des captures
tutti.action.editCruise=Éditer
tutti.action.editCruise.tip=Éditer la campagne sélectionnée
-tutti.action.editProgram=Programme
+tutti.action.editProgram=Éditer
tutti.action.editProgram.tip=Éditer le programme sélectionné
-tutti.action.editProtocol=Protocole
+tutti.action.editProtocol=Éditer
tutti.action.editProtocol.tip=Éditer le protocol sélectionné
tutti.action.editSelectedCruise=Campagne
tutti.action.editSelectedCruise.tip=Éditer la campagne sélectionnée
1
0
19 Jan '13
Author: tchemit
Date: 2013-01-19 02:59:45 +0100 (Sat, 19 Jan 2013)
New Revision: 228
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/228
Log:
- improve action api
- import/ export protocol
- normalize i18n + add missing stuff (license headers, svn properties, serialVersionUID,...)
- add some cancel actions
Added:
trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiProtocolImportExportService.java
trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/
trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/TuttiProtocolImportExportServiceTest.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/CancelEditCruiseAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/CancelEditProgramAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/CancelEditProtocolAction.java
Modified:
trunk/pom.xml
trunk/tutti-service/pom.xml
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProgramAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUIHandler.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/SaveCruiseAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCruiseAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProgramAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewCruiseAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProgramAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/SaveFishingOperationAction.java
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.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/SaveProgramAction.java
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.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/SaveProtocolAction.java
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2013-01-18 18:07:24 UTC (rev 227)
+++ trunk/pom.xml 2013-01-19 01:59:45 UTC (rev 228)
@@ -393,6 +393,12 @@
<version>${jdbc.hsqldb.version}</version>
</dependency>
+ <dependency>
+ <groupId>com.esotericsoftware.yamlbeans</groupId>
+ <artifactId>yamlbeans</artifactId>
+ <version>1.06</version>
+ </dependency>
+
</dependencies>
</dependencyManagement>
Modified: trunk/tutti-service/pom.xml
===================================================================
--- trunk/tutti-service/pom.xml 2013-01-18 18:07:24 UTC (rev 227)
+++ trunk/tutti-service/pom.xml 2013-01-19 01:59:45 UTC (rev 228)
@@ -86,6 +86,11 @@
<artifactId>commons-logging</artifactId>
</dependency>
+ <dependency>
+ <groupId>com.esotericsoftware.yamlbeans</groupId>
+ <artifactId>yamlbeans</artifactId>
+ </dependency>
+
<!-- Logging -->
<dependency>
@@ -94,6 +99,11 @@
<scope>provided</scope>
</dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
+
</dependencies>
<build>
Added: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiProtocolImportExportService.java
===================================================================
--- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiProtocolImportExportService.java (rev 0)
+++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiProtocolImportExportService.java 2013-01-19 01:59:45 UTC (rev 228)
@@ -0,0 +1,111 @@
+package fr.ifremer.tutti.service;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $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.esotericsoftware.yamlbeans.YamlConfig;
+import com.esotericsoftware.yamlbeans.YamlException;
+import com.esotericsoftware.yamlbeans.YamlReader;
+import com.esotericsoftware.yamlbeans.YamlWriter;
+import com.google.common.base.Charsets;
+import com.google.common.io.Closeables;
+import com.google.common.io.Files;
+import fr.ifremer.tutti.persistence.entities.data.SampleCategoryEnum;
+import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol;
+import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.IOException;
+import java.io.Reader;
+
+/**
+ * To import / export {@link TuttiProtocol} to {@code Yaml} file formats.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class TuttiProtocolImportExportService extends AbstractTuttiService {
+
+ /** Logger. */
+ private static final Log log =
+ LogFactory.getLog(TuttiProtocolImportExportService.class);
+
+ public void exportProtocol(TuttiProtocol protocol, File file) throws IOException {
+
+ YamlConfig config = createConfig();
+
+ String id = protocol.getId();
+
+ if (log.isInfoEnabled()) {
+ log.info("Will export protocol: " + id + " to file: " + file);
+ }
+
+ BufferedWriter fileWriter = Files.newWriter(file, Charsets.UTF_8);
+ try {
+ YamlWriter writer = new YamlWriter(fileWriter, config);
+ writer.write(protocol);
+ writer.close();
+ fileWriter.close();
+ } catch (YamlException e) {
+ throw new IOException("Could not export protocol " + id, e);
+ } finally {
+ Closeables.closeQuietly(fileWriter);
+ }
+ }
+
+ protected YamlConfig createConfig() {
+ YamlConfig config = new YamlConfig();
+ config.setPropertyElementType(TuttiProtocol.class,
+ "sampleCategoryOrder",
+ SampleCategoryEnum.class);
+ config.setClassTag(SpeciesProtocol.class.getSimpleName(),
+ SpeciesProtocol.class);
+ config.writeConfig.setAlwaysWriteClassname(false);
+ config.writeConfig.setWriteRootTags(false);
+ return config;
+ }
+
+ public TuttiProtocol importProtocol(File file) throws IOException {
+ if (log.isInfoEnabled()) {
+ log.info("Will import protocol from file: " + file);
+ }
+
+ YamlConfig config = createConfig();
+
+ Reader fileReader = Files.newReader(file, Charsets.UTF_8);
+ try {
+ YamlReader reader = new YamlReader(fileReader, config);
+ TuttiProtocol result = reader.read(TuttiProtocol.class);
+ fileReader.close();
+ return result;
+ } catch (YamlException e) {
+ throw new IOException("Could not import protocol from file " + file, e);
+ } finally {
+ Closeables.closeQuietly(fileReader);
+ }
+ }
+}
Property changes on: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/TuttiProtocolImportExportService.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/TuttiProtocolImportExportServiceTest.java
===================================================================
--- trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/TuttiProtocolImportExportServiceTest.java (rev 0)
+++ trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/TuttiProtocolImportExportServiceTest.java 2013-01-19 01:59:45 UTC (rev 228)
@@ -0,0 +1,229 @@
+package fr.ifremer.tutti.service;
+
+/*
+ * #%L
+ * Tutti :: Service
+ * $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.Charsets;
+import com.google.common.collect.Lists;
+import com.google.common.io.Files;
+import fr.ifremer.tutti.persistence.entities.data.SampleCategoryEnum;
+import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol;
+import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.SystemUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TestName;
+
+import java.io.File;
+
+/**
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class TuttiProtocolImportExportServiceTest {
+
+ /** Logger. */
+ private static final Log log =
+ LogFactory.getLog(TuttiProtocolImportExportServiceTest.class);
+
+ public static final long TIMESTAMP = System.nanoTime();
+
+ @Rule
+ public final TestName name = new TestName();
+
+ protected File datadirectory;
+
+ protected TuttiProtocolImportExportService service;
+
+ public static final String PROTOCOL_FILE_CONTENT =
+ "id: 1\n" +
+ "name: protocolName\n" +
+ "comment: Commentaire\n" +
+ "environmentPmfmId: \n" +
+ "- 114\n" +
+ "- 228\n" +
+ "- 821\n" +
+ "gearPmfmId: \n" +
+ "- 21\n" +
+ "- 22\n" +
+ "hydrologyPmfmId: []\n" +
+ "sampleCategoryOrder: \n" +
+ "- age\n" +
+ "species: \n" +
+ "- !SpeciesProtocol\n" +
+ " calcifySampleEnabled: true\n" +
+ " lengthStepPmfmId: 1394\n" +
+ " maturityEnabled: true\n" +
+ " sexEnabled: true\n" +
+ " speciesId: 11242\n" +
+ " weightEnabled: true\n" +
+ "- !SpeciesProtocol\n" +
+ " ageEnabled: true\n" +
+ " calcifySampleEnabled: true\n" +
+ " countIfNoFrequencyEnabled: true\n" +
+ " lengthStepPmfmId: 323\n" +
+ " maturityEnabled: true\n" +
+ " sexEnabled: true\n" +
+ " sizeEnabled: true\n" +
+ " speciesId: 3835\n" +
+ " weightEnabled: true";
+
+ @Before
+ public void setUp() throws Exception {
+ datadirectory = getTestSpecificDirectory(getClass(),
+ name.getMethodName(),
+ null);
+
+ service = new TuttiProtocolImportExportService();
+ }
+
+ @Test
+ public void testExportProtocol() throws Exception {
+
+ File exportFile = new File(datadirectory, "exportProtocol.yaml");
+
+ Files.createParentDirs(exportFile);
+
+ Assert.assertFalse(exportFile.exists());
+ TuttiProtocol protocol = new TuttiProtocol();
+ protocol.setId("1");
+ protocol.setName("protocolName");
+ protocol.setComment("Commentaire");
+ protocol.setSampleCategoryOrder(Lists.newArrayList(SampleCategoryEnum.age));
+ protocol.setEnvironmentPmfmId(Lists.newArrayList("114", "228", "821"));
+ protocol.setGearPmfmId(Lists.newArrayList("21", "22"));
+ protocol.setHydrologyPmfmId(Lists.<String>newArrayList());
+
+ protocol.setSpecies(Lists.<SpeciesProtocol>newArrayList());
+ SpeciesProtocol sp1 = new SpeciesProtocol();
+ sp1.setSpeciesId("11242");
+ sp1.setLengthStepPmfmId("1394");
+ sp1.setCalcifySampleEnabled(true);
+ sp1.setMaturityEnabled(true);
+ sp1.setSexEnabled(true);
+ sp1.setWeightEnabled(true);
+ protocol.addSpecies(sp1);
+
+ SpeciesProtocol sp2 = new SpeciesProtocol();
+ sp2.setSpeciesId("3835");
+ sp2.setLengthStepPmfmId("323");
+ sp2.setAgeEnabled(true);
+ sp2.setCalcifySampleEnabled(true);
+ sp2.setCountIfNoFrequencyEnabled(true);
+ sp2.setMaturityEnabled(true);
+ sp2.setSexEnabled(true);
+ sp2.setSizeEnabled(true);
+ sp2.setWeightEnabled(true);
+ protocol.addSpecies(sp2);
+
+ service.exportProtocol(protocol, exportFile);
+ Assert.assertTrue(exportFile.exists());
+
+ String exportFileToString = Files.toString(exportFile, Charsets.UTF_8).trim();
+ Assert.assertEquals(PROTOCOL_FILE_CONTENT, exportFileToString);
+ }
+
+ @Test
+ public void testImportProtocol() throws Exception {
+
+ File importfile = new File(datadirectory, "importProtocol.yaml");
+
+ Files.createParentDirs(importfile);
+
+ Files.write(PROTOCOL_FILE_CONTENT, importfile, Charsets.UTF_8);
+
+ TuttiProtocol protocol = service.importProtocol(importfile);
+
+ Assert.assertNotNull(protocol);
+ Assert.assertEquals("1", protocol.getId());
+ Assert.assertEquals("protocolName", protocol.getName());
+ Assert.assertEquals("Commentaire", protocol.getComment());
+ Assert.assertNotNull(protocol.getSampleCategoryOrder());
+ Assert.assertEquals(1, protocol.getSampleCategoryOrder().size());
+ Assert.assertEquals(SampleCategoryEnum.age, protocol.getSampleCategoryOrder().get(0));
+ Assert.assertEquals(Lists.newArrayList("114", "228", "821"), protocol.getEnvironmentPmfmId());
+ Assert.assertEquals(Lists.newArrayList("21", "22"), protocol.getGearPmfmId());
+ Assert.assertEquals(Lists.<String>newArrayList(), protocol.getHydrologyPmfmId());
+ Assert.assertNotNull(protocol.getSpecies());
+ Assert.assertEquals(2, protocol.getSpecies().size());
+ SpeciesProtocol sp1 = protocol.getSpecies().get(0);
+ Assert.assertNotNull(sp1);
+ Assert.assertEquals("11242", sp1.getSpeciesId());
+ Assert.assertEquals("1394", sp1.getLengthStepPmfmId());
+ Assert.assertFalse(sp1.isAgeEnabled());
+ Assert.assertTrue(sp1.isCalcifySampleEnabled());
+ Assert.assertFalse(sp1.isCountIfNoFrequencyEnabled());
+ Assert.assertTrue(sp1.isMaturityEnabled());
+ Assert.assertTrue(sp1.isSexEnabled());
+ Assert.assertFalse(sp1.isSizeEnabled());
+ Assert.assertTrue(sp1.isWeightEnabled());
+
+ SpeciesProtocol sp2 = protocol.getSpecies().get(1);
+ Assert.assertNotNull(sp2);
+ Assert.assertEquals("3835", sp2.getSpeciesId());
+ Assert.assertEquals("323", sp2.getLengthStepPmfmId());
+ Assert.assertTrue(sp2.isAgeEnabled());
+ Assert.assertTrue(sp2.isCalcifySampleEnabled());
+ Assert.assertTrue(sp2.isCountIfNoFrequencyEnabled());
+ Assert.assertTrue(sp2.isMaturityEnabled());
+ Assert.assertTrue(sp2.isSexEnabled());
+ Assert.assertTrue(sp2.isSizeEnabled());
+ Assert.assertTrue(sp2.isWeightEnabled());
+
+
+ }
+
+ public static File getTestSpecificDirectory(Class<?> testClassName,
+ String methodName,
+ String classifier) {
+ // Trying to look for the temporary folder to store data for the test
+ String tempDirPath = System.getProperty("java.io.tmpdir");
+ if (tempDirPath == null) {
+ // can this really occur ?
+ tempDirPath = "";
+ if (log.isWarnEnabled()) {
+ log.warn("'\"java.io.tmpdir\" not defined");
+ }
+ }
+ File tempDirFile = SystemUtils.getJavaIoTmpDir();
+
+ // create the directory to store database data
+ String dataBasePath = testClassName.getName()
+ + File.separator // a directory with the test class name
+ + methodName; // a sub-directory with the method name
+
+ if (StringUtils.isNotBlank(classifier)) {
+ dataBasePath += classifier;
+ }
+ dataBasePath += '_'
+ + TIMESTAMP; // and a timestamp
+ File databaseFile = new File(tempDirFile, dataBasePath);
+ return databaseFile;
+ }
+}
Property changes on: trunk/tutti-service/src/test/java/fr/ifremer/tutti/service/TuttiProtocolImportExportServiceTest.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/AbstractTuttiAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiAction.java 2013-01-18 18:07:24 UTC (rev 227)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiAction.java 2013-01-19 01:59:45 UTC (rev 228)
@@ -31,6 +31,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jdesktop.beans.AbstractBean;
+import org.nuiton.util.decorator.Decorator;
import javax.swing.AbstractAction;
import javax.swing.JDialog;
@@ -47,7 +48,6 @@
import java.util.concurrent.Executors;
import static org.nuiton.i18n.I18n._;
-import org.nuiton.util.decorator.Decorator;
/**
* TODO
@@ -71,7 +71,7 @@
private final boolean hideBody;
- protected abstract void doAction(ActionEvent event);
+ protected abstract void doAction(ActionEvent event) throws Exception;
protected AbstractTuttiAction(H handler,
String name,
@@ -89,9 +89,24 @@
}
protected String getActionName() {
- return (String) getValue(NAME);
+ return (String) getValue("actionName");
}
+ protected String getActionDescription() {
+ return (String) getValue("actionDescription");
+ }
+
+ protected boolean prepareAction(ActionEvent event) {
+ putValue("actionName", getValue(NAME));
+ putValue("actionDescription", getValue(SHORT_DESCRIPTION));
+ return true;
+ }
+
+ protected void releaseAction(ActionEvent event) {
+ putValue("actionName", null);
+ putValue("actionDescription", null);
+ }
+
@Override
public final void actionPerformed(final ActionEvent event) {
@@ -99,27 +114,33 @@
log.info("Will starts action: " + this);
}
- executorService.submit(new Runnable() {
- @Override
- public void run() {
+ boolean doAction = prepareAction(event);
- TimerTask timer = new ActionTimerTask();
+ if (doAction) {
+ executorService.submit(new Runnable() {
+ @Override
+ public void run() {
- t.schedule(timer, 500);
- try {
+ TimerTask timer = new ActionTimerTask(getActionName(), getActionDescription());
- doAction(event);
- } catch (Exception e) {
- ErrorDialogUI.showError(e);
- timer.cancel();
- } finally {
- if (log.isInfoEnabled()) {
- log.info("After action: " + this);
+ t.schedule(timer, 500);
+ try {
+
+ doAction(event);
+ } catch (Exception e) {
+ ErrorDialogUI.showError(e);
+ timer.cancel();
+ } finally {
+ if (log.isInfoEnabled()) {
+ log.info("After action: " + this);
+ }
+ timer.cancel();
+
+ releaseAction(event);
}
- timer.cancel();
}
- }
- });
+ });
+ }
}
public TuttiUIContext getContext() {
@@ -139,8 +160,18 @@
}
protected class ActionTimerTask extends TimerTask {
- JDialog d;
+ private final String actionName;
+
+ private final String actionDescription;
+
+ private JDialog d;
+
+ public ActionTimerTask(String actionName, String actionDescription) {
+ this.actionName = actionName;
+ this.actionDescription = actionDescription;
+ }
+
@Override
public void run() {
@@ -158,7 +189,7 @@
JLabel label = new JLabel();
EmptyBorder border = new EmptyBorder(5, 5, 5, 5);
label.setBorder(border);
- label.setText(_("tutti.message.action.running", getActionName()));
+ label.setText(_("tutti.message.action.running", actionName));
panel.add(label, BorderLayout.CENTER);
JProgressBar progressBar = new JProgressBar();
progressBar.setBorder(border);
@@ -203,7 +234,11 @@
}
}
}
-
+
+ protected void sendMessage(String message) {
+ getContext().showInformationMessage(message);
+ }
+
protected <O> Decorator<O> getDecorator(Class<O> type, String name) {
DecoratorService decoratorService =
getContext().getService(DecoratorService.class);
@@ -222,6 +257,6 @@
}
protected String decorate(Object object) {
- return getDecorator(object.getClass(), null).toString(object);
+ return handler.getDecorator(object.getClass(), null).toString(object);
}
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseAction.java 2013-01-18 18:07:24 UTC (rev 227)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseAction.java 2013-01-19 01:59:45 UTC (rev 228)
@@ -49,8 +49,8 @@
super(handler,
"editCruise",
"edit",
- _("tutti.action.editCruise"),
- _("tutti.action.editCruise.tip"),
+ _("tutti.action.editSelectedCruise"),
+ _("tutti.action.editSelectedCruise.tip"),
true
);
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProgramAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProgramAction.java 2013-01-18 18:07:24 UTC (rev 227)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProgramAction.java 2013-01-19 01:59:45 UTC (rev 228)
@@ -49,8 +49,8 @@
super(handler,
"editProgram",
"edit",
- _("tutti.action.editProgram"),
- _("tutti.action.editProgram.tip"),
+ _("tutti.action.editSelectedProgram"),
+ _("tutti.action.editSelectedProgram.tip"),
true
);
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProtocolAction.java 2013-01-18 18:07:24 UTC (rev 227)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProtocolAction.java 2013-01-19 01:59:45 UTC (rev 228)
@@ -49,8 +49,8 @@
super(handler,
"editProtocol",
"edit",
- _("tutti.action.editProtocol"),
- _("tutti.action.editProtocol.tip"),
+ _("tutti.action.editSelectedProtocol"),
+ _("tutti.action.editSelectedProtocol.tip"),
true
);
setMnemonic('P');
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUIHandler.java 2013-01-18 18:07:24 UTC (rev 227)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUIHandler.java 2013-01-19 01:59:45 UTC (rev 228)
@@ -369,6 +369,11 @@
}
} catch (Exception e) {
+ ErrorDialogUI.showError(e);
+ if (log.isErrorEnabled()) {
+ log.error("Could not change to screen " + screen, e);
+ }
+
// go back to home
context.setScreen(TuttiScreen.SELECT_CRUISE);
}
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/CancelEditCruiseAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/CancelEditCruiseAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/CancelEditCruiseAction.java 2013-01-19 01:59:45 UTC (rev 228)
@@ -0,0 +1,36 @@
+package fr.ifremer.tutti.ui.swing.content.cruise;
+
+import fr.ifremer.tutti.ui.swing.AbstractTuttiAction;
+import fr.ifremer.tutti.ui.swing.TuttiScreen;
+
+import java.awt.event.ActionEvent;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class CancelEditCruiseAction extends AbstractTuttiAction<EditCruiseUIModel, EditCruiseUIHandler> {
+
+ private static final long serialVersionUID = 1L;
+
+ public CancelEditCruiseAction(EditCruiseUIHandler handler) {
+ super(handler,
+ "cancelEditCruise",
+ "cancel",
+ _("tutti.action.cancel.editcruise"),
+ _("tutti.action.cancel.editCruise.tip"),
+ true
+ );
+ }
+
+ @Override
+ protected void doAction(ActionEvent event) {
+
+ getContext().setScreen(TuttiScreen.SELECT_CRUISE);
+ }
+
+}
\ No newline at end of file
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/CancelEditCruiseAction.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/content/cruise/EditCruiseUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css 2013-01-18 18:07:24 UTC (rev 227)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css 2013-01-19 01:59:45 UTC (rev 228)
@@ -137,7 +137,6 @@
text: "tutti.label.filterVesselType";
}
-
#filterVesselAllButton {
text: "tutti.label.filterVesselType.all";
toolTipText: "tutti.label.filterVesselType.all.tip";
@@ -191,8 +190,7 @@
}
#cancelButton {
- actionIcon: cancel;
- text: "tutti.action.cancel";
+ action: {cancelEditCruiseAction};
}
#generateNameButton {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx 2013-01-18 18:07:24 UTC (rev 227)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx 2013-01-19 01:59:45 UTC (rev 228)
@@ -73,6 +73,7 @@
initializer='getContextValue(EditCruiseUIModel.class)'/>
<SaveCruiseAction id='saveCruiseAction' constructorParams='handler'/>
+ <CancelEditCruiseAction id='cancelEditCruiseAction' constructorParams='handler'/>
<SwingValidatorMessageTableModel id='errorTableModel'/>
@@ -212,7 +213,7 @@
<row>
<cell columns='6'>
<JPanel layout='{new GridLayout(1, 0)}'>
- <JButton id='cancelButton' onActionPerformed='handler.cancel()'/>
+ <JButton id='cancelButton'/>
<JButton id='saveButton'/>
</JPanel>
</cell>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java 2013-01-18 18:07:24 UTC (rev 227)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java 2013-01-19 01:59:45 UTC (rev 228)
@@ -25,7 +25,6 @@
*/
import com.google.common.collect.Lists;
-import fr.ifremer.tutti.persistence.entities.TuttiEntities;
import fr.ifremer.tutti.persistence.entities.data.Cruise;
import fr.ifremer.tutti.persistence.entities.data.Program;
import fr.ifremer.tutti.persistence.entities.referential.Gear;
@@ -34,7 +33,6 @@
import fr.ifremer.tutti.service.PersistenceService;
import fr.ifremer.tutti.ui.swing.AbstractTuttiUIHandler;
import fr.ifremer.tutti.ui.swing.MainUI;
-import fr.ifremer.tutti.ui.swing.TuttiScreen;
import fr.ifremer.tutti.ui.swing.TuttiUI;
import jaxx.runtime.JAXXUtil;
import jaxx.runtime.context.JAXXContextEntryDef;
@@ -271,11 +269,6 @@
return ui.getModel();
}
- public void cancel() {
-
- context.setScreen(TuttiScreen.SELECT_CRUISE);
- }
-
public static final String cruiseNameFormat = "%1$s_%2$s";
public void generateCampaignName() {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/SaveCruiseAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/SaveCruiseAction.java 2013-01-18 18:07:24 UTC (rev 227)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/SaveCruiseAction.java 2013-01-19 01:59:45 UTC (rev 228)
@@ -1,28 +1,54 @@
-
package fr.ifremer.tutti.ui.swing.content.cruise;
+/*
+ * #%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.TuttiEntities;
import fr.ifremer.tutti.persistence.entities.data.Cruise;
import fr.ifremer.tutti.service.PersistenceService;
import fr.ifremer.tutti.ui.swing.AbstractTuttiAction;
import fr.ifremer.tutti.ui.swing.TuttiScreen;
import fr.ifremer.tutti.ui.swing.TuttiUIContext;
+
import java.awt.event.ActionEvent;
import static org.nuiton.i18n.I18n._;
/**
- *
* @author kmorin <kmorin(a)codelutin.com>
+ * @since 1.0
*/
public class SaveCruiseAction extends AbstractTuttiAction<EditCruiseUIModel, EditCruiseUIHandler> {
+ private static final long serialVersionUID = 1L;
+
public SaveCruiseAction(EditCruiseUIHandler handler) {
super(handler,
- "saveCruise",
- "save",
- _("tutti.action.save.cruise"),
- _("tutti.action.save.cruise.tip"),
+ "saveCruise",
+ "save",
+ _("tutti.action.saveCruise"),
+ _("tutti.action.saveCruise.tip"),
true
);
}
@@ -31,7 +57,8 @@
protected void doAction(ActionEvent event) {
TuttiUIContext context = getContext();
EditCruiseUIModel model = getModel();
- PersistenceService persistenceService = context.getService(PersistenceService.class);
+ PersistenceService persistenceService =
+ context.getService(PersistenceService.class);
Cruise bean = model.toBean();
@@ -48,5 +75,5 @@
context.setScreen(TuttiScreen.SELECT_CRUISE);
}
-
+
}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/SaveCruiseAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java 2013-01-18 18:07:24 UTC (rev 227)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java 2013-01-19 01:59:45 UTC (rev 228)
@@ -52,8 +52,8 @@
super(handler,
"cloneProtocol",
"copy",
- _("tutti.action.clone"),
- _("tutti.action.clone.protocol.tip"),
+ _("tutti.action.cloneProtocol"),
+ _("tutti.action.cloneProtocol.tip"),
true
);
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCruiseAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCruiseAction.java 2013-01-18 18:07:24 UTC (rev 227)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCruiseAction.java 2013-01-19 01:59:45 UTC (rev 228)
@@ -24,7 +24,7 @@
* #L%
*/
-import com.ezware.oxbow.swingbits.util.Preconditions;
+import com.google.common.base.Preconditions;
import fr.ifremer.tutti.persistence.entities.data.Cruise;
import fr.ifremer.tutti.ui.swing.AbstractTuttiAction;
import fr.ifremer.tutti.ui.swing.TuttiScreen;
@@ -47,7 +47,7 @@
super(handler,
"editCruise",
"edit",
- _("tutti.action.edit"),
+ _("tutti.action.editCruise"),
_("tutti.action.editCruise.tip"),
true
);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProgramAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProgramAction.java 2013-01-18 18:07:24 UTC (rev 227)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProgramAction.java 2013-01-19 01:59:45 UTC (rev 228)
@@ -24,7 +24,7 @@
* #L%
*/
-import com.ezware.oxbow.swingbits.util.Preconditions;
+import com.google.common.base.Preconditions;
import fr.ifremer.tutti.persistence.entities.data.Program;
import fr.ifremer.tutti.ui.swing.AbstractTuttiAction;
import fr.ifremer.tutti.ui.swing.TuttiScreen;
@@ -47,7 +47,7 @@
super(handler,
"editProgram",
"edit",
- _("tutti.action.edit"),
+ _("tutti.action.editProgram"),
_("tutti.action.editProgram.tip"),
true
);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java 2013-01-18 18:07:24 UTC (rev 227)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java 2013-01-19 01:59:45 UTC (rev 228)
@@ -24,7 +24,7 @@
* #L%
*/
-import com.ezware.oxbow.swingbits.util.Preconditions;
+import com.google.common.base.Preconditions;
import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
import fr.ifremer.tutti.ui.swing.AbstractTuttiAction;
import fr.ifremer.tutti.ui.swing.TuttiScreen;
@@ -52,8 +52,8 @@
super(handler,
"editProtocol",
"edit",
- _("tutti.action.edit"),
- _("tutti.action.edit.protocol.tip"),
+ _("tutti.action.editProtocol"),
+ _("tutti.action.editProtocol.tip"),
true
);
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java 2013-01-18 18:07:24 UTC (rev 227)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java 2013-01-19 01:59:45 UTC (rev 228)
@@ -26,11 +26,14 @@
import com.ezware.oxbow.swingbits.util.Preconditions;
import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
+import fr.ifremer.tutti.service.TuttiProtocolImportExportService;
import fr.ifremer.tutti.ui.swing.AbstractTuttiAction;
+import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.awt.event.ActionEvent;
+import java.io.File;
import static org.nuiton.i18n.I18n._;
@@ -48,23 +51,66 @@
private static final Log log =
LogFactory.getLog(ExportProtocolAction.class);
+ protected File file;
+
public ExportProtocolAction(SelectCruiseUIHandler handler) {
super(handler,
"exportProtocol",
"export",
- _("tutti.action.export"),
- _("tutti.action.export.protocol.tip"),
+ _("tutti.action.exportProtocol"),
+ _("tutti.action.exportProtocol.tip"),
true
);
}
@Override
- protected void doAction(ActionEvent e) {
+ protected boolean prepareAction(ActionEvent event) {
+ // choose file to import
+
+ file = TuttiUIUtil.chooseFile(
+ getContext().getMainUI(),
+ _("tutti.title.choose.protocolExportFile"),
+ _("tutti.action.chooseProtocolFile"),
+ null,
+ "^.*\\*.tuttiProtocol$", _("tutti.file.protocol")
+ );
+
+ boolean doAction = file != null;
+ if (doAction) {
+ super.prepareAction(event);
+ }
+ return doAction;
+ }
+
+ @Override
+ protected void releaseAction(ActionEvent event) {
+ super.releaseAction(event);
+ file = null;
+ }
+
+ @Override
+ protected void doAction(ActionEvent e) throws Exception {
TuttiProtocol protocol = getModel().getProtocol();
Preconditions.checkNotNull(protocol);
if (log.isInfoEnabled()) {
log.info("Export protocol: " + protocol.getId());
}
+
+ if (log.isInfoEnabled()) {
+ log.info("Will save protocol " + protocol.getId() +
+ " to file: " + file);
+ }
+
+ if (file.getName().endsWith(".tuttiProtocol")) {
+ file = new File(file.getParentFile(), file.getName() + ".tuttiProtocol");
+ }
+ // export protocol
+ TuttiProtocolImportExportService service =
+ getContext().getService(TuttiProtocolImportExportService.class);
+ service.exportProtocol(protocol, file);
+
+ sendMessage("Protocole [" + protocol.getName() +
+ "] exporté dans le fichier " + file.getName() + ".");
}
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java 2013-01-18 18:07:24 UTC (rev 227)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java 2013-01-19 01:59:45 UTC (rev 228)
@@ -24,11 +24,17 @@
* #L%
*/
+import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
+import fr.ifremer.tutti.service.PersistenceService;
+import fr.ifremer.tutti.service.TuttiProtocolImportExportService;
import fr.ifremer.tutti.ui.swing.AbstractTuttiAction;
+import fr.ifremer.tutti.ui.swing.TuttiScreen;
+import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.awt.event.ActionEvent;
+import java.io.File;
import static org.nuiton.i18n.I18n._;
@@ -46,20 +52,73 @@
private static final Log log =
LogFactory.getLog(ImportProtocolAction.class);
+ private File file;
+
public ImportProtocolAction(SelectCruiseUIHandler handler) {
super(handler,
"importProtocol",
"import",
- _("tutti.action.import"),
- _("tutti.action.import.protocol.tip"),
+ _("tutti.action.importProtocol"),
+ _("tutti.action.importProtocol.tip"),
true
);
}
@Override
- protected void doAction(ActionEvent e) {
+ protected boolean prepareAction(ActionEvent event) {
+
+ // choose file to import
+ file = TuttiUIUtil.chooseFile(
+ getContext().getMainUI(),
+ _("tutti.title.choose.protocolImportFile"),
+ _("tutti.action.chooseProtocolFile"),
+ null,
+ "^.*\\.tuttiProtocol$", _("tutti.file.protocol")
+ );
+ boolean doAction = file != null;
+ if (doAction) {
+ super.prepareAction(event);
+ }
+ return doAction;
+ }
+
+ @Override
+ protected void releaseAction(ActionEvent event) {
+ super.releaseAction(event);
+ file = null;
+ }
+
+ @Override
+ protected void doAction(ActionEvent e) throws Exception {
if (log.isInfoEnabled()) {
log.info("TODO Import protocol!");
}
+
+ if (log.isInfoEnabled()) {
+ log.info("Will import protocol file: " + file);
+ }
+
+ // import protocol
+ TuttiProtocolImportExportService service =
+ getContext().getService(TuttiProtocolImportExportService.class);
+ TuttiProtocol protocol = service.importProtocol(file);
+
+ sendMessage("Protocole [" + protocol.getName() + "] lu depuis le fichier.");
+
+ // remove id
+ protocol.setId(null);
+
+ // persist protocol
+ PersistenceService persistenceService =
+ getContext().getService(PersistenceService.class);
+
+ TuttiProtocol savedProtocol =
+ persistenceService.createProtocol(protocol);
+
+ if (log.isInfoEnabled()) {
+ log.info("Edit saved protocol: " + savedProtocol.getId());
+ }
+ getContext().setProtocolId(savedProtocol.getId());
+ getContext().setScreen(TuttiScreen.EDIT_PROTOCOL);
}
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewCruiseAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewCruiseAction.java 2013-01-18 18:07:24 UTC (rev 227)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewCruiseAction.java 2013-01-19 01:59:45 UTC (rev 228)
@@ -45,7 +45,7 @@
super(handler,
"newCruise",
"add",
- _("tutti.action.new"),
+ _("tutti.action.newCruise"),
_("tutti.action.newCruise.tip"),
true
);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProgramAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProgramAction.java 2013-01-18 18:07:24 UTC (rev 227)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProgramAction.java 2013-01-19 01:59:45 UTC (rev 228)
@@ -45,7 +45,7 @@
super(handler,
"newProgram",
"add",
- _("tutti.action.new"),
+ _("tutti.action.newProgram"),
_("tutti.action.newProgram.tip"),
true
);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProtocolAction.java 2013-01-18 18:07:24 UTC (rev 227)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProtocolAction.java 2013-01-19 01:59:45 UTC (rev 228)
@@ -50,8 +50,8 @@
super(handler,
"newProtocol",
"add",
- _("tutti.action.new"),
- _("tutti.action.new.protocol.tip"),
+ _("tutti.action.newProtocol"),
+ _("tutti.action.newProtocol.tip"),
true
);
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css 2013-01-18 18:07:24 UTC (rev 227)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css 2013-01-19 01:59:45 UTC (rev 228)
@@ -42,14 +42,10 @@
#editProgramButton {
enabled: {model.isProgramFound()};
action: {editProgramAction};
- /*text: "tutti.action.edit";
- actionIcon: edit;*/
}
#newProgramButton {
action: {newProgramAction};
- /*text: "tutti.action.new";
- actionIcon: add;*/
}
#cruiseLabel {
@@ -66,15 +62,11 @@
#editCruiseButton {
enabled: {model.isProgramFound() && model.isCruiseFound()};
action: {editCruiseAction}
- /*text: "tutti.action.edit";
- actionIcon: edit;*/
}
#newCruiseButton {
enabled: {model.isProgramFound()};
action: {newCruiseAction};
- /*actionIcon: add;
- text: "tutti.action.new";*/
}
#protocolLabel {
@@ -101,13 +93,9 @@
#editCatchesButton {
action: {editCatchesAction};
enabled: {uiContext.isCruiseFilled()};
- /*text: "tutti.action.fillCatches";*/
- actionIcon: edit;
}
#validateCatchesButton {
action: {validateCatchesAction};
enabled: {uiContext.isCruiseFilled()};
- /*text: "tutti.action.validateCatches";*/
- actionIcon: validate;
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/SaveFishingOperationAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/SaveFishingOperationAction.java 2013-01-18 18:07:24 UTC (rev 227)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/SaveFishingOperationAction.java 2013-01-19 01:59:45 UTC (rev 228)
@@ -1,18 +1,41 @@
package fr.ifremer.tutti.ui.swing.content.operation;
+/*
+ * #%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.FishingOperation;
import fr.ifremer.tutti.ui.swing.AbstractTuttiAction;
-import fr.ifremer.tutti.ui.swing.content.operation.EditFishingOperationUIHandler;
import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor;
-import java.awt.event.ActionEvent;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import java.awt.event.ActionEvent;
+
import static org.nuiton.i18n.I18n._;
/**
- *
* @author kmorin <kmorin(a)codelutin.com>
* @since 1.0
*/
@@ -27,19 +50,19 @@
super(handler,
"saveFishingOperation",
"save",
- _("tutti.action.save.fishingOperation"),
- _("tutti.action.save.fishingOperation.tip"),
+ _("tutti.action.saveFishingOperation"),
+ _("tutti.action.saveFishingOperation.tip"),
false
);
}
-
+
@Override
protected void doAction(ActionEvent event) {
-
+
EditFishingOperationUIHandler handler = getHandler();
-
+
TuttiBeanMonitor<EditFishingOperationUIModel> monitor = handler.getFishingOperationMonitor();
-
+
// previous fishingOperation was modified, let's save it
EditFishingOperationUIModel beanToSave = monitor.getBean();
@@ -56,7 +79,7 @@
// save modified fishing operation
FishingOperation toSave = beanToSave.toBean();
-
+
handler.showInformationMessage(
"[ Trait - Caractéristiques générales ] " +
"Sauvegarde des modifications de " + decorate(toSave) +
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/SaveFishingOperationAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/CancelEditProgramAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/CancelEditProgramAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/CancelEditProgramAction.java 2013-01-19 01:59:45 UTC (rev 228)
@@ -0,0 +1,36 @@
+package fr.ifremer.tutti.ui.swing.content.program;
+
+import fr.ifremer.tutti.ui.swing.AbstractTuttiAction;
+import fr.ifremer.tutti.ui.swing.TuttiScreen;
+
+import java.awt.event.ActionEvent;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class CancelEditProgramAction extends AbstractTuttiAction<EditProgramUIModel, EditProgramUIHandler> {
+
+ private static final long serialVersionUID = 1L;
+
+ public CancelEditProgramAction(EditProgramUIHandler handler) {
+ super(handler,
+ "cancelEditProgram",
+ "cancel",
+ _("tutti.action.cancel.editProgram"),
+ _("tutti.action.cancel.editProgram.tip"),
+ true
+ );
+ }
+
+ @Override
+ protected void doAction(ActionEvent event) {
+
+ getContext().setScreen(TuttiScreen.SELECT_CRUISE);
+ }
+
+}
\ No newline at end of file
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/CancelEditProgramAction.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/content/program/EditProgramUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUI.css 2013-01-18 18:07:24 UTC (rev 227)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUI.css 2013-01-19 01:59:45 UTC (rev 228)
@@ -65,6 +65,5 @@
}
#cancelButton {
- text: "tutti.action.cancel";
- actionIcon: cancel;
+ action: {cancelEditProgramAction};
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUI.jaxx 2013-01-18 18:07:24 UTC (rev 227)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUI.jaxx 2013-01-19 01:59:45 UTC (rev 228)
@@ -62,7 +62,9 @@
initializer='getContextValue(EditProgramUIModel.class)'/>
<SaveProgramAction id='saveProgramAction' constructorParams='handler'/>
-
+ <CancelEditProgramAction id='cancelEditProgramAction'
+ constructorParams='handler'/>
+
<SwingValidatorMessageTableModel id='errorTableModel'/>
<BeanValidator id='validator' bean='model' errorTableModel='errorTableModel'
@@ -111,7 +113,7 @@
<row anchor='south'>
<cell columns='2'>
<JPanel layout='{new GridLayout(1, 0)}'>
- <JButton id='cancelButton' onActionPerformed='handler.cancel()'/>
+ <JButton id='cancelButton'/>
<JButton id='saveButton'/>
</JPanel>
</cell>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIHandler.java 2013-01-18 18:07:24 UTC (rev 227)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIHandler.java 2013-01-19 01:59:45 UTC (rev 228)
@@ -24,17 +24,12 @@
* #L%
*/
-import fr.ifremer.tutti.persistence.entities.TuttiEntities;
import fr.ifremer.tutti.persistence.entities.data.Program;
import fr.ifremer.tutti.service.PersistenceService;
import fr.ifremer.tutti.ui.swing.AbstractTuttiUIHandler;
import fr.ifremer.tutti.ui.swing.MainUI;
-import fr.ifremer.tutti.ui.swing.TuttiScreen;
import fr.ifremer.tutti.ui.swing.TuttiUI;
-import fr.ifremer.tutti.ui.swing.TuttiUIContext;
import jaxx.runtime.validator.swing.SwingValidator;
-import jaxx.runtime.validator.swing.SwingValidatorMessageTableRenderer;
-import jaxx.runtime.validator.swing.SwingValidatorUtil;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -107,7 +102,7 @@
SwingValidator validator = ui.getValidator();
listenValidatorValid(validator, model);
-
+
MainUI main = ui.getContextValue(MainUI.class, MainUI.class.getName());
main.clearValidators();
main.registerValidator(validator);
@@ -130,8 +125,4 @@
return ui.getModel();
}
- public void cancel() {
- context.setScreen(TuttiScreen.SELECT_CRUISE);
- }
-
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/SaveProgramAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/SaveProgramAction.java 2013-01-18 18:07:24 UTC (rev 227)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/SaveProgramAction.java 2013-01-19 01:59:45 UTC (rev 228)
@@ -1,6 +1,30 @@
package fr.ifremer.tutti.ui.swing.content.program;
+/*
+ * #%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.TuttiEntities;
import fr.ifremer.tutti.persistence.entities.data.Program;
import fr.ifremer.tutti.service.PersistenceService;
@@ -29,8 +53,8 @@
super(handler,
"saveProgram",
"save",
- _("tutti.action.save.program"),
- _("tutti.action.save.program.tip"),
+ _("tutti.action.saveProgram"),
+ _("tutti.action.saveProgram.tip"),
true
);
}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/SaveProgramAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/CancelEditProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/CancelEditProtocolAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/CancelEditProtocolAction.java 2013-01-19 01:59:45 UTC (rev 228)
@@ -0,0 +1,36 @@
+package fr.ifremer.tutti.ui.swing.content.protocol;
+
+import fr.ifremer.tutti.ui.swing.AbstractTuttiAction;
+import fr.ifremer.tutti.ui.swing.TuttiScreen;
+
+import java.awt.event.ActionEvent;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class CancelEditProtocolAction extends AbstractTuttiAction<EditProtocolUIModel, EditProtocolUIHandler> {
+
+ private static final long serialVersionUID = 1L;
+
+ public CancelEditProtocolAction(EditProtocolUIHandler handler) {
+ super(handler,
+ "cancelEditProtocol",
+ "cancel",
+ _("tutti.action.cancel.editProtocol"),
+ _("tutti.action.cancel.editProtocol.tip"),
+ true
+ );
+ }
+
+ @Override
+ protected void doAction(ActionEvent event) {
+
+ getContext().setScreen(TuttiScreen.SELECT_CRUISE);
+ }
+
+}
\ No newline at end of file
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/CancelEditProtocolAction.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/content/protocol/EditProtocolUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.css 2013-01-18 18:07:24 UTC (rev 227)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.css 2013-01-19 01:59:45 UTC (rev 228)
@@ -57,8 +57,7 @@
}
#cancelButton {
- text: "tutti.action.cancel";
- actionIcon: cancel;
+ action: {cancelEditProtocolAction};
}
#speciesComboBox {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx 2013-01-18 18:07:24 UTC (rev 227)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx 2013-01-19 01:59:45 UTC (rev 228)
@@ -68,6 +68,7 @@
<EditProtocolUIModel id='model'
initializer='getContextValue(EditProtocolUIModel.class)'/>
+ <CancelEditProtocolAction id='cancelEditProtocolAction' constructorParams='handler'/>
<SaveProtocolAction id='saveProtocolAction' constructorParams='handler'/>
<SwingValidatorMessageTableModel id='errorTableModel'/>
@@ -169,7 +170,7 @@
</JTabbedPane>
<JPanel layout='{new GridLayout(1, 0)}' constraints='BorderLayout.SOUTH'>
- <JButton id='cancelButton' onActionPerformed='handler.cancel()'/>
+ <JButton id='cancelButton'/>
<JButton id='saveButton'/>
</JPanel>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java 2013-01-18 18:07:24 UTC (rev 227)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java 2013-01-19 01:59:45 UTC (rev 228)
@@ -29,7 +29,6 @@
import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;
import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
import com.google.common.collect.Multimap;
import fr.ifremer.tutti.persistence.entities.TuttiEntities;
import fr.ifremer.tutti.persistence.entities.data.SampleCategoryEnum;
@@ -39,7 +38,6 @@
import fr.ifremer.tutti.persistence.entities.referential.Species;
import fr.ifremer.tutti.ui.swing.MainUI;
import fr.ifremer.tutti.ui.swing.MainUIHandler;
-import fr.ifremer.tutti.ui.swing.TuttiScreen;
import fr.ifremer.tutti.ui.swing.TuttiUI;
import fr.ifremer.tutti.ui.swing.util.HydrologicCaracteristicUtil;
import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor;
@@ -57,8 +55,6 @@
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.TableColumnModelEvent;
import javax.swing.event.TableColumnModelListener;
-import javax.swing.table.TableColumn;
-import javax.swing.table.TableColumnModel;
import java.util.Collection;
import java.util.List;
import java.util.Map;
@@ -387,25 +383,13 @@
//-- Public methods --//
//------------------------------------------------------------------------//
- public void cancel() {
-
- context.setScreen(TuttiScreen.SELECT_CRUISE);
- }
-
public void addRow() {
- log.info("addRow 1");
Species species = (Species) ui.getSpeciesComboBox().getSelectedItem();
- log.info("addRow 2");
EditProtocolSpeciesRowModel protocol = getTableModel().createNewRow();
- log.info("addRow 3");
protocol.setSpecies(species);
- log.info("addRow 4");
getTableModel().addNewRow(protocol);
- log.info("addRow 5");
ui.getSpeciesComboBox().removeItem(species);
- log.info("addRow 6");
selectFirstInCombo(ui.getSpeciesComboBox());
- log.info("addRow 7");
// getModel().setModify(true);
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/SaveProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/SaveProtocolAction.java 2013-01-18 18:07:24 UTC (rev 227)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/SaveProtocolAction.java 2013-01-19 01:59:45 UTC (rev 228)
@@ -1,6 +1,30 @@
package fr.ifremer.tutti.ui.swing.content.protocol;
+/*
+ * #%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.collect.BiMap;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
@@ -33,13 +57,15 @@
/** Logger. */
private static final Log log = LogFactory.getLog(SaveProtocolAction.class);
-
+
+ private static final long serialVersionUID = 1L;
+
public SaveProtocolAction(EditProtocolUIHandler handler) {
super(handler,
"saveProtocol",
"save",
- _("tutti.action.save.protocol"),
- _("tutti.action.save.protocol.tip"),
+ _("tutti.action.saveProtocol"),
+ _("tutti.action.saveProtocol.tip"),
true
);
}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/SaveProtocolAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-18 18:07:24 UTC (rev 227)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-19 01:59:45 UTC (rev 228)
@@ -3,37 +3,49 @@
tutti.action.about=À propos
tutti.action.about.tip=À Propos
tutti.action.cancel=Annuler
+tutti.action.cancel.editCruise.tip=Annuler l'édition (ou la création) de la campagne
+tutti.action.cancel.editProgram=Annuler
+tutti.action.cancel.editProgram.tip=Annuler l'édition (ou la création) de la série de campagne
+tutti.action.cancel.editProtocol=Annuler
+tutti.action.cancel.editProtocol.tip=Annuler l'édition (ou la création) du protocole
+tutti.action.cancel.editcruise=
tutti.action.casino-import=Import Casino
-tutti.action.clone=Cloner
-tutti.action.clone.protocol.tip=Dupliquer le protocole sélectionné
+tutti.action.chooseProtocolFile=Choisir le fichier de protocole
+tutti.action.cloneProtocol=Cloner
+tutti.action.cloneProtocol.tip=Dupliquer le protocole sélectionné
tutti.action.close=Fermer
tutti.action.configuration=Configuration
tutti.action.configuration.tip=Configurer Tutti
tutti.action.createSpeciesBatch=Créer un lot pour une espèce
-tutti.action.edit=Editer
-tutti.action.edit.protocol.tip=Éditer le protocole sélectionné
tutti.action.editCatches=Saisir les captures
tutti.action.editCatches.tip=Saisir des captures
-tutti.action.editCruise=Éditer la campagne
+tutti.action.editCruise=Éditer
tutti.action.editCruise.tip=Éditer la campagne sélectionnée
tutti.action.editProgram=Programme
tutti.action.editProgram.tip=Éditer le programme sélectionné
tutti.action.editProtocol=Protocole
-tutti.action.editProtocol.tip=
+tutti.action.editProtocol.tip=Éditer le protocol sélectionné
+tutti.action.editSelectedCruise=Campagne
+tutti.action.editSelectedCruise.tip=Éditer la campagne sélectionnée
+tutti.action.editSelectedProgram=Série de campagne
+tutti.action.editSelectedProgram.tip=Éditer la série de campagne sélectionnée
+tutti.action.editSelectedProtocol=Protocole
+tutti.action.editSelectedProtocol.tip=Éditer le protocole sélectionnée
tutti.action.exit=Quitter
tutti.action.exit.tip=Quitter l'application
-tutti.action.export=Exporter
-tutti.action.export.protocol.tip=Exporter le protocole sélectionné
+tutti.action.exportProtocol=Exporter
+tutti.action.exportProtocol.tip=Exporter le protocole sélectionné
tutti.action.generate=Générer
tutti.action.generateCampaignName=Générer le nom
-tutti.action.import=Importer
-tutti.action.import.protocol.tip=Importer un protocole
-tutti.action.manageProtocol=Protocole
-tutti.action.manageProtocol.tip=Gérer les protocoles
+tutti.action.importProtocol=Importer
+tutti.action.importProtocol.tip=Importer un protocole
tutti.action.new=Nouveau
-tutti.action.new.protocol.tip=Créer un nouve protocole
+tutti.action.newCruise=Nouveau
tutti.action.newCruise.tip=Créer une nouvelle campagne
+tutti.action.newProgram=Nouveau
tutti.action.newProgram.tip=Créer une nouvelle série de campagne
+tutti.action.newProtocol=Nouveau
+tutti.action.newProtocol.tip=Créer un nouveau protocole
tutti.action.pupitri-import=Import PUPITRI
tutti.action.reload.actions=Recharger les actions
tutti.action.reload.application=Recharger l'application
@@ -46,14 +58,14 @@
tutti.action.removeSpeciesSubBatch.tip=Supprimer tous les lots fils du lot sélectionné
tutti.action.reset.fishingOperationValidState=Réinitialiser
tutti.action.save=Enregistrer
-tutti.action.save.cruise=Enregistrer
-tutti.action.save.cruise.tip=Enregistrer la campagne
-tutti.action.save.fishingOperation=Enregistrer
-tutti.action.save.fishingOperation.tip=Enregistrer le trait
-tutti.action.save.program=Enregistrer
-tutti.action.save.program.tip=Enregistrer la série de campagne
-tutti.action.save.protocol=Enregistrer
-tutti.action.save.protocol.tip=Enregistrer le protocol
+tutti.action.saveCruise=Enregistrer
+tutti.action.saveCruise.tip=Enregistrer la campagne
+tutti.action.saveFishingOperation=Enregistrer
+tutti.action.saveFishingOperation.tip=Enregistrer le trait
+tutti.action.saveProgram=Enregistrer
+tutti.action.saveProgram.tip=Enregistrer la série de campagne
+tutti.action.saveProtocol=Enregistrer
+tutti.action.saveProtocol.tip=Enregistrer le protocol
tutti.action.selectCruise=Sélectionner une campagne
tutti.action.selectCruise.tip=Sélectionner la campagne à utiliser
tutti.action.site=Site
@@ -81,8 +93,8 @@
tutti.config.ui.shortcut.closePopup=Fermer une popup
tutti.config.ui.showNumberEditorButton=Afficher le pavé numérique de saisie
tutti.config.ui.useSexagecimalEditor=Utiliser l'éditeur sexagécimal pour entrer des coordonnées
-tutti.duration.format=dj Hh m'm'
tutti.errorTable.title=Table d'erreurs
+tutti.file.protocol=Extension d'un fichier de protocole Tutti
tutti.label.attachmentEditor.file=Fichier
tutti.label.attachmentEditor.fileComment=Commentaire
tutti.label.attachmentEditor.fileName=Nom
@@ -132,8 +144,6 @@
tutti.label.filterVesselType.fishing.tip=Uniquement les navires pro
tutti.label.filterVesselType.scientific=Scientifique
tutti.label.filterVesselType.scientific.tip=Uniquement les navires scientifiques
-tutti.label.fishingOperation.date=Date
-tutti.label.fishingOperation.distanceChalutee=Distance chalutée
tutti.label.fishingOperation.duration=Durée
tutti.label.fishingOperation.fishingOperationInvalid=Trait invalide
tutti.label.fishingOperation.fishingOperationNumber=Numéro de Trait
@@ -143,8 +153,6 @@
tutti.label.fishingOperation.gearDate=Date
tutti.label.fishingOperation.gearLatitude=Latitude
tutti.label.fishingOperation.gearLongitude=Longitude
-tutti.label.fishingOperation.gearShootingCoordinatesDD=DD
-tutti.label.fishingOperation.gearShootingCoordinatesDMS=DMS
tutti.label.fishingOperation.gearShootingEnd=Fin de traine
tutti.label.fishingOperation.gearShootingStart=Début de traine
tutti.label.fishingOperation.gearTime=Heure
@@ -185,7 +193,6 @@
tutti.label.tab.accidentel=Captures accidentelles
tutti.label.tab.benthos=Benthos
tutti.label.tab.catches=Captures
-tutti.label.tab.catchesCaracteristics=Caractéristiques générales
tutti.label.tab.fishingOperation=Trait
tutti.label.tab.fishingOperation.environment=Environnement
tutti.label.tab.fishingOperation.gearShooting=Mise en oeuvre de l'engin
@@ -206,7 +213,6 @@
tutti.legend.catch.macroWaste=Macro déchets
tutti.legend.catch.species=Espèces
tutti.legend.catch.total=Capture
-tutti.legend.filterSpeciesBatchMode=Filtrer les lots
tutti.legend.frequencyConfiguration=Configuration
tutti.legend.splitSpeciesBatchConfiguration=Configuration
tutti.menu.actions=Actions
@@ -223,13 +229,12 @@
tutti.menu.synchronisationImport.tip=Effectuer des imports
tutti.menu.synchronisations=Synchronisation
tutti.menu.synchronisations.tip=Import/Export
-tutti.message.action.running=<html>Action <strong>%s</strong> en cours d'execution...<br/><hr/>Merci de bien vouloir patienter.</html>
+tutti.message.action.running=<html>Action <strong>%s</strong> en cours d'execution...<hr/></html>
tutti.sampleCategoryType.age=Age
tutti.sampleCategoryType.maturity=Maturité
tutti.sampleCategoryType.sex=Sexe
tutti.sampleCategoryType.size=Class Tri.
tutti.sampleCategoryType.sortedUnsorted=V/HV
-tutti.sampleCategoryType.species=Espèce
tutti.table.accidental.batch.header.comment=Commentaire
tutti.table.accidental.batch.header.file=Pièces-jointes
tutti.table.accidental.batch.header.speciesByCode=Espèce
@@ -294,6 +299,8 @@
tutti.table.species.sampleCategory.header.weight=Poids
tutti.timeeditor.H=H
tutti.title.about=À propos de Tutti
+tutti.title.choose.protocolExportFile=Choisir le fichier où exporter le protocole
+tutti.title.choose.protocolImportFile=Choisir le fichier du protocole à importer
tutti.title.create.cruise=Créer une nouvelle campagne
tutti.title.create.program=Créer une nouvelle série de campagne
tutti.title.create.protocol=Créer un nouveau protocol de saisie
@@ -313,7 +320,6 @@
tutti.title.selectedProtocol=Protocol %s
tutti.title.splitBatch=Catégoriser un lot
tutti.title.validate.operations=Validation des opérations de pêches (%s)
-tutti.title.waitingBar=Action en cours...
tutti.to.be.done=< A FAIRE >
tutti.tooltip.attachment.none=Pas de pièce-jointes
tutti.tooltip.comment.none=Pas de commentaire
1
0
r227 - in trunk/tutti-ui-swing/src/main: java/fr/ifremer/tutti/ui/swing/content/cruise java/fr/ifremer/tutti/ui/swing/content/operation java/fr/ifremer/tutti/ui/swing/content/program java/fr/ifremer/tutti/ui/swing/content/protocol resources/i18n
by kmorin@users.forge.codelutin.com 18 Jan '13
by kmorin@users.forge.codelutin.com 18 Jan '13
18 Jan '13
Author: kmorin
Date: 2013-01-18 19:07:24 +0100 (Fri, 18 Jan 2013)
New Revision: 227
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/227
Log:
use actions to save protocols, cruises and programs
Added:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/SaveCruiseAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/SaveProgramAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/SaveProtocolAction.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.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/operation/EditFishingOperationUI.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/program/EditProgramUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css 2013-01-18 17:22:41 UTC (rev 226)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css 2013-01-18 18:07:24 UTC (rev 227)
@@ -186,8 +186,7 @@
}
#saveButton {
- actionIcon: save;
- text: "tutti.action.save";
+ action: {saveCruiseAction};
enabled: {model.isModify() && model.isValid()};
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx 2013-01-18 17:22:41 UTC (rev 226)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx 2013-01-18 18:07:24 UTC (rev 227)
@@ -72,6 +72,8 @@
<EditCruiseUIModel id='model'
initializer='getContextValue(EditCruiseUIModel.class)'/>
+ <SaveCruiseAction id='saveCruiseAction' constructorParams='handler'/>
+
<SwingValidatorMessageTableModel id='errorTableModel'/>
<BeanValidator id='validator' bean='model' errorTableModel='errorTableModel'
@@ -211,7 +213,7 @@
<cell columns='6'>
<JPanel layout='{new GridLayout(1, 0)}'>
<JButton id='cancelButton' onActionPerformed='handler.cancel()'/>
- <JButton id='saveButton' onActionPerformed='handler.save()'/>
+ <JButton id='saveButton'/>
</JPanel>
</cell>
</row>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java 2013-01-18 17:22:41 UTC (rev 226)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java 2013-01-18 18:07:24 UTC (rev 227)
@@ -276,26 +276,6 @@
context.setScreen(TuttiScreen.SELECT_CRUISE);
}
- public void save() {
-
- EditCruiseUIModel model = getModel();
-
- Cruise bean = model.toBean();
-
- Cruise saved;
- if (TuttiEntities.isNew(bean)) {
-
- saved = persistenceService.createCruise(bean);
- } else {
- saved = persistenceService.saveCruise(bean);
- }
-
- context.setProgramId(saved.getProgram().getId());
- context.setCruiseId(saved.getId());
-
- context.setScreen(TuttiScreen.SELECT_CRUISE);
- }
-
public static final String cruiseNameFormat = "%1$s_%2$s";
public void generateCampaignName() {
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/SaveCruiseAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/SaveCruiseAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/SaveCruiseAction.java 2013-01-18 18:07:24 UTC (rev 227)
@@ -0,0 +1,52 @@
+
+package fr.ifremer.tutti.ui.swing.content.cruise;
+
+import fr.ifremer.tutti.persistence.entities.TuttiEntities;
+import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.service.PersistenceService;
+import fr.ifremer.tutti.ui.swing.AbstractTuttiAction;
+import fr.ifremer.tutti.ui.swing.TuttiScreen;
+import fr.ifremer.tutti.ui.swing.TuttiUIContext;
+import java.awt.event.ActionEvent;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ *
+ * @author kmorin <kmorin(a)codelutin.com>
+ */
+public class SaveCruiseAction extends AbstractTuttiAction<EditCruiseUIModel, EditCruiseUIHandler> {
+
+ public SaveCruiseAction(EditCruiseUIHandler handler) {
+ super(handler,
+ "saveCruise",
+ "save",
+ _("tutti.action.save.cruise"),
+ _("tutti.action.save.cruise.tip"),
+ true
+ );
+ }
+
+ @Override
+ protected void doAction(ActionEvent event) {
+ TuttiUIContext context = getContext();
+ EditCruiseUIModel model = getModel();
+ PersistenceService persistenceService = context.getService(PersistenceService.class);
+
+ Cruise bean = model.toBean();
+
+ Cruise saved;
+ if (TuttiEntities.isNew(bean)) {
+
+ saved = persistenceService.createCruise(bean);
+ } else {
+ saved = persistenceService.saveCruise(bean);
+ }
+
+ context.setProgramId(saved.getProgram().getId());
+ context.setCruiseId(saved.getId());
+
+ context.setScreen(TuttiScreen.SELECT_CRUISE);
+ }
+
+}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css 2013-01-18 17:22:41 UTC (rev 226)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css 2013-01-18 18:07:24 UTC (rev 227)
@@ -408,7 +408,6 @@
#saveButton {
action: {saveFishingOperationAction};
- text: "tutti.action.save";
}
#cancelButton {
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-01-18 17:22:41 UTC (rev 226)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUI.css 2013-01-18 18:07:24 UTC (rev 227)
@@ -60,9 +60,8 @@
}
#saveButton {
- text: "tutti.action.save";
+ action: {saveProgramAction};
enabled: {model.isModify() && model.isValid()};
- actionIcon: save;
}
#cancelButton {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUI.jaxx 2013-01-18 17:22:41 UTC (rev 226)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUI.jaxx 2013-01-18 18:07:24 UTC (rev 227)
@@ -61,6 +61,8 @@
<EditProgramUIModel id='model'
initializer='getContextValue(EditProgramUIModel.class)'/>
+ <SaveProgramAction id='saveProgramAction' constructorParams='handler'/>
+
<SwingValidatorMessageTableModel id='errorTableModel'/>
<BeanValidator id='validator' bean='model' errorTableModel='errorTableModel'
@@ -110,7 +112,7 @@
<cell columns='2'>
<JPanel layout='{new GridLayout(1, 0)}'>
<JButton id='cancelButton' onActionPerformed='handler.cancel()'/>
- <JButton id='saveButton' onActionPerformed='handler.save()'/>
+ <JButton id='saveButton'/>
</JPanel>
</cell>
</row>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIHandler.java 2013-01-18 17:22:41 UTC (rev 226)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIHandler.java 2013-01-18 18:07:24 UTC (rev 227)
@@ -134,21 +134,4 @@
context.setScreen(TuttiScreen.SELECT_CRUISE);
}
- public void save() {
-
- EditProgramUIModel model = getModel();
-
- Program bean = model.toBean();
-
- Program saved;
- if (TuttiEntities.isNew(bean)) {
-
- saved = persistenceService.createProgram(bean);
- } else {
- saved = persistenceService.saveProgram(bean);
- }
-
- context.setProgramId(saved.getId());
- context.setScreen(TuttiScreen.SELECT_CRUISE);
- }
}
Copied: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/SaveProgramAction.java (from rev 226, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/SaveFishingOperationAction.java)
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/SaveProgramAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/SaveProgramAction.java 2013-01-18 18:07:24 UTC (rev 227)
@@ -0,0 +1,58 @@
+
+package fr.ifremer.tutti.ui.swing.content.program;
+
+import fr.ifremer.tutti.persistence.entities.TuttiEntities;
+import fr.ifremer.tutti.persistence.entities.data.Program;
+import fr.ifremer.tutti.service.PersistenceService;
+import fr.ifremer.tutti.ui.swing.AbstractTuttiAction;
+import fr.ifremer.tutti.ui.swing.TuttiScreen;
+import fr.ifremer.tutti.ui.swing.TuttiUIContext;
+import java.awt.event.ActionEvent;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ *
+ * @author kmorin <kmorin(a)codelutin.com>
+ * @since 1.0
+ */
+public class SaveProgramAction extends AbstractTuttiAction<EditProgramUIModel, EditProgramUIHandler> {
+
+ private static final long serialVersionUID = 1L;
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(SaveProgramAction.class);
+
+ public SaveProgramAction(EditProgramUIHandler handler) {
+ super(handler,
+ "saveProgram",
+ "save",
+ _("tutti.action.save.program"),
+ _("tutti.action.save.program.tip"),
+ true
+ );
+ }
+
+ @Override
+ protected void doAction(ActionEvent event) {
+ TuttiUIContext context = getContext();
+ PersistenceService persistenceService = context.getService(PersistenceService.class);
+ EditProgramUIModel model = getModel();
+
+ Program bean = model.toBean();
+
+ Program saved;
+ if (TuttiEntities.isNew(bean)) {
+
+ saved = persistenceService.createProgram(bean);
+ } else {
+ saved = persistenceService.saveProgram(bean);
+ }
+
+ context.setProgramId(saved.getId());
+ context.setScreen(TuttiScreen.SELECT_CRUISE);
+ }
+
+}
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-01-18 17:22:41 UTC (rev 226)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.css 2013-01-18 18:07:24 UTC (rev 227)
@@ -52,9 +52,8 @@
}
#saveButton {
- text: "tutti.action.save";
enabled: {model.isModify() && model.isValid()};
- actionIcon: save;
+ action: {saveProtocolAction};
}
#cancelButton {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx 2013-01-18 17:22:41 UTC (rev 226)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx 2013-01-18 18:07:24 UTC (rev 227)
@@ -68,6 +68,8 @@
<EditProtocolUIModel id='model'
initializer='getContextValue(EditProtocolUIModel.class)'/>
+ <SaveProtocolAction id='saveProtocolAction' constructorParams='handler'/>
+
<SwingValidatorMessageTableModel id='errorTableModel'/>
<BeanValidator id='validator' bean='model' errorTableModel='errorTableModel'
@@ -168,7 +170,7 @@
<JPanel layout='{new GridLayout(1, 0)}' constraints='BorderLayout.SOUTH'>
<JButton id='cancelButton' onActionPerformed='handler.cancel()'/>
- <JButton id='saveButton' onActionPerformed='handler.save()'/>
+ <JButton id='saveButton'/>
</JPanel>
</JPanel>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java 2013-01-18 17:22:41 UTC (rev 226)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java 2013-01-18 18:07:24 UTC (rev 227)
@@ -392,70 +392,6 @@
context.setScreen(TuttiScreen.SELECT_CRUISE);
}
- public void save() {
-
- EditProtocolUIModel model = getModel();
-
- TuttiProtocol bean = model.toBean();
-
- // get the species protocols from the table
- List<SpeciesProtocol> protocols = Lists.newArrayList();
-
- for (EditProtocolSpeciesRowModel row : getTableModel().getRows()) {
- if (row.isValid()) {
- SpeciesProtocol protocol = row.toBean();
- protocols.add(protocol);
- }
- }
- bean.setSpecies(protocols);
-
- // split the hydro grouped pmfm
- List<String> hydroPmfm = bean.getHydrologyPmfmId();
- List<String> allIds = Lists.newArrayList();
- if (hydroPmfm != null) {
- for (String id : hydroPmfm) {
- allIds.addAll(hydroCaracteristics.get(id));
- }
- }
- bean.setHydrologyPmfmId(allIds);
-
- // find out sampling order
-
- TableColumnModel columnModel = getTable().getColumnModel();
- int columnCount = columnModel.getColumnCount();
- Map<Integer, SampleCategoryEnum> sampleCategoryOrders = Maps.newTreeMap();
-
- for (int i = 0; i < columnCount; i++) {
-
- TableColumn column = columnModel.getColumn(i);
- ColumnIdentifier<EditProtocolSpeciesRowModel> identifier = (ColumnIdentifier<EditProtocolSpeciesRowModel>) column.getIdentifier();
- SampleCategoryEnum sampleCategory = columToSampleCategory.get(identifier);
- if (sampleCategory != null) {
-
- // found a sample category, keep it
- sampleCategoryOrders.put(i, sampleCategory);
- }
- }
-
- List<SampleCategoryEnum> sampleOrder =
- Lists.newArrayList(sampleCategoryOrders.values());
-
- bean.setSampleCategoryOrder(sampleOrder);
-
- TuttiProtocol saved;
- log.info("bean id : " + bean.getId());
- if (TuttiEntities.isNew(bean)) {
-
- saved = persistenceService.createProtocol(bean);
- } else {
- saved = persistenceService.saveProtocol(bean);
- }
-
- context.setProtocolId(saved.getId());
-
- context.setScreen(TuttiScreen.SELECT_CRUISE);
- }
-
public void addRow() {
log.info("addRow 1");
Species species = (Species) ui.getSpeciesComboBox().getSelectedItem();
@@ -488,6 +424,14 @@
getTableModel().fireTableRowsDeleted(rowIndex, rowIndex);
}
+ public Multimap<String, String> getHydroCaracteristics() {
+ return hydroCaracteristics;
+ }
+
+ public BiMap<ColumnIdentifier<EditProtocolSpeciesRowModel>, SampleCategoryEnum> getColumToSampleCategory() {
+ return columToSampleCategory;
+ }
+
//------------------------------------------------------------------------//
//-- Internal methods --//
//------------------------------------------------------------------------//
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/SaveProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/SaveProtocolAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/SaveProtocolAction.java 2013-01-18 18:07:24 UTC (rev 227)
@@ -0,0 +1,117 @@
+
+package fr.ifremer.tutti.ui.swing.content.protocol;
+
+import com.google.common.collect.BiMap;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.google.common.collect.Multimap;
+import fr.ifremer.tutti.persistence.entities.TuttiEntities;
+import fr.ifremer.tutti.persistence.entities.data.SampleCategoryEnum;
+import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol;
+import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
+import fr.ifremer.tutti.service.PersistenceService;
+import fr.ifremer.tutti.ui.swing.AbstractTuttiAction;
+import fr.ifremer.tutti.ui.swing.TuttiScreen;
+import fr.ifremer.tutti.ui.swing.TuttiUIContext;
+import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier;
+import java.awt.event.ActionEvent;
+import java.util.List;
+import java.util.Map;
+import javax.swing.table.TableColumn;
+import javax.swing.table.TableColumnModel;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ *
+ * @author kmorin <kmorin(a)codelutin.com>
+ * @since 1.0
+ */
+public class SaveProtocolAction extends AbstractTuttiAction<EditProtocolUIModel, EditProtocolUIHandler> {
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(SaveProtocolAction.class);
+
+ public SaveProtocolAction(EditProtocolUIHandler handler) {
+ super(handler,
+ "saveProtocol",
+ "save",
+ _("tutti.action.save.protocol"),
+ _("tutti.action.save.protocol.tip"),
+ true
+ );
+ }
+
+ @Override
+ protected void doAction(ActionEvent event) {
+ EditProtocolUIModel model = getModel();
+ TuttiUIContext context = getContext();
+ EditProtocolUIHandler handler = getHandler();
+ PersistenceService persistenceService = context.getService(PersistenceService.class);
+
+ TuttiProtocol bean = model.toBean();
+
+ // get the species protocols from the table
+ List<SpeciesProtocol> protocols = Lists.newArrayList();
+
+ for (EditProtocolSpeciesRowModel row : handler.getTableModel().getRows()) {
+ if (row.isValid()) {
+ SpeciesProtocol protocol = row.toBean();
+ protocols.add(protocol);
+ }
+ }
+ bean.setSpecies(protocols);
+
+ // split the hydro grouped pmfm
+ List<String> hydroPmfm = bean.getHydrologyPmfmId();
+ List<String> allIds = Lists.newArrayList();
+ Multimap<String, String> hydroCaracteristics = handler.getHydroCaracteristics();
+ if (hydroPmfm != null) {
+ for (String id : hydroPmfm) {
+ allIds.addAll(hydroCaracteristics.get(id));
+ }
+ }
+ bean.setHydrologyPmfmId(allIds);
+
+ // find out sampling order
+
+ TableColumnModel columnModel = handler.getTable().getColumnModel();
+ int columnCount = columnModel.getColumnCount();
+ Map<Integer, SampleCategoryEnum> sampleCategoryOrders = Maps.newTreeMap();
+
+ BiMap<ColumnIdentifier<EditProtocolSpeciesRowModel>,SampleCategoryEnum> columToSampleCategory = handler.getColumToSampleCategory();
+ for (int i = 0; i < columnCount; i++) {
+
+ TableColumn column = columnModel.getColumn(i);
+ ColumnIdentifier<EditProtocolSpeciesRowModel> identifier = (ColumnIdentifier<EditProtocolSpeciesRowModel>) column.getIdentifier();
+ SampleCategoryEnum sampleCategory = columToSampleCategory.get(identifier);
+ if (sampleCategory != null) {
+
+ // found a sample category, keep it
+ sampleCategoryOrders.put(i, sampleCategory);
+ }
+ }
+
+ List<SampleCategoryEnum> sampleOrder =
+ Lists.newArrayList(sampleCategoryOrders.values());
+
+ bean.setSampleCategoryOrder(sampleOrder);
+
+ TuttiProtocol saved;
+ log.info("bean id : " + bean.getId());
+ if (TuttiEntities.isNew(bean)) {
+
+ saved = persistenceService.createProtocol(bean);
+ } else {
+ saved = persistenceService.saveProtocol(bean);
+ }
+
+ context.setProtocolId(saved.getId());
+
+ context.setScreen(TuttiScreen.SELECT_CRUISE);
+ }
+
+
+}
Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-18 17:22:41 UTC (rev 226)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-18 18:07:24 UTC (rev 227)
@@ -46,8 +46,14 @@
tutti.action.removeSpeciesSubBatch.tip=Supprimer tous les lots fils du lot sélectionné
tutti.action.reset.fishingOperationValidState=Réinitialiser
tutti.action.save=Enregistrer
+tutti.action.save.cruise=Enregistrer
+tutti.action.save.cruise.tip=Enregistrer la campagne
tutti.action.save.fishingOperation=Enregistrer
tutti.action.save.fishingOperation.tip=Enregistrer le trait
+tutti.action.save.program=Enregistrer
+tutti.action.save.program.tip=Enregistrer la série de campagne
+tutti.action.save.protocol=Enregistrer
+tutti.action.save.protocol.tip=Enregistrer le protocol
tutti.action.selectCruise=Sélectionner une campagne
tutti.action.selectCruise.tip=Sélectionner la campagne à utiliser
tutti.action.site=Site
1
0
r226 - in trunk/tutti-ui-swing/src/main: java/fr/ifremer/tutti/ui/swing java/fr/ifremer/tutti/ui/swing/content/operation resources/i18n
by kmorin@users.forge.codelutin.com 18 Jan '13
by kmorin@users.forge.codelutin.com 18 Jan '13
18 Jan '13
Author: kmorin
Date: 2013-01-18 18:22:41 +0100 (Fri, 18 Jan 2013)
New Revision: 226
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/226
Log:
- put the fishing operation saving in an action
- reload the existing fishing operation when clicks on Cancel
Added:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/SaveFishingOperationAction.java
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiAction.java 2013-01-18 16:49:08 UTC (rev 225)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiAction.java 2013-01-18 17:22:41 UTC (rev 226)
@@ -24,6 +24,8 @@
* #L%
*/
+import com.google.common.base.Preconditions;
+import fr.ifremer.tutti.service.DecoratorService;
import jaxx.runtime.SwingUtil;
import jaxx.runtime.swing.ErrorDialogUI;
import org.apache.commons.logging.Log;
@@ -45,6 +47,7 @@
import java.util.concurrent.Executors;
import static org.nuiton.i18n.I18n._;
+import org.nuiton.util.decorator.Decorator;
/**
* TODO
@@ -200,4 +203,25 @@
}
}
}
+
+ protected <O> Decorator<O> getDecorator(Class<O> type, String name) {
+ DecoratorService decoratorService =
+ getContext().getService(DecoratorService.class);
+
+ Preconditions.checkNotNull(type);
+
+ Decorator decorator = decoratorService.getDecoratorByType(type, name);
+ if (decorator == null) {
+
+ if (DecoratorService.LabelAware.class.isAssignableFrom(type)) {
+ decorator = getDecorator(DecoratorService.LabelAware.class, null);
+ }
+ }
+ Preconditions.checkNotNull(decorator);
+ return decorator;
+ }
+
+ protected String decorate(Object object) {
+ return getDecorator(object.getClass(), null).toString(object);
+ }
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css 2013-01-18 16:49:08 UTC (rev 225)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css 2013-01-18 17:22:41 UTC (rev 226)
@@ -407,7 +407,7 @@
}
#saveButton {
- actionIcon: save;
+ action: {saveFishingOperationAction};
text: "tutti.action.save";
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.jaxx 2013-01-18 16:49:08 UTC (rev 225)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.jaxx 2013-01-18 17:22:41 UTC (rev 226)
@@ -75,6 +75,8 @@
<EditFishingOperationUIModel id='model'
initializer='getContextValue(EditFishingOperationUIModel.class)'/>
+
+ <SaveFishingOperationAction id='saveFishingOperationAction' constructorParams='handler'/>
<SwingValidatorMessageTableModel id='errorTableModel'/>
@@ -463,7 +465,7 @@
<JPanel id='createFishingOperationActions' layout='{new GridLayout(1,0)}'
constraints='BorderLayout.CENTER'>
<JButton id='cancelButton' onActionPerformed='handler.cancel()'/>
- <JButton id='saveButton' onActionPerformed='handler.save()'/>
+ <JButton id='saveButton'/>
</JPanel>
</JPanel>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-01-18 16:49:08 UTC (rev 225)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-01-18 17:22:41 UTC (rev 226)
@@ -404,49 +404,16 @@
}
public void cancel() {
-
- if (log.isInfoEnabled()) {
- log.info("Cancel edition for fishingOperation ");
- }
- // cancel to create a new fishingOperation
- parentUi.getHandler().closeCurrentFishingOperation();
- }
-
- public void save() {
- // previous fishingOperation was modified, let's save it
- EditFishingOperationUIModel beanToSave = fishingOperationMonitor.getBean();
-
- if (beanToSave.isEmpty()) {
-
- // user must use save button
- if (log.isWarnEnabled()) {
- log.warn("Won't save new fishing operation, use explicit save button instead...");
- }
- } else if (beanToSave.isValid()) {
- if (getConfig().isUseSexagecimalEditor()) {
- beanToSave.convertGearShootingCoordinatesDMSToDD();
- }
-
- // save modified fishing operation
- FishingOperation toSave = beanToSave.toBean();
-
- showInformationMessage(
- "[ Trait - Caractéristiques générales ] " +
- "Sauvegarde des modifications de " + decorate(toSave) +
- ".");
-
+ if (getModel().isCreate()) {
if (log.isInfoEnabled()) {
- log.info("FishingOperation " + toSave.getId() +
- " was modified, will save it.");
+ log.info("Cancel edition for fishingOperation ");
}
-
- fishingOperationMonitor.clearModified();
- getModel().setModify(false);
-
- // persist current fishingOperation
- parentUi.getHandler().saveFishingOperation(toSave);
+ // cancel to create a new fishingOperation
+ parentUi.getHandler().closeCurrentFishingOperation();
+
+ } else {
+ parentUi.getHandler().reloadFishingOperation();
}
-
}
public void importCasino() {
@@ -481,6 +448,14 @@
getModel().setGearShootingEndLongitude(Float.valueOf(text));
}
+ public FishingOperationsUI getParentUi() {
+ return parentUi;
+ }
+
+ public TuttiBeanMonitor<EditFishingOperationUIModel> getFishingOperationMonitor() {
+ return fishingOperationMonitor;
+ }
+
//------------------------------------------------------------------------//
//-- Protected methods --//
//------------------------------------------------------------------------//
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java 2013-01-18 16:49:08 UTC (rev 225)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java 2013-01-18 17:22:41 UTC (rev 226)
@@ -279,4 +279,9 @@
model.updateFishingOperation(existingFishingOperation, savedFishingOperation);
}
}
+
+ public void reloadFishingOperation() {
+ FishingOperation operation = getModel().getSelectedFishingOperation();
+ selectFishingOperation(operation);
+ }
}
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/SaveFishingOperationAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/SaveFishingOperationAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/SaveFishingOperationAction.java 2013-01-18 17:22:41 UTC (rev 226)
@@ -0,0 +1,78 @@
+
+package fr.ifremer.tutti.ui.swing.content.operation;
+
+import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
+import fr.ifremer.tutti.ui.swing.AbstractTuttiAction;
+import fr.ifremer.tutti.ui.swing.content.operation.EditFishingOperationUIHandler;
+import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor;
+import java.awt.event.ActionEvent;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ *
+ * @author kmorin <kmorin(a)codelutin.com>
+ * @since 1.0
+ */
+public class SaveFishingOperationAction extends AbstractTuttiAction<EditFishingOperationUIModel, EditFishingOperationUIHandler> {
+
+ private static final long serialVersionUID = 1L;
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(SaveFishingOperationAction.class);
+
+ public SaveFishingOperationAction(EditFishingOperationUIHandler handler) {
+ super(handler,
+ "saveFishingOperation",
+ "save",
+ _("tutti.action.save.fishingOperation"),
+ _("tutti.action.save.fishingOperation.tip"),
+ false
+ );
+ }
+
+ @Override
+ protected void doAction(ActionEvent event) {
+
+ EditFishingOperationUIHandler handler = getHandler();
+
+ TuttiBeanMonitor<EditFishingOperationUIModel> monitor = handler.getFishingOperationMonitor();
+
+ // previous fishingOperation was modified, let's save it
+ EditFishingOperationUIModel beanToSave = monitor.getBean();
+
+ if (beanToSave.isEmpty()) {
+
+ // user must use save button
+ if (log.isWarnEnabled()) {
+ log.warn("Won't save new fishing operation, use explicit save button instead...");
+ }
+ } else if (beanToSave.isValid()) {
+ if (handler.getConfig().isUseSexagecimalEditor()) {
+ beanToSave.convertGearShootingCoordinatesDMSToDD();
+ }
+
+ // save modified fishing operation
+ FishingOperation toSave = beanToSave.toBean();
+
+ handler.showInformationMessage(
+ "[ Trait - Caractéristiques générales ] " +
+ "Sauvegarde des modifications de " + decorate(toSave) +
+ ".");
+
+ if (log.isInfoEnabled()) {
+ log.info("FishingOperation " + toSave.getId() +
+ " was modified, will save it.");
+ }
+
+ monitor.clearModified();
+ getModel().setModify(false);
+
+ // persist current fishingOperation
+ handler.getParentUi().getHandler().saveFishingOperation(toSave);
+ }
+ }
+
+}
Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-18 16:49:08 UTC (rev 225)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-18 17:22:41 UTC (rev 226)
@@ -46,6 +46,8 @@
tutti.action.removeSpeciesSubBatch.tip=Supprimer tous les lots fils du lot sélectionné
tutti.action.reset.fishingOperationValidState=Réinitialiser
tutti.action.save=Enregistrer
+tutti.action.save.fishingOperation=Enregistrer
+tutti.action.save.fishingOperation.tip=Enregistrer le trait
tutti.action.selectCruise=Sélectionner une campagne
tutti.action.selectCruise.tip=Sélectionner la campagne à utiliser
tutti.action.site=Site
1
0
r225 - in trunk/tutti-persistence-adagio/src: main/java/fr/ifremer/tutti/persistence main/java/fr/ifremer/tutti/persistence/service main/resources test/java/fr/ifremer/tutti/persistence/service
by blavenier@users.forge.codelutin.com 18 Jan '13
by blavenier@users.forge.codelutin.com 18 Jan '13
18 Jan '13
Author: blavenier
Date: 2013-01-18 17:49:08 +0100 (Fri, 18 Jan 2013)
New Revision: 225
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/225
Log:
ref refs #1920: [Persistence] Adagio Donnees thematiques
- Continue implementation of FishingOperation.create() : lat/long, trawl distance, etc.
Modified:
trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/TuttiEnumerationFile.java
trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java
trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceImpl.java
trunk/tutti-persistence-adagio/src/main/resources/queries-override.hbm.xml
trunk/tutti-persistence-adagio/src/main/resources/tutti-db-enumerations.properties
trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceTest.java
Modified: trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/TuttiEnumerationFile.java
===================================================================
--- trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/TuttiEnumerationFile.java 2013-01-18 15:05:20 UTC (rev 224)
+++ trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/TuttiEnumerationFile.java 2013-01-18 16:49:08 UTC (rev 225)
@@ -131,6 +131,31 @@
@Value("${QualityFlagCode.NOTQUALIFIED}")
public final String QUALITY_FLAG_CODE_NOT_QUALIFIED = null;
+ @Value("${PmfmId.STATION_NUMBER}")
+ public final Integer PMFM_ID_STATION_NUMBER = null;
+
+ @Value("${PmfmId.TRAWL_DISTANCE}")
+ public final Integer PMFM_ID_TRAWL_DISTANCE = null;
+
+ @Value("${PmfmId.RECTILINEAR_OPERATION}")
+ public final Integer PMFM_ID_RECTILINEAR_OPERATION = null;
+
+ @Value("${QualitativeValueId.RECTILINEAR_OPERATION_YES}")
+ public final Integer QUALITATIVE_RECTILINEAR_OPERATION_YES = null;
+
+ @Value("${QualitativeValueId.RECTILINEAR_OPERATION_NO}")
+ public final Integer QUALITATIVE_RECTILINEAR_OPERATION_NO = null;
+
+ @Value("${PmfmId.HAUL_VALID}")
+ public final Integer PMFM_ID_HAUL_VALID = null;
+
+ @Value("${QualitativeValueId.HAUL_VALID_YES}")
+ public final Integer QUALITATIVE_HAUL_VALID_YES = null;
+
+ @Value("${QualitativeValueId.HAUL_VALID_NO}")
+ public final Integer QUALITATIVE_HAUL_VALID_NO = null;
+
+
public void init() {
Preconditions.checkNotNull(GEAR_CLASSIFICIATION_ID_SCIENTIFIC, "GEAR_CLASSIFICIATION_ID_SCIENTIFIC constant not found");
Preconditions.checkNotNull(GEAR_CLASSIFICIATION_ID_FISHING, "GEAR_CLASSIFICIATION_ID_FISHING constant not found");
@@ -153,6 +178,10 @@
Preconditions.checkNotNull(PMFM_ID_MATURITY, "PMFM_ID_MATURITY constant not found");
Preconditions.checkNotNull(PMFM_ID_MACRO_WASTE_CATEGORY, "PMFM_ID_MACRO_WASTE_CATEGORY constant not found");
Preconditions.checkNotNull(PMFM_ID_MACRO_WASTE_SIZE_CATEGORY, "PMFM_ID_MACRO_WASTE_SIZE_CATEGORY constant not found");
+ Preconditions.checkNotNull(PMFM_ID_STATION_NUMBER, "PMFM_ID_STATION_NUMBER constant not found");
+ Preconditions.checkNotNull(PMFM_ID_TRAWL_DISTANCE, "PMFM_ID_TRAWL_DISTANCE constant not found");
+ Preconditions.checkNotNull(PMFM_ID_RECTILINEAR_OPERATION, "PMFM_ID_RECTILINEAR_OPERATION constant not found");
+ Preconditions.checkNotNull(PMFM_ID_HAUL_VALID, "PMFM_ID_HAUL_VALID constant not found");
Preconditions.checkNotNull(QUALITY_FLAG_CODE_NOT_QUALIFIED, "QUALITY_FLAG_CODE_NOT_QUALIFIED constant not found");
Preconditions.checkNotNull(UNIT_ID_NONE, "UNIT_ID_NONE constant not found");
Preconditions.checkNotNull(USER_PROFIL_ID_OBSERVER, "USER_PROFIL_ID_OBSERVER constant not found");
@@ -164,5 +193,10 @@
Preconditions.checkNotNull(STATUS_VALID_CODE, "StatusCode.ENABLE constant not found");
Preconditions.checkNotNull(STATUS_TEMPORARY_CODE, "StatusCode.TEMPORARY constant not found");
Preconditions.checkNotNull(QUALITATIVE_VRAC_ID, "QualitativeValueId.VRAC constant not found");
+ Preconditions.checkNotNull(QUALITATIVE_RECTILINEAR_OPERATION_YES, "QualitativeValueId.RECTILINEAR_OPERATION_YES constant not found");
+ Preconditions.checkNotNull(QUALITATIVE_RECTILINEAR_OPERATION_NO, "QualitativeValueId.RECTILINEAR_OPERATION_NO constant not found");
+ Preconditions.checkNotNull(QUALITATIVE_HAUL_VALID_YES, "QualitativeValueId.HAUL_VALID_YES constant not found");
+ Preconditions.checkNotNull(QUALITATIVE_HAUL_VALID_NO, "QualitativeValueId.HAUL_VALID_NO constant not found");
+
}
}
Modified: trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java 2013-01-18 15:05:20 UTC (rev 224)
+++ trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/CruisePersistenceServiceImpl.java 2013-01-18 16:49:08 UTC (rev 225)
@@ -33,6 +33,7 @@
import fr.ifremer.adagio.core.dao.referential.QualityFlagDao;
import fr.ifremer.adagio.core.dao.referential.location.Location;
import fr.ifremer.adagio.core.dao.referential.location.LocationDao;
+import fr.ifremer.adagio.core.dao.referential.pmfm.PmfmDao;
import fr.ifremer.adagio.core.dao.referential.vessel.VesselDao;
import fr.ifremer.adagio.core.dao.technical.synchronization.SynchronizationStatus;
import fr.ifremer.tutti.persistence.entities.data.Cruise;
Modified: trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceImpl.java
===================================================================
--- trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceImpl.java 2013-01-18 15:05:20 UTC (rev 224)
+++ trunk/tutti-persistence-adagio/src/main/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceImpl.java 2013-01-18 16:49:08 UTC (rev 225)
@@ -24,43 +24,42 @@
* #L%
*/
+import java.sql.Timestamp;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.annotation.Resource;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.hibernate.type.IntegerType;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataRetrievalFailureException;
+import org.springframework.stereotype.Service;
+
+import com.google.common.collect.Lists;
+
+import fr.ifremer.adagio.core.dao.data.measure.VesselUseMeasurement;
import fr.ifremer.adagio.core.dao.data.operation.FishingOperationDao;
import fr.ifremer.adagio.core.dao.data.survey.fishingTrip.FishingTrip;
import fr.ifremer.adagio.core.dao.data.survey.scientificCruise.ScientificCruise;
import fr.ifremer.adagio.core.dao.data.survey.scientificCruise.ScientificCruiseDao;
import fr.ifremer.adagio.core.dao.data.vessel.feature.use.GearUseFeatures;
+import fr.ifremer.adagio.core.dao.data.vessel.feature.use.VesselUseFeatures;
+import fr.ifremer.adagio.core.dao.data.vessel.feature.use.isActive;
import fr.ifremer.adagio.core.dao.data.vessel.position.VesselPosition;
import fr.ifremer.adagio.core.dao.referential.QualityFlagDao;
import fr.ifremer.adagio.core.dao.referential.gear.Gear;
import fr.ifremer.adagio.core.dao.referential.gear.GearDao;
-import fr.ifremer.adagio.core.dao.referential.location.Location;
import fr.ifremer.adagio.core.dao.referential.location.LocationDao;
-import fr.ifremer.adagio.core.dao.technical.synchronization.SynchronizationStatus;
-import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.adagio.core.dao.referential.pmfm.PmfmDao;
+import fr.ifremer.adagio.core.dao.referential.pmfm.PmfmId;
+import fr.ifremer.adagio.core.dao.referential.pmfm.QualitativeValueDao;
import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
-import fr.ifremer.tutti.persistence.entities.data.Program;
-import fr.ifremer.tutti.persistence.entities.referential.Country;
-import fr.ifremer.tutti.persistence.entities.referential.Person;
-import fr.ifremer.tutti.persistence.entities.referential.Vessel;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.hibernate.type.IntegerType;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DataRetrievalFailureException;
-import org.springframework.stereotype.Service;
-
-import com.google.common.collect.Lists;
-
-import java.sql.Timestamp;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.GregorianCalendar;
-import java.util.Iterator;
-import java.util.List;
-
-import javax.annotation.Resource;
-
/**
* @author tchemit <chemit(a)codelutin.com>
* @since 0.3
@@ -89,7 +88,19 @@
@Resource(name = "qualityFlagDao")
protected QualityFlagDao qualityFlagDao;
+
+ @Resource(name = "pmfmDao")
+ protected PmfmDao pmfmDao;
+ @Resource(name = "qualitativeValueDao")
+ protected QualitativeValueDao qualitativeValueDao;
+
+ protected static Float DEFAULT_EMPTY_LATITUDE = 0.0001f;
+
+ protected static Float DEFAULT_EMPTY_LONGITUDE = 0.0001f;
+
+ protected static String FISHING_OPERATION_NAME_SEPARATOR = " - ";
+
protected Calendar calendar = new GregorianCalendar();
@Override
@@ -101,7 +112,11 @@
public FishingOperation getFishingOperation(String id) {
Object[] source = queryUnique(
"fishingOperation",
- "fishingOperationId", IntegerType.INSTANCE, Integer.valueOf(id));
+ "fishingOperationId", IntegerType.INSTANCE, Integer.valueOf(id),
+ "pmfmIdTrawlDistance", IntegerType.INSTANCE, enumeration.PMFM_ID_TRAWL_DISTANCE,
+ "pmfmIdRectilinearOperation", IntegerType.INSTANCE, enumeration.PMFM_ID_RECTILINEAR_OPERATION,
+ "pmfmIdHaulValid", IntegerType.INSTANCE, enumeration.PMFM_ID_HAUL_VALID
+ );
if (source == null) {
throw new DataRetrievalFailureException("Could not retrieve fishingOperation with id=" + id);
@@ -114,19 +129,36 @@
int colIndex=0;
- // Start date
- calendar.setTimeInMillis(((Timestamp) source[colIndex++]).getTime());
- int millisecond = calendar.get(Calendar.MILLISECOND);
- if (millisecond > 0) {
- // Recognize a fake date : see method beanToEntity()
- result.setGearShootingStartDate(null);
+ // Name = StationNumber - FishingOperationNumber - TrawlNetNumber
+ String name = (String)source[colIndex++];
+ if (name != null) {
+ String[] nameInfos = name.split(FISHING_OPERATION_NAME_SEPARATOR);
+ if (nameInfos.length == 3) {
+ // Station number
+ result.setStationNumber(nameInfos[0]);
+
+ // Fishing operation number
+ if (nameInfos[1].length() == 0) {
+ result.setFishingOperationNumber(null);
+ }
+ else {
+ result.setFishingOperationNumber(Integer.valueOf(nameInfos[1]));
+ }
+ // Trawl net number
+ if (nameInfos[2].length() == 0) {
+ result.setTrawlNetNumber(null);
+ }
+ else {
+ result.setTrawlNetNumber(Integer.valueOf(nameInfos[2]));
+ }
+ }
}
- else {
- result.setGearShootingStartDate(calendar.getTime());
- }
+ // Start date
+ result.setGearShootingStartDate(convertDatabase2UI((Timestamp) source[colIndex++]));
+
// End date
- result.setGearShootingEndDate((Date) source[colIndex++]);
+ result.setGearShootingEndDate(convertDatabase2UI((Timestamp) source[colIndex++]));
// Comment :
result.setComment((String) source[colIndex++]);
@@ -139,6 +171,40 @@
result.setGear(gear);
}
+ // Start position
+ VesselPosition startVesselPosition = (VesselPosition)source[colIndex++];
+ if (startVesselPosition == null) {
+ result.setGearShootingStartLatitude(null);
+ result.setGearShootingStartLongitude(null);
+ }
+ else {
+ result.setGearShootingStartLatitude(convertLatitude2UI(startVesselPosition.getLatitude()));
+ result.setGearShootingStartLongitude(convertLongitude2UI(startVesselPosition.getLongitude()));
+ }
+
+ // End position
+ VesselPosition endVesselPosition = (VesselPosition)source[colIndex++];
+ if (endVesselPosition == null) {
+ result.setGearShootingEndLatitude(null);
+ result.setGearShootingEndLongitude(null);
+ }
+ else {
+ result.setGearShootingEndLatitude(DEFAULT_EMPTY_LATITUDE.equals(endVesselPosition.getLatitude())?null:endVesselPosition.getLatitude());
+ result.setGearShootingEndLongitude(DEFAULT_EMPTY_LONGITUDE.equals(endVesselPosition.getLongitude())?null:endVesselPosition.getLongitude());
+ }
+
+ // Trawl distance
+ result.setTrawlDistance((Float)source[colIndex++]);
+
+ // Rectilinear operation ?
+ result.setFishingOperationRectiligne(enumeration.QUALITATIVE_RECTILINEAR_OPERATION_YES.equals((Integer)source[colIndex++]));
+
+ // Haul valid ?
+ Integer haulValidQualitativeId = (Integer)source[colIndex++];
+ if (haulValidQualitativeId != null) {
+ result.setFishingOperationValid((enumeration.QUALITATIVE_HAUL_VALID_YES.equals(haulValidQualitativeId)));
+ }
+
return result;
}
@@ -159,7 +225,8 @@
}
protected void beanToEntity(FishingOperation source, fr.ifremer.adagio.core.dao.data.operation.FishingOperation target, boolean copyIfNull) {
- //StringBuffer miscDataBuffer = new StringBuffer();
+
+ // Retrieve entities : FishingTrip and ScientificCruise
ScientificCruise scientificCruise = null;
FishingTrip fishingtrip = target.getFishingTrip();
if (fishingtrip == null) {
@@ -174,7 +241,7 @@
// Link to parent fishing trip
target.setFishingTrip(fishingtrip);
- // Store previous start/stop position
+ // Retrieve entities : VesselPosition (start and end)
VesselPosition startPosition = null;
VesselPosition endPosition = null;
if (target.getVesselPositions() != null) {
@@ -188,23 +255,74 @@
}
}
}
+
+ // Retrieve entities : Gear Use Features
+ GearUseFeatures gearUseFeature = null;
+ if (target.getGearUseFeatures() == null || target.getGearUseFeatures().size() == 0) {
+ gearUseFeature = GearUseFeatures.Factory.newInstance();
+ if (target.getGearUseFeatures() == null) {
+ target.setGearUseFeatures(Lists.newArrayList(gearUseFeature));
+ gearUseFeature.setOperation(target);
+ } else {
+ target.getGearUseFeatures().add(gearUseFeature);
+ gearUseFeature.setOperation(target);
+ }
+ } else {
+ gearUseFeature = target.getGearUseFeatures().iterator().next();
+ }
+ // Retrieve entities : Vessel Use Features
+ VesselUseFeatures vesselUseFeature = null;
+ if (target.getVesselUseFeatures() == null || target.getVesselUseFeatures().size() == 0) {
+ vesselUseFeature = VesselUseFeatures.Factory.newInstance();
+ if (target.getVesselUseFeatures() == null) {
+ target.setVesselUseFeatures(Lists.newArrayList(vesselUseFeature));
+ vesselUseFeature.setOperation(target);
+ } else {
+ target.getVesselUseFeatures().add(vesselUseFeature);
+ vesselUseFeature.setOperation(target);
+ }
+ } else {
+ vesselUseFeature = target.getVesselUseFeatures().iterator().next();
+ }
+
+ StringBuffer nameBuffer = new StringBuffer();
+
// StationNumber
if (copyIfNull && source.getStationNumber() == null) {
- // TODO BL : where to store station number
+ setVesselUseMeasurement(scientificCruise, vesselUseFeature, enumeration.PMFM_ID_STATION_NUMBER, null, "", null);
} else if (source.getStationNumber() != null) {
- //source.getStationNumber();
- // TODO BL : where to store station number
+ setVesselUseMeasurement(scientificCruise, vesselUseFeature, enumeration.PMFM_ID_STATION_NUMBER, null, source.getStationNumber(), null);
+ nameBuffer.append(source.getStationNumber());
}
// OP N°
if (copyIfNull && source.getFishingOperationNumber() == null) {
- // TODO BL : where to store OP N°
+ // Leave empty in the name buffer
+ if (nameBuffer.length() > 0) {
+ nameBuffer.append(FISHING_OPERATION_NAME_SEPARATOR);
+ }
} else if (source.getFishingOperationNumber() != null) {
- //source.getStationNumber();
+ if (nameBuffer.length() > 0) {
+ nameBuffer.append(FISHING_OPERATION_NAME_SEPARATOR);
+ }
+ // TODO BL : store OP N° ? or compute it ?
+ nameBuffer.append(source.getFishingOperationNumber());
+ }
+
+ // Trawl net number
+ if (copyIfNull && source.getTrawlNetNumber() == null) {
// TODO BL : where to store OP N°
+ } else if (source.getTrawlNetNumber() != null) {
+ if (nameBuffer.length() > 0) {
+ nameBuffer.append(FISHING_OPERATION_NAME_SEPARATOR);
+ }
+ // TODO BL : store in Gear Use Measurement ?
+ nameBuffer.append(source.getTrawlNetNumber());
}
+ target.setName(nameBuffer.toString());
+
// Start date :
if (copyIfNull && source.getGearShootingStartDate() == null) {
target.setStartDateTime(null);
@@ -228,7 +346,24 @@
target.setEndDateTime(calendar.getTime());
target.setFishingEndDateTime(calendar.getTime());
}
+
+ // Trawl distance
+ if (copyIfNull && source.getTrawlDistance() == null) {
+ removeVesselUseMeasurement(vesselUseFeature, enumeration.PMFM_ID_TRAWL_DISTANCE);
+ } else if (source.getTrawlDistance() != null) {
+ setVesselUseMeasurement(scientificCruise, vesselUseFeature, enumeration.PMFM_ID_TRAWL_DISTANCE, source.getTrawlDistance(), null, null);
+ }
+
+ // Rectilinear operation
+ setVesselUseMeasurement(scientificCruise, vesselUseFeature, enumeration.PMFM_ID_RECTILINEAR_OPERATION, null, null, source.isFishingOperationRectiligne()?enumeration.QUALITATIVE_RECTILINEAR_OPERATION_YES:enumeration.QUALITATIVE_RECTILINEAR_OPERATION_NO);
+ // Operation is valid ?
+ if (copyIfNull && source.getFishingOperationValid() == null) {
+ removeVesselUseMeasurement(vesselUseFeature, enumeration.PMFM_ID_HAUL_VALID);
+ } else if (source.getFishingOperationValid() != null) {
+ setVesselUseMeasurement(scientificCruise, vesselUseFeature, enumeration.PMFM_ID_HAUL_VALID, null, null, source.getFishingOperationValid().booleanValue()?enumeration.QUALITATIVE_HAUL_VALID_YES:enumeration.QUALITATIVE_HAUL_VALID_NO);
+ }
+
// Comment
if (copyIfNull && source.getComment() == null) {
target.setComments(null);
@@ -252,24 +387,30 @@
calendar.set(Calendar.MILLISECOND, 1);
target.setStartDateTime(calendar.getTime());
target.setFishingStartDateTime(calendar.getTime());
- }
+ }
- // Gear Use Features
- GearUseFeatures gearUseFeature = null;
- if (target.getGearUseFeatures() == null || target.getGearUseFeatures().size() == 0) {
- gearUseFeature = GearUseFeatures.Factory.newInstance();
- if (target.getGearUseFeatures() == null) {
- target.setGearUseFeatures(Lists.newArrayList(gearUseFeature));
- gearUseFeature.setOperation(target);
- } else {
- target.getGearUseFeatures().add(gearUseFeature);
- gearUseFeature.setOperation(target);
- }
- } else {
- gearUseFeature = target.getGearUseFeatures().iterator().next();
+ // VesselUseFeatures :
+ vesselUseFeature.setStartDate(target.getStartDateTime());
+ if (vesselUseFeature.getStartDate() == null) {
+ vesselUseFeature.setStartDate(scientificCruise.getDepartureDateTime());
}
+ vesselUseFeature.setEndDate(target.getEndDateTime());
+ vesselUseFeature.setVessel(target.getVessel());
+ vesselUseFeature.setProgram(scientificCruise.getProgram());
+ vesselUseFeature.setIsActive(isActive.ACTIVE.getValue());
+ if (vesselUseFeature.getCreationDate() == null) {
+ calendar.setTime(new Date());
+ calendar.set(Calendar.HOUR_OF_DAY, 0);
+ calendar.set(Calendar.MINUTE, 0);
+ calendar.set(Calendar.SECOND, 0);
+ calendar.set(Calendar.MILLISECOND, 0);
+ vesselUseFeature.setCreationDate(calendar.getTime());
+ }
+ if (vesselUseFeature.getQualityFlag() == null) {
+ vesselUseFeature.setQualityFlag(qualityFlagDao.load(enumeration.QUALITY_FLAG_CODE_NOT_QUALIFIED));
+ }
- // Fill fishing trip with scientificCruise info:
+ // GearUseFeatures :
gearUseFeature.setStartDate(target.getStartDateTime());
if (gearUseFeature.getStartDate() == null) {
gearUseFeature.setStartDate(scientificCruise.getDepartureDateTime());
@@ -289,7 +430,7 @@
gearUseFeature.setQualityFlag(qualityFlagDao.load(enumeration.QUALITY_FLAG_CODE_NOT_QUALIFIED));
}
- // Gear
+ // GearUseFeatures.Gear
if (copyIfNull && source.getGear() == null) {
gearUseFeature.setGear(null);
} else if (source.getGear() != null && source.getGear().getId() != null) {
@@ -298,45 +439,212 @@
}
// Start position :
- if (startPosition == null) {
- startPosition = VesselPosition.Factory.newInstance();
- startPosition.setOperation(target);
- if (target.getVesselPositions() == null) {
- target.setVesselPositions(Lists.newArrayList(startPosition));
+ // If need to be store
+ if (source.getGearShootingEndLatitude() != null
+ || source.getGearShootingEndDate() != null
+ || source.getGearShootingEndLongitude() != null) {
+
+ if (startPosition == null) {
+ startPosition = VesselPosition.Factory.newInstance();
+ startPosition.setOperation(target);
+ if (target.getVesselPositions() == null) {
+ target.setVesselPositions(Lists.newArrayList(startPosition));
+ }
+ target.getVesselPositions().add(startPosition);
}
+ startPosition.setDateTime(target.getStartDateTime());
+ startPosition.setLatitude(source.getGearShootingStartLatitude()!=null?source.getGearShootingStartLatitude():DEFAULT_EMPTY_LATITUDE);
+ startPosition.setLongitude(source.getGearShootingStartLongitude()!=null?source.getGearShootingStartLongitude():DEFAULT_EMPTY_LONGITUDE);
+ startPosition.setVessel(target.getVessel());
+ startPosition.setProgram(scientificCruise.getProgram());
+ startPosition.setRecorderDepartment(scientificCruise.getRecorderDepartment());
+ startPosition.setQualityFlag(target.getQualityFlag());
}
- startPosition.setDateTime(target.getStartDateTime());
- startPosition.setLatitude(source.getGearShootingStartLatitude());
- startPosition.setLongitude(source.getGearShootingStartLongitude());
- startPosition.setVessel(target.getVessel());
- startPosition.setProgram(scientificCruise.getProgram());
- startPosition.setRecorderDepartment(scientificCruise.getRecorderDepartment());
- startPosition.setQualityFlag(target.getQualityFlag());
+
+ // If not need to be store, delete start position from list
+ else if (startPosition != null && target.getVesselPositions() != null) {
+ target.getVesselPositions().remove(startPosition);
+ }
- if (endPosition == null) {
- endPosition = VesselPosition.Factory.newInstance();
- endPosition.setOperation(target);
- target.getVesselPositions().add(endPosition);
+ // End position :
+ // If need to be store
+ if (source.getGearShootingEndLatitude() != null
+ || source.getGearShootingEndDate() != null
+ || source.getGearShootingEndLongitude() != null) {
+
+ if (endPosition == null) {
+ endPosition = VesselPosition.Factory.newInstance();
+ endPosition.setOperation(target);
+ target.getVesselPositions().add(endPosition);
+ }
+ Date endDateTime = convertUI2DatabaseMandatoryDate(target.getEndDateTime(), startPosition.getDateTime(), true);
+ endPosition.setDateTime(endDateTime);
+ if (endDateTime.equals(target.getEndDateTime()) == false) {
+ // To link position with the operation end, Allegro need to have exactly the same dates
+ target.setEndDateTime(endDateTime);
+ target.setFishingEndDateTime(endDateTime);
+ }
+ endPosition.setLatitude(convertUI2DatabaseMandatoryLatitude(source.getGearShootingEndLatitude()));
+ endPosition.setLongitude(convertUI2DatabaseMandatoryLatitude(source.getGearShootingEndLongitude()));
+ endPosition.setVessel(target.getVessel());
+ endPosition.setProgram(scientificCruise.getProgram());
+ endPosition.setRecorderDepartment(scientificCruise.getRecorderDepartment());
+ endPosition.setQualityFlag(target.getQualityFlag());
}
- endPosition.setDateTime(target.getEndDateTime());
- if (endPosition.getDateTime() == null) {
- calendar.setTime(startPosition.getDateTime());
- calendar.set(Calendar.MILLISECOND, 1);
- endPosition.setDateTime(calendar.getTime());
+
+ // If not need to be store, delete end position from list
+ else if (endPosition != null && target.getVesselPositions() != null) {
+ target.getVesselPositions().remove(endPosition);
}
- endPosition.setLatitude(source.getGearShootingEndLatitude());
- endPosition.setLongitude(source.getGearShootingEndLongitude());
- endPosition.setVessel(target.getVessel());
- endPosition.setProgram(scientificCruise.getProgram());
- endPosition.setRecorderDepartment(scientificCruise.getRecorderDepartment());
- endPosition.setQualityFlag(target.getQualityFlag());
- // Save miscDataBuffer into comments
- //gearUseFeature.setComments(miscDataBuffer.toString());
}
@Override
public FishingOperation saveFishingOperation(FishingOperation bean) {
return null;
}
+
+ /**
+ * Test if the date has millisecond set. This yes, return null, then return the date itself.
+ * @param databaseValue the date stored in the database (could be fake date, not null only because of database constraints)
+ * @return null if the date is a fake date
+ */
+ protected Date convertDatabase2UI(Timestamp databaseValue) {
+ if (databaseValue == null) {
+ return null;
+ }
+ calendar.setTimeInMillis(databaseValue.getTime());
+ if (calendar.get(Calendar.MILLISECOND) != 0) {
+ return null;
+ }
+ return calendar.getTime();
+ }
+
+ /**
+ * Convert a UI date, when the database value is mandatory.
+ * If the given value is null, use the default date, then set millisecond to '1', to be able to retrieve the null value later.
+ * @param uiValue the date used in the UI
+ * @return null if the date is a fake date
+ */
+ protected Date convertUI2DatabaseMandatoryDate(Date uiValue, Date defaultNotEmptyDate, boolean addOneSecondToDefaultDate) {
+ // if ui date is not empty, then use it (but reset millisecond)
+ if (uiValue != null) {
+ calendar.setTime(uiValue);
+ calendar.set(Calendar.MILLISECOND, 0);
+ return calendar.getTime();
+ }
+ if (defaultNotEmptyDate == null) {
+ throw new IllegalArgumentException("'defaultNotEmptyDate' could not be null.");
+ }
+
+ calendar.setTime(defaultNotEmptyDate);
+ if (addOneSecondToDefaultDate) {
+ calendar.add(Calendar.SECOND, 1);
+ }
+ calendar.set(Calendar.MILLISECOND, 1);
+ return calendar.getTime();
+ }
+
+ /**
+ * Test if the latitude is null, and return a default value if yes
+ * @param databaseValue the latitude used in UI (could be null)
+ * @return null the latitude to store in database (could not be null)
+ */
+ protected Float convertUI2DatabaseMandatoryLatitude(Float databaseValue) {
+ return (databaseValue != null)?databaseValue:DEFAULT_EMPTY_LATITUDE;
+ }
+
+ /**
+ * Test if the latitude is a fake value. This yes, return null, then return the given value.
+ * @param databaseValue the latitude stored in the database (could be fake date, not null only because of database constraints)
+ * @return null if the latitude is fake
+ */
+ protected Float convertLatitude2UI(Float databaseValue) {
+ return DEFAULT_EMPTY_LATITUDE.equals(databaseValue)?null:databaseValue;
+ }
+
+ /**
+ * Test if the latitude is null, and return a default value if yes
+ * @param databaseValue the latitude used in UI (could be null)
+ * @return null the latitude to store in database (could not be null)
+ */
+ protected Float convertUI2DatabaseMandatoryLongitude(Float databaseValue) {
+ return (databaseValue != null)?databaseValue:DEFAULT_EMPTY_LONGITUDE;
+ }
+
+ /**
+ * Test if the longitude is a fake value. This yes, return null, then return the given value.
+ * @param databaseValue the longitude stored in the database (could be fake date, not null only because of database constraints)
+ * @return null if the longitude is fake
+ */
+ protected Float convertLongitude2UI(Float databaseValue) {
+ return DEFAULT_EMPTY_LONGITUDE.equals(databaseValue)?null:databaseValue;
+ }
+
+ protected Integer getPmfmId() {
+ // TODO BLA
+ return null;
+ }
+
+ protected VesselUseMeasurement getVesselUseMeasurement(ScientificCruise scientificCruise, VesselUseFeatures vesselUseFeatures,
+ Integer pmfmId, boolean createIfNotExists) {
+ VesselUseMeasurement vesselUseMeasurement = null;
+ if (vesselUseFeatures.getVesselUseMeasurements() != null) {
+ for (Iterator iterator = vesselUseFeatures.getVesselUseMeasurements().iterator(); iterator.hasNext();) {
+ VesselUseMeasurement vum = (VesselUseMeasurement) iterator.next();
+ if (pmfmId.equals(vum.getPmfm().getId())) {
+ vesselUseMeasurement = vum;
+ break;
+ }
+ }
+ }
+ if (vesselUseMeasurement == null) {
+ if (!createIfNotExists) {
+ return null;
+ }
+ vesselUseMeasurement = VesselUseMeasurement.Factory.newInstance();
+ vesselUseMeasurement.setVesselUseFeatures(vesselUseFeatures);
+ if (vesselUseFeatures.getVesselUseMeasurements() == null) {
+ vesselUseFeatures.setVesselUseMeasurements(Lists.newArrayList(vesselUseMeasurement));
+ }
+ else {
+ vesselUseFeatures.getVesselUseMeasurements().add(vesselUseMeasurement);
+ }
+ vesselUseMeasurement.setQualityFlag(qualityFlagDao.load(enumeration.QUALITY_FLAG_CODE_NOT_QUALIFIED));
+ vesselUseMeasurement.setDepartment(scientificCruise.getRecorderDepartment());
+ vesselUseMeasurement.setPmfm(pmfmDao.load(pmfmId));
+ }
+
+ return vesselUseMeasurement;
+ }
+
+ protected void removeVesselUseMeasurement(VesselUseFeatures vesselUseFeatures,
+ Integer pmfmId) {
+ VesselUseMeasurement vesselUseMeasurement = getVesselUseMeasurement(null, vesselUseFeatures, pmfmId, false);
+ if (vesselUseMeasurement == null) {
+ return;
+ }
+ vesselUseFeatures.getVesselUseMeasurements().remove(vesselUseMeasurement);
+ // TOBO BLa : vérifier qu'il ne faut pas dao.delete() en plus
+ }
+
+ protected VesselUseMeasurement setVesselUseMeasurement(ScientificCruise scientificCruise, VesselUseFeatures vesselUseFeatures,
+ Integer pmfmId,
+ Float numericalValue,
+ String alphanumericalValue,
+ Integer qualitativevalueId) {
+ VesselUseMeasurement vesselUseMeasurement = getVesselUseMeasurement(scientificCruise, vesselUseFeatures, pmfmId, true);
+
+ if (alphanumericalValue != null) {
+ vesselUseMeasurement.setAlphanumericalValue(alphanumericalValue);
+ }
+ else if (numericalValue != null) {
+ vesselUseMeasurement.setNumericalValue(numericalValue);
+ }
+ else if (qualitativevalueId != null) {
+ vesselUseMeasurement.setQualitativeValue(qualitativeValueDao.load(qualitativevalueId));
+ }
+
+ return vesselUseMeasurement;
+ }
}
Modified: trunk/tutti-persistence-adagio/src/main/resources/queries-override.hbm.xml
===================================================================
--- trunk/tutti-persistence-adagio/src/main/resources/queries-override.hbm.xml 2013-01-18 15:05:20 UTC (rev 224)
+++ trunk/tutti-persistence-adagio/src/main/resources/queries-override.hbm.xml 2013-01-18 16:49:08 UTC (rev 225)
@@ -165,17 +165,27 @@
<query cacheable="true" name="fishingOperation">
<![CDATA[
SELECT
+ o.name as name,
o.startDateTime as startDateTime,
o.endDateTime as endDateTime,
o.comments as comments,
- guf.gear.id as gearId
+ guf.gear.id as gearId,
+ (select vp_start from VesselPositionImpl vp_start where vp_start.operation.id = o.id and vp_start.dateTime = o.startDateTime) as startVesselPosition,
+ (select vp_end from VesselPositionImpl vp_end where vp_end.operation.id = o.id and vp_end.dateTime = o.endDateTime) as endVesselPosition,
+ (select vum.numericalValue from VesselUseMeasurementImpl vum where vum.vesselUseFeatures.id=vuf.id and vum.pmfm.id=:pmfmIdTrawlDistance) as trawlDistance,
+ (select vum2.qualitativeValue.id from VesselUseMeasurementImpl vum2 where vum2.vesselUseFeatures.id=vuf.id and vum2.pmfm.id=:pmfmIdRectilinearOperation) as rectilinearQualitativeId,
+ (select vum3.qualitativeValue.id from VesselUseMeasurementImpl vum3 where vum3.vesselUseFeatures.id=vuf.id and vum3.pmfm.id=:pmfmIdHaulValid) as haulValidQualitativeId
FROM
FishingOperationImpl o
INNER JOIN o.gearUseFeatures guf
+ INNER JOIN o.vesselUseFeatures vuf
WHERE
o.id=:fishingOperationId
]]>
<query-param name="fishingOperationId" type="java.lang.Integer"/>
+ <query-param name="pmfmIdTrawlDistance" type="java.lang.Integer"/>
+ <query-param name="pmfmIdRectilinearOperation" type="java.lang.Integer"/>
+ <query-param name="pmfmIdHaulValid" type="java.lang.Integer"/>
</query>
Modified: trunk/tutti-persistence-adagio/src/main/resources/tutti-db-enumerations.properties
===================================================================
--- trunk/tutti-persistence-adagio/src/main/resources/tutti-db-enumerations.properties 2013-01-18 15:05:20 UTC (rev 224)
+++ trunk/tutti-persistence-adagio/src/main/resources/tutti-db-enumerations.properties 2013-01-18 16:49:08 UTC (rev 225)
@@ -326,9 +326,20 @@
PmfmId.MACRO_WASTE_CATEGORY=1181
#TODO A créér
PmfmId.MACRO_WASTE_SIZE_CATEGORY=1181
+# TODO A creer (dans les enumerations Allegro)
+PmfmId.STATION_NUMBER=1243
+# TODO A creer (dans les enumerations Allegro)
+PmfmId.TRAWL_DISTANCE=113
+# TODO A creer (dans les enumerations Allegro)
+PmfmId.HAUL_VALID=1163
+QualitativeValueId.HAUL_VALID_YES=1575
+QualitativeValueId.HAUL_VALID_NO=1576
+# TODO A creer (dans les enumerations Allegro)
+PmfmId.RECTILINEAR_OPERATION=192
+QualitativeValueId.RECTILINEAR_OPERATION_YES=277
+# TODO A creer (dans les enumerations Allegro)
+QualitativeValueId.RECTILINEAR_OPERATION_NO=278
-#TODO A creer (20=observateur volant, 95=Administrateur SIH)
-# L'avantage du 20 est qu'il est inactif (=20), donc plus facilement detectable
+#TODO A creer (dans les enumerations Allegro)
+# (20=observateur volant, 95=Administrateur SIH) -> L'avantage du 20 est qu'il est inactif (=20), donc plus facilement detectable
PersonId.UNKNOWN_RECORDER_PERSON=20
-
-
Modified: trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceTest.java
===================================================================
--- trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceTest.java 2013-01-18 15:05:20 UTC (rev 224)
+++ trunk/tutti-persistence-adagio/src/test/java/fr/ifremer/tutti/persistence/service/FishingOperationPersistenceServiceTest.java 2013-01-18 16:49:08 UTC (rev 225)
@@ -85,7 +85,9 @@
@Test
public void createFishingOperation(/*FishingOperation bean*/) {
Calendar calendar = new GregorianCalendar();
-
+ FishingOperation reloadedFishingOperation = null;
+ FishingOperation createdFishingOperation = null;
+
// Duplicate an existing cruise, to attach new fishing operations
cruise = cruiseService.getCruise(dbResource.getFixtures().cruiseId());
cruise.setId(null);
@@ -98,41 +100,60 @@
// Create new fishing operation :
FishingOperation fishingOperation = new FishingOperation();
+ // -----------------------------------------------------------------------------
+ // 1. Test with only mandatory properties
+ // -----------------------------------------------------------------------------
+
// Set properties (with optional value to null)
fishingOperation.setCruise(cruise);
- fishingOperation.setStationNumber("1");
+ fishingOperation.setStationNumber("STA1");
fishingOperation.setFishingOperationNumber(new Integer(1));
+ fishingOperation.setTrawlNetNumber(new Integer(1));
fishingOperation.setGearShootingStartDate(null);
fishingOperation.setGearShootingEndDate(null);
fishingOperation.setGear(null);
+ fishingOperation.setGearShootingStartLatitude(33.2541f);
+ fishingOperation.setComment(null);
// Store fishing operation into database :
- FishingOperation createdFishingOperation = service.createFishingOperation(fishingOperation);
+ /*createdFishingOperation = service.createFishingOperation(fishingOperation);
assertNotNull("Fishing operation ID must not be null after creation in database", createdFishingOperation);
assertNotNull(createdFishingOperation.getId());
- // TODO BLA : add asserts on other properties
// Trying to relaod this fishing operation
- FishingOperation reloadedFishingOperation = service.getFishingOperation(createdFishingOperation.getId());
+ reloadedFishingOperation = service.getFishingOperation(createdFishingOperation.getId());
assertNotNull(reloadedFishingOperation);
assertNull(reloadedFishingOperation.getGearShootingStartDate());
-
+ */
+
+ // -----------------------------------------------------------------------------
+ // 2. Test with all properties set
+ // -----------------------------------------------------------------------------
// Set properties
fishingOperation.setId(null);
- fishingOperation.setStationNumber("2");
+ fishingOperation.setStationNumber("STA2");
fishingOperation.setFishingOperationNumber(new Integer(2));
+ fishingOperation.setTrawlNetNumber(new Integer(2));
calendar.setTime(new Date());
calendar.set(Calendar.HOUR_OF_DAY, 1);
+ calendar.set(Calendar.MILLISECOND, 99);
fishingOperation.setGearShootingStartDate(calendar.getTime());
calendar.setTime(new Date());
calendar.set(Calendar.HOUR_OF_DAY, 10);
+ calendar.set(Calendar.MILLISECOND, 99);
fishingOperation.setGearShootingEndDate(calendar.getTime());
-
+
fishingOperation.setGearShootingStartLatitude(33.2541f);
fishingOperation.setGearShootingStartLongitude(-5.514f);
fishingOperation.setGearShootingEndLatitude(33.7441f);
fishingOperation.setGearShootingEndLongitude(-5.597f);
+
+ fishingOperation.setTrawlDistance(100.12345f);
+ fishingOperation.setFishingOperationRectiligne(true);
+ fishingOperation.setFishingOperationValid(Boolean.TRUE);
+ fishingOperation.setComment("Unit test createFishingOperation() - Part n°2 : All properties set");
+
List<Gear> gears = referentialService.getAllFishingGear();
assertNotNull(gears);
assertTrue(gears.size() > 0);
@@ -142,12 +163,68 @@
createdFishingOperation = service.createFishingOperation(fishingOperation);
assertNotNull("Fishing operation ID must not be null after creation in database", createdFishingOperation);
assertNotNull(createdFishingOperation.getId());
- assertNotNull(createdFishingOperation.getGear());
- //assertEquals(fishingOperation.getGearShootingStartLatitude(), createdFishingOperation.getGearShootingStartLatitude());
- //assertEquals(fishingOperation.getGearShootingStartLongitude(), createdFishingOperation.getGearShootingStartLongitude());
- //assertEquals(fishingOperation.getGearShootingEndLatitude(), createdFishingOperation.getGearShootingEndLatitude());
- //assertEquals(fishingOperation.getGearShootingEndLongitude(), createdFishingOperation.getGearShootingEndLongitude());
+ reloadedFishingOperation = service.getFishingOperation(createdFishingOperation.getId());
+ assertNotNull(reloadedFishingOperation.getGear());
+ assertEquals(fishingOperation.getStationNumber(), reloadedFishingOperation.getStationNumber());
+ assertEquals(fishingOperation.getFishingOperationNumber(), reloadedFishingOperation.getFishingOperationNumber());
+ assertEquals(fishingOperation.getTrawlNetNumber(), reloadedFishingOperation.getTrawlNetNumber());
+ assertNotNull(reloadedFishingOperation.getGearShootingStartDate());
+ calendar.setTime(fishingOperation.getGearShootingStartDate());
+ calendar.set(Calendar.MILLISECOND, 0);
+ assertEquals(calendar.getTime(), reloadedFishingOperation.getGearShootingStartDate());
+ assertEquals(fishingOperation.getGearShootingStartLatitude(), reloadedFishingOperation.getGearShootingStartLatitude());
+ assertEquals(fishingOperation.getGearShootingStartLongitude(), reloadedFishingOperation.getGearShootingStartLongitude());
+ assertNotNull(reloadedFishingOperation.getGearShootingEndDate());
+ calendar.setTime(fishingOperation.getGearShootingEndDate());
+ calendar.set(Calendar.MILLISECOND, 0);
+ assertEquals(calendar.getTime(), reloadedFishingOperation.getGearShootingEndDate());
+ assertEquals(fishingOperation.getGearShootingEndLatitude(), reloadedFishingOperation.getGearShootingEndLatitude());
+ assertEquals(fishingOperation.getGearShootingEndLongitude(), reloadedFishingOperation.getGearShootingEndLongitude());
+ assertEquals(fishingOperation.getTrawlDistance(), reloadedFishingOperation.getTrawlDistance());
+ assertEquals(fishingOperation.isFishingOperationRectiligne(), reloadedFishingOperation.isFishingOperationRectiligne());
+ assertEquals(fishingOperation.getFishingOperationValid(), reloadedFishingOperation.getFishingOperationValid());
+ assertEquals(fishingOperation.getComment(), reloadedFishingOperation.getComment());
+
+ // -----------------------------------------------------------------------------
+ // 3. Test :
+ // - startDate and startLat filled, but empty endLong
+ // - endLat and endLong filled but empty endDate
+ // - isFishingOperationRectiligne = false
+ // - trawlDistance empty
+ // - fishingOperationValid = false
+ // -----------------------------------------------------------------------------
+ fishingOperation.setId(null);
+ fishingOperation.setStationNumber("STA3");
+ fishingOperation.setFishingOperationNumber(new Integer(3));
+ fishingOperation.setTrawlNetNumber(new Integer(3));
+ fishingOperation.setGearShootingStartLongitude(null);
+ fishingOperation.setGearShootingEndDate(null);
+ fishingOperation.setTrawlDistance(null);
+ fishingOperation.setFishingOperationRectiligne(false);
+ fishingOperation.setFishingOperationValid(false);
+ fishingOperation.setComment("Unit test createFishingOperation() - Part n°3 :\n-startDate and startLat filled, but empty endLong\n- endLat and endLong filled but empty endDate");
+ createdFishingOperation = service.createFishingOperation(fishingOperation);
+ reloadedFishingOperation = service.getFishingOperation(createdFishingOperation.getId());
+ assertEquals(fishingOperation.getGearShootingStartLatitude(), reloadedFishingOperation.getGearShootingStartLatitude());
+ assertEquals(fishingOperation.getGearShootingStartLongitude(), reloadedFishingOperation.getGearShootingStartLongitude());
+ assertNull(reloadedFishingOperation.getGearShootingEndDate());
+ assertEquals(fishingOperation.getGearShootingEndLatitude(), reloadedFishingOperation.getGearShootingEndLatitude());
+ assertEquals(fishingOperation.getGearShootingEndLongitude(), reloadedFishingOperation.getGearShootingEndLongitude());
+ assertEquals(fishingOperation.getTrawlDistance(), reloadedFishingOperation.getTrawlDistance());
+ assertEquals(fishingOperation.isFishingOperationRectiligne(), reloadedFishingOperation.isFishingOperationRectiligne());
+ assertEquals(fishingOperation.getFishingOperationValid(), reloadedFishingOperation.getFishingOperationValid());
+
+ // -----------------------------------------------------------------------------
+ // 4. Test :
+ // -
+ // -----------------------------------------------------------------------------
+ fishingOperation.setId(null);
+ //createdFishingOperation = service.createFishingOperation(fishingOperation);
+ //reloadedFishingOperation = service.getFishingOperation(createdFishingOperation.getId());
+ //assertEquals(fishingOperation.getGearShootingStartLatitude(), reloadedFishingOperation.getGearShootingStartLatitude());
+ //assertEquals(fishingOperation.getGearShootingStartLongitude(), reloadedFishingOperation.getGearShootingStartLongitude());
+
}
@Test
1
0
r224 - in trunk/tutti-ui-swing/src/main: java/fr/ifremer/tutti/ui/swing/content/cruise java/fr/ifremer/tutti/ui/swing/content/operation java/fr/ifremer/tutti/ui/swing/content/program java/fr/ifremer/tutti/ui/swing/content/protocol resources/i18n
by kmorin@users.forge.codelutin.com 18 Jan '13
by kmorin@users.forge.codelutin.com 18 Jan '13
18 Jan '13
Author: kmorin
Date: 2013-01-18 16:05:20 +0100 (Fri, 18 Jan 2013)
New Revision: 224
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/224
Log:
- debug comment field 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/operation/EditFishingOperationUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUI.jaxx
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.jaxx
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css 2013-01-18 14:55:04 UTC (rev 223)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css 2013-01-18 15:05:20 UTC (rev 224)
@@ -178,8 +178,7 @@
}
#commentPane {
- columnHeaderView: {new JLabel(_("tutti.label.comment"))};
- minimumSize: {new Dimension(10,50)};
+ border: {BorderFactory.createTitledBorder(_("tutti.label.comment"))};
}
#commentField {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css 2013-01-18 14:55:04 UTC (rev 223)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css 2013-01-18 15:05:20 UTC (rev 224)
@@ -394,8 +394,7 @@
}
#commentPane {
- columnHeaderView: {new JLabel(_("tutti.label.comment"))};
- /*minimumSize: {new Dimension(10,50)};*/
+ border: {BorderFactory.createTitledBorder(_("tutti.label.comment"))};
}
#commentField {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.jaxx 2013-01-18 14:55:04 UTC (rev 223)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.jaxx 2013-01-18 15:05:20 UTC (rev 224)
@@ -85,7 +85,7 @@
<field name='fishingOperationNumber'
component='fishingOperationNumberField'/>
<field name='gearShootingStartDate' component='gearShootingStartDateField'/>
- <field name='comment' component='commentField'/>
+ <field name='comment' component='commentPane'/>
<field name='saisisseur' component='saisisseurList'/>
<field name='vessel' component='vesselComboBox'/>
<field name='gear' component='gearComboBox'/>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-01-18 14:55:04 UTC (rev 223)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-01-18 15:05:20 UTC (rev 224)
@@ -158,21 +158,14 @@
}
});
-// context.getConfig().
-// model.addPropertyChangeListener(EditFishingOperationUIModel.PROPERTY_USE_SEXAGECIMAL_FORMAT, new PropertyChangeListener() {
-// @Override
-// public void propertyChange(PropertyChangeEvent evt) {
-// boolean useSexagecimalFormat = (Boolean) evt.getNewValue();
-// log.info("property PROPERTY_USE_SEXAGECIMAL_FORMAT changed " + useSexagecimalFormat);
-//
-// if (useSexagecimalFormat) {
-// getModel().convertGearShootingCoordinatesDDToDMS();
-// } else {
-// getModel().convertGearShootingCoordinatesDMSToDD();
-// }
-// }
-// });
+ getContext().addPropertyChangeListener(TuttiUIContext.PROPERTY_VALIDATION_CONTEXT, new PropertyChangeListener() {
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ getModel().setValidationContext((String) evt.getNewValue());
+ }
+ });
+
ui.setContextValue(model);
fishingOperationMonitor.setBean(model);
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-01-18 14:55:04 UTC (rev 223)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUI.css 2013-01-18 15:05:20 UTC (rev 224)
@@ -42,8 +42,7 @@
}
#commentPane {
- columnHeaderView: {new JLabel(_("tutti.label.comment"))};
- minimumSize: {new Dimension(10,50)};
+ border: {BorderFactory.createTitledBorder(_("tutti.label.comment"))};
}
#commentField {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUI.jaxx 2013-01-18 14:55:04 UTC (rev 223)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUI.jaxx 2013-01-18 15:05:20 UTC (rev 224)
@@ -67,7 +67,7 @@
uiClass='jaxx.runtime.validator.swing.ui.ImageValidationUI'>
<field name='name' component='nameField'/>
<field name='zone' component='zoneComboBox'/>
- <field name='comment' component='commentField'/>
+ <field name='comment' component='commentPane'/>
</BeanValidator>
<Table id='form' fill='both'>
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-01-18 14:55:04 UTC (rev 223)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.css 2013-01-18 15:05:20 UTC (rev 224)
@@ -44,8 +44,7 @@
}
#commentPane {
- columnHeaderView: {new JLabel(_("tutti.label.comment"))};
- minimumSize: {new Dimension(10,50)};
+ border: {BorderFactory.createTitledBorder(_("tutti.label.comment"))};
}
#commentField {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx 2013-01-18 14:55:04 UTC (rev 223)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx 2013-01-18 15:05:20 UTC (rev 224)
@@ -73,7 +73,7 @@
<BeanValidator id='validator' bean='model' errorTableModel='errorTableModel'
uiClass='jaxx.runtime.validator.swing.ui.ImageValidationUI'>
<field name='name' component='nameField'/>
- <field name='comment' component='commentField'/>
+ <field name='comment' component='commentPane'/>
</BeanValidator>
<JPopupMenu id='tablePopup'>
Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-18 14:55:04 UTC (rev 223)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-18 15:05:20 UTC (rev 224)
@@ -14,7 +14,7 @@
tutti.action.edit.protocol.tip=Éditer le protocole sélectionné
tutti.action.editCatches=Saisir les captures
tutti.action.editCatches.tip=Saisir des captures
-tutti.action.editCruise=Campagne
+tutti.action.editCruise=Éditer la campagne
tutti.action.editCruise.tip=Éditer la campagne sélectionnée
tutti.action.editProgram=Programme
tutti.action.editProgram.tip=Éditer le programme sélectionné
@@ -46,7 +46,7 @@
tutti.action.removeSpeciesSubBatch.tip=Supprimer tous les lots fils du lot sélectionné
tutti.action.reset.fishingOperationValidState=Réinitialiser
tutti.action.save=Enregistrer
-tutti.action.selectCruise=Campagne
+tutti.action.selectCruise=Sélectionner une campagne
tutti.action.selectCruise.tip=Sélectionner la campagne à utiliser
tutti.action.site=Site
tutti.action.site.tip=Accéder au site du projet Tutti
1
0
r223 - in trunk/tutti-ui-swing/src/main: java/fr/ifremer/tutti/ui/swing java/fr/ifremer/tutti/ui/swing/config java/fr/ifremer/tutti/ui/swing/content/cruise java/fr/ifremer/tutti/ui/swing/content/home resources/i18n
by tchemit@users.forge.codelutin.com 18 Jan '13
by tchemit@users.forge.codelutin.com 18 Jan '13
18 Jan '13
Author: tchemit
Date: 2013-01-18 15:55:04 +0100 (Fri, 18 Jan 2013)
New Revision: 223
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/223
Log:
refs #1852: [ERGO] - Barre de progression pour les actions longues
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseCatchesAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProgramAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/RunTutti.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/SelectCruiseAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/ValidateSelectedCruiseCatchesAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfig.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigOption.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigUI.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCatchesAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCruiseAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProgramAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewCruiseAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProgramAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ValidateCatchesAction.java
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiAction.java 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiAction.java 2013-01-18 14:55:04 UTC (rev 223)
@@ -24,7 +24,6 @@
* #L%
*/
-import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
import jaxx.runtime.SwingUtil;
import jaxx.runtime.swing.ErrorDialogUI;
import org.apache.commons.logging.Log;
@@ -32,10 +31,21 @@
import org.jdesktop.beans.AbstractBean;
import javax.swing.AbstractAction;
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JProgressBar;
+import javax.swing.border.EmptyBorder;
+import javax.swing.border.TitledBorder;
+import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.util.Timer;
import java.util.TimerTask;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import static org.nuiton.i18n.I18n._;
+
/**
* TODO
*
@@ -51,61 +61,62 @@
private static final Timer t = new Timer();
+ private static final ExecutorService executorService =
+ Executors.newSingleThreadExecutor();
+
private final H handler;
+ private final boolean hideBody;
+
protected abstract void doAction(ActionEvent event);
- public AbstractTuttiAction(H handler,
- String name,
- String icon,
- String text,
- String tip) {
+ protected AbstractTuttiAction(H handler,
+ String name,
+ String icon,
+ String text,
+ String tip,
+ boolean hideBody) {
this.handler = handler;
+ this.hideBody = hideBody;
+ putValue(SMALL_ICON, SwingUtil.createActionIcon(icon));
putValue(LARGE_ICON_KEY, SwingUtil.createActionIcon(icon));
putValue(ACTION_COMMAND_KEY, name);
putValue(NAME, text);
putValue(SHORT_DESCRIPTION, tip);
}
+ protected String getActionName() {
+ return (String) getValue(NAME);
+ }
+
@Override
- public final void actionPerformed(ActionEvent event) {
+ public final void actionPerformed(final ActionEvent event) {
if (log.isInfoEnabled()) {
log.info("Will starts action: " + this);
}
- TimerTask timer = new TimerTask() {
+
+ executorService.submit(new Runnable() {
@Override
public void run() {
- if (log.isInfoEnabled()) {
- log.info("Task [" + AbstractTuttiAction.this + "] is started since 1 second!!!");
- }
- TuttiUIUtil.updateBusyState(getContext().getMainUI(), true);
- }
+ TimerTask timer = new ActionTimerTask();
- @Override
- public boolean cancel() {
- if (log.isInfoEnabled()) {
- log.info("Task [" + AbstractTuttiAction.this + "] canceled.");
+ t.schedule(timer, 500);
+ try {
+
+ doAction(event);
+ } catch (Exception e) {
+ ErrorDialogUI.showError(e);
+ timer.cancel();
+ } finally {
+ if (log.isInfoEnabled()) {
+ log.info("After action: " + this);
+ }
+ timer.cancel();
}
- TuttiUIUtil.updateBusyState(getContext().getMainUI(), false);
- boolean cancel = super.cancel();
- return cancel;
}
- };
-
- try {
-
- t.schedule(timer, 500);
- doAction(event);
- } catch (Exception e) {
- ErrorDialogUI.showError(e);
- } finally {
- if (log.isInfoEnabled()) {
- log.info("After action: " + this);
- }
- timer.cancel();
- }
+ });
}
public TuttiUIContext getContext() {
@@ -123,4 +134,70 @@
protected void setMnemonic(int key) {
putValue(MNEMONIC_KEY, key);
}
+
+ protected class ActionTimerTask extends TimerTask {
+ JDialog d;
+
+ @Override
+ public void run() {
+
+ MainUI ui = getContext().getMainUI();
+
+
+ updateBusyState(ui, true);
+
+ if (log.isDebugEnabled()) {
+ log.debug("Task [" + AbstractTuttiAction.this + "] is started, show waiting dialog");
+ }
+
+ JPanel panel = new JPanel(new BorderLayout());
+ panel.setBorder(new TitledBorder((String) null));
+ JLabel label = new JLabel();
+ EmptyBorder border = new EmptyBorder(5, 5, 5, 5);
+ label.setBorder(border);
+ label.setText(_("tutti.message.action.running", getActionName()));
+ panel.add(label, BorderLayout.CENTER);
+ JProgressBar progressBar = new JProgressBar();
+ progressBar.setBorder(border);
+ progressBar.setIndeterminate(true);
+ panel.add(progressBar, BorderLayout.SOUTH);
+
+ d = new JDialog(ui, true);
+ d.setUndecorated(true);
+// d.setSize(300, 200);
+ d.add(panel);
+ d.pack();
+ SwingUtil.center(ui, d);
+ d.setVisible(true);
+ }
+
+ @Override
+ public boolean cancel() {
+ if (log.isDebugEnabled()) {
+ log.debug("Task [" + AbstractTuttiAction.this + "] canceled.");
+ }
+ updateBusyState(getContext().getMainUI(), false);
+
+ if (d != null) {
+ d.setVisible(false);
+ }
+ boolean cancel = super.cancel();
+ return cancel;
+ }
+
+ protected void updateBusyState(MainUI ui, boolean busy) {
+
+ if (busy) {
+ // ui bloquee
+ if (hideBody) {
+ ui.getBody().setVisible(false);
+ }
+ } else {
+ // ui debloquee
+ if (hideBody) {
+ ui.getBody().setVisible(true);
+ }
+ }
+ }
+ }
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiUIHandler.java 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiUIHandler.java 2013-01-18 14:55:04 UTC (rev 223)
@@ -55,6 +55,7 @@
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JList;
+import javax.swing.JMenuItem;
import javax.swing.JRootPane;
import javax.swing.KeyStroke;
import javax.swing.ListCellRenderer;
@@ -242,9 +243,15 @@
}
jLabel.setText("<html>" + text + "</strong>");
}
+ }
-
- }
+// else if (component instanceof JMenuItem) {
+// JMenuItem jMenuItem = (JMenuItem) component;
+// if (jMenuItem.getAction()!=null) {
+// jMenuItem.setIcon();
+// }
+//
+// }
}
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseAction.java 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseAction.java 2013-01-18 14:55:04 UTC (rev 223)
@@ -50,7 +50,9 @@
"editCruise",
"edit",
_("tutti.action.editCruise"),
- _("tutti.action.editCruise.tip"));
+ _("tutti.action.editCruise.tip"),
+ true
+ );
}
@Override
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseCatchesAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseCatchesAction.java 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseCatchesAction.java 2013-01-18 14:55:04 UTC (rev 223)
@@ -45,7 +45,8 @@
"editCatches",
"edit",
_("tutti.action.editCatches"),
- _("tutti.action.editCatches.tip")
+ _("tutti.action.editCatches.tip"),
+ true
);
setMnemonic('C');
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProgramAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProgramAction.java 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProgramAction.java 2013-01-18 14:55:04 UTC (rev 223)
@@ -50,7 +50,9 @@
"editProgram",
"edit",
_("tutti.action.editProgram"),
- _("tutti.action.editProgram.tip"));
+ _("tutti.action.editProgram.tip"),
+ true
+ );
}
@Override
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProtocolAction.java 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProtocolAction.java 2013-01-18 14:55:04 UTC (rev 223)
@@ -50,7 +50,9 @@
"editProtocol",
"edit",
_("tutti.action.editProtocol"),
- _("tutti.action.editProtocol.tip"));
+ _("tutti.action.editProtocol.tip"),
+ true
+ );
setMnemonic('P');
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.css 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.css 2013-01-18 14:55:04 UTC (rev 223)
@@ -22,6 +22,10 @@
* #L%
*/
+#actionBlockerLayer {
+ canClick: false;
+ blockingColor: {model.getConfig().getColorBlockingLayer()};
+}
#mainFrame {
title: "tutti.application.name";
defaultCloseOperation: {JFrame.DO_NOTHING_ON_CLOSE};
@@ -145,4 +149,4 @@
#validatorMessageWidget {
focusPainted: false;
-}
\ No newline at end of file
+}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.jaxx 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.jaxx 2013-01-18 14:55:04 UTC (rev 223)
@@ -39,6 +39,7 @@
<MainUIHandler id='handler'
initializer='getContextValue(MainUIHandler.class)'/>
+ <BlockingLayerUI2 id='actionBlockerLayer'/>
<SelectCruiseAction id='selectCruiseAction' constructorParams='handler'/>
<EditSelectedProtocolAction id='editProtocolAction' constructorParams='handler'/>
<EditSelectedProgramAction id='editProgramAction' constructorParams='handler'/>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/RunTutti.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/RunTutti.java 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/RunTutti.java 2013-01-18 14:55:04 UTC (rev 223)
@@ -85,7 +85,7 @@
UIManager.put("Table.focusCellHighlightBorder",
new BorderUIResource.LineBorderUIResource(Color.BLACK));
- UIManager.put("BlockingLayerUI.blockingColor", new Color(50, 50, 50));
+ //UIManager.put("BlockingLayerUI.blockingColor", new Color(50, 50, 50));
startTutti(context);
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/SelectCruiseAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/SelectCruiseAction.java 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/SelectCruiseAction.java 2013-01-18 14:55:04 UTC (rev 223)
@@ -43,7 +43,8 @@
"selectCruise",
"home",
_("tutti.action.selectCruise"),
- _("tutti.action.selectCruise.tip")
+ _("tutti.action.selectCruise.tip"),
+ true
);
setMnemonic('S');
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/ValidateSelectedCruiseCatchesAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/ValidateSelectedCruiseCatchesAction.java 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/ValidateSelectedCruiseCatchesAction.java 2013-01-18 14:55:04 UTC (rev 223)
@@ -45,7 +45,8 @@
"validateCatches",
"validate",
_("tutti.action.validateCatches"),
- _("tutti.action.validateCatches.tip")
+ _("tutti.action.validateCatches.tip"),
+ true
);
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfig.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfig.java 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfig.java 2013-01-18 14:55:04 UTC (rev 223)
@@ -156,6 +156,10 @@
return applicationConfig.getOptionAsColor(TuttiConfigOption.COLOR_ROW_READ_ONLY.getKey());
}
+ public Color getColorBlockingLayer() {
+ return applicationConfig.getOptionAsColor(TuttiConfigOption.COLOR_BLOCKING_LAYER.getKey());
+ }
+
public KeyStroke getShortcutClosePopup() {
return applicationConfig.getOptionAsKeyStroke(TuttiConfigOption.SHORTCUT_CLOSE_POPUP.getKey());
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigOption.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigOption.java 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigOption.java 2013-01-18 14:55:04 UTC (rev 223)
@@ -82,6 +82,13 @@
Boolean.class
),
+ COLOR_BLOCKING_LAYER(
+ "tutti.ui.color.blockingLayer",
+ n_("tutti.config.ui.color.blockingLayer"),
+ new Color(50, 50, 50).toString(),
+ Color.class
+ ),
+
COLOR_ROW_READ_ONLY(
"tutti.ui.color.rowReadOnly",
n_("tutti.config.ui.color.rowReadOnly"),
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigUI.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigUI.java 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigUI.java 2013-01-18 14:55:04 UTC (rev 223)
@@ -106,6 +106,7 @@
helper.addCategory(n_("tutti.config.category.ui"),
n_("tutti.config.category.ui.description"),
CALLBACK_UI)
+ .addOption(TuttiConfigOption.COLOR_BLOCKING_LAYER)
.addOption(TuttiConfigOption.COLOR_ROW_INVALID)
.addOption(TuttiConfigOption.COLOR_ROW_READ_ONLY)
.addOption(TuttiConfigOption.USE_SEXAGECIMAL_EDITOR);
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx 2013-01-18 14:55:04 UTC (rev 223)
@@ -88,7 +88,7 @@
<field name='gear' component='gearList'/>
<field name='headOfMission' component='headOfMissionList'/>
<field name='headOfSortRoom' component='headOfSortRoomList'/>
- <field name='comment' component='commentField'/>
+ <field name='comment' component='commentPane'/>
</BeanValidator>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java 2013-01-18 14:55:04 UTC (rev 223)
@@ -53,7 +53,9 @@
"cloneProtocol",
"copy",
_("tutti.action.clone"),
- _("tutti.action.clone.protocol.tip"));
+ _("tutti.action.clone.protocol.tip"),
+ true
+ );
}
@Override
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCatchesAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCatchesAction.java 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCatchesAction.java 2013-01-18 14:55:04 UTC (rev 223)
@@ -48,7 +48,8 @@
"editCatches",
"edit",
_("tutti.action.editCatches"),
- _("tutti.action.editCatches.tip")
+ _("tutti.action.editCatches.tip"),
+ true
);
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCruiseAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCruiseAction.java 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCruiseAction.java 2013-01-18 14:55:04 UTC (rev 223)
@@ -48,7 +48,8 @@
"editCruise",
"edit",
_("tutti.action.edit"),
- _("tutti.action.editCruise.tip")
+ _("tutti.action.editCruise.tip"),
+ true
);
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProgramAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProgramAction.java 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProgramAction.java 2013-01-18 14:55:04 UTC (rev 223)
@@ -48,7 +48,8 @@
"editProgram",
"edit",
_("tutti.action.edit"),
- _("tutti.action.editProgram.tip")
+ _("tutti.action.editProgram.tip"),
+ true
);
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java 2013-01-18 14:55:04 UTC (rev 223)
@@ -53,7 +53,9 @@
"editProtocol",
"edit",
_("tutti.action.edit"),
- _("tutti.action.edit.protocol.tip"));
+ _("tutti.action.edit.protocol.tip"),
+ true
+ );
}
@Override
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java 2013-01-18 14:55:04 UTC (rev 223)
@@ -53,7 +53,9 @@
"exportProtocol",
"export",
_("tutti.action.export"),
- _("tutti.action.export.protocol.tip"));
+ _("tutti.action.export.protocol.tip"),
+ true
+ );
}
@Override
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java 2013-01-18 14:55:04 UTC (rev 223)
@@ -51,7 +51,9 @@
"importProtocol",
"import",
_("tutti.action.import"),
- _("tutti.action.import.protocol.tip"));
+ _("tutti.action.import.protocol.tip"),
+ true
+ );
}
@Override
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewCruiseAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewCruiseAction.java 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewCruiseAction.java 2013-01-18 14:55:04 UTC (rev 223)
@@ -46,7 +46,8 @@
"newCruise",
"add",
_("tutti.action.new"),
- _("tutti.action.newCruise.tip")
+ _("tutti.action.newCruise.tip"),
+ true
);
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProgramAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProgramAction.java 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProgramAction.java 2013-01-18 14:55:04 UTC (rev 223)
@@ -46,7 +46,8 @@
"newProgram",
"add",
_("tutti.action.new"),
- _("tutti.action.newProgram.tip")
+ _("tutti.action.newProgram.tip"),
+ true
);
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProtocolAction.java 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProtocolAction.java 2013-01-18 14:55:04 UTC (rev 223)
@@ -51,7 +51,9 @@
"newProtocol",
"add",
_("tutti.action.new"),
- _("tutti.action.new.protocol.tip"));
+ _("tutti.action.new.protocol.tip"),
+ true
+ );
}
@Override
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ValidateCatchesAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ValidateCatchesAction.java 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ValidateCatchesAction.java 2013-01-18 14:55:04 UTC (rev 223)
@@ -48,7 +48,8 @@
"validateCatches",
"validate",
_("tutti.action.validateCatches"),
- _("tutti.action.validateCatches.tip")
+ _("tutti.action.validateCatches.tip"),
+ true
);
}
Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-18 12:40:25 UTC (rev 222)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-18 14:55:04 UTC (rev 223)
@@ -66,6 +66,7 @@
tutti.config.programId=Identifiant de la dernière série de campagne utilisée
tutti.config.protocolId=Identifiant du dernier protocole utilisé
tutti.config.ui.autoPopupNumberEditor=Toujours afficher le pavé numérique lors de l'édition d'un nombre
+tutti.config.ui.color.blockingLayer=
tutti.config.ui.color.rowInvalid=Ligne invalide
tutti.config.ui.color.rowReadOnly=Cellule non éditable
tutti.config.ui.config=Chemin du fichier de configuration des interfaces graphiques
@@ -214,6 +215,7 @@
tutti.menu.synchronisationImport.tip=Effectuer des imports
tutti.menu.synchronisations=Synchronisation
tutti.menu.synchronisations.tip=Import/Export
+tutti.message.action.running=<html>Action <strong>%s</strong> en cours d'execution...<br/><hr/>Merci de bien vouloir patienter.</html>
tutti.sampleCategoryType.age=Age
tutti.sampleCategoryType.maturity=Maturité
tutti.sampleCategoryType.sex=Sexe
@@ -303,6 +305,7 @@
tutti.title.selectedProtocol=Protocol %s
tutti.title.splitBatch=Catégoriser un lot
tutti.title.validate.operations=Validation des opérations de pêches (%s)
+tutti.title.waitingBar=Action en cours...
tutti.to.be.done=< A FAIRE >
tutti.tooltip.attachment.none=Pas de pièce-jointes
tutti.tooltip.comment.none=Pas de commentaire
1
0
18 Jan '13
Author: tchemit
Date: 2013-01-18 13:40:25 +0100 (Fri, 18 Jan 2013)
New Revision: 222
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/222
Log:
#1852: [ERGO] - Barre de progression pour les actions longues (mise en place des actions pour l'?\195?\169cran de d?\195?\169marrage et les menus)
Added:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseCatchesAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProgramAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/SelectCruiseAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/ValidateSelectedCruiseCatchesAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCatchesAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCruiseAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProgramAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewCruiseAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProgramAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ValidateCatchesAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/ActionListCellRenderer.java
Removed:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/AbstractHomeAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/macrowaste/MacroWasteBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/plankton/PlanktonBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
Copied: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiAction.java (from rev 220, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/AbstractHomeAction.java)
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiAction.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -0,0 +1,126 @@
+package fr.ifremer.tutti.ui.swing;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
+import jaxx.runtime.SwingUtil;
+import jaxx.runtime.swing.ErrorDialogUI;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.jdesktop.beans.AbstractBean;
+
+import javax.swing.AbstractAction;
+import java.awt.event.ActionEvent;
+import java.util.Timer;
+import java.util.TimerTask;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public abstract class AbstractTuttiAction<M extends AbstractBean, H extends AbstractTuttiUIHandler<M>> extends AbstractAction {
+
+ private static final long serialVersionUID = 1L;
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(AbstractTuttiAction.class);
+
+ private static final Timer t = new Timer();
+
+ private final H handler;
+
+ protected abstract void doAction(ActionEvent event);
+
+ public AbstractTuttiAction(H handler,
+ String name,
+ String icon,
+ String text,
+ String tip) {
+ this.handler = handler;
+ putValue(LARGE_ICON_KEY, SwingUtil.createActionIcon(icon));
+ putValue(ACTION_COMMAND_KEY, name);
+ putValue(NAME, text);
+ putValue(SHORT_DESCRIPTION, tip);
+ }
+
+ @Override
+ public final void actionPerformed(ActionEvent event) {
+
+ if (log.isInfoEnabled()) {
+ log.info("Will starts action: " + this);
+ }
+ TimerTask timer = new TimerTask() {
+ @Override
+ public void run() {
+ if (log.isInfoEnabled()) {
+ log.info("Task [" + AbstractTuttiAction.this + "] is started since 1 second!!!");
+ }
+
+ TuttiUIUtil.updateBusyState(getContext().getMainUI(), true);
+ }
+
+ @Override
+ public boolean cancel() {
+ if (log.isInfoEnabled()) {
+ log.info("Task [" + AbstractTuttiAction.this + "] canceled.");
+ }
+ TuttiUIUtil.updateBusyState(getContext().getMainUI(), false);
+ boolean cancel = super.cancel();
+ return cancel;
+ }
+ };
+
+ try {
+
+ t.schedule(timer, 500);
+ doAction(event);
+ } catch (Exception e) {
+ ErrorDialogUI.showError(e);
+ } finally {
+ if (log.isInfoEnabled()) {
+ log.info("After action: " + this);
+ }
+ timer.cancel();
+ }
+ }
+
+ public TuttiUIContext getContext() {
+ return handler.getContext();
+ }
+
+ public H getHandler() {
+ return handler;
+ }
+
+ public M getModel() {
+ return handler.getModel();
+ }
+
+ protected void setMnemonic(int key) {
+ putValue(MNEMONIC_KEY, key);
+ }
+}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiUIHandler.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiUIHandler.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -50,6 +50,7 @@
import org.nuiton.validator.bean.simple.SimpleBeanValidator;
import javax.swing.AbstractAction;
+import javax.swing.DefaultComboBoxModel;
import javax.swing.JComponent;
import javax.swing.JDialog;
import javax.swing.JLabel;
@@ -94,7 +95,7 @@
public abstract void onCloseUI();
- protected abstract M getModel();
+ public abstract M getModel();
protected final TuttiUIContext context;
@@ -106,6 +107,10 @@
//-- Public methods --//
//------------------------------------------------------------------------//
+ public DefaultComboBoxModel newComboModel(Object... items) {
+ return new DefaultComboBoxModel(items);
+ }
+
@Override
public void showInformationMessage(String message) {
context.showInformationMessage(message);
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseAction.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -0,0 +1,64 @@
+package fr.ifremer.tutti.ui.swing;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.awt.event.ActionEvent;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class EditSelectedCruiseAction extends AbstractTuttiAction<TuttiUIContext, MainUIHandler> {
+
+ private static final long serialVersionUID = 1L;
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(EditSelectedCruiseAction.class);
+
+ public EditSelectedCruiseAction(MainUIHandler handler) {
+ super(handler,
+ "editCruise",
+ "edit",
+ _("tutti.action.editCruise"),
+ _("tutti.action.editCruise.tip"));
+ }
+
+ @Override
+ protected void doAction(ActionEvent e) {
+ Preconditions.checkState(getContext().isCruiseFilled());
+ if (log.isInfoEnabled()) {
+ log.info("Edit cruise: " + getContext().getCruiseId());
+ }
+ getContext().setScreen(TuttiScreen.EDIT_CRUISE);
+ }
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseCatchesAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseCatchesAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseCatchesAction.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -0,0 +1,60 @@
+package fr.ifremer.tutti.ui.swing;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+
+import java.awt.event.ActionEvent;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class EditSelectedCruiseCatchesAction extends AbstractTuttiAction<TuttiUIContext, MainUIHandler> {
+
+ private static final long serialVersionUID = 1L;
+
+ public EditSelectedCruiseCatchesAction(MainUIHandler handler) {
+ super(handler,
+ "editCatches",
+ "edit",
+ _("tutti.action.editCatches"),
+ _("tutti.action.editCatches.tip")
+ );
+ setMnemonic('C');
+ }
+
+ @Override
+ protected void doAction(ActionEvent e) {
+ Preconditions.checkState(getContext().isCruiseFilled());
+ getContext().setValidationContext(TuttiUIContext.VALIDATION_CONTEXT_EDIT);
+ getContext().setScreen(null);
+ getContext().setScreen(TuttiScreen.EDIT_FISHING_OPERATION);
+ }
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseCatchesAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProgramAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProgramAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProgramAction.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -0,0 +1,64 @@
+package fr.ifremer.tutti.ui.swing;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.awt.event.ActionEvent;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class EditSelectedProgramAction extends AbstractTuttiAction<TuttiUIContext, MainUIHandler> {
+
+ private static final long serialVersionUID = 1L;
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(EditSelectedProgramAction.class);
+
+ public EditSelectedProgramAction(MainUIHandler handler) {
+ super(handler,
+ "editProgram",
+ "edit",
+ _("tutti.action.editProgram"),
+ _("tutti.action.editProgram.tip"));
+ }
+
+ @Override
+ protected void doAction(ActionEvent e) {
+ Preconditions.checkState(getContext().getProgramId() != null);
+ if (log.isInfoEnabled()) {
+ log.info("Edit program: " + getContext().getProgramId());
+ }
+ getContext().setScreen(TuttiScreen.EDIT_PROGRAM);
+ }
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProgramAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Copied: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProtocolAction.java (from rev 220, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java)
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProtocolAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProtocolAction.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -0,0 +1,65 @@
+package fr.ifremer.tutti.ui.swing;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.awt.event.ActionEvent;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class EditSelectedProtocolAction extends AbstractTuttiAction<TuttiUIContext, MainUIHandler> {
+
+ private static final long serialVersionUID = 1L;
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(EditSelectedProtocolAction.class);
+
+ public EditSelectedProtocolAction(MainUIHandler handler) {
+ super(handler,
+ "editProtocol",
+ "edit",
+ _("tutti.action.editProtocol"),
+ _("tutti.action.editProtocol.tip"));
+ setMnemonic('P');
+ }
+
+ @Override
+ protected void doAction(ActionEvent e) {
+ Preconditions.checkState(getContext().isProtocolFilled());
+ if (log.isInfoEnabled()) {
+ log.info("Edit protocol: " + getContext().getProtocolId());
+ }
+ getContext().setScreen(TuttiScreen.EDIT_PROTOCOL);
+ }
+}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.css 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.css 2013-01-18 12:40:25 UTC (rev 222)
@@ -52,43 +52,40 @@
mnemonic: A;
}
+#menuActionSelectCruise {
+ enabled: {model.getScreen() != TuttiScreen.SELECT_CRUISE};
+ action: {selectCruiseAction};
+}
-#menuActionManageProtocol {
- text: "tutti.action.manageProtocol";
- toolTipText: "tutti.action.manageProtocol.tip";
- mnemonic: P;
- enabled: {model.getScreen() != TuttiScreen.EDIT_PROTOCOL && model.isProtocolFilled()};
- /*actionIcon: "protocol";*/
+#menuActionEditProgram {
+ enabled: {model.getScreen() != TuttiScreen.EDIT_PROGRAM && model.isProgramFilled()};
+ action: {editProgramAction};
}
-#menuActionSelectCampaign {
- text: "tutti.action.selectCampaign";
- toolTipText: "tutti.action.selectCampaign.tip";
- mnemonic: S;
- enabled: {model.getScreen() != TuttiScreen.SELECT_CRUISE};
- /*actionIcon: "cruise";*/
+#menuActionEditCruise {
+ enabled: {model.getScreen() != TuttiScreen.EDIT_CRUISE && model.isCruiseFilled()};
+ action: {editCruiseAction};
}
-#menuActionFillCatches {
- text: "tutti.action.fillCatches";
- toolTipText: "tutti.action.fillCatches.tip";
- mnemonic: C;
+#menuActionEditProtocol {
+ enabled: {model.getScreen() != TuttiScreen.EDIT_PROTOCOL && model.isProtocolFilled()};
+ action: {editProtocolAction};
+}
+
+#menuActionEditCatches {
enabled: {(
- TuttiUIContext.VALIDATION_CONTEXT_VALIDATE.equals(model.getValidationContext())
- || model.getScreen() != TuttiScreen.EDIT_FISHING_OPERATION
- ) && model.isCruiseContextFilled()};
- actionIcon: edit;
+ !TuttiUIContext.VALIDATION_CONTEXT_EDIT.equals(model.getValidationContext())
+ || model.getScreen() != TuttiScreen.EDIT_FISHING_OPERATION
+ ) && model.isCruiseFilled()};
+ action: {editCatchesAction};
}
#menuActionValidateCatches {
- text: "tutti.action.validateCatches";
- toolTipText: "tutti.action.validateCatches.tip";
- mnemonic: V;
enabled: {(
- !TuttiUIContext.VALIDATION_CONTEXT_VALIDATE.equals(model.getValidationContext())
- || model.getScreen() != TuttiScreen.EDIT_FISHING_OPERATION
- ) && model.isCruiseContextFilled()};
- actionIcon: validate;
+ !TuttiUIContext.VALIDATION_CONTEXT_VALIDATE.equals(model.getValidationContext())
+ || model.getScreen() != TuttiScreen.EDIT_FISHING_OPERATION
+ ) && model.isCruiseFilled()};
+ action: {validateCatchesAction};
}
#menuSynchronisations {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.jaxx 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.jaxx 2013-01-18 12:40:25 UTC (rev 222)
@@ -39,6 +39,13 @@
<MainUIHandler id='handler'
initializer='getContextValue(MainUIHandler.class)'/>
+ <SelectCruiseAction id='selectCruiseAction' constructorParams='handler'/>
+ <EditSelectedProtocolAction id='editProtocolAction' constructorParams='handler'/>
+ <EditSelectedProgramAction id='editProgramAction' constructorParams='handler'/>
+ <EditSelectedCruiseAction id='editCruiseAction' constructorParams='handler'/>
+ <EditSelectedCruiseCatchesAction id='editCatchesAction' constructorParams='handler'/>
+ <ValidateSelectedCruiseCatchesAction id='validateCatchesAction' constructorParams='handler'/>
+
<script><![CDATA[
public MainUI(TuttiUIContext context) {
@@ -73,14 +80,12 @@
</JMenu>
<JMenu id='menuActions'>
- <JMenuItem id='menuActionManageProtocol'
- onActionPerformed="getHandler().showManageProtocol()"/>
- <JMenuItem id='menuActionSelectCampaign'
- onActionPerformed="getHandler().showSelectCampaign()"/>
- <JMenuItem id='menuActionFillCatches'
- onActionPerformed="getHandler().showFillCatches()"/>
- <JMenuItem id='menuActionValidateCatches'
- onActionPerformed="getHandler().showFillCatches()"/>
+ <JMenuItem id='menuActionSelectCruise'/>
+ <JMenuItem id='menuActionEditProgram'/>
+ <JMenuItem id='menuActionEditCruise'/>
+ <JMenuItem id='menuActionEditProtocol'/>
+ <JMenuItem id='menuActionEditCatches'/>
+ <JMenuItem id='menuActionValidateCatches'/>
</JMenu>
<JMenu id='menuSynchronisations'>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUIHandler.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUIHandler.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -35,23 +35,24 @@
import fr.ifremer.tutti.ui.swing.content.operation.FishingOperationsUI;
import fr.ifremer.tutti.ui.swing.content.program.EditProgramUI;
import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUI;
-import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil;
-import java.awt.Desktop;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-import java.net.URL;
-import java.util.Calendar;
-import javax.swing.JComponent;
-import javax.swing.JToolBar;
import jaxx.runtime.swing.AboutPanel;
import jaxx.runtime.swing.ErrorDialogUI;
import jaxx.runtime.validator.swing.SwingValidator;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import static org.nuiton.i18n.I18n._;
import org.nuiton.util.ApplicationConfig;
import org.nuiton.widget.SwingSession;
+import javax.swing.JComponent;
+import javax.swing.JToolBar;
+import java.awt.Desktop;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.net.URL;
+import java.util.Calendar;
+
+import static org.nuiton.i18n.I18n._;
+
/**
* @author tchemit <chemit(a)codelutin.com>
* @since 0.1
@@ -62,7 +63,7 @@
private static final Log log = LogFactory.getLog(MainUIHandler.class);
public static final String CLONE_PROTOCOL = "cloneProtocol";
-
+
protected MainUI ui;
protected JComponent currentBody;
@@ -74,6 +75,7 @@
this.ui = ui;
this.persistenceService = context.getService(PersistenceService.class);
context.addMessageNotifier(this);
+ context.setMainUI(ui);
}
//------------------------------------------------------------------------//
@@ -113,38 +115,26 @@
//SwingUtil.getLayer(ui.getBody()).setUI(new BetaLayerUI());
changeTitle();
-
+
JToolBar bar = ui.getBottomBar();
ui.getStatus().addWidget(bar, 0);
TuttiScreen screen;
-// if (context.isCruiseContextFilled()) {
-//
-// // direct fill catches screen
-// screen = TuttiScreen.EDIT_FISHING_OPERATION;
-// } else {
-//
-// // go to select cruise screen
-// screen = TuttiScreen.SELECT_CRUISE;
-// }
-
screen = TuttiScreen.SELECT_CRUISE;
context.setScreen(screen);
-
+
}
@Override
public void onCloseUI() {
-// closeCurrentBody();
-
context.close();
}
@Override
- protected TuttiUIContext getModel() {
+ public TuttiUIContext getModel() {
return ui.getModel();
}
@@ -161,13 +151,6 @@
// Close the application
RunTutti.closeTutti(ui, false);
- // Re-open the context
-// try {
-// context.open();
-// } catch (Exception ex) {
-// ErrorDialogUI.showError(ex);
-// }
-
RunTutti.startTutti(context);
}
@@ -281,11 +264,11 @@
public void registerValidator(SwingValidator validator) {
ui.getValidatorMessageWidget().registerValidator(validator);
}
-
+
public void clearValidators() {
ui.getValidatorMessageWidget().clearValidators();
}
-
+
//------------------------------------------------------------------------//
//-- Internal methods --//
//------------------------------------------------------------------------//
@@ -294,9 +277,6 @@
try {
- // busy ui
- TuttiUIUtil.updateBusyState(ui, true);
-
// close current body (if any)
if (currentBody != null) {
TuttiUI<?, ?> body = (TuttiUI<?, ?>) currentBody;
@@ -358,7 +338,7 @@
screenUI = new EditProtocolUI(ui);
break;
-
+
case CLONE_PROTOCOL:
screenTitle = _("tutti.title.create.protocol");
ui.setContextValue(true, CLONE_PROTOCOL);
@@ -389,14 +369,8 @@
}
} catch (Exception e) {
- ErrorDialogUI.showError(e);
-
// go back to home
context.setScreen(TuttiScreen.SELECT_CRUISE);
- } finally {
-
- // free ui
- TuttiUIUtil.updateBusyState(ui, false);
}
}
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/SelectCruiseAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/SelectCruiseAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/SelectCruiseAction.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -0,0 +1,56 @@
+package fr.ifremer.tutti.ui.swing;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import java.awt.event.ActionEvent;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class SelectCruiseAction extends AbstractTuttiAction<TuttiUIContext, MainUIHandler> {
+
+ private static final long serialVersionUID = 1L;
+
+ public SelectCruiseAction(MainUIHandler handler) {
+ super(handler,
+ "selectCruise",
+ "home",
+ _("tutti.action.selectCruise"),
+ _("tutti.action.selectCruise.tip")
+ );
+ setMnemonic('S');
+ }
+
+ @Override
+ protected void doAction(ActionEvent e) {
+// Preconditions.checkNotNull(getContext().isCruiseFilled());
+ getContext().setScreen(TuttiScreen.SELECT_CRUISE);
+ }
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/SelectCruiseAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -70,8 +70,10 @@
public static final String PROPERTY_SCREEN = "screen";
- public static final String PROPERTY_CRUISE_CONTEXT_FILLED = "cruiseContextFilled";
+ public static final String PROPERTY_PROGRAM_FILLED = "programFilled";
+ public static final String PROPERTY_CRUISE__FILLED = "cruiseFilled";
+
public static final String PROPERTY_PROTOCOL_FILLED = "protocolFilled";
public static final String PROPERTY_VALIDATION_CONTEXT = "validationContext";
@@ -158,6 +160,8 @@
*/
private String validationContext;
+ private MainUI mainUI;
+
public static TuttiUIContext newContext(TuttiConfig config) {
Preconditions.checkNotNull(config);
Preconditions.checkState(applicationContext == null,
@@ -208,39 +212,44 @@
return protocolId;
}
- public boolean isCruiseContextFilled() {
- return StringUtils.isNotBlank(programId) &&
- StringUtils.isNotBlank(cruiseId);
+ public boolean isCruiseFilled() {
+ return isProgramFilled() && StringUtils.isNotBlank(cruiseId);
}
public boolean isProtocolFilled() {
return StringUtils.isNotBlank(protocolId);
}
+ public boolean isProgramFilled() {
+ return StringUtils.isNotBlank(programId);
+ }
+
+
public TuttiScreen getScreen() {
return screen;
}
public void setProgramId(String programId) {
- boolean oldValue = isCruiseContextFilled();
+ boolean oldProgramFilled = isProgramFilled();
+ boolean oldCruiseFilled = isCruiseFilled();
this.programId = programId;
// always propagate the change
firePropertyChange(PROPERTY_PROGRAM_ID, -1, programId);
- firePropertyChange(PROPERTY_CRUISE_CONTEXT_FILLED,
- oldValue, isCruiseContextFilled());
+ firePropertyChange(PROPERTY_PROGRAM_FILLED, oldProgramFilled, isProgramFilled());
+ firePropertyChange(PROPERTY_CRUISE__FILLED, oldCruiseFilled, isCruiseFilled());
}
public void setCruiseId(String cruiseId) {
- boolean oldValue = isCruiseContextFilled();
+ boolean oldValue = isCruiseFilled();
this.cruiseId = cruiseId;
// always propagate the change
firePropertyChange(PROPERTY_CRUISE_ID, -1, cruiseId);
- firePropertyChange(PROPERTY_CRUISE_CONTEXT_FILLED,
- oldValue, isCruiseContextFilled());
+ firePropertyChange(PROPERTY_CRUISE__FILLED,
+ oldValue, isCruiseFilled());
}
public void setProtocolId(String protocolId) {
@@ -293,7 +302,8 @@
PersistenceService persistenceService =
getService(PersistenceService.class);
- if (protocolId != null) {
+ if (isProtocolFilled()) {
+
TuttiProtocol protocol = persistenceService.getProtocol(protocolId);
if (protocol == null) {
@@ -307,7 +317,7 @@
}
}
- if (programId != null) {
+ if (isProgramFilled()) {
Program program = persistenceService.getProgram(programId);
if (program == null) {
@@ -330,7 +340,7 @@
setProgramId(programId);
// test cruiseId
- if (cruiseId != null) {
+ if (isCruiseFilled()) {
Cruise cruise = persistenceService.getCruise(cruiseId);
@@ -399,6 +409,7 @@
}
removePropertyChangeListener(listener);
}
+ setMainUI(null);
}
protected void saveContextToConfig() {
@@ -426,4 +437,12 @@
public RessourceClassLoader getResourceLoader() {
return resourceLoader;
}
+
+ public void setMainUI(MainUI mainUI) {
+ this.mainUI = mainUI;
+ }
+
+ public MainUI getMainUI() {
+ return mainUI;
+ }
}
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/ValidateSelectedCruiseCatchesAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/ValidateSelectedCruiseCatchesAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/ValidateSelectedCruiseCatchesAction.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -0,0 +1,59 @@
+package fr.ifremer.tutti.ui.swing;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+
+import java.awt.event.ActionEvent;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class ValidateSelectedCruiseCatchesAction extends AbstractTuttiAction<TuttiUIContext, MainUIHandler> {
+
+ private static final long serialVersionUID = 1L;
+
+ public ValidateSelectedCruiseCatchesAction(MainUIHandler handler) {
+ super(handler,
+ "validateCatches",
+ "validate",
+ _("tutti.action.validateCatches"),
+ _("tutti.action.validateCatches.tip")
+ );
+ }
+
+ @Override
+ protected void doAction(ActionEvent e) {
+ Preconditions.checkState(getContext().isCruiseFilled());
+ getContext().setValidationContext(TuttiUIContext.VALIDATION_CONTEXT_VALIDATE);
+ getContext().setScreen(null);
+ getContext().setScreen(TuttiScreen.EDIT_FISHING_OPERATION);
+ }
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/ValidateSelectedCruiseCatchesAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -267,7 +267,7 @@
}
@Override
- protected EditCruiseUIModel getModel() {
+ public EditCruiseUIModel getModel() {
return ui.getModel();
}
Deleted: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/AbstractHomeAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/AbstractHomeAction.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/AbstractHomeAction.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -1,62 +0,0 @@
-package fr.ifremer.tutti.ui.swing.content.home;
-
-/*
- * #%L
- * Tutti :: UI
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 - 2013 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import fr.ifremer.tutti.ui.swing.TuttiUIContext;
-import jaxx.runtime.SwingUtil;
-
-import javax.swing.AbstractAction;
-
-/**
- * TODO
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 1.0
- */
-public abstract class AbstractHomeAction extends AbstractAction {
-
- private static final long serialVersionUID = 1L;
-
- protected final TuttiUIContext context;
-
- protected final SelectCruiseUIModel model;
-
- public AbstractHomeAction(TuttiUIContext context,
- SelectCruiseUIModel model,
- String name,
- String icon,
- String text,
- String tip) {
- this.context = context;
- this.model = model;
- putValue(LARGE_ICON_KEY, SwingUtil.createActionIcon(icon));
- putValue(ACTION_COMMAND_KEY, name);
- putValue(NAME, name);
- putValue(SHORT_DESCRIPTION, text);
- putValue(LONG_DESCRIPTION, tip);
-
- }
-
-}
Deleted: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -1,71 +0,0 @@
-package fr.ifremer.tutti.ui.swing.content.home;
-
-/*
- * #%L
- * Tutti :: UI
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 - 2013 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import com.ezware.oxbow.swingbits.util.Preconditions;
-import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
-import fr.ifremer.tutti.ui.swing.TuttiScreen;
-import fr.ifremer.tutti.ui.swing.TuttiUIContext;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import java.awt.event.ActionEvent;
-
-import static org.nuiton.i18n.I18n._;
-
-/**
- * TODO
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 1.0
- */
-public class CloneProtocolAction extends AbstractHomeAction {
-
- private static final long serialVersionUID = 1L;
-
- /** Logger. */
- private static final Log log = LogFactory.getLog(CloneProtocolAction.class);
-
- public CloneProtocolAction(TuttiUIContext context,
- SelectCruiseUIModel model) {
- super(context,
- model,
- "cloneProtocol",
- "copy",
- _("tutti.action.clone"),
- _("tutti.action.clone.protocol.tip"));
- }
-
- @Override
- public void actionPerformed(ActionEvent e) {
- TuttiProtocol protocol = model.getProtocol();
- Preconditions.checkNotNull(protocol);
- if (log.isInfoEnabled()) {
- log.info("Clone protocol: " + protocol.getId());
- }
- context.setProtocolId(protocol.getId());
- context.setScreen(TuttiScreen.CLONE_PROTOCOL);
- }
-}
Copied: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java (from rev 220, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java)
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -0,0 +1,69 @@
+package fr.ifremer.tutti.ui.swing.content.home;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import com.ezware.oxbow.swingbits.util.Preconditions;
+import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
+import fr.ifremer.tutti.ui.swing.AbstractTuttiAction;
+import fr.ifremer.tutti.ui.swing.TuttiScreen;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.awt.event.ActionEvent;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class CloneProtocolAction extends AbstractTuttiAction<SelectCruiseUIModel, SelectCruiseUIHandler> {
+
+ private static final long serialVersionUID = 1L;
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(CloneProtocolAction.class);
+
+ public CloneProtocolAction(SelectCruiseUIHandler handler) {
+ super(handler,
+ "cloneProtocol",
+ "copy",
+ _("tutti.action.clone"),
+ _("tutti.action.clone.protocol.tip"));
+ }
+
+ @Override
+ protected void doAction(ActionEvent e) {
+ TuttiProtocol protocol = getModel().getProtocol();
+ Preconditions.checkNotNull(protocol);
+ if (log.isInfoEnabled()) {
+ log.info("Clone protocol: " + protocol.getId());
+ }
+ getContext().setProtocolId(protocol.getId());
+ getContext().setScreen(TuttiScreen.CLONE_PROTOCOL);
+ }
+}
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCatchesAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCatchesAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCatchesAction.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -0,0 +1,61 @@
+package fr.ifremer.tutti.ui.swing.content.home;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+import fr.ifremer.tutti.ui.swing.AbstractTuttiAction;
+import fr.ifremer.tutti.ui.swing.TuttiScreen;
+import fr.ifremer.tutti.ui.swing.TuttiUIContext;
+
+import java.awt.event.ActionEvent;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class EditCatchesAction extends AbstractTuttiAction<SelectCruiseUIModel, SelectCruiseUIHandler> {
+
+ private static final long serialVersionUID = 1L;
+
+ public EditCatchesAction(SelectCruiseUIHandler handler) {
+ super(handler,
+ "editCatches",
+ "edit",
+ _("tutti.action.editCatches"),
+ _("tutti.action.editCatches.tip")
+ );
+ }
+
+ @Override
+ protected void doAction(ActionEvent e) {
+ Preconditions.checkState(getContext().isCruiseFilled());
+ getContext().setValidationContext(TuttiUIContext.VALIDATION_CONTEXT_EDIT);
+ getContext().setScreen(TuttiScreen.EDIT_FISHING_OPERATION);
+ }
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCatchesAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCruiseAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCruiseAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCruiseAction.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -0,0 +1,62 @@
+package fr.ifremer.tutti.ui.swing.content.home;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import com.ezware.oxbow.swingbits.util.Preconditions;
+import fr.ifremer.tutti.persistence.entities.data.Cruise;
+import fr.ifremer.tutti.ui.swing.AbstractTuttiAction;
+import fr.ifremer.tutti.ui.swing.TuttiScreen;
+
+import java.awt.event.ActionEvent;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class EditCruiseAction extends AbstractTuttiAction<SelectCruiseUIModel, SelectCruiseUIHandler> {
+
+ private static final long serialVersionUID = 1L;
+
+ public EditCruiseAction(SelectCruiseUIHandler handler) {
+ super(handler,
+ "editCruise",
+ "edit",
+ _("tutti.action.edit"),
+ _("tutti.action.editCruise.tip")
+ );
+ }
+
+ @Override
+ protected void doAction(ActionEvent e) {
+ Cruise cruise = getModel().getCruise();
+ Preconditions.checkNotNull(cruise);
+ getContext().setCruiseId(cruise.getId());
+ getContext().setScreen(TuttiScreen.EDIT_CRUISE);
+ }
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCruiseAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProgramAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProgramAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProgramAction.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -0,0 +1,62 @@
+package fr.ifremer.tutti.ui.swing.content.home;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import com.ezware.oxbow.swingbits.util.Preconditions;
+import fr.ifremer.tutti.persistence.entities.data.Program;
+import fr.ifremer.tutti.ui.swing.AbstractTuttiAction;
+import fr.ifremer.tutti.ui.swing.TuttiScreen;
+
+import java.awt.event.ActionEvent;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class EditProgramAction extends AbstractTuttiAction<SelectCruiseUIModel, SelectCruiseUIHandler> {
+
+ private static final long serialVersionUID = 1L;
+
+ public EditProgramAction(SelectCruiseUIHandler handler) {
+ super(handler,
+ "editProgram",
+ "edit",
+ _("tutti.action.edit"),
+ _("tutti.action.editProgram.tip")
+ );
+ }
+
+ @Override
+ protected void doAction(ActionEvent e) {
+ Program program = getModel().getProgram();
+ Preconditions.checkNotNull(program);
+ getContext().setProgramId(program.getId());
+ getContext().setScreen(TuttiScreen.EDIT_PROGRAM);
+ }
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProgramAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Deleted: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -1,70 +0,0 @@
-package fr.ifremer.tutti.ui.swing.content.home;
-
-/*
- * #%L
- * Tutti :: UI
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 - 2013 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import com.ezware.oxbow.swingbits.util.Preconditions;
-import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
-import fr.ifremer.tutti.ui.swing.TuttiScreen;
-import fr.ifremer.tutti.ui.swing.TuttiUIContext;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import java.awt.event.ActionEvent;
-
-import static org.nuiton.i18n.I18n._;
-
-/**
- * TODO
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 1.0
- */
-public class EditProtocolAction extends AbstractHomeAction {
-
- private static final long serialVersionUID = 1L;
-
- /** Logger. */
- private static final Log log = LogFactory.getLog(EditProtocolAction.class);
- public EditProtocolAction(TuttiUIContext context,
- SelectCruiseUIModel model) {
- super(context,
- model,
- "editProtocol",
- "edit",
- _("tutti.action.edit"),
- _("tutti.action.edit.protocol.tip"));
- }
-
- @Override
- public void actionPerformed(ActionEvent e) {
- TuttiProtocol protocol = model.getProtocol();
- Preconditions.checkNotNull(protocol);
- if (log.isInfoEnabled()) {
- log.info("Edit protocol: "+protocol.getId());
- }
- context.setProtocolId(protocol.getId());
- context.setScreen(TuttiScreen.EDIT_PROTOCOL);
- }
-}
Copied: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java (from rev 220, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java)
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -0,0 +1,69 @@
+package fr.ifremer.tutti.ui.swing.content.home;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import com.ezware.oxbow.swingbits.util.Preconditions;
+import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
+import fr.ifremer.tutti.ui.swing.AbstractTuttiAction;
+import fr.ifremer.tutti.ui.swing.TuttiScreen;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.awt.event.ActionEvent;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class EditProtocolAction extends AbstractTuttiAction<SelectCruiseUIModel, SelectCruiseUIHandler> {
+
+ private static final long serialVersionUID = 1L;
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(EditProtocolAction.class);
+
+ public EditProtocolAction(SelectCruiseUIHandler handler) {
+ super(handler,
+ "editProtocol",
+ "edit",
+ _("tutti.action.edit"),
+ _("tutti.action.edit.protocol.tip"));
+ }
+
+ @Override
+ protected void doAction(ActionEvent e) {
+ TuttiProtocol protocol = getModel().getProtocol();
+ Preconditions.checkNotNull(protocol);
+ if (log.isInfoEnabled()) {
+ log.info("Edit protocol: " + protocol.getId());
+ }
+ getContext().setProtocolId(protocol.getId());
+ getContext().setScreen(TuttiScreen.EDIT_PROTOCOL);
+ }
+}
Deleted: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -1,70 +0,0 @@
-package fr.ifremer.tutti.ui.swing.content.home;
-
-/*
- * #%L
- * Tutti :: UI
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 - 2013 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import com.ezware.oxbow.swingbits.util.Preconditions;
-import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
-import fr.ifremer.tutti.ui.swing.TuttiUIContext;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import java.awt.event.ActionEvent;
-
-import static org.nuiton.i18n.I18n._;
-
-/**
- * TODO
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 1.0
- */
-public class ExportProtocolAction extends AbstractHomeAction {
-
- private static final long serialVersionUID = 1L;
-
- /** Logger. */
- private static final Log log =
- LogFactory.getLog(ExportProtocolAction.class);
-
- public ExportProtocolAction(TuttiUIContext context,
- SelectCruiseUIModel model) {
- super(context,
- model,
- "exportProtocol",
- "export",
- _("tutti.action.export"),
- _("tutti.action.export.protocol.tip"));
- }
-
- @Override
- public void actionPerformed(ActionEvent e) {
- TuttiProtocol protocol = model.getProtocol();
- Preconditions.checkNotNull(protocol);
-
- if (log.isInfoEnabled()) {
- log.info("Export protocol: " + protocol.getId());
- }
- }
-}
Copied: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java (from rev 220, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java)
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -0,0 +1,68 @@
+package fr.ifremer.tutti.ui.swing.content.home;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import com.ezware.oxbow.swingbits.util.Preconditions;
+import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
+import fr.ifremer.tutti.ui.swing.AbstractTuttiAction;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.awt.event.ActionEvent;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class ExportProtocolAction extends AbstractTuttiAction<SelectCruiseUIModel, SelectCruiseUIHandler> {
+
+ private static final long serialVersionUID = 1L;
+
+ /** Logger. */
+ private static final Log log =
+ LogFactory.getLog(ExportProtocolAction.class);
+
+ public ExportProtocolAction(SelectCruiseUIHandler handler) {
+ super(handler,
+ "exportProtocol",
+ "export",
+ _("tutti.action.export"),
+ _("tutti.action.export.protocol.tip"));
+ }
+
+ @Override
+ protected void doAction(ActionEvent e) {
+ TuttiProtocol protocol = getModel().getProtocol();
+ Preconditions.checkNotNull(protocol);
+
+ if (log.isInfoEnabled()) {
+ log.info("Export protocol: " + protocol.getId());
+ }
+ }
+}
Deleted: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -1,65 +0,0 @@
-package fr.ifremer.tutti.ui.swing.content.home;
-
-/*
- * #%L
- * Tutti :: UI
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 - 2013 Ifremer
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import fr.ifremer.tutti.ui.swing.TuttiUIContext;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import java.awt.event.ActionEvent;
-
-import static org.nuiton.i18n.I18n._;
-
-/**
- * TODO
- *
- * @author tchemit <chemit(a)codelutin.com>
- * @since 1.0
- */
-public class ImportProtocolAction extends AbstractHomeAction {
-
- private static final long serialVersionUID = 1L;
-
- /** Logger. */
- private static final Log log =
- LogFactory.getLog(ImportProtocolAction.class);
-
- public ImportProtocolAction(TuttiUIContext context,
- SelectCruiseUIModel model) {
- super(context,
- model,
- "importProtocol",
- "import",
- _("tutti.action.import"),
- _("tutti.action.import.protocol.tip"));
- }
-
- @Override
- public void actionPerformed(ActionEvent e) {
- if (log.isInfoEnabled()) {
- log.info("TODO Import protocol!");
- }
- }
-}
Copied: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java (from rev 220, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java)
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -0,0 +1,63 @@
+package fr.ifremer.tutti.ui.swing.content.home;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.ui.swing.AbstractTuttiAction;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.awt.event.ActionEvent;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class ImportProtocolAction extends AbstractTuttiAction<SelectCruiseUIModel, SelectCruiseUIHandler> {
+
+ private static final long serialVersionUID = 1L;
+
+ /** Logger. */
+ private static final Log log =
+ LogFactory.getLog(ImportProtocolAction.class);
+
+ public ImportProtocolAction(SelectCruiseUIHandler handler) {
+ super(handler,
+ "importProtocol",
+ "import",
+ _("tutti.action.import"),
+ _("tutti.action.import.protocol.tip"));
+ }
+
+ @Override
+ protected void doAction(ActionEvent e) {
+ if (log.isInfoEnabled()) {
+ log.info("TODO Import protocol!");
+ }
+ }
+}
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewCruiseAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewCruiseAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewCruiseAction.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -0,0 +1,58 @@
+package fr.ifremer.tutti.ui.swing.content.home;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.ui.swing.AbstractTuttiAction;
+import fr.ifremer.tutti.ui.swing.TuttiScreen;
+
+import java.awt.event.ActionEvent;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class NewCruiseAction extends AbstractTuttiAction<SelectCruiseUIModel, SelectCruiseUIHandler> {
+
+ private static final long serialVersionUID = 1L;
+
+ public NewCruiseAction(SelectCruiseUIHandler handler) {
+ super(handler,
+ "newCruise",
+ "add",
+ _("tutti.action.new"),
+ _("tutti.action.newCruise.tip")
+ );
+ }
+
+ @Override
+ protected void doAction(ActionEvent e) {
+ getContext().setCruiseId(null);
+ getContext().setScreen(TuttiScreen.EDIT_CRUISE);
+ }
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewCruiseAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProgramAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProgramAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProgramAction.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -0,0 +1,59 @@
+package fr.ifremer.tutti.ui.swing.content.home;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.ui.swing.AbstractTuttiAction;
+import fr.ifremer.tutti.ui.swing.TuttiScreen;
+
+import java.awt.event.ActionEvent;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class NewProgramAction extends AbstractTuttiAction<SelectCruiseUIModel, SelectCruiseUIHandler> {
+
+ private static final long serialVersionUID = 1L;
+
+ public NewProgramAction(SelectCruiseUIHandler handler) {
+ super(handler,
+ "newProgram",
+ "add",
+ _("tutti.action.new"),
+ _("tutti.action.newProgram.tip")
+ );
+ }
+
+ @Override
+ protected void doAction(ActionEvent e) {
+ getContext().setProgramId(null);
+ getContext().setCruiseId(null);
+ getContext().setScreen(TuttiScreen.EDIT_PROGRAM);
+ }
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProgramAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProtocolAction.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProtocolAction.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -24,8 +24,8 @@
* #L%
*/
+import fr.ifremer.tutti.ui.swing.AbstractTuttiAction;
import fr.ifremer.tutti.ui.swing.TuttiScreen;
-import fr.ifremer.tutti.ui.swing.TuttiUIContext;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -39,17 +39,15 @@
* @author tchemit <chemit(a)codelutin.com>
* @since 1.0
*/
-public class NewProtocolAction extends AbstractHomeAction {
+public class NewProtocolAction extends AbstractTuttiAction<SelectCruiseUIModel, SelectCruiseUIHandler> {
private static final long serialVersionUID = 1L;
/** Logger. */
private static final Log log = LogFactory.getLog(NewProtocolAction.class);
- public NewProtocolAction(TuttiUIContext context,
- SelectCruiseUIModel model) {
- super(context,
- model,
+ public NewProtocolAction(SelectCruiseUIHandler handler) {
+ super(handler,
"newProtocol",
"add",
_("tutti.action.new"),
@@ -57,11 +55,11 @@
}
@Override
- public void actionPerformed(ActionEvent e) {
+ protected void doAction(ActionEvent e) {
if (log.isInfoEnabled()) {
log.info("New protocol");
}
- context.setProtocolId(null);
- context.setScreen(TuttiScreen.EDIT_PROTOCOL);
+ getContext().setProtocolId(null);
+ getContext().setScreen(TuttiScreen.EDIT_PROTOCOL);
}
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css 2013-01-18 12:40:25 UTC (rev 222)
@@ -41,13 +41,15 @@
#editProgramButton {
enabled: {model.isProgramFound()};
- text: "tutti.action.edit";
- actionIcon: edit;
+ action: {editProgramAction};
+ /*text: "tutti.action.edit";
+ actionIcon: edit;*/
}
#newProgramButton {
- text: "tutti.action.new";
- actionIcon: add;
+ action: {newProgramAction};
+ /*text: "tutti.action.new";
+ actionIcon: add;*/
}
#cruiseLabel {
@@ -63,14 +65,16 @@
#editCruiseButton {
enabled: {model.isProgramFound() && model.isCruiseFound()};
- text: "tutti.action.edit";
- actionIcon: edit;
+ action: {editCruiseAction}
+ /*text: "tutti.action.edit";
+ actionIcon: edit;*/
}
#newCruiseButton {
- actionIcon: add;
enabled: {model.isProgramFound()};
- text: "tutti.action.new";
+ action: {newCruiseAction};
+ /*actionIcon: add;
+ text: "tutti.action.new";*/
}
#protocolLabel {
@@ -84,18 +88,26 @@
enabled: {!protocolCombobox.isEmpty()};
}
+#newProtocolComboBox {
+ model: {handler.newComboModel(newProtocolAction, importProtocolAction)};
+ renderer: {new ActionListCellRenderer()};
+}
#editProtocolComboBox {
+ model: {handler.newComboModel(editProtocolAction, cloneProtocolAction, exportProtocolAction)};
enabled: {model.isProtocolFound()};
+ renderer: {new ActionListCellRenderer()};
}
-#fillFishingOperationsButton {
- text: "tutti.action.fillCatches";
- enabled: {uiContext.isCruiseContextFilled()};
+#editCatchesButton {
+ action: {editCatchesAction};
+ enabled: {uiContext.isCruiseFilled()};
+ /*text: "tutti.action.fillCatches";*/
actionIcon: edit;
}
-#validateFishingOperationsButton {
- text: "tutti.action.validateCatches";
- enabled: {uiContext.isCruiseContextFilled()};
+#validateCatchesButton {
+ action: {validateCatchesAction};
+ enabled: {uiContext.isCruiseFilled()};
+ /*text: "tutti.action.validateCatches";*/
actionIcon: validate;
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx 2013-01-18 12:40:25 UTC (rev 222)
@@ -29,6 +29,7 @@
fr.ifremer.tutti.persistence.entities.data.Cruise
fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol
fr.ifremer.tutti.ui.swing.TuttiUIContext
+ fr.ifremer.tutti.ui.swing.util.ActionListCellRenderer
jaxx.runtime.swing.editor.bean.BeanComboBox
@@ -58,6 +59,22 @@
<SelectCruiseUIModel id='model'
initializer='getContextValue(SelectCruiseUIModel.class)'/>
+ <NewProgramAction id='newProgramAction' constructorParams='handler'/>
+ <EditProgramAction id='editProgramAction' constructorParams='handler'/>
+
+ <NewCruiseAction id='newCruiseAction' constructorParams='handler'/>
+ <EditCruiseAction id='editCruiseAction' constructorParams='handler'/>
+
+ <NewProtocolAction id='newProtocolAction' constructorParams='handler'/>
+ <ImportProtocolAction id='importProtocolAction' constructorParams='handler'/>
+
+ <EditProtocolAction id='editProtocolAction' constructorParams='handler'/>
+ <CloneProtocolAction id='cloneProtocolAction' constructorParams='handler'/>
+ <ExportProtocolAction id='exportProtocolAction' constructorParams='handler'/>
+
+ <EditCatchesAction id='editCatchesAction' constructorParams='handler'/>
+ <ValidateCatchesAction id='validateCatchesAction' constructorParams='handler'/>
+
<Table fill='both' constraints='BorderLayout.CENTER'>
<row>
<cell anchor='west'>
@@ -69,10 +86,10 @@
</cell>
<cell>
<JPanel layout='{new GridLayout(1,0)}'>
- <JButton id='editProgramButton'
- onActionPerformed='handler.showSelectedProgram()'/>
- <JButton id='newProgramButton'
- onActionPerformed='handler.showNewProgram()'/>
+ <JButton id='editProgramButton'/>
+ <!--onActionPerformed='handler.showSelectedProgram()'/>-->
+ <JButton id='newProgramButton'/>
+ <!--onActionPerformed='handler.showNewProgram()'/>-->
</JPanel>
</cell>
</row>
@@ -86,10 +103,10 @@
</cell>
<cell>
<JPanel layout='{new GridLayout(1,0)}'>
- <JButton id='editCruiseButton'
- onActionPerformed='handler.showSelectedCruise()'/>
- <JButton id='newCruiseButton'
- onActionPerformed='handler.showNewCruise()'/>
+ <JButton id='editCruiseButton'/>
+ <!--onActionPerformed='handler.showSelectedCruise()'/>-->
+ <JButton id='newCruiseButton'/>
+ <!--onActionPerformed='handler.showNewCruise()'/>-->
</JPanel>
</cell>
</row>
@@ -105,21 +122,20 @@
<JPanel layout='{new GridLayout(1,0)}'>
<JComboBox id='editProtocolComboBox'
onMouseEntered='if (editProtocolComboBox.isEnabled()) { editProtocolComboBox.showPopup(); }'
- onActionPerformed='handler.showSelectedProtocol(event)'/>
+ onActionPerformed='handler.startExistingProtocolAction(event)'/>
<JComboBox id='newProtocolComboBox'
onMouseEntered='newProtocolComboBox.showPopup()'
- onActionPerformed='handler.showNewProtocol(event)'/>
-
+ onActionPerformed='handler.startNewProtocolAction(event)'/>
</JPanel>
</cell>
</row>
<row>
<cell columns='3'>
<JPanel layout='{new GridLayout(1,0)}'>
- <JButton id='fillFishingOperationsButton'
- onActionPerformed='handler.showFillCatches()'/>
- <JButton id='validateFishingOperationsButton'
- onActionPerformed='handler.showValidateCatches()'/>
+ <JButton id='editCatchesButton'/>
+ <!--onActionPerformed='handler.showFillCatches()'/>-->
+ <JButton id='validateCatchesButton'/>
+ <!--onActionPerformed='handler.showValidateCatches()'/>-->
</JPanel>
</cell>
</row>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -31,7 +31,6 @@
import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
import fr.ifremer.tutti.service.PersistenceService;
import fr.ifremer.tutti.ui.swing.AbstractTuttiUIHandler;
-import fr.ifremer.tutti.ui.swing.TuttiScreen;
import fr.ifremer.tutti.ui.swing.TuttiUIContext;
import jaxx.runtime.swing.editor.bean.BeanComboBox;
import org.apache.commons.collections.CollectionUtils;
@@ -39,13 +38,7 @@
import org.apache.commons.logging.LogFactory;
import javax.swing.Action;
-import javax.swing.DefaultComboBoxModel;
-import javax.swing.DefaultListCellRenderer;
-import javax.swing.Icon;
import javax.swing.JComboBox;
-import javax.swing.JList;
-import javax.swing.border.EmptyBorder;
-import java.awt.Component;
import java.awt.event.ActionEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
@@ -74,7 +67,7 @@
}
@Override
- protected SelectCruiseUIModel getModel() {
+ public SelectCruiseUIModel getModel() {
return ui.getModel();
}
@@ -183,21 +176,18 @@
model.getProtocols(),
model.getProtocol());
- DefaultComboBoxModel newProtocolActions = new DefaultComboBoxModel();
- newProtocolActions.addElement(new NewProtocolAction(context, model));
- newProtocolActions.addElement(new ImportProtocolAction(context, model));
- JComboBox newProtocolComboBox = ui.getNewProtocolComboBox();
- newProtocolComboBox.setModel(newProtocolActions);
- newProtocolComboBox.setRenderer(new ActionListCellRenderer());
+// JComboBox newProtocolComboBox = ui.getNewProtocolComboBox();
+// DefaultComboBoxModel newProtocolActions = (DefaultComboBoxModel) newProtocolComboBox.getModel();
+// newProtocolActions.addElement(new NewProtocolAction(this));
+// newProtocolActions.addElement(new ImportProtocolAction(this));
+//
+// JComboBox editProtocolComboBox = ui.getEditProtocolComboBox();
+// DefaultComboBoxModel editProtocolActions = (DefaultComboBoxModel) editProtocolComboBox.getModel();
+// editProtocolActions.addElement(new EditSelectedProtocolAction(this));
+// editProtocolActions.addElement(new CloneProtocolAction(this));
+// editProtocolActions.addElement(new ExportProtocolAction(this));
+// editProtocolComboBox.setModel(editProtocolActions);
- DefaultComboBoxModel editProtocolActions = new DefaultComboBoxModel();
- editProtocolActions.addElement(new EditProtocolAction(context, model));
- editProtocolActions.addElement(new CloneProtocolAction(context, model));
- editProtocolActions.addElement(new ExportProtocolAction(context, model));
- JComboBox editProtocolComboBox = ui.getEditProtocolComboBox();
- editProtocolComboBox.setModel(editProtocolActions);
- editProtocolComboBox.setRenderer(new ActionListCellRenderer());
-
// newProtocolCombo.addMouseListener(new MouseAdapter() {
//
// @Override
@@ -274,6 +264,9 @@
context.setProtocolId(newValue == null ? null : newValue.getId());
}
});
+
+ ui.applyDataBinding(SelectCruiseUI.BINDING_EDIT_PROGRAM_BUTTON_ENABLED);
+ ui.applyDataBinding(SelectCruiseUI.BINDING_EDIT_CRUISE_BUTTON_ENABLED);
}
@Override
@@ -287,136 +280,17 @@
}
}
- public void showFillCatches() {
- context.setValidationContext(TuttiUIContext.VALIDATION_CONTEXT_EDIT);
- context.setScreen(TuttiScreen.EDIT_FISHING_OPERATION);
- }
-
- public void showValidateCatches() {
- context.setValidationContext(TuttiUIContext.VALIDATION_CONTEXT_VALIDATE);
- context.setScreen(TuttiScreen.EDIT_FISHING_OPERATION);
- }
-
- public void showSelectedProgram() {
-
- Program program = getModel().getProgram();
- context.setProgramId(program.getId());
- context.setScreen(TuttiScreen.EDIT_PROGRAM);
- }
-
- public void showNewProgram() {
- context.setProgramId(null);
- context.setCruiseId(null);
- context.setScreen(TuttiScreen.EDIT_PROGRAM);
- }
-
- public void showSelectedCruise() {
- Cruise cruise = getModel().getCruise();
- context.setCruiseId(cruise.getId());
- context.setScreen(TuttiScreen.EDIT_CRUISE);
- }
-
- public void showNewCruise() {
- context.setCruiseId(null);
- context.setScreen(TuttiScreen.EDIT_CRUISE);
- }
-
- public void showSelectedProtocol(ActionEvent event) {
+ public void startExistingProtocolAction(ActionEvent event) {
JComboBox newProtocolCombo = (JComboBox) event.getSource();
Action selectedAction = (Action) newProtocolCombo.getSelectedItem();
selectedAction.actionPerformed(event);
-// TuttiProtocol protocol = getModel().getProtocol();
-// Preconditions.checkNotNull(protocol,
-// "Protocol can not be null for a edit action");
-// switch (selectedAction) {
-// case EDIT:
-// context.setProtocolId(protocol.getId());
-// context.setScreen(TuttiScreen.EDIT_PROTOCOL);
-// break;
-//
-// case CLONE:
-// context.setProtocolId(protocol.getId());
-// context.setScreen(TuttiScreen.CLONE_PROTOCOL);
-// break;
-//
-// case EXPORT:
-// //TODO kmorin 20130115 import protocol
-// }
}
- public void showNewProtocol(ActionEvent event) {
+ public void startNewProtocolAction(ActionEvent event) {
JComboBox newProtocolCombo = (JComboBox) event.getSource();
Action selectedAction = (Action) newProtocolCombo.getSelectedItem();
selectedAction.actionPerformed(event);
-// switch (selectedAction) {
-// case NEW:
-// context.setProtocolId(null);
-// context.setScreen(TuttiScreen.EDIT_PROTOCOL);
-// break;
-// case IMPORT:
-// //TODO kmorin 20130115 import protocol
-// }
}
-
-// protected enum NewProtocolAction {
-//
-// NEW(n_("tutti.action.new"), "add"),
-// EDIT(n_("tutti.action.edit"), "edit"),
-// CLONE(n_("tutti.action.clone"), "copy"),
-// IMPORT(n_("tutti.action.import"), "import"),
-// EXPORT(n_("tutti.action.export"), "export");
-//
-// protected String label;
-//
-// protected String iconPath;
-//
-// protected ImageIcon icon;
-//
-// private NewProtocolAction(String label, String iconPath) {
-// this.label = label;
-// this.iconPath = iconPath;
-// }
-//
-// public String getLabel() {
-// return label;
-// }
-//
-// public ImageIcon getIcon() {
-// if (icon == null) {
-// icon = SwingUtil.createActionIcon(iconPath);
-// }
-// return icon;
-// }
-//
-// @Override
-// public String toString() {
-// return _(label);
-// }
-//
-// }
-
- public static class ActionListCellRenderer extends DefaultListCellRenderer {
-
- private static final long serialVersionUID = 1L;
-
- protected final EmptyBorder border = new EmptyBorder(4, 8, 4, 8);
-
- @Override
- public Component getListCellRendererComponent(JList list,
- Object value,
- int index,
- boolean isSelected,
- boolean cellHasFocus) {
- Component result = super.getListCellRendererComponent(
- list, value, index, isSelected, cellHasFocus);
- Action action = (Action) value;
- setIcon((Icon) action.getValue(Action.LARGE_ICON_KEY));
- setText((String) action.getValue(Action.SHORT_DESCRIPTION));
- setToolTipText((String) action.getValue(Action.LONG_DESCRIPTION));
- setBorder(border);
- return result;
- }
- }
}
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ValidateCatchesAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ValidateCatchesAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ValidateCatchesAction.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -0,0 +1,61 @@
+package fr.ifremer.tutti.ui.swing.content.home;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import com.google.common.base.Preconditions;
+import fr.ifremer.tutti.ui.swing.AbstractTuttiAction;
+import fr.ifremer.tutti.ui.swing.TuttiScreen;
+import fr.ifremer.tutti.ui.swing.TuttiUIContext;
+
+import java.awt.event.ActionEvent;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class ValidateCatchesAction extends AbstractTuttiAction<SelectCruiseUIModel, SelectCruiseUIHandler> {
+
+ private static final long serialVersionUID = 1L;
+
+ public ValidateCatchesAction(SelectCruiseUIHandler handler) {
+ super(handler,
+ "validateCatches",
+ "validate",
+ _("tutti.action.validateCatches"),
+ _("tutti.action.validateCatches.tip")
+ );
+ }
+
+ @Override
+ protected void doAction(ActionEvent e) {
+ Preconditions.checkState(getContext().isCruiseFilled());
+ getContext().setValidationContext(TuttiUIContext.VALIDATION_CONTEXT_VALIDATE);
+ getContext().setScreen(TuttiScreen.EDIT_FISHING_OPERATION);
+ }
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ValidateCatchesAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -324,7 +324,7 @@
}
@Override
- protected EditFishingOperationUIModel getModel() {
+ public EditFishingOperationUIModel getModel() {
return ui.getModel();
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -177,7 +177,7 @@
}
@Override
- protected FishingOperationsUIModel getModel() {
+ public FishingOperationsUIModel getModel() {
return ui.getModel();
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -127,7 +127,7 @@
}
@Override
- protected EditCatchesUIModel getModel() {
+ public EditCatchesUIModel getModel() {
return ui.getModel();
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -176,7 +176,7 @@
//------------------------------------------------------------------------//
@Override
- protected AccidentalBatchUIModel getModel() {
+ public AccidentalBatchUIModel getModel() {
return ui.getModel();
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -179,7 +179,7 @@
//------------------------------------------------------------------------//
@Override
- protected BenthosBatchUIModel getModel() {
+ public BenthosBatchUIModel getModel() {
return ui.getModel();
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/macrowaste/MacroWasteBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/macrowaste/MacroWasteBatchUIHandler.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/macrowaste/MacroWasteBatchUIHandler.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -181,7 +181,7 @@
//------------------------------------------------------------------------//
@Override
- protected MacroWasteBatchUIModel getModel() {
+ public MacroWasteBatchUIModel getModel() {
return ui.getModel();
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/plankton/PlanktonBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/plankton/PlanktonBatchUIHandler.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/plankton/PlanktonBatchUIHandler.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -177,7 +177,7 @@
//------------------------------------------------------------------------//
@Override
- protected PlanktonBatchUIModel getModel() {
+ public PlanktonBatchUIModel getModel() {
return ui.getModel();
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -373,7 +373,7 @@
//------------------------------------------------------------------------//
@Override
- protected SpeciesBatchUIModel getModel() {
+ public SpeciesBatchUIModel getModel() {
return ui.getModel();
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -144,7 +144,7 @@
//------------------------------------------------------------------------//
@Override
- protected SpeciesFrequencyUIModel getModel() {
+ public SpeciesFrequencyUIModel getModel() {
return ui.getModel();
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIHandler.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIHandler.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -169,7 +169,7 @@
}
@Override
- protected CreateSpeciesBatchUIModel getModel() {
+ public CreateSpeciesBatchUIModel getModel() {
return ui.getModel();
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -140,7 +140,7 @@
//------------------------------------------------------------------------//
@Override
- protected SplitSpeciesBatchUIModel getModel() {
+ public SplitSpeciesBatchUIModel getModel() {
return ui.getModel();
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUIHandler.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUIHandler.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -121,7 +121,7 @@
//------------------------------------------------------------------------//
@Override
- protected EnvironmentTabUIModel getModel() {
+ public EnvironmentTabUIModel getModel() {
return ui.getModel();
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUIHandler.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUIHandler.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -124,7 +124,7 @@
//------------------------------------------------------------------------//
@Override
- protected GearShootingTabUIModel getModel() {
+ public GearShootingTabUIModel getModel() {
return ui.getModel();
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUIHandler.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUIHandler.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -140,7 +140,7 @@
//------------------------------------------------------------------------//
@Override
- protected HydrologyTabUIModel getModel() {
+ public HydrologyTabUIModel getModel() {
return ui.getModel();
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIHandler.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIHandler.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -126,7 +126,7 @@
}
@Override
- protected EditProgramUIModel getModel() {
+ public EditProgramUIModel getModel() {
return ui.getModel();
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -163,7 +163,7 @@
//------------------------------------------------------------------------//
@Override
- protected EditProtocolUIModel getModel() {
+ public EditProtocolUIModel getModel() {
return ui.getModel();
}
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/ActionListCellRenderer.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/ActionListCellRenderer.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/ActionListCellRenderer.java 2013-01-18 12:40:25 UTC (rev 222)
@@ -0,0 +1,61 @@
+package fr.ifremer.tutti.ui.swing.util;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import javax.swing.Action;
+import javax.swing.DefaultListCellRenderer;
+import javax.swing.Icon;
+import javax.swing.JList;
+import javax.swing.border.EmptyBorder;
+import java.awt.Component;
+
+/**
+* TODO
+*
+* @author tchemit <chemit(a)codelutin.com>
+* @since 1.0
+*/
+public class ActionListCellRenderer extends DefaultListCellRenderer {
+
+ private static final long serialVersionUID = 1L;
+
+ protected final EmptyBorder border = new EmptyBorder(4, 8, 4, 8);
+
+ @Override
+ public Component getListCellRendererComponent(JList list,
+ Object value,
+ int index,
+ boolean isSelected,
+ boolean cellHasFocus) {
+ Component result = super.getListCellRendererComponent(
+ list, value, index, isSelected, cellHasFocus);
+ Action action = (Action) value;
+ setIcon((Icon) action.getValue(Action.LARGE_ICON_KEY));
+ setText((String) action.getValue(Action.NAME));
+ setToolTipText((String) action.getValue(Action.SHORT_DESCRIPTION));
+ setBorder(border);
+ return result;
+ }
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/ActionListCellRenderer.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-18 11:33:30 UTC (rev 221)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-18 12:40:25 UTC (rev 222)
@@ -5,27 +5,35 @@
tutti.action.cancel=Annuler
tutti.action.casino-import=Import Casino
tutti.action.clone=Cloner
-tutti.action.clone.protocol.tip=
+tutti.action.clone.protocol.tip=Dupliquer le protocole sélectionné
tutti.action.close=Fermer
tutti.action.configuration=Configuration
tutti.action.configuration.tip=Configurer Tutti
tutti.action.createSpeciesBatch=Créer un lot pour une espèce
tutti.action.edit=Editer
-tutti.action.edit.protocol.tip=
+tutti.action.edit.protocol.tip=Éditer le protocole sélectionné
+tutti.action.editCatches=Saisir les captures
+tutti.action.editCatches.tip=Saisir des captures
+tutti.action.editCruise=Campagne
+tutti.action.editCruise.tip=Éditer la campagne sélectionnée
+tutti.action.editProgram=Programme
+tutti.action.editProgram.tip=Éditer le programme sélectionné
+tutti.action.editProtocol=Protocole
+tutti.action.editProtocol.tip=
tutti.action.exit=Quitter
tutti.action.exit.tip=Quitter l'application
tutti.action.export=Exporter
-tutti.action.export.protocol.tip=
-tutti.action.fillCatches=Saisir les captures
-tutti.action.fillCatches.tip=Saisir des captures
+tutti.action.export.protocol.tip=Exporter le protocole sélectionné
tutti.action.generate=Générer
tutti.action.generateCampaignName=Générer le nom
tutti.action.import=Importer
-tutti.action.import.protocol.tip=
+tutti.action.import.protocol.tip=Importer un protocole
tutti.action.manageProtocol=Protocole
tutti.action.manageProtocol.tip=Gérer les protocoles
tutti.action.new=Nouveau
-tutti.action.new.protocol.tip=
+tutti.action.new.protocol.tip=Créer un nouve protocole
+tutti.action.newCruise.tip=Créer une nouvelle campagne
+tutti.action.newProgram.tip=Créer une nouvelle série de campagne
tutti.action.pupitri-import=Import PUPITRI
tutti.action.reload.actions=Recharger les actions
tutti.action.reload.application=Recharger l'application
@@ -38,8 +46,8 @@
tutti.action.removeSpeciesSubBatch.tip=Supprimer tous les lots fils du lot sélectionné
tutti.action.reset.fishingOperationValidState=Réinitialiser
tutti.action.save=Enregistrer
-tutti.action.selectCampaign=Campagne
-tutti.action.selectCampaign.tip=Sélectionner la campagne à utiliser
+tutti.action.selectCruise=Campagne
+tutti.action.selectCruise.tip=Sélectionner la campagne à utiliser
tutti.action.site=Site
tutti.action.site.tip=Accéder au site du projet Tutti
tutti.action.splitSpeciesBatch=Catégoriser le lot
1
0
r221 - in trunk/tutti-ui-swing/src/main: java/fr/ifremer/tutti/ui/swing java/fr/ifremer/tutti/ui/swing/config java/fr/ifremer/tutti/ui/swing/content/home java/fr/ifremer/tutti/ui/swing/content/operation resources/i18n
by kmorin@users.forge.codelutin.com 18 Jan '13
by kmorin@users.forge.codelutin.com 18 Jan '13
18 Jan '13
Author: kmorin
Date: 2013-01-18 12:33:30 +0100 (Fri, 18 Jan 2013)
New Revision: 221
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/221
Log:
- extract coordinate editor option in the config
- add icons
- enable or disable menu items according to the validation context
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfig.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigOption.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigUI.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.css 2013-01-18 08:11:31 UTC (rev 220)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.css 2013-01-18 11:33:30 UTC (rev 221)
@@ -73,15 +73,21 @@
text: "tutti.action.fillCatches";
toolTipText: "tutti.action.fillCatches.tip";
mnemonic: C;
- enabled: {model.getScreen() != TuttiScreen.EDIT_FISHING_OPERATION && model.isCruiseContextFilled()};
- /*actionIcon: "catches";*/
+ enabled: {(
+ TuttiUIContext.VALIDATION_CONTEXT_VALIDATE.equals(model.getValidationContext())
+ || model.getScreen() != TuttiScreen.EDIT_FISHING_OPERATION
+ ) && model.isCruiseContextFilled()};
+ actionIcon: edit;
}
#menuActionValidateCatches {
text: "tutti.action.validateCatches";
toolTipText: "tutti.action.validateCatches.tip";
mnemonic: V;
- enabled: {model.getScreen() != TuttiScreen.EDIT_FISHING_OPERATION && model.isCruiseContextFilled()};
+ enabled: {(
+ !TuttiUIContext.VALIDATION_CONTEXT_VALIDATE.equals(model.getValidationContext())
+ || model.getScreen() != TuttiScreen.EDIT_FISHING_OPERATION
+ ) && model.isCruiseContextFilled()};
actionIcon: validate;
}
@@ -96,6 +102,7 @@
toolTipText: "tutti.menu.synchronisationImport.tip";
mnemonic: I;
enabled: false;
+ actionIcon: import;
}
#menuSynchronisationExport {
@@ -103,6 +110,7 @@
toolTipText: "tutti.menu.synchronisationExport.tip";
mnemonic: E;
enabled: false;
+ actionIcon: export;
}
#menuSynchronisationAllegro {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.jaxx 2013-01-18 08:11:31 UTC (rev 220)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.jaxx 2013-01-18 11:33:30 UTC (rev 221)
@@ -31,6 +31,7 @@
org.jdesktop.swingx.JXTitledPanel
jaxx.runtime.validator.swing.SwingValidator
fr.ifremer.tutti.ui.swing.util.SwingValidatorMessageWidget
+ fr.ifremer.tutti.ui.swing.TuttiUIContext
</import>
<TuttiUIContext id='model'
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfig.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfig.java 2013-01-18 08:11:31 UTC (rev 220)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfig.java 2013-01-18 11:33:30 UTC (rev 221)
@@ -128,6 +128,10 @@
public boolean isShowNumberEditorButton() {
return applicationConfig.getOptionAsBoolean(TuttiConfigOption.SHOW_NUMBER_EDITOR_BUTTON.getKey());
}
+
+ public boolean isUseSexagecimalEditor() {
+ return applicationConfig.getOptionAsBoolean(TuttiConfigOption.USE_SEXAGECIMAL_EDITOR.getKey());
+ }
public String getProgramId() {
String result = applicationConfig.getOption(TuttiConfigOption.PROGRAM_ID.getKey());
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigOption.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigOption.java 2013-01-18 08:11:31 UTC (rev 220)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigOption.java 2013-01-18 11:33:30 UTC (rev 221)
@@ -98,8 +98,14 @@
"tutti.ui.shortcut.closePopup",
n_("tutti.config.ui.shortcut.closePopup"),
"alt pressed F",
- KeyStroke.class);
+ KeyStroke.class),
+ USE_SEXAGECIMAL_EDITOR(
+ "tutti.ui.useSexagecimalEditor",
+ n_("tutti.config.ui.useSexagecimalEditor"),
+ "false",
+ Boolean.class);
+
/** Configuration key. */
private final String key;
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigUI.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigUI.java 2013-01-18 08:11:31 UTC (rev 220)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigUI.java 2013-01-18 11:33:30 UTC (rev 221)
@@ -101,12 +101,14 @@
.addOption(TuttiServiceConfigOption.SITE_URL)
.addOption(TuttiConfigOption.UI_CONFIG_FILE);
- // COLOR
- helper.addCategory(n_("tutti.config.category.colors"),
- n_("tutti.config.category.colors.description"),
+ // UI
+
+ helper.addCategory(n_("tutti.config.category.ui"),
+ n_("tutti.config.category.ui.description"),
CALLBACK_UI)
.addOption(TuttiConfigOption.COLOR_ROW_INVALID)
- .addOption(TuttiConfigOption.COLOR_ROW_READ_ONLY);
+ .addOption(TuttiConfigOption.COLOR_ROW_READ_ONLY)
+ .addOption(TuttiConfigOption.USE_SEXAGECIMAL_EDITOR);
// SHORTCUT
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css 2013-01-18 08:11:31 UTC (rev 220)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css 2013-01-18 11:33:30 UTC (rev 221)
@@ -91,9 +91,11 @@
#fillFishingOperationsButton {
text: "tutti.action.fillCatches";
enabled: {uiContext.isCruiseContextFilled()};
+ actionIcon: edit;
}
#validateFishingOperationsButton {
text: "tutti.action.validateCatches";
enabled: {uiContext.isCruiseContextFilled()};
+ actionIcon: validate;
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css 2013-01-18 08:11:31 UTC (rev 220)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.css 2013-01-18 11:33:30 UTC (rev 221)
@@ -137,20 +137,9 @@
text: "tutti.label.fishingOperation.gearShootingEnd";
}
-#gearShootingCoordinatesDMSRadio {
- text: "tutti.label.fishingOperation.gearShootingCoordinatesDMS";
- selected: {model.isUseSexagecimalFormat()};
- buttonGroup: "gearShootingCoordinates";
-}
-#gearShootingCoordinatesDDRadio {
- text: "tutti.label.fishingOperation.gearShootingCoordinatesDD";
- selected: {!model.isUseSexagecimalFormat()};
- buttonGroup: "gearShootingCoordinates";
-}
-
CardLayout2Ext {
- selected: {model.isUseSexagecimalFormat() ? "DMS" : "DD"};
+ selected: {handler.getConfig().isUseSexagecimalEditor() ? "DMS" : "DD"};
}
#traitVesselPanel {
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.jaxx 2013-01-18 08:11:31 UTC (rev 220)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.jaxx 2013-01-18 11:33:30 UTC (rev 221)
@@ -198,12 +198,7 @@
constraints='BorderLayout.CENTER'>
<row>
<cell>
- <JPanel layout="{new GridLayout(1,0)}">
- <JRadioButton id='gearShootingCoordinatesDDRadio'
- onActionPerformed='handler.setUseSexagecimalFormat(false)'/>
- <JRadioButton id='gearShootingCoordinatesDMSRadio'
- onActionPerformed='handler.setUseSexagecimalFormat(true)'/>
- </JPanel>
+ <JPanel/>
</cell>
<cell>
<JLabel id='gearLatitudeLabel'/>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-01-18 08:11:31 UTC (rev 220)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-01-18 11:33:30 UTC (rev 221)
@@ -26,6 +26,7 @@
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
+import fr.ifremer.tutti.persistence.entities.data.Cruise;
import fr.ifremer.tutti.persistence.entities.data.FishingOperation;
import fr.ifremer.tutti.persistence.entities.data.Program;
import fr.ifremer.tutti.persistence.entities.referential.FishingOperationLocation;
@@ -157,20 +158,21 @@
}
});
- model.addPropertyChangeListener(EditFishingOperationUIModel.PROPERTY_USE_SEXAGECIMAL_FORMAT, new PropertyChangeListener() {
- @Override
- public void propertyChange(PropertyChangeEvent evt) {
- boolean useSexagecimalFormat = (Boolean) evt.getNewValue();
- log.info("property PROPERTY_USE_SEXAGECIMAL_FORMAT changed " + useSexagecimalFormat);
+// context.getConfig().
+// model.addPropertyChangeListener(EditFishingOperationUIModel.PROPERTY_USE_SEXAGECIMAL_FORMAT, new PropertyChangeListener() {
+// @Override
+// public void propertyChange(PropertyChangeEvent evt) {
+// boolean useSexagecimalFormat = (Boolean) evt.getNewValue();
+// log.info("property PROPERTY_USE_SEXAGECIMAL_FORMAT changed " + useSexagecimalFormat);
+//
+// if (useSexagecimalFormat) {
+// getModel().convertGearShootingCoordinatesDDToDMS();
+// } else {
+// getModel().convertGearShootingCoordinatesDMSToDD();
+// }
+// }
+// });
- if (useSexagecimalFormat) {
- getModel().convertGearShootingCoordinatesDDToDMS();
- } else {
- getModel().convertGearShootingCoordinatesDMSToDD();
- }
- }
- });
-
ui.setContextValue(model);
fishingOperationMonitor.setBean(model);
@@ -354,11 +356,14 @@
FishingOperationLocation subStrata = bean.getSubStrata();
FishingOperationLocation location = bean.getLocation();
- // update gear universe
- ui.getGearComboBox().setData(Lists.newArrayList(bean.getCruise().getGear()));
+ Cruise cruise = bean.getCruise();
+ if (cruise != null) {
+ // update gear universe
+ ui.getGearComboBox().setData(Lists.newArrayList(cruise.getGear()));
- // update vessel universe
- ui.getVesselComboBox().setData(Lists.newArrayList(bean.getCruise().getVessel()));
+ // update vessel universe
+ ui.getVesselComboBox().setData(Lists.newArrayList(cruise.getVessel()));
+ }
model.fromBean(bean);
@@ -425,7 +430,7 @@
log.warn("Won't save new fishing operation, use explicit save button instead...");
}
} else if (beanToSave.isValid()) {
- if (beanToSave.isUseSexagecimalFormat()) {
+ if (getConfig().isUseSexagecimalEditor()) {
beanToSave.convertGearShootingCoordinatesDMSToDD();
}
@@ -455,10 +460,6 @@
//TODO
}
- public void setUseSexagecimalFormat(boolean useSexagecimalFormat) {
- getModel().setUseSexagecimalFormat(useSexagecimalFormat);
- }
-
public void setGearShootingStartLatitude(String text) {
getModel().setGearShootingStartLatitude(Float.valueOf(text));
}
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java 2013-01-18 08:11:31 UTC (rev 220)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java 2013-01-18 11:33:30 UTC (rev 221)
@@ -34,12 +34,11 @@
import fr.ifremer.tutti.persistence.entities.referential.Vessel;
import fr.ifremer.tutti.persistence.spatial.SexagecimalPosition;
import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel;
-import org.nuiton.util.beans.Binder;
-import org.nuiton.util.beans.BinderFactory;
-
import java.util.Calendar;
import java.util.Date;
import java.util.List;
+import org.nuiton.util.beans.Binder;
+import org.nuiton.util.beans.BinderFactory;
import static org.nuiton.i18n.I18n.n_;
@@ -68,8 +67,6 @@
public static final String PROPERTY_SUB_STRATA = "subStrata";
- public static final String PROPERTY_USE_SEXAGECIMAL_FORMAT = "useSexagecimalFormat";
-
public static final String PROPERTY_GEAR_SHOOTING_START_LATITUDE = "gearShootingStartLatitude";
public static final String PROPERTY_GEAR_SHOOTING_START_LATITUDE_DEGREE = "gearShootingStartLatitudeDegree";
@@ -153,8 +150,6 @@
protected SexagecimalPosition gearShootingEndLongitudeAsSexagecimal;
- protected boolean useSexagecimalFormat = false;
-
protected Float gearShootingStartLatitude;
protected Float gearShootingStartLongitude;
@@ -279,16 +274,6 @@
firePropertyChange(PROPERTY_SUB_STRATA, oldValue, subStrata);
}
- public boolean isUseSexagecimalFormat() {
- return useSexagecimalFormat;
- }
-
- public void setUseSexagecimalFormat(boolean useSexagecimalFormat) {
- Object oldValue = isUseSexagecimalFormat();
- this.useSexagecimalFormat = useSexagecimalFormat;
- firePropertyChange(PROPERTY_USE_SEXAGECIMAL_FORMAT, oldValue, useSexagecimalFormat);
- }
-
public Float getGearShootingStartLatitude() {
return gearShootingStartLatitude;
}
Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-18 08:11:31 UTC (rev 220)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-18 11:33:30 UTC (rev 221)
@@ -50,10 +50,10 @@
tutti.application.name=Tutti
tutti.config.category.applications=Application
tutti.config.category.applications.description=Application
-tutti.config.category.colors=Couleurs
-tutti.config.category.colors.description=Couleurs utilisées dans les interfaces graphiques
tutti.config.category.shortcuts=Raccourcis
tutti.config.category.shortcuts.description=Liste des raccourcis clavier
+tutti.config.category.ui=Interface utilisateur
+tutti.config.category.ui.description=Options de l'interface utilisateur
tutti.config.cruiseId=Identifiant de la dernière campagne utilisée
tutti.config.programId=Identifiant de la dernière série de campagne utilisée
tutti.config.protocolId=Identifiant du dernier protocole utilisé
@@ -63,6 +63,7 @@
tutti.config.ui.config=Chemin du fichier de configuration des interfaces graphiques
tutti.config.ui.shortcut.closePopup=Fermer une popup
tutti.config.ui.showNumberEditorButton=Afficher le pavé numérique de saisie
+tutti.config.ui.useSexagecimalEditor=Utiliser l'éditeur sexagécimal pour entrer des coordonnées
tutti.duration.format=dj Hh m'm'
tutti.errorTable.title=Table d'erreurs
tutti.label.attachmentEditor.file=Fichier
@@ -73,7 +74,7 @@
tutti.label.catches.benthosTotalUnsortedWeight=Poids total HORS VRAC (kg)
tutti.label.catches.benthosTotalWeight=Poids TOTAL (kg)
tutti.label.catches.catchThalassa=(*) uniquement sur Thalassa
-tutti.label.catches.catchTotalRejectedWeight=Poids total REJETÉ (kg)
+tutti.label.catches.catchTotalRejectedWeight=Poids total NON TRIÉ (kg)
tutti.label.catches.catchTotalSortedCarousselWeight=Caroussel Observé (*)
tutti.label.catches.catchTotalSortedTremisWeight=Tremis (*)
tutti.label.catches.catchTotalSortedWeight=Poids total VRAC (kg)
1
0
r220 - in trunk/tutti-ui-swing/src/main: java/fr/ifremer/tutti/ui/swing/content/home resources/fr/ifremer/tutti/ui/swing/content/operation resources/i18n resources/icons
by tchemit@users.forge.codelutin.com 18 Jan '13
by tchemit@users.forge.codelutin.com 18 Jan '13
18 Jan '13
Author: tchemit
Date: 2013-01-18 09:11:31 +0100 (Fri, 18 Jan 2013)
New Revision: 220
Url: http://forge.codelutin.com/projects/tutti/repository/revisions/220
Log:
refs #1852: [ERGO] - Barre de progression pour les actions longues (debut d'utilisation des actions)
Added:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/AbstractHomeAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProtocolAction.java
trunk/tutti-ui-swing/src/main/resources/icons/action-export.png
Modified:
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx
trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-edit-error-validation.xml
trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-validate-error-validation.xml
trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
trunk/tutti-ui-swing/src/main/resources/icons/action-copy.png
trunk/tutti-ui-swing/src/main/resources/icons/action-import.png
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/AbstractHomeAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/AbstractHomeAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/AbstractHomeAction.java 2013-01-18 08:11:31 UTC (rev 220)
@@ -0,0 +1,62 @@
+package fr.ifremer.tutti.ui.swing.content.home;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.ui.swing.TuttiUIContext;
+import jaxx.runtime.SwingUtil;
+
+import javax.swing.AbstractAction;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public abstract class AbstractHomeAction extends AbstractAction {
+
+ private static final long serialVersionUID = 1L;
+
+ protected final TuttiUIContext context;
+
+ protected final SelectCruiseUIModel model;
+
+ public AbstractHomeAction(TuttiUIContext context,
+ SelectCruiseUIModel model,
+ String name,
+ String icon,
+ String text,
+ String tip) {
+ this.context = context;
+ this.model = model;
+ putValue(LARGE_ICON_KEY, SwingUtil.createActionIcon(icon));
+ putValue(ACTION_COMMAND_KEY, name);
+ putValue(NAME, name);
+ putValue(SHORT_DESCRIPTION, text);
+ putValue(LONG_DESCRIPTION, tip);
+
+ }
+
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/AbstractHomeAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java 2013-01-18 08:11:31 UTC (rev 220)
@@ -0,0 +1,71 @@
+package fr.ifremer.tutti.ui.swing.content.home;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import com.ezware.oxbow.swingbits.util.Preconditions;
+import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
+import fr.ifremer.tutti.ui.swing.TuttiScreen;
+import fr.ifremer.tutti.ui.swing.TuttiUIContext;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.awt.event.ActionEvent;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class CloneProtocolAction extends AbstractHomeAction {
+
+ private static final long serialVersionUID = 1L;
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(CloneProtocolAction.class);
+
+ public CloneProtocolAction(TuttiUIContext context,
+ SelectCruiseUIModel model) {
+ super(context,
+ model,
+ "cloneProtocol",
+ "copy",
+ _("tutti.action.clone"),
+ _("tutti.action.clone.protocol.tip"));
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ TuttiProtocol protocol = model.getProtocol();
+ Preconditions.checkNotNull(protocol);
+ if (log.isInfoEnabled()) {
+ log.info("Clone protocol: " + protocol.getId());
+ }
+ context.setProtocolId(protocol.getId());
+ context.setScreen(TuttiScreen.CLONE_PROTOCOL);
+ }
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java 2013-01-18 08:11:31 UTC (rev 220)
@@ -0,0 +1,70 @@
+package fr.ifremer.tutti.ui.swing.content.home;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import com.ezware.oxbow.swingbits.util.Preconditions;
+import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
+import fr.ifremer.tutti.ui.swing.TuttiScreen;
+import fr.ifremer.tutti.ui.swing.TuttiUIContext;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.awt.event.ActionEvent;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class EditProtocolAction extends AbstractHomeAction {
+
+ private static final long serialVersionUID = 1L;
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(EditProtocolAction.class);
+ public EditProtocolAction(TuttiUIContext context,
+ SelectCruiseUIModel model) {
+ super(context,
+ model,
+ "editProtocol",
+ "edit",
+ _("tutti.action.edit"),
+ _("tutti.action.edit.protocol.tip"));
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ TuttiProtocol protocol = model.getProtocol();
+ Preconditions.checkNotNull(protocol);
+ if (log.isInfoEnabled()) {
+ log.info("Edit protocol: "+protocol.getId());
+ }
+ context.setProtocolId(protocol.getId());
+ context.setScreen(TuttiScreen.EDIT_PROTOCOL);
+ }
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java 2013-01-18 08:11:31 UTC (rev 220)
@@ -0,0 +1,70 @@
+package fr.ifremer.tutti.ui.swing.content.home;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import com.ezware.oxbow.swingbits.util.Preconditions;
+import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol;
+import fr.ifremer.tutti.ui.swing.TuttiUIContext;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.awt.event.ActionEvent;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class ExportProtocolAction extends AbstractHomeAction {
+
+ private static final long serialVersionUID = 1L;
+
+ /** Logger. */
+ private static final Log log =
+ LogFactory.getLog(ExportProtocolAction.class);
+
+ public ExportProtocolAction(TuttiUIContext context,
+ SelectCruiseUIModel model) {
+ super(context,
+ model,
+ "exportProtocol",
+ "export",
+ _("tutti.action.export"),
+ _("tutti.action.export.protocol.tip"));
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ TuttiProtocol protocol = model.getProtocol();
+ Preconditions.checkNotNull(protocol);
+
+ if (log.isInfoEnabled()) {
+ log.info("Export protocol: " + protocol.getId());
+ }
+ }
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java 2013-01-18 08:11:31 UTC (rev 220)
@@ -0,0 +1,65 @@
+package fr.ifremer.tutti.ui.swing.content.home;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.ui.swing.TuttiUIContext;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.awt.event.ActionEvent;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class ImportProtocolAction extends AbstractHomeAction {
+
+ private static final long serialVersionUID = 1L;
+
+ /** Logger. */
+ private static final Log log =
+ LogFactory.getLog(ImportProtocolAction.class);
+
+ public ImportProtocolAction(TuttiUIContext context,
+ SelectCruiseUIModel model) {
+ super(context,
+ model,
+ "importProtocol",
+ "import",
+ _("tutti.action.import"),
+ _("tutti.action.import.protocol.tip"));
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ if (log.isInfoEnabled()) {
+ log.info("TODO Import protocol!");
+ }
+ }
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProtocolAction.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProtocolAction.java (rev 0)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProtocolAction.java 2013-01-18 08:11:31 UTC (rev 220)
@@ -0,0 +1,67 @@
+package fr.ifremer.tutti.ui.swing.content.home;
+
+/*
+ * #%L
+ * Tutti :: UI
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 - 2013 Ifremer
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import fr.ifremer.tutti.ui.swing.TuttiScreen;
+import fr.ifremer.tutti.ui.swing.TuttiUIContext;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.awt.event.ActionEvent;
+
+import static org.nuiton.i18n.I18n._;
+
+/**
+ * TODO
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 1.0
+ */
+public class NewProtocolAction extends AbstractHomeAction {
+
+ private static final long serialVersionUID = 1L;
+
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(NewProtocolAction.class);
+
+ public NewProtocolAction(TuttiUIContext context,
+ SelectCruiseUIModel model) {
+ super(context,
+ model,
+ "newProtocol",
+ "add",
+ _("tutti.action.new"),
+ _("tutti.action.new.protocol.tip"));
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ if (log.isInfoEnabled()) {
+ log.info("New protocol");
+ }
+ context.setProtocolId(null);
+ context.setScreen(TuttiScreen.EDIT_PROTOCOL);
+ }
+}
Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProtocolAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css 2013-01-18 08:03:47 UTC (rev 219)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css 2013-01-18 08:11:31 UTC (rev 220)
@@ -84,18 +84,10 @@
enabled: {!protocolCombobox.isEmpty()};
}
-#editProtocolButton {
+#editProtocolComboBox {
enabled: {model.isProtocolFound()};
- text: "tutti.action.edit";
- actionIcon: edit;
}
-#newProtocolButton {
- actionIcon: add;
- enabled: true;
- text: "tutti.action.new";
-}
-
#fillFishingOperationsButton {
text: "tutti.action.fillCatches";
enabled: {uiContext.isCruiseContextFilled()};
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx 2013-01-18 08:03:47 UTC (rev 219)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx 2013-01-18 08:11:31 UTC (rev 220)
@@ -103,20 +103,21 @@
</cell>
<cell>
<JPanel layout='{new GridLayout(1,0)}'>
- <JButton id='editProtocolButton'
- onActionPerformed='handler.showSelectedProtocol()'/>
-<!-- <JButton id='newProtocolButton'
- onActionPerformed='handler.showNewProtocol()'/>-->
- <JComboBox id='newProtocolCombo' onActionPerformed='handler.showNewProtocol(event)'/>
-
+ <JComboBox id='editProtocolComboBox'
+ onMouseEntered='if (editProtocolComboBox.isEnabled()) { editProtocolComboBox.showPopup(); }'
+ onActionPerformed='handler.showSelectedProtocol(event)'/>
+ <JComboBox id='newProtocolComboBox'
+ onMouseEntered='newProtocolComboBox.showPopup()'
+ onActionPerformed='handler.showNewProtocol(event)'/>
+
</JPanel>
</cell>
</row>
<row>
<cell columns='3'>
<JPanel layout='{new GridLayout(1,0)}'>
- <JButton id='fillFishingOperationsButton'
- onActionPerformed='handler.showFillCatches()'/>
+ <JButton id='fillFishingOperationsButton'
+ onActionPerformed='handler.showFillCatches()'/>
<JButton id='validateFishingOperationsButton'
onActionPerformed='handler.showValidateCatches()'/>
</JPanel>
Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java
===================================================================
--- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java 2013-01-18 08:03:47 UTC (rev 219)
+++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java 2013-01-18 08:11:31 UTC (rev 220)
@@ -33,33 +33,24 @@
import fr.ifremer.tutti.ui.swing.AbstractTuttiUIHandler;
import fr.ifremer.tutti.ui.swing.TuttiScreen;
import fr.ifremer.tutti.ui.swing.TuttiUIContext;
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.event.ActionEvent;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
import jaxx.runtime.swing.editor.bean.BeanComboBox;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-import java.util.List;
-import javax.swing.CellRendererPane;
-import javax.swing.ComboBoxModel;
+import javax.swing.Action;
import javax.swing.DefaultComboBoxModel;
import javax.swing.DefaultListCellRenderer;
-import javax.swing.ImageIcon;
+import javax.swing.Icon;
import javax.swing.JComboBox;
import javax.swing.JList;
-import javax.swing.JScrollPane;
-import javax.swing.JViewport;
import javax.swing.border.EmptyBorder;
-import javax.swing.plaf.basic.BasicComboPopup;
-import jaxx.runtime.SwingUtil;
+import java.awt.Component;
+import java.awt.event.ActionEvent;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.util.List;
-import static org.nuiton.i18n.I18n._;
/**
* Main ui content to select cruise.
*
@@ -71,7 +62,7 @@
/** Logger. */
private static final Log log =
LogFactory.getLog(SelectCruiseUIHandler.class);
-
+
protected final PersistenceService persistenceService;
protected final SelectCruiseUI ui;
@@ -191,27 +182,54 @@
initBeanComboBox(ui.getProtocolCombobox(),
model.getProtocols(),
model.getProtocol());
-
- ComboBoxModel<NewProtocolAction> protocolActions = new DefaultComboBoxModel<NewProtocolAction>(NewProtocolAction.values());
- final JComboBox newProtocolCombo = ui.getNewProtocolCombo();
- newProtocolCombo.setRenderer(new DefaultListCellRenderer() {
- @Override
- public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
- Component defaultComponent = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
- DefaultListCellRenderer result = (DefaultListCellRenderer) defaultComponent;
- NewProtocolAction action = (NewProtocolAction) value;
- ImageIcon icon = SwingUtil.createActionIcon(action.getIcon());
- result.setIcon(icon);
- result.setBorder(new EmptyBorder(4, 8, 4, 8));
-
- Object selectedItem = SelectCruiseUIHandler.this.ui.getProtocolCombobox().getSelectedItem();
- result.setEnabled(action != NewProtocolAction.CLONE || selectedItem != null);
- return result;
- }
- });
- newProtocolCombo.setModel(protocolActions);
+ DefaultComboBoxModel newProtocolActions = new DefaultComboBoxModel();
+ newProtocolActions.addElement(new NewProtocolAction(context, model));
+ newProtocolActions.addElement(new ImportProtocolAction(context, model));
+ JComboBox newProtocolComboBox = ui.getNewProtocolComboBox();
+ newProtocolComboBox.setModel(newProtocolActions);
+ newProtocolComboBox.setRenderer(new ActionListCellRenderer());
+ DefaultComboBoxModel editProtocolActions = new DefaultComboBoxModel();
+ editProtocolActions.addElement(new EditProtocolAction(context, model));
+ editProtocolActions.addElement(new CloneProtocolAction(context, model));
+ editProtocolActions.addElement(new ExportProtocolAction(context, model));
+ JComboBox editProtocolComboBox = ui.getEditProtocolComboBox();
+ editProtocolComboBox.setModel(editProtocolActions);
+ editProtocolComboBox.setRenderer(new ActionListCellRenderer());
+
+// newProtocolCombo.addMouseListener(new MouseAdapter() {
+//
+// @Override
+// public void mouseEntered(MouseEvent e) {
+// newProtocolCombo.showPopup();
+// }
+//
+// });
+// newProtocolCombo.addPopupMenuListener(new PopupMenuListener() {
+//
+// @Override
+// public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
+// newProtocolCombo.getComponentPopupMenu().addMouseListener(new MouseAdapter() {
+//
+// @Override
+// public void mouseExited(MouseEvent e) {
+// newProtocolCombo.hidePopup();
+// }
+//
+// });
+// }
+//
+// @Override
+// public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
+// }
+//
+// @Override
+// public void popupMenuCanceled(PopupMenuEvent e) {
+// }
+// });
+
+
model.addPropertyChangeListener(SelectCruiseUIModel.PROPERTY_PROGRAM, new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
@@ -224,9 +242,9 @@
} else {
campaigns = persistenceService.getAllCruise(newValue.getId());
}
- SelectCruiseUIModel model = (SelectCruiseUIModel) evt.getSource();
- model.setCruises(campaigns);
- model.setCruise(null);
+ SelectCruiseUIModel source = (SelectCruiseUIModel) evt.getSource();
+ source.setCruises(campaigns);
+ source.setCruise(null);
}
});
@@ -303,62 +321,102 @@
context.setScreen(TuttiScreen.EDIT_CRUISE);
}
- public void showSelectedProtocol() {
- TuttiProtocol protocol = getModel().getProtocol();
- context.setProtocolId(protocol.getId());
- context.setScreen(TuttiScreen.EDIT_PROTOCOL);
+ public void showSelectedProtocol(ActionEvent event) {
+ JComboBox newProtocolCombo = (JComboBox) event.getSource();
+ Action selectedAction = (Action) newProtocolCombo.getSelectedItem();
+
+ selectedAction.actionPerformed(event);
+// TuttiProtocol protocol = getModel().getProtocol();
+// Preconditions.checkNotNull(protocol,
+// "Protocol can not be null for a edit action");
+// switch (selectedAction) {
+// case EDIT:
+// context.setProtocolId(protocol.getId());
+// context.setScreen(TuttiScreen.EDIT_PROTOCOL);
+// break;
+//
+// case CLONE:
+// context.setProtocolId(protocol.getId());
+// context.setScreen(TuttiScreen.CLONE_PROTOCOL);
+// break;
+//
+// case EXPORT:
+// //TODO kmorin 20130115 import protocol
+// }
}
public void showNewProtocol(ActionEvent event) {
JComboBox newProtocolCombo = (JComboBox) event.getSource();
- NewProtocolAction selectedAction = (NewProtocolAction) newProtocolCombo.getSelectedItem();
-
- switch (selectedAction) {
- case NEW:
- context.setProtocolId(null);
- context.setScreen(TuttiScreen.EDIT_PROTOCOL);
- break;
-
- case CLONE:
- TuttiProtocol protocol = getModel().getProtocol();
- if (protocol != null) {
- context.setProtocolId(protocol.getId());
- context.setScreen(TuttiScreen.CLONE_PROTOCOL);
- }
- break;
-
- case IMPORT:
- //TODO kmorin 20130115 import protocol
- }
+ Action selectedAction = (Action) newProtocolCombo.getSelectedItem();
+
+ selectedAction.actionPerformed(event);
+// switch (selectedAction) {
+// case NEW:
+// context.setProtocolId(null);
+// context.setScreen(TuttiScreen.EDIT_PROTOCOL);
+// break;
+// case IMPORT:
+// //TODO kmorin 20130115 import protocol
+// }
}
-
- protected enum NewProtocolAction {
-
- NEW("tutti.action.new", "add"),
- CLONE("tutti.action.clone", "copy"),
- IMPORT("tutti.action.import", "import");
-
- protected String label;
-
- protected String icon;
-
- private NewProtocolAction(String label, String icon) {
- this.label = label;
- this.icon = icon;
- }
- public String getLabel() {
- return label;
- }
+// protected enum NewProtocolAction {
+//
+// NEW(n_("tutti.action.new"), "add"),
+// EDIT(n_("tutti.action.edit"), "edit"),
+// CLONE(n_("tutti.action.clone"), "copy"),
+// IMPORT(n_("tutti.action.import"), "import"),
+// EXPORT(n_("tutti.action.export"), "export");
+//
+// protected String label;
+//
+// protected String iconPath;
+//
+// protected ImageIcon icon;
+//
+// private NewProtocolAction(String label, String iconPath) {
+// this.label = label;
+// this.iconPath = iconPath;
+// }
+//
+// public String getLabel() {
+// return label;
+// }
+//
+// public ImageIcon getIcon() {
+// if (icon == null) {
+// icon = SwingUtil.createActionIcon(iconPath);
+// }
+// return icon;
+// }
+//
+// @Override
+// public String toString() {
+// return _(label);
+// }
+//
+// }
- public String getIcon() {
- return icon;
- }
-
+ public static class ActionListCellRenderer extends DefaultListCellRenderer {
+
+ private static final long serialVersionUID = 1L;
+
+ protected final EmptyBorder border = new EmptyBorder(4, 8, 4, 8);
+
@Override
- public String toString() {
- return _(label);
+ public Component getListCellRendererComponent(JList list,
+ Object value,
+ int index,
+ boolean isSelected,
+ boolean cellHasFocus) {
+ Component result = super.getListCellRendererComponent(
+ list, value, index, isSelected, cellHasFocus);
+ Action action = (Action) value;
+ setIcon((Icon) action.getValue(Action.LARGE_ICON_KEY));
+ setText((String) action.getValue(Action.SHORT_DESCRIPTION));
+ setToolTipText((String) action.getValue(Action.LONG_DESCRIPTION));
+ setBorder(border);
+ return result;
}
-
}
}
Modified: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-edit-error-validation.xml
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-edit-error-validation.xml 2013-01-18 08:03:47 UTC (rev 219)
+++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-edit-error-validation.xml 2013-01-18 08:11:31 UTC (rev 220)
@@ -54,6 +54,16 @@
</field>
+ <field name="trawlNetNumber">
+
+ <field-validator type="required" short-circuit="true">
+ <message>
+ tutti.validator.error.fishingOperation.trawlNetNumber.required
+ </message>
+ </field-validator>
+
+ </field>
+
<field name="gearShootingStartDate">
<field-validator type="required" short-circuit="true">
Modified: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-validate-error-validation.xml
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-validate-error-validation.xml 2013-01-18 08:03:47 UTC (rev 219)
+++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-validate-error-validation.xml 2013-01-18 08:11:31 UTC (rev 220)
@@ -35,13 +35,10 @@
</message>
</field-validator>
- <field-validator type="fieldexpressionwithparams" short-circuit="true">
- <param name="intParams">size:40</param>
- <param name="expression">
- <![CDATA[ stationNumber.length() < ints.size ]]>
- </param>
+ <field-validator type="stringlength" short-circuit="true">
+ <param name="maxLength">40</param>
<message>
- tutti.validator.error.fishingOperation.stationNumber.too.long##${ints.size}
+ tutti.validator.error.fishingOperation.stationNumber.too.long##${maxLength}
</message>
</field-validator>
@@ -57,6 +54,16 @@
</field>
+ <field name="trawlNetNumber">
+
+ <field-validator type="required" short-circuit="true">
+ <message>
+ tutti.validator.error.fishingOperation.trawlNetNumber.required
+ </message>
+ </field-validator>
+
+ </field>
+
<field name="gearShootingStartDate">
<field-validator type="required" short-circuit="true">
Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties
===================================================================
--- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-18 08:03:47 UTC (rev 219)
+++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-18 08:11:31 UTC (rev 220)
@@ -5,21 +5,27 @@
tutti.action.cancel=Annuler
tutti.action.casino-import=Import Casino
tutti.action.clone=Cloner
+tutti.action.clone.protocol.tip=
tutti.action.close=Fermer
tutti.action.configuration=Configuration
tutti.action.configuration.tip=Configurer Tutti
tutti.action.createSpeciesBatch=Créer un lot pour une espèce
tutti.action.edit=Editer
+tutti.action.edit.protocol.tip=
tutti.action.exit=Quitter
tutti.action.exit.tip=Quitter l'application
+tutti.action.export=Exporter
+tutti.action.export.protocol.tip=
tutti.action.fillCatches=Saisir les captures
tutti.action.fillCatches.tip=Saisir des captures
tutti.action.generate=Générer
tutti.action.generateCampaignName=Générer le nom
tutti.action.import=Importer
+tutti.action.import.protocol.tip=
tutti.action.manageProtocol=Protocole
tutti.action.manageProtocol.tip=Gérer les protocoles
tutti.action.new=Nouveau
+tutti.action.new.protocol.tip=
tutti.action.pupitri-import=Import PUPITRI
tutti.action.reload.actions=Recharger les actions
tutti.action.reload.application=Recharger l'application
@@ -291,6 +297,7 @@
tutti.to.be.done=< A FAIRE >
tutti.tooltip.attachment.none=Pas de pièce-jointes
tutti.tooltip.comment.none=Pas de commentaire
+tutti.validator.error.comment.too.long=Taille de commentaire trop longue (limitée à %s caractères)
tutti.validator.error.createSpeciesBatch.batchWeight.invalidValue=Le poids du lot doit être strictement positif
tutti.validator.error.createSpeciesBatch.batchWeight.required=Le poids du lot est obligatoire
tutti.validator.error.createSpeciesBatch.sortedUnsortedCategory.required=LA catégorie Vrac / Hors Vrac est obligatoire
@@ -307,11 +314,11 @@
tutti.validator.error.cruise.trawlNet.required=Le nombre de poche est obligatoire
tutti.validator.error.cruise.vessel.required=Au moins un bateau doit être sélectionné
tutti.validator.error.cruise.year.required=L'année est obligatoire
-tutti.validator.error.comment.too.long=Taille de commentaire trop longue (limitée à %s caractères)
tutti.validator.error.fishingOperation.date.required=La date du fishingOperation est obligatoire
tutti.validator.error.fishingOperation.fishingOperationNumber.required=Le numéro de trait est obligatoire
tutti.validator.error.fishingOperation.stationNumber.required=Le numéro de station est obligatoire
tutti.validator.error.fishingOperation.stationNumber.too.long=Valeur trop longue (limitée à %s caractères)
+tutti.validator.error.fishingOperation.trawlNetNumber.required=Le numéro de poche est obligatoire
tutti.validator.error.program.name.required=Le nom de la série est obligatoire
tutti.validator.error.program.zone.required=La zone de la série est obligatoire
tutti.validator.error.protocol.name.required=Le nom du protocol est obligatoire
Property changes on: trunk/tutti-ui-swing/src/main/resources/icons/action-copy.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: trunk/tutti-ui-swing/src/main/resources/icons/action-export.png
===================================================================
(Binary files differ)
Property changes on: trunk/tutti-ui-swing/src/main/resources/icons/action-export.png
___________________________________________________________________
Added: svn:mime-type
+ image/png
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/tutti-ui-swing/src/main/resources/icons/action-import.png
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
1
0