r37 - in trunk: . tutti-persistence tutti-persistence/src/main tutti-persistence/src/main/java/fr/ifremer/tutti/persistence tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities tutti-persistence/src/main/resources/META-INF/services tutti-persistence/src/main/xmi tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence tutti-persistence-dev/src/test/java/fr/ifremer/tutti/persistence tutti-service/src/main/java/fr/ifremer/tutti/service tutti-service/src/main/resources/
Author: tchemit Date: 2012-12-10 03:45:40 +0100 (Mon, 10 Dec 2012) New Revision: 37 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/37 Log: - introduce entity model - rename entities (and part of their ui screen, still need to be finished (package are not correct) Added: trunk/tutti-persistence/src/main/resources/META-INF/services/fr.ifremer.tutti.persistence.entities.IdAware trunk/tutti-persistence/src/main/xmi/ trunk/tutti-persistence/src/main/xmi/tutti-persistence.properties trunk/tutti-persistence/src/main/xmi/tutti-persistence.zargo trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditProgramUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditProgramUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditProgramUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditProgramUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditScientificCruiseUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditScientificCruiseUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditScientificCruiseUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditScientificCruiseUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/SelectScientificCruiseUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/SelectScientificCruiseUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/SelectScientificCruiseUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/SelectScientificCruiseUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/FishingOperationTabUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/FishingOperationTabUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/FishingOperationTabUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/FishingOperationTabUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/FishingOperationsUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/FishingOperationsUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/FishingOperationsUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/FishingOperationsUIModel.java trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/campaign/EditProgramUIModel-error-validation.xml trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/campaign/EditScientificCruiseUIModel-error-validation.xml trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/catches/FishingOperationTabUIModel-error-validation.xml trunk/tutti-ui-swing/src/main/resources/icons/action-generate.png Removed: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/CommentAware.java trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/SpeciesAware.java trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/data/ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/ trunk/tutti-persistence/src/main/resources/META-INF/services/fr.ifremer.tutti.persistence.entities.AbstractTuttiEntity trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditCampaignUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditCampaignUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditCampaignUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditCampaignUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditSurveyUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditSurveyUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditSurveyUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditSurveyUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/SelectCampaignUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/SelectCampaignUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/SelectCampaignUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/SelectCampaignUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/CatchesUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/CatchesUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/CatchesUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/CatchesUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/TraitTabUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/TraitTabUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/TraitTabUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/TraitTabUIModel.java trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/campaign/EditCampaignUIModel-error-validation.xml trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/campaign/EditSurveyUIModel-error-validation.xml trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/catches/TraitTabUIModel-error-validation.xml trunk/tutti-ui-swing/src/main/resources/icons/action-generate-lengthSteps.png Modified: trunk/pom.xml trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevFixtures.java trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevImpl.java trunk/tutti-persistence-dev/src/test/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevImplTest.java trunk/tutti-persistence/pom.xml trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/AbstractTuttiEntity.java trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/DecoratorService.java trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.css 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/TuttiScreen.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUI.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.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/content/catches/accidentel/AccidentelTabUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/accidentel/AccidentelTabUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/accidentel/AccidentelTabUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/accidentel/AccidentelTabUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/benthos/BenthosTabUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/benthos/BenthosTabUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/benthos/BenthosTabUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/macrodechet/MacroDechetTabUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/macrodechet/MacroDechetTabUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/macrodechet/MacroDechetTabUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/plancton/PlanctonTabUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/plancton/PlanctonTabUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/plancton/PlanctonTabUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/species/SpeciesBatchRowModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/species/SpeciesBatchTableModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/species/SpeciesTabUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/species/SpeciesTabUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/species/SpeciesTabUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/species/SpeciesTabUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/species/frequency/SpeciesFrequencyUI.css trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/pom.xml 2012-12-10 02:45:40 UTC (rev 37) @@ -85,7 +85,7 @@ <nuitonUtilsVersion>2.6.4</nuitonUtilsVersion> <nuitonI18nVersion>2.5</nuitonI18nVersion> - <eugenePluginVersion>2.5.6</eugenePluginVersion> + <eugenePluginVersion>2.6-SNAPSHOT</eugenePluginVersion> <hibernateVersion>3.6.10.Final</hibernateVersion> <h2Version>1.3.168</h2Version> <postgresqlVersion>9.1-901-1.jdbc4</postgresqlVersion> Modified: trunk/tutti-persistence/pom.xml =================================================================== --- trunk/tutti-persistence/pom.xml 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-persistence/pom.xml 2012-12-10 02:45:40 UTC (rev 37) @@ -28,5 +28,37 @@ </dependencies> + <build> + <plugins> + <plugin> + <groupId>org.nuiton.eugene</groupId> + <artifactId>eugene-maven-plugin</artifactId> + <configuration> + <resolver>org.nuiton.util.FasterCachedResourceResolver</resolver> + <templates> + org.nuiton.eugene.java.JavaInterfaceTransformer, + org.nuiton.eugene.java.SimpleJavaBeanTransformer, + org.nuiton.eugene.java.JavaEnumerationTransformer + </templates> + </configuration> + <executions> + <execution> + <phase>generate-sources</phase> + <configuration> + <defaultPackage>fr.ifremer.tutti.persistence.entities</defaultPackage> + <fullPackagePath>fr.ifremer.tutti.persistence.entities</fullPackagePath> + <inputs>zargo</inputs> + </configuration> + <goals> + <goal>generate</goal> + </goals> + </execution> + </executions> + </plugin> + + </plugins> + </build> + + </project> Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistence.java 2012-12-10 02:45:40 UTC (rev 37) @@ -26,21 +26,21 @@ import fr.ifremer.tutti.persistence.entities.data.AccidentelBatch; import fr.ifremer.tutti.persistence.entities.data.BenthosBatch; -import fr.ifremer.tutti.persistence.entities.data.Campaign; +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.MacroDechetBatch; import fr.ifremer.tutti.persistence.entities.data.PlanctonBatch; +import fr.ifremer.tutti.persistence.entities.data.Program; +import fr.ifremer.tutti.persistence.entities.data.ScientificCruise; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency; -import fr.ifremer.tutti.persistence.entities.data.Strata; -import fr.ifremer.tutti.persistence.entities.data.Survey; -import fr.ifremer.tutti.persistence.entities.data.Trait; +import fr.ifremer.tutti.persistence.entities.referential.Strata; import fr.ifremer.tutti.persistence.entities.referential.BeaufortScale; import fr.ifremer.tutti.persistence.entities.referential.Country; import fr.ifremer.tutti.persistence.entities.referential.Gear; +import fr.ifremer.tutti.persistence.entities.referential.Person; import fr.ifremer.tutti.persistence.entities.referential.SeaState; import fr.ifremer.tutti.persistence.entities.referential.Sex; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.persistence.entities.referential.TuttiUser; import fr.ifremer.tutti.persistence.entities.referential.Vessel; import fr.ifremer.tutti.persistence.entities.referential.WeightCategory; import fr.ifremer.tutti.persistence.entities.referential.Zone; @@ -92,49 +92,49 @@ List<Gear> getAllGear(); - List<TuttiUser> getAllTuttiUser(); + List<Person> getAllPerson(); //------------------------------------------------------------------------// - //-- Survey methods --// + //-- Program methods --// //------------------------------------------------------------------------// - List<Survey> getAllSurvey(); + List<Program> getAllProgram(); - Survey getSurvey(String surveyId); + Program getProgram(String id); - Survey createSurvey(Survey bean); + Program createProgram(Program bean); - Survey saveSurvey(Survey bean); + Program saveProgram(Program bean); //------------------------------------------------------------------------// - //-- Campaign methods --// + //-- ScientificCruise methods --// //------------------------------------------------------------------------// - List<Campaign> getAllCampaign(String surveyId); + List<ScientificCruise> getAllScientificCruise(String programId); - Campaign getCampaign(String campaignId); + ScientificCruise getScientificCruise(String id); - Campaign createCampaign(Campaign bean); + ScientificCruise createScientificCruise(ScientificCruise bean); - Campaign saveCampaign(Campaign bean); + ScientificCruise saveScientificCruise(ScientificCruise bean); //------------------------------------------------------------------------// - //-- Trait methods --// + //-- FishingOperation methods --// //------------------------------------------------------------------------// - List<Trait> getAllTrait(String campaignId); + List<FishingOperation> getAllFishingOperation(String scientificCruiseId); - Trait getTrait(String traitId); + FishingOperation getFishingOperation(String id); - Trait createTrait(Trait bean); + FishingOperation createFishingOperation(FishingOperation bean); - Trait saveTrait(Trait bean); + FishingOperation saveFishingOperation(FishingOperation bean); //------------------------------------------------------------------------// //-- Species Batch methods --// //------------------------------------------------------------------------// - List<SpeciesBatch> getAllSpeciesBatch(String traitId); + List<SpeciesBatch> getAllSpeciesBatch(String fishingOperationId); SpeciesBatch getSpeciesBatch(String id); @@ -152,7 +152,7 @@ //-- Benthos Batch methods --// //------------------------------------------------------------------------// - List<BenthosBatch> getAllBenthosBatch(String traitId); + List<BenthosBatch> getAllBenthosBatch(String fishingOperationId); BenthosBatch getBenthosBatch(String id); @@ -164,7 +164,7 @@ //-- Plancton Batch methods --// //------------------------------------------------------------------------// - List<PlanctonBatch> getAllPlanctonBatch(String traitId); + List<PlanctonBatch> getAllPlanctonBatch(String fishingOperationId); PlanctonBatch getPlanctonBatch(String id); @@ -173,10 +173,10 @@ PlanctonBatch savePlanctonBatch(PlanctonBatch bean); //------------------------------------------------------------------------// - //-- Macrodechet Batch methods --// + //-- Macrodechet Batch methods --// //------------------------------------------------------------------------// - List<MacroDechetBatch> getAllMacroDechetBatch(String traitId); + List<MacroDechetBatch> getAllMacroDechetBatch(String fishingOperationId); MacroDechetBatch getMacroDechetBatch(String id); @@ -188,7 +188,7 @@ //-- Accidentel Batch methods --// //------------------------------------------------------------------------// - List<AccidentelBatch> getAllAccidentelBatch(String traitId); + List<AccidentelBatch> getAllAccidentelBatch(String fishingOperationId); AccidentelBatch getAccidentelBatch(String id); Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/AbstractTuttiEntity.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/AbstractTuttiEntity.java 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/AbstractTuttiEntity.java 2012-12-10 02:45:40 UTC (rev 37) @@ -24,7 +24,11 @@ * #L% */ +import org.nuiton.util.CollectionUtil; + import java.io.Serializable; +import java.util.Collection; +import java.util.List; /** * Abstract tutti entity. @@ -32,7 +36,7 @@ * @author tchemit <chemit@codelutin.com> * @since 0.1 */ -public abstract class AbstractTuttiEntity implements Serializable { +public abstract class AbstractTuttiEntity implements Serializable, IdAware { private static final long serialVersionUID = 1L; @@ -47,4 +51,12 @@ public void setId(String id) { this.id = id; } + + protected <B> B getChild(Collection<B> child, int index) { + return CollectionUtil.getOrNull(child, index); + } + + protected <B> B getChild(List<B> child, int index) { + return CollectionUtil.getOrNull(child, index); + } } \ No newline at end of file Deleted: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/CommentAware.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/CommentAware.java 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/CommentAware.java 2012-12-10 02:45:40 UTC (rev 37) @@ -1,38 +0,0 @@ -package fr.ifremer.tutti.persistence.entities; - -/* - * #%L - * Tutti :: Persistence API - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2012 Ifremer - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -/** - * For any bean which can have a comment. - * - * @author tchemit <chemit@codelutin.com> - * @since 0.2 - */ -public interface CommentAware { - - String getComment(); - - void setComment(String comment); -} Deleted: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/SpeciesAware.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/SpeciesAware.java 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/SpeciesAware.java 2012-12-10 02:45:40 UTC (rev 37) @@ -1,40 +0,0 @@ -package fr.ifremer.tutti.persistence.entities; - -/* - * #%L - * Tutti :: Persistence API - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2012 Ifremer - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import fr.ifremer.tutti.persistence.entities.referential.Species; - -/** - * For any bean which relies to a {@link Species}. - * - * @author tchemit <chemit@codelutin.com> - * @since 0.2 - */ -public interface SpeciesAware { - - Species getSpecies(); - - void setSpecies(Species species); -} Modified: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/TuttiEntities.java 2012-12-10 02:45:40 UTC (rev 37) @@ -30,7 +30,7 @@ import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import com.google.common.collect.Maps; -import fr.ifremer.tutti.persistence.entities.data.TraitAware; +import fr.ifremer.tutti.persistence.entities.data.FishingOperationAware; import java.util.Collection; import java.util.Collections; @@ -49,7 +49,7 @@ // helper class does not instanciate } - public static <B extends AbstractTuttiEntity> List<String> toIds(List<B> list) { + public static <B extends IdAware> List<String> toIds(List<B> list) { List<String> result = list == null ? Collections.<String>emptyList() : Lists.transform(list, new Function<B, String>() { @@ -61,36 +61,36 @@ return result; } - public static <B extends AbstractTuttiEntity> Map<String, B> splitById(Iterable<B> list) { + public static <B extends IdAware> Map<String, B> splitById(Iterable<B> list) { return Maps.uniqueIndex(list, GET_ID); } - public static final Function<AbstractTuttiEntity, String> GET_ID = new Function<AbstractTuttiEntity, String>() { + public static final Function<IdAware, String> GET_ID = new Function<IdAware, String>() { @Override - public String apply(AbstractTuttiEntity input) { + public String apply(IdAware input) { return input.getId(); } }; - public static <B extends AbstractTuttiEntity> boolean isNew(B bean) { + public static <B extends IdAware> boolean isNew(B bean) { return bean.getId() == null; } - public static <B extends AbstractTuttiEntity> Predicate<B> newIdPredicate(String id) { + public static <B extends IdAware> Predicate<B> newIdPredicate(String id) { return new IdPredicate<B>(id); } - public static <B extends AbstractTuttiEntity & TraitAware> Predicate<B> newTraitIdPredicate(String id) { + public static <B extends FishingOperationAware> Predicate<B> newTraitIdPredicate(String id) { return new TraitIdPredicate<B>(id); } - public static <B extends AbstractTuttiEntity> B findById(Iterable<B> beans, - String id) { + public static <B extends IdAware> B findById(Iterable<B> beans, + String id) { B result = Iterables.tryFind(beans, newIdPredicate(id)).orNull(); return result; } - protected static class IdPredicate<B extends AbstractTuttiEntity> implements Predicate<B> { + protected static class IdPredicate<B extends IdAware> implements Predicate<B> { private final String id; @@ -104,7 +104,7 @@ } } - protected static class TraitIdPredicate<B extends AbstractTuttiEntity & TraitAware> implements Predicate<B> { + protected static class TraitIdPredicate<B extends FishingOperationAware> implements Predicate<B> { private final String id; @@ -114,15 +114,15 @@ @Override public boolean apply(B input) { - return id.equals(input.getTrait().getId()); + return id.equals(input.getFishingOperation().getId()); } } - public static <B extends AbstractTuttiEntity> B newEntity(B entity) { + public static <B extends IdAware> B newEntity(B entity) { return newEntity((Class<B>) entity.getClass()); } - public static <B extends AbstractTuttiEntity> B newEntity(Class<B> type) { + public static <B extends IdAware> B newEntity(Class<B> type) { try { return type.newInstance(); } catch (Exception e) { @@ -140,7 +140,7 @@ } } - public static <K,V> Function<K,V> newConstantFunction(final V value) { + public static <K, V> Function<K, V> newConstantFunction(final V value) { return new Function<K, V>() { @Override public V apply(K input) { Deleted: trunk/tutti-persistence/src/main/resources/META-INF/services/fr.ifremer.tutti.persistence.entities.AbstractTuttiEntity =================================================================== --- trunk/tutti-persistence/src/main/resources/META-INF/services/fr.ifremer.tutti.persistence.entities.AbstractTuttiEntity 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-persistence/src/main/resources/META-INF/services/fr.ifremer.tutti.persistence.entities.AbstractTuttiEntity 2012-12-10 02:45:40 UTC (rev 37) @@ -1,20 +0,0 @@ -fr.ifremer.tutti.persistence.entities.data.AccidentelBatch -fr.ifremer.tutti.persistence.entities.data.BenthosBatch -fr.ifremer.tutti.persistence.entities.data.Campaign -fr.ifremer.tutti.persistence.entities.data.MacroDechetBatch -fr.ifremer.tutti.persistence.entities.data.PlanctonBatch -fr.ifremer.tutti.persistence.entities.data.SpeciesBatch -fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency -fr.ifremer.tutti.persistence.entities.data.Strata -fr.ifremer.tutti.persistence.entities.data.Survey -fr.ifremer.tutti.persistence.entities.data.Trait -fr.ifremer.tutti.persistence.entities.referential.BeaufortScale -fr.ifremer.tutti.persistence.entities.referential.Country -fr.ifremer.tutti.persistence.entities.referential.Gear -fr.ifremer.tutti.persistence.entities.referential.SeaState -fr.ifremer.tutti.persistence.entities.referential.Sex -fr.ifremer.tutti.persistence.entities.referential.Species -fr.ifremer.tutti.persistence.entities.referential.TuttiUser -fr.ifremer.tutti.persistence.entities.referential.Vessel -fr.ifremer.tutti.persistence.entities.referential.WeightCategory -fr.ifremer.tutti.persistence.entities.referential.Zone \ No newline at end of file Copied: trunk/tutti-persistence/src/main/resources/META-INF/services/fr.ifremer.tutti.persistence.entities.IdAware (from rev 36, trunk/tutti-persistence/src/main/resources/META-INF/services/fr.ifremer.tutti.persistence.entities.AbstractTuttiEntity) =================================================================== --- trunk/tutti-persistence/src/main/resources/META-INF/services/fr.ifremer.tutti.persistence.entities.IdAware (rev 0) +++ trunk/tutti-persistence/src/main/resources/META-INF/services/fr.ifremer.tutti.persistence.entities.IdAware 2012-12-10 02:45:40 UTC (rev 37) @@ -0,0 +1,20 @@ +fr.ifremer.tutti.persistence.entities.data.AccidentelBatch +fr.ifremer.tutti.persistence.entities.data.BenthosBatch +fr.ifremer.tutti.persistence.entities.data.FishingOperation +fr.ifremer.tutti.persistence.entities.data.MacroDechetBatch +fr.ifremer.tutti.persistence.entities.data.PlanctonBatch +fr.ifremer.tutti.persistence.entities.data.Program +fr.ifremer.tutti.persistence.entities.data.ScientificCruise +fr.ifremer.tutti.persistence.entities.data.SpeciesBatch +fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency +fr.ifremer.tutti.persistence.entities.referential.BeaufortScale +fr.ifremer.tutti.persistence.entities.referential.Country +fr.ifremer.tutti.persistence.entities.referential.Gear +fr.ifremer.tutti.persistence.entities.referential.Person +fr.ifremer.tutti.persistence.entities.referential.SeaState +fr.ifremer.tutti.persistence.entities.referential.Sex +fr.ifremer.tutti.persistence.entities.referential.Species +fr.ifremer.tutti.persistence.entities.referential.Strata +fr.ifremer.tutti.persistence.entities.referential.Vessel +fr.ifremer.tutti.persistence.entities.referential.WeightCategory +fr.ifremer.tutti.persistence.entities.referential.Zone \ No newline at end of file Property changes on: trunk/tutti-persistence/src/main/resources/META-INF/services/fr.ifremer.tutti.persistence.entities.IdAware ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Added: trunk/tutti-persistence/src/main/xmi/tutti-persistence.properties =================================================================== --- trunk/tutti-persistence/src/main/xmi/tutti-persistence.properties (rev 0) +++ trunk/tutti-persistence/src/main/xmi/tutti-persistence.properties 2012-12-10 02:45:40 UTC (rev 37) @@ -0,0 +1,35 @@ +### +# #%L +# Tutti :: Persistence API +# $Id$ +# $HeadURL$ +# %% +# Copyright (C) 2012 Ifremer +# %% +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public +# License along with this program. If not, see +# <http://www.gnu.org/licenses/gpl-3.0.html>. +# #L% +### + +model.tagvalue.version=0.2 +model.tagvalue.constantPrefix=PROPERTY_ +model.tagvalue.doNotGenerateBooleanGetMethods=true +model.tagvalue.noPCS=true +model.tagvalue.beanSuperClass=fr.ifremer.tutti.persistence.entities.AbstractTuttiEntity + +fr.ifremer.tutti.persistence.entities.data.ScientificCruise.attribute.gear.stereotype=ordered +fr.ifremer.tutti.persistence.entities.data.ScientificCruise.attribute.headOfMission.stereotype=ordered +fr.ifremer.tutti.persistence.entities.data.ScientificCruise.attribute.headOfSortRoom.stereotype=ordered +fr.ifremer.tutti.persistence.entities.data.ScientificCruise.attribute.vessel.stereotype=ordered +fr.ifremer.tutti.persistence.entities.data.FishingOperation.attribute.saisisseur.stereotype=ordered Property changes on: trunk/tutti-persistence/src/main/xmi/tutti-persistence.properties ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Added: trunk/tutti-persistence/src/main/xmi/tutti-persistence.zargo =================================================================== (Binary files differ) Property changes on: trunk/tutti-persistence/src/main/xmi/tutti-persistence.zargo ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: svn:keywords + Author Date Id Revision HeadURL Modified: trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevFixtures.java =================================================================== --- trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevFixtures.java 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevFixtures.java 2012-12-10 02:45:40 UTC (rev 37) @@ -25,15 +25,15 @@ */ import com.google.common.collect.ArrayListMultimap; -import fr.ifremer.tutti.persistence.entities.AbstractTuttiEntity; -import fr.ifremer.tutti.persistence.entities.data.Strata; +import fr.ifremer.tutti.persistence.entities.IdAware; +import fr.ifremer.tutti.persistence.entities.referential.Person; +import fr.ifremer.tutti.persistence.entities.referential.Strata; import fr.ifremer.tutti.persistence.entities.referential.BeaufortScale; import fr.ifremer.tutti.persistence.entities.referential.Country; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.persistence.entities.referential.SeaState; import fr.ifremer.tutti.persistence.entities.referential.Sex; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.persistence.entities.referential.TuttiUser; import fr.ifremer.tutti.persistence.entities.referential.Vessel; import fr.ifremer.tutti.persistence.entities.referential.WeightCategory; import fr.ifremer.tutti.persistence.entities.referential.Zone; @@ -49,7 +49,7 @@ */ public class TuttiPersistenceDevFixtures { - protected final ArrayListMultimap<Class<? extends AbstractTuttiEntity>, AbstractTuttiEntity> cache; + protected final ArrayListMultimap<Class<? extends IdAware>, IdAware> cache; public TuttiPersistenceDevFixtures() { @@ -84,11 +84,13 @@ v = new Vessel(); v.setId(UUID.randomUUID().toString()); v.setName("THALASSA"); + v.setRegistrationCode("RegistrationCode1"); cache.put(Vessel.class, v); v = new Vessel(); v.setId(UUID.randomUUID().toString()); v.setName("THALASSA-II"); + v.setRegistrationCode("RegistrationCode2"); cache.put(Vessel.class, v); Gear g; @@ -103,37 +105,49 @@ g.setName("Gear-2"); cache.put(Gear.class, g); - TuttiUser u; + Person u; - u = new TuttiUser(); + u = new Person(); u.setId(UUID.randomUUID().toString()); u.setName("Vincent Badts"); - cache.put(TuttiUser.class, u); + u.setFirstName("Vincent"); + u.setLastName("Badts"); + cache.put(Person.class, u); - u = new TuttiUser(); + u = new Person(); u.setId(UUID.randomUUID().toString()); u.setName("Jean claude Mahet"); - cache.put(TuttiUser.class, u); + u.setFirstName("Jean claude"); + u.setLastName("Mahet"); + cache.put(Person.class, u); - u = new TuttiUser(); + u = new Person(); u.setId(UUID.randomUUID().toString()); u.setName("Luisa Metral"); - cache.put(TuttiUser.class, u); + u.setFirstName("Luisa"); + u.setLastName("Metral"); + cache.put(Person.class, u); - u = new TuttiUser(); + u = new Person(); u.setId(UUID.randomUUID().toString()); u.setName("Jean Hervé Bourdeix"); - cache.put(TuttiUser.class, u); + u.setFirstName("Jean Hervé"); + u.setLastName("Bourdeix"); + cache.put(Person.class, u); - u = new TuttiUser(); + u = new Person(); u.setId(UUID.randomUUID().toString()); u.setName("Ysabelle Cheret"); - cache.put(TuttiUser.class, u); + u.setFirstName("Ysabelle"); + u.setLastName("Cheret"); + cache.put(Person.class, u); - u = new TuttiUser(); + u = new Person(); u.setId(UUID.randomUUID().toString()); u.setName("Blandine Brisset"); - cache.put(TuttiUser.class, u); + u.setFirstName("Blandine"); + u.setLastName("Brisset"); + cache.put(Person.class, u); BeaufortScale bs; @@ -262,8 +276,8 @@ return getData(Gear.class); } - public List<TuttiUser> user() { - return getData(TuttiUser.class); + public List<Person> user() { + return getData(Person.class); } public List<Strata> strata() { @@ -290,7 +304,7 @@ return getData(WeightCategory.class); } - protected <B extends AbstractTuttiEntity> List<B> getData(Class<B> entityType) { + protected <B extends IdAware> List<B> getData(Class<B> entityType) { List<B> result = (List<B>) cache.get(entityType); return result; } Modified: trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevImpl.java =================================================================== --- trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevImpl.java 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-persistence-dev/src/main/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevImpl.java 2012-12-10 02:45:40 UTC (rev 37) @@ -33,25 +33,26 @@ import com.google.common.collect.Maps; import fr.ifremer.tutti.persistence.config.TuttiPersistenceDevConfig; import fr.ifremer.tutti.persistence.entities.AbstractTuttiEntity; +import fr.ifremer.tutti.persistence.entities.IdAware; import fr.ifremer.tutti.persistence.entities.TuttiEntities; import fr.ifremer.tutti.persistence.entities.data.AccidentelBatch; import fr.ifremer.tutti.persistence.entities.data.BenthosBatch; -import fr.ifremer.tutti.persistence.entities.data.Campaign; +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import fr.ifremer.tutti.persistence.entities.data.FishingOperationAware; import fr.ifremer.tutti.persistence.entities.data.MacroDechetBatch; import fr.ifremer.tutti.persistence.entities.data.PlanctonBatch; +import fr.ifremer.tutti.persistence.entities.data.Program; +import fr.ifremer.tutti.persistence.entities.data.ScientificCruise; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency; -import fr.ifremer.tutti.persistence.entities.data.Strata; -import fr.ifremer.tutti.persistence.entities.data.Survey; -import fr.ifremer.tutti.persistence.entities.data.Trait; -import fr.ifremer.tutti.persistence.entities.data.TraitAware; import fr.ifremer.tutti.persistence.entities.referential.BeaufortScale; import fr.ifremer.tutti.persistence.entities.referential.Country; import fr.ifremer.tutti.persistence.entities.referential.Gear; +import fr.ifremer.tutti.persistence.entities.referential.Person; import fr.ifremer.tutti.persistence.entities.referential.SeaState; import fr.ifremer.tutti.persistence.entities.referential.Sex; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.persistence.entities.referential.TuttiUser; +import fr.ifremer.tutti.persistence.entities.referential.Strata; import fr.ifremer.tutti.persistence.entities.referential.Vessel; import fr.ifremer.tutti.persistence.entities.referential.WeightCategory; import fr.ifremer.tutti.persistence.entities.referential.Zone; @@ -91,12 +92,12 @@ * * @since 0.1 */ - public static final List<Class<? extends AbstractTuttiEntity>> TYPES; + public static final List<Class<? extends IdAware>> TYPES; static { TYPES = Lists.newArrayList(); - for (AbstractTuttiEntity e : ServiceLoader.load(AbstractTuttiEntity.class)) { + for (IdAware e : ServiceLoader.load(IdAware.class)) { TYPES.add(e.getClass()); } @@ -117,14 +118,14 @@ * * @since 0.1 */ - protected final ArrayListMultimap<Class<? extends AbstractTuttiEntity>, AbstractTuttiEntity> cache = ArrayListMultimap.create(); + protected final ArrayListMultimap<Class<? extends IdAware>, IdAware> cache = ArrayListMultimap.create(); /** * Cache of binder. * * @since 0.2 */ - protected final Map<Class<? extends AbstractTuttiEntity>, Binder<? extends AbstractTuttiEntity, ? extends AbstractTuttiEntity>> binderCache = Maps.newHashMap(); + protected final Map<Class<? extends IdAware>, Binder<? extends IdAware, ? extends IdAware>> binderCache = Maps.newHashMap(); //------------------------------------------------------------------------// //-- Technical methods --// @@ -150,7 +151,7 @@ TuttiPersistenceDevFixtures fixtures = new TuttiPersistenceDevFixtures(); - for (Class<? extends AbstractTuttiEntity> entityType : TYPES) { + for (Class<? extends IdAware> entityType : TYPES) { loadEntities(entityType, fixtures); } } @@ -160,7 +161,7 @@ binderCache.clear(); - for (Class<? extends AbstractTuttiEntity> entityType : cache.keySet()) { + for (Class<? extends IdAware> entityType : cache.keySet()) { persistToFile(entityType); } } @@ -213,8 +214,8 @@ } @Override - public List<TuttiUser> getAllTuttiUser() { - List<TuttiUser> result = getDataInNewList(TuttiUser.class); + public List<Person> getAllPerson() { + List<Person> result = getDataInNewList(Person.class); return result; } @@ -238,96 +239,96 @@ } //------------------------------------------------------------------------// - //-- Survey methods --// + //-- Program methods --// //------------------------------------------------------------------------// @Override - public List<Survey> getAllSurvey() { - List<Survey> result = getDataInNewList(Survey.class); + public List<Program> getAllProgram() { + List<Program> result = getDataInNewList(Program.class); return result; } @Override - public Survey getSurvey(String surveyId) { - Survey result = getBean(Survey.class, surveyId); + public Program getProgram(String id) { + Program result = getBean(Program.class, id); return result; } @Override - public Survey createSurvey(Survey bean) { - Survey result = create(Survey.class, bean); + public Program createProgram(Program bean) { + Program result = create(Program.class, bean); return result; } @Override - public Survey saveSurvey(Survey bean) { - Survey result = save(Survey.class, bean); + public Program saveProgram(Program bean) { + Program result = save(Program.class, bean); return result; } //------------------------------------------------------------------------// - //-- Campaign methods --// + //-- ScientificCruise methods --// //------------------------------------------------------------------------// @Override - public List<Campaign> getAllCampaign(final String surveyId) { - List<Campaign> result = Lists.newArrayList(Iterables.filter(getData(Campaign.class), new Predicate<Campaign>() { + public List<ScientificCruise> getAllScientificCruise(final String programId) { + List<ScientificCruise> result = Lists.newArrayList(Iterables.filter(getData(ScientificCruise.class), new Predicate<ScientificCruise>() { @Override - public boolean apply(Campaign input) { - return surveyId.equals(input.getSurvey().getId()); + public boolean apply(ScientificCruise input) { + return programId.equals(input.getProgram().getId()); } })); return result; } @Override - public Campaign getCampaign(String campaignId) { - Campaign result = getBean(Campaign.class, campaignId); + public ScientificCruise getScientificCruise(String id) { + ScientificCruise result = getBean(ScientificCruise.class, id); return result; } @Override - public Campaign createCampaign(Campaign bean) { - Campaign result = create(Campaign.class, bean); + public ScientificCruise createScientificCruise(ScientificCruise bean) { + ScientificCruise result = create(ScientificCruise.class, bean); return result; } @Override - public Campaign saveCampaign(Campaign bean) { - Campaign result = save(Campaign.class, bean); + public ScientificCruise saveScientificCruise(ScientificCruise bean) { + ScientificCruise result = save(ScientificCruise.class, bean); return result; } //------------------------------------------------------------------------// - //-- Trait methods --// + //-- FishingOperation methods --// //------------------------------------------------------------------------// @Override - public List<Trait> getAllTrait(final String campaignId) { - List<Trait> result = Lists.newArrayList(Iterables.filter(getData(Trait.class), new Predicate<Trait>() { + public List<FishingOperation> getAllFishingOperation(final String scientificCruiseId) { + List<FishingOperation> result = Lists.newArrayList(Iterables.filter(getData(FishingOperation.class), new Predicate<FishingOperation>() { @Override - public boolean apply(Trait input) { - return campaignId.equals(input.getCampaign().getId()); + public boolean apply(FishingOperation input) { + return scientificCruiseId.equals(input.getScientificCruise().getId()); } })); return result; } @Override - public Trait getTrait(String traitId) { - Trait result = TuttiEntities.findById(getData(Trait.class), traitId); + public FishingOperation getFishingOperation(String id) { + FishingOperation result = TuttiEntities.findById(getData(FishingOperation.class), id); return result; } @Override - public Trait createTrait(Trait bean) { - Trait result = create(Trait.class, bean); + public FishingOperation createFishingOperation(FishingOperation bean) { + FishingOperation result = create(FishingOperation.class, bean); return result; } @Override - public Trait saveTrait(Trait bean) { - Trait result = save(Trait.class, bean); + public FishingOperation saveFishingOperation(FishingOperation bean) { + FishingOperation result = save(FishingOperation.class, bean); return result; } @@ -336,9 +337,9 @@ //------------------------------------------------------------------------// @Override - public List<SpeciesBatch> getAllSpeciesBatch(final String traitId) { + public List<SpeciesBatch> getAllSpeciesBatch(final String fishingOperationId) { List<SpeciesBatch> result = getAllTraitFilterBatches( - SpeciesBatch.class, traitId); + SpeciesBatch.class, fishingOperationId); return result; } @@ -391,9 +392,9 @@ //------------------------------------------------------------------------// @Override - public List<BenthosBatch> getAllBenthosBatch(String traitId) { + public List<BenthosBatch> getAllBenthosBatch(String fishingOperationId) { List<BenthosBatch> result = getAllTraitFilterBatches( - BenthosBatch.class, traitId); + BenthosBatch.class, fishingOperationId); return result; } @@ -420,9 +421,9 @@ //------------------------------------------------------------------------// @Override - public List<PlanctonBatch> getAllPlanctonBatch(String traitId) { + public List<PlanctonBatch> getAllPlanctonBatch(String fishingOperationId) { List<PlanctonBatch> result = getAllTraitFilterBatches( - PlanctonBatch.class, traitId); + PlanctonBatch.class, fishingOperationId); return result; } @@ -449,9 +450,9 @@ //------------------------------------------------------------------------// @Override - public List<MacroDechetBatch> getAllMacroDechetBatch(String traitId) { + public List<MacroDechetBatch> getAllMacroDechetBatch(String fishingOperationId) { List<MacroDechetBatch> result = getAllTraitFilterBatches( - MacroDechetBatch.class, traitId); + MacroDechetBatch.class, fishingOperationId); return result; } @@ -478,9 +479,9 @@ //------------------------------------------------------------------------// @Override - public List<AccidentelBatch> getAllAccidentelBatch(String traitId) { + public List<AccidentelBatch> getAllAccidentelBatch(String fishingOperationId) { List<AccidentelBatch> result = getAllTraitFilterBatches( - AccidentelBatch.class, traitId); + AccidentelBatch.class, fishingOperationId); return result; } @@ -506,7 +507,7 @@ //-- Internal methods --// //------------------------------------------------------------------------// - protected <B extends AbstractTuttiEntity> Binder<B, B> getBinder(Class<B> type) { + protected <B extends IdAware> Binder<B, B> getBinder(Class<B> type) { Binder<B, B> result = (Binder<B, B>) binderCache.get(type); if (result == null) { result = BinderFactory.newBinder(type); @@ -515,10 +516,10 @@ return result; } - protected <B extends AbstractTuttiEntity> void persist(Class<B> beanType, - B source, - B target, - boolean synchFile) { + protected <B extends IdAware> void persist(Class<B> beanType, + B source, + B target, + boolean synchFile) { getBinder(beanType).copyExcluding(source, target, AbstractTuttiEntity.PROPERTY_ID); if (source.getId() == null) { @@ -532,9 +533,9 @@ } } - protected <B extends AbstractTuttiEntity> List<B> persistList(Class<B> beanType, - List<B> existingData, - List<B> newData) { + protected <B extends IdAware> List<B> persistList(Class<B> beanType, + List<B> existingData, + List<B> newData) { Map<B, B> toPersist = Maps.newHashMap(); @@ -589,8 +590,8 @@ return result; } - protected <B extends AbstractTuttiEntity> List<B> loadEntities(Class<B> entityType, - TuttiPersistenceDevFixtures fix + protected <B extends IdAware> List<B> loadEntities(Class<B> entityType, + TuttiPersistenceDevFixtures fix ) throws IOException { File storageFile = getStorageFile(entityType); @@ -627,8 +628,8 @@ return result; } - protected <B extends AbstractTuttiEntity> List<B> loadEntities(Class<B> entityType, - List<B> defaultList) throws IOException { + protected <B extends IdAware> List<B> loadEntities(Class<B> entityType, + List<B> defaultList) throws IOException { File storageFile = getStorageFile(entityType); List<B> result; @@ -668,7 +669,7 @@ return result; } - protected <B extends AbstractTuttiEntity> void persistToFile(Class<B> entityType) { + protected <B extends IdAware> void persistToFile(Class<B> entityType) { List<B> entities = getDataInNewList(entityType); File storageFile = getStorageFile(entityType); @@ -692,30 +693,30 @@ } } - protected <B extends AbstractTuttiEntity> List<B> getData(Class<B> entityType) { + protected <B extends IdAware> List<B> getData(Class<B> entityType) { List<B> result = (List<B>) cache.get(entityType); return result; } - protected <B extends AbstractTuttiEntity> List<B> getDataInNewList(Class<B> entityType) { + protected <B extends IdAware> List<B> getDataInNewList(Class<B> entityType) { List<B> result = getData(entityType); return Lists.newArrayList(result); } - protected <B extends AbstractTuttiEntity & TraitAware> List<B> getAllTraitFilterBatches(Class<B> beanType, String traitId) { + protected <B extends FishingOperationAware> List<B> getAllTraitFilterBatches(Class<B> beanType, String traitId) { Predicate<B> predicate = TuttiEntities.newTraitIdPredicate(traitId); List<B> result = Lists.newArrayList(Iterables.filter(getData(beanType), predicate)); return result; } - protected <B extends AbstractTuttiEntity> B create(Class<B> type, B bean) { + protected <B extends IdAware> B create(Class<B> type, B bean) { Preconditions.checkNotNull(bean, "Can't persist a null bean"); B result = TuttiEntities.newEntity(bean); persist(type, bean, result, true); return result; } - protected <B extends AbstractTuttiEntity> B save(Class<B> type, B bean) { + protected <B extends IdAware> B save(Class<B> type, B bean) { Preconditions.checkNotNull(bean, "Can't persist a null bean"); String id = bean.getId(); Preconditions.checkNotNull(id, "Can't save a bean with null id"); @@ -724,7 +725,7 @@ return result; } - protected <B extends AbstractTuttiEntity> B getBean(Class<B> type, String id) { + protected <B extends IdAware> B getBean(Class<B> type, String id) { B result = TuttiEntities.findById(getData(type), id); return result; } Modified: trunk/tutti-persistence-dev/src/test/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevImplTest.java =================================================================== --- trunk/tutti-persistence-dev/src/test/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevImplTest.java 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-persistence-dev/src/test/java/fr/ifremer/tutti/persistence/TuttiPersistenceDevImplTest.java 2012-12-10 02:45:40 UTC (rev 37) @@ -28,7 +28,7 @@ import fr.ifremer.tutti.persistence.config.TuttiPersistenceDevConfig; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency; -import fr.ifremer.tutti.persistence.entities.data.Survey; +import fr.ifremer.tutti.persistence.entities.data.Program; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -128,21 +128,21 @@ persistence.open(config.getConfig()); Assert.assertTrue(storageDirectory.exists()); - int size = persistence.getAllSurvey().size(); + int size = persistence.getAllProgram().size(); - Survey s = new Survey(); + Program s = new Program(); s.setId("46de4ba5-3be6-4ab6-9f39-586b8e491fda"); s.setName("Serie 3"); s.setZone(persistence.getAllZone().get(0)); - persistence.createSurvey(s); + persistence.createProgram(s); persistence.close(); Assert.assertTrue(storageDirectory.exists()); persistence.open(config.getConfig()); - Assert.assertEquals(size + 1, persistence.getAllSurvey().size()); + Assert.assertEquals(size + 1, persistence.getAllProgram().size()); } @Test Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/DecoratorService.java =================================================================== --- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/DecoratorService.java 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/DecoratorService.java 2012-12-10 02:45:40 UTC (rev 37) @@ -24,17 +24,17 @@ * #L% */ -import fr.ifremer.tutti.persistence.entities.data.Campaign; -import fr.ifremer.tutti.persistence.entities.data.Strata; -import fr.ifremer.tutti.persistence.entities.data.Survey; -import fr.ifremer.tutti.persistence.entities.data.Trait; +import fr.ifremer.tutti.persistence.entities.data.ScientificCruise; +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import fr.ifremer.tutti.persistence.entities.referential.Person; +import fr.ifremer.tutti.persistence.entities.referential.Strata; +import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.persistence.entities.referential.BeaufortScale; import fr.ifremer.tutti.persistence.entities.referential.Country; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.persistence.entities.referential.SeaState; import fr.ifremer.tutti.persistence.entities.referential.Sex; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.persistence.entities.referential.TuttiUser; import fr.ifremer.tutti.persistence.entities.referential.Vessel; import fr.ifremer.tutti.persistence.entities.referential.WeightCategory; import fr.ifremer.tutti.persistence.entities.referential.Zone; @@ -84,14 +84,14 @@ @Override protected void loadDecorators() { - registerMultiJXPathDecorator(Survey.class, "${name}$s", "#", " - "); - registerMultiJXPathDecorator(Campaign.class, "${name}$s", "#", " - "); - registerMultiJXPathDecorator(Trait.class, "${stationNumber}$s#${traitNumber}$s#${date}$td/%3$tm/%3$tY", "#", " - "); + registerMultiJXPathDecorator(Program.class, "${name}$s", "#", " - "); + registerMultiJXPathDecorator(ScientificCruise.class, "${name}$s", "#", " - "); + registerMultiJXPathDecorator(FishingOperation.class, "${stationNumber}$s#${traitNumber}$s#${date}$td/%3$tm/%3$tY", "#", " - "); registerMultiJXPathDecorator(Zone.class, "${name}$s", "#", " - "); - registerMultiJXPathDecorator(Vessel.class, "${name}$s", "#", " - "); + registerMultiJXPathDecorator(Vessel.class, "${name}$s#", "#", " - "); registerMultiJXPathDecorator(Country.class, "${name}$s", "#", " - "); registerMultiJXPathDecorator(Gear.class, "${name}$s", "#", " - "); - registerMultiJXPathDecorator(TuttiUser.class, "${name}$s", "#", " - "); + registerMultiJXPathDecorator(Person.class, "${firstName}$s#${lastName}$s", "#", " "); registerMultiJXPathDecorator(BeaufortScale.class, "${name}$s", "#", " - "); registerMultiJXPathDecorator(SeaState.class, "${name}$s", "#", " - "); registerMultiJXPathDecorator(Strata.class, "${name}$s", "#", " - "); @@ -107,11 +107,13 @@ static { n_("tutti.property.name"); + n_("tutti.property.firstName"); + n_("tutti.property.lastName"); n_("tutti.property.stationNumber"); n_("tutti.property.date"); - n_("tutti.property.survey"); - n_("tutti.property.campaign"); - n_("tutti.property.trait"); + n_("tutti.property.program"); + n_("tutti.property.scientificCruise"); + n_("tutti.property.fishingOperation"); n_("tutti.property.zone"); n_("tutti.property.vessel"); n_("tutti.property.country"); Modified: trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java =================================================================== --- trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-service/src/main/java/fr/ifremer/tutti/service/PersistenceService.java 2012-12-10 02:45:40 UTC (rev 37) @@ -28,21 +28,21 @@ import fr.ifremer.tutti.persistence.TuttiPersistence; import fr.ifremer.tutti.persistence.entities.data.AccidentelBatch; import fr.ifremer.tutti.persistence.entities.data.BenthosBatch; -import fr.ifremer.tutti.persistence.entities.data.Campaign; +import fr.ifremer.tutti.persistence.entities.data.Program; +import fr.ifremer.tutti.persistence.entities.data.ScientificCruise; +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.MacroDechetBatch; import fr.ifremer.tutti.persistence.entities.data.PlanctonBatch; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency; -import fr.ifremer.tutti.persistence.entities.data.Strata; -import fr.ifremer.tutti.persistence.entities.data.Survey; -import fr.ifremer.tutti.persistence.entities.data.Trait; +import fr.ifremer.tutti.persistence.entities.referential.Person; +import fr.ifremer.tutti.persistence.entities.referential.Strata; import fr.ifremer.tutti.persistence.entities.referential.BeaufortScale; import fr.ifremer.tutti.persistence.entities.referential.Country; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.persistence.entities.referential.SeaState; import fr.ifremer.tutti.persistence.entities.referential.Sex; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.persistence.entities.referential.TuttiUser; import fr.ifremer.tutti.persistence.entities.referential.Vessel; import fr.ifremer.tutti.persistence.entities.referential.WeightCategory; import fr.ifremer.tutti.persistence.entities.referential.Zone; @@ -175,9 +175,9 @@ } @Override - public List<TuttiUser> getAllTuttiUser() { + public List<Person> getAllPerson() { checkDriverExists(); - return driver.getAllTuttiUser(); + return driver.getAllPerson(); } @Override @@ -199,87 +199,87 @@ } //------------------------------------------------------------------------// - //-- Survey methods --// + //-- Program methods --// //------------------------------------------------------------------------// @Override - public List<Survey> getAllSurvey() { + public List<Program> getAllProgram() { checkDriverExists(); - return driver.getAllSurvey(); + return driver.getAllProgram(); } @Override - public Survey getSurvey(String surveyId) { + public Program getProgram(String id) { checkDriverExists(); - return driver.getSurvey(surveyId); + return driver.getProgram(id); } @Override - public Survey createSurvey(Survey bean) { + public Program createProgram(Program bean) { checkDriverExists(); - return driver.createSurvey(bean); + return driver.createProgram(bean); } @Override - public Survey saveSurvey(Survey bean) { + public Program saveProgram(Program bean) { checkDriverExists(); - return driver.saveSurvey(bean); + return driver.saveProgram(bean); } //------------------------------------------------------------------------// - //-- Campaign methods --// + //-- ScientificCruise methods --// //------------------------------------------------------------------------// @Override - public List<Campaign> getAllCampaign(String surveyId) { + public List<ScientificCruise> getAllScientificCruise(String programId) { checkDriverExists(); - return driver.getAllCampaign(surveyId); + return driver.getAllScientificCruise(programId); } @Override - public Campaign getCampaign(String campaignId) { + public ScientificCruise getScientificCruise(String id) { checkDriverExists(); - return driver.getCampaign(campaignId); + return driver.getScientificCruise(id); } @Override - public Campaign createCampaign(Campaign bean) { + public ScientificCruise createScientificCruise(ScientificCruise bean) { checkDriverExists(); - return driver.createCampaign(bean); + return driver.createScientificCruise(bean); } @Override - public Campaign saveCampaign(Campaign bean) { + public ScientificCruise saveScientificCruise(ScientificCruise bean) { checkDriverExists(); - return driver.saveCampaign(bean); + return driver.saveScientificCruise(bean); } //------------------------------------------------------------------------// - //-- Trait methods --// + //-- FishingOperation methods --// //------------------------------------------------------------------------// @Override - public List<Trait> getAllTrait(String campaignId) { + public List<FishingOperation> getAllFishingOperation(String scientificCruiseId) { checkDriverExists(); - return driver.getAllTrait(campaignId); + return driver.getAllFishingOperation(scientificCruiseId); } @Override - public Trait getTrait(String traitId) { + public FishingOperation getFishingOperation(String id) { checkDriverExists(); - return driver.getTrait(traitId); + return driver.getFishingOperation(id); } @Override - public Trait createTrait(Trait bean) { + public FishingOperation createFishingOperation(FishingOperation bean) { checkDriverExists(); - return driver.createTrait(bean); + return driver.createFishingOperation(bean); } @Override - public Trait saveTrait(Trait bean) { + public FishingOperation saveFishingOperation(FishingOperation bean) { checkDriverExists(); - return driver.saveTrait(bean); + return driver.saveFishingOperation(bean); } //------------------------------------------------------------------------// @@ -287,9 +287,9 @@ //------------------------------------------------------------------------// @Override - public List<SpeciesBatch> getAllSpeciesBatch(String traitId) { + public List<SpeciesBatch> getAllSpeciesBatch(String fishingOperationId) { checkDriverExists(); - return driver.getAllSpeciesBatch(traitId); + return driver.getAllSpeciesBatch(fishingOperationId); } @Override @@ -328,9 +328,9 @@ //------------------------------------------------------------------------// @Override - public List<BenthosBatch> getAllBenthosBatch(String traitId) { + public List<BenthosBatch> getAllBenthosBatch(String fishingOperationId) { checkDriverExists(); - return driver.getAllBenthosBatch(traitId); + return driver.getAllBenthosBatch(fishingOperationId); } @Override @@ -356,9 +356,9 @@ //------------------------------------------------------------------------// @Override - public List<PlanctonBatch> getAllPlanctonBatch(String traitId) { + public List<PlanctonBatch> getAllPlanctonBatch(String fishingOperationId) { checkDriverExists(); - return driver.getAllPlanctonBatch(traitId); + return driver.getAllPlanctonBatch(fishingOperationId); } @Override @@ -380,13 +380,13 @@ } //------------------------------------------------------------------------// - //-- Macrodechet Batch methods --// + //-- Macrodechet Batch methods --// //------------------------------------------------------------------------// @Override - public List<MacroDechetBatch> getAllMacroDechetBatch(String traitId) { + public List<MacroDechetBatch> getAllMacroDechetBatch(String fishingOperationId) { checkDriverExists(); - return driver.getAllMacroDechetBatch(traitId); + return driver.getAllMacroDechetBatch(fishingOperationId); } @Override @@ -412,9 +412,9 @@ //------------------------------------------------------------------------// @Override - public List<AccidentelBatch> getAllAccidentelBatch(String traitId) { + public List<AccidentelBatch> getAllAccidentelBatch(String fishingOperationId) { checkDriverExists(); - return driver.getAllAccidentelBatch(traitId); + return driver.getAllAccidentelBatch(fishingOperationId); } @Override Modified: trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties =================================================================== --- trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-service/src/main/resources/i18n/tutti-service_fr_FR.properties 2012-12-10 02:45:40 UTC (rev 37) @@ -4,18 +4,20 @@ tutti.config.license.organizationName=Nom de l'organisation dans la licence tutti.config.tmp.directory=Répertoire temporaire utilisée par l'application (est nettoyé à chaque démarrage de l'application) tutti.property.beaufortScale=Vent beaufort -tutti.property.campaign=Campagne tutti.property.codeMemo=Code Memo tutti.property.country=Pays tutti.property.date=Date +tutti.property.firstName=Prénom +tutti.property.fishingOperation=Trait tutti.property.gear=Engin tutti.property.genusSpecies=Nom scientifique +tutti.property.lastName=Nom de Famille tutti.property.name=Nom +tutti.property.program=Série de campagne +tutti.property.scientificCruise=Campagne tutti.property.seaState=État de la mer tutti.property.stationNumber=Numéro de station tutti.property.strata=Strate d'association -tutti.property.survey=Série de campagne -tutti.property.trait=Trait tutti.property.user=Utilisateur tutti.property.vessel=Navire tutti.property.zone=Zone Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiUIHandler.java 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiUIHandler.java 2012-12-10 02:45:40 UTC (rev 37) @@ -27,7 +27,7 @@ import com.google.common.base.Preconditions; import com.google.common.collect.Lists; import com.google.common.collect.Sets; -import fr.ifremer.tutti.persistence.entities.AbstractTuttiEntity; +import fr.ifremer.tutti.persistence.entities.IdAware; import fr.ifremer.tutti.persistence.entities.TuttiEntities; import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.ui.swing.config.TuttiConfig; @@ -51,12 +51,14 @@ import javax.swing.ListSelectionModel; import javax.swing.event.ListSelectionEvent; import javax.swing.text.JTextComponent; +import java.awt.event.ActionEvent; import java.awt.event.ItemEvent; import java.awt.event.KeyEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.ArrayList; import java.util.Arrays; +import java.util.Date; import java.util.List; import java.util.Map; import java.util.Set; @@ -106,6 +108,12 @@ TuttiUIUtil.setProperty(getModel(), property, value); } + public void setDate(ActionEvent event, String property) { + JXDatePicker field = (JXDatePicker) event.getSource(); + Date value = field.getDate(); + TuttiUIUtil.setProperty(getModel(), property, value); + } + public void selectListData(ListSelectionEvent event, String property) { if (!event.getValueIsAdjusting()) { JList list = (JList) event.getSource(); @@ -146,7 +154,7 @@ * * @param comboBox le component graphique à initialiser */ - protected <E extends AbstractTuttiEntity> void initBeanComboBox( + protected <E extends IdAware> void initBeanComboBox( BeanComboBox<E> comboBox, List<E> data, E selectedData) { @@ -179,7 +187,7 @@ * * @param listHeader le component graphique à initialiser */ - protected <E extends AbstractTuttiEntity> void initBeanList( + protected <E extends IdAware> void initBeanList( BeanListHeader<E> listHeader, List<E> data, List<E> selectedData) { @@ -213,6 +221,13 @@ log.debug("init number editor " + editor.getName()); } editor.init(); + + // Force binding if value is already in model + Number model = editor.getModel(); + if (model != null) { + editor.setModel(null); + editor.setModel(model); + } } protected void initTimeEditor(TimeEditor editor) { @@ -231,8 +246,8 @@ picker.getEditor().setEditable(false); } - protected <B extends AbstractTuttiEntity> void updateIndices(JList jlist, - List<B> list) { + protected <B extends IdAware> void updateIndices(JList jlist, + List<B> list) { List<String> ids = TuttiEntities.toIds(list); 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 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.css 2012-12-10 02:45:40 UTC (rev 37) @@ -21,104 +21,105 @@ * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ + #mainFrame { - title:"tutti.application.name"; - defaultCloseOperation:{JFrame.DO_NOTHING_ON_CLOSE}; + title: "tutti.application.name"; + defaultCloseOperation: {JFrame.DO_NOTHING_ON_CLOSE}; } #menuFile { - text:"tutti.menu.file"; - toolTipText:"tutti.menu.file.tip"; - mnemonic:F; + text: "tutti.menu.file"; + toolTipText: "tutti.menu.file.tip"; + mnemonic: F; } #menuFileConfiguration { - text:"tutti.action.configuration"; - toolTipText:"tutti.action.configuration.tip"; - actionIcon:"config"; - mnemonic:C; + text: "tutti.action.configuration"; + toolTipText: "tutti.action.configuration.tip"; + actionIcon: "config"; + mnemonic: C; } #menuFileExit { - text:"tutti.action.exit"; - toolTipText:"tutti.action.exit.tip"; - actionIcon:"exit"; + text: "tutti.action.exit"; + toolTipText: "tutti.action.exit.tip"; + actionIcon: "exit"; } #menuActions { - text:"tutti.menu.actions"; - toolTipText:"tutti.menu.actions.tip"; - mnemonic:A; + text: "tutti.menu.actions"; + toolTipText: "tutti.menu.actions.tip"; + mnemonic: A; } #menuActionManageProtocol { - text:"tutti.action.manageProtocol"; - toolTipText:"tutti.action.manageProtocol.tip"; - mnemonic:P; - enabled:{model.getScreen() != TuttiScreen.EDIT_PROTOCOL}; - /*actionIcon:"protocol";*/ + text: "tutti.action.manageProtocol"; + toolTipText: "tutti.action.manageProtocol.tip"; + mnemonic: P; + enabled: {model.getScreen() != TuttiScreen.EDIT_PROTOCOL}; + /*actionIcon: "protocol";*/ } #menuActionSelectCampaign { - text:"tutti.action.selectCampaign"; - toolTipText:"tutti.action.selectCampaign.tip"; - mnemonic:S; - enabled:{model.getScreen() != TuttiScreen.SELECT_CAMPAIGN}; - /*actionIcon:"campaign";*/ + text: "tutti.action.selectCampaign"; + toolTipText: "tutti.action.selectCampaign.tip"; + mnemonic: S; + enabled: {model.getScreen() != TuttiScreen.SELECT_SCIENTIFIC_CRUISE}; + /*actionIcon: "scientificCruise";*/ } #menuActionFillCatches { - text:"tutti.action.fillCatches"; - toolTipText:"tutti.action.fillCatches.tip"; - mnemonic:C; - enabled:{model.getScreen() != TuttiScreen.FILL_CATCHES && model.isCampaignContextFilled()}; - /*actionIcon:"catches";*/ + text: "tutti.action.fillCatches"; + toolTipText: "tutti.action.fillCatches.tip"; + mnemonic: C; + enabled: {model.getScreen() != TuttiScreen.FILL_FISHING_OPERATION && model.isScientificCruiseContextFilled()}; + /*actionIcon: "catches";*/ } #menuSynchronisations { - text:"tutti.menu.synchronisations"; - toolTipText:"tutti.menu.synchronisations.tip"; - mnemonic:S; + text: "tutti.menu.synchronisations"; + toolTipText: "tutti.menu.synchronisations.tip"; + mnemonic: S; } #menuSynchronisationImport { - text:"tutti.menu.synchronisationImport"; - toolTipText:"tutti.menu.synchronisationImport.tip"; - mnemonic:I; - enabled:false; + text: "tutti.menu.synchronisationImport"; + toolTipText: "tutti.menu.synchronisationImport.tip"; + mnemonic: I; + enabled: false; } #menuSynchronisationExport { - text:"tutti.menu.synchronisationExport"; - toolTipText:"tutti.menu.synchronisationExport.tip"; - mnemonic:E; - enabled:false; + text: "tutti.menu.synchronisationExport"; + toolTipText: "tutti.menu.synchronisationExport.tip"; + mnemonic: E; + enabled: false; } #menuSynchronisationAllegro { - text:"tutti.menu.synchronisationAllegro"; - toolTipText:"tutti.menu.synchronisationAllegro.tip"; - mnemonic:A; - enabled:false; + text: "tutti.menu.synchronisationAllegro"; + toolTipText: "tutti.menu.synchronisationAllegro.tip"; + mnemonic: A; + enabled: false; } #menuHelp { - text:"tutti.menu.help"; - toolTipText:"tutti.menu.help.tip"; - mnemonic:E; + text: "tutti.menu.help"; + toolTipText: "tutti.menu.help.tip"; + mnemonic: E; } #menuHelpSite { - text:"tutti.action.site"; - toolTipText:"tutti.action.site.tip"; - actionIcon:"site"; - mnemonic:S; + text: "tutti.action.site"; + toolTipText: "tutti.action.site.tip"; + actionIcon: "site"; + mnemonic: S; } #menuHelpAbout { - text:"tutti.action.about"; - toolTipText:"tutti.action.about.tip"; - actionIcon:"about"; - mnemonic:A; + text: "tutti.action.about"; + toolTipText: "tutti.action.about.tip"; + actionIcon: "about"; + mnemonic: A; } 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 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUIHandler.java 2012-12-10 02:45:40 UTC (rev 37) @@ -24,16 +24,16 @@ * #L% */ -import fr.ifremer.tutti.persistence.entities.data.Campaign; -import fr.ifremer.tutti.persistence.entities.data.Survey; +import fr.ifremer.tutti.persistence.entities.data.Program; +import fr.ifremer.tutti.persistence.entities.data.ScientificCruise; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.config.TuttiServiceConfigOption; import fr.ifremer.tutti.ui.swing.config.TuttiConfig; import fr.ifremer.tutti.ui.swing.config.TuttiConfigOption; -import fr.ifremer.tutti.ui.swing.content.campaign.EditCampaignUI; -import fr.ifremer.tutti.ui.swing.content.campaign.EditSurveyUI; -import fr.ifremer.tutti.ui.swing.content.campaign.SelectCampaignUI; -import fr.ifremer.tutti.ui.swing.content.catches.CatchesUI; +import fr.ifremer.tutti.ui.swing.content.campaign.EditScientificCruiseUI; +import fr.ifremer.tutti.ui.swing.content.campaign.EditProgramUI; +import fr.ifremer.tutti.ui.swing.content.campaign.SelectScientificCruiseUI; +import fr.ifremer.tutti.ui.swing.content.catches.FishingOperationsUI; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; import jaxx.runtime.SwingUtil; import jaxx.runtime.swing.AboutPanel; @@ -81,8 +81,8 @@ @Override public void propertyChange(PropertyChangeEvent evt) { String propertyName = evt.getPropertyName(); - if (propertyName.equals(TuttiUIContext.PROPERTY_SURVEY_ID) || - propertyName.equals(TuttiUIContext.PROPERTY_CAMPAIGN_ID)) { + if (propertyName.equals(TuttiUIContext.PROPERTY_PROGRAM_ID) || + propertyName.equals(TuttiUIContext.PROPERTY_SCIENTIFIC_CRUISE_ID)) { // change the ui title changeTitle(); @@ -111,14 +111,14 @@ TuttiScreen screen; - if (context.isCampaignContextFilled()) { + if (context.isScientificCruiseContextFilled()) { // direct fill catches screen - screen = TuttiScreen.FILL_CATCHES; + screen = TuttiScreen.FILL_FISHING_OPERATION; } else { - // go to select campaign screen - screen = TuttiScreen.SELECT_CAMPAIGN; + // go to select scientificCruise screen + screen = TuttiScreen.SELECT_SCIENTIFIC_CRUISE; } context.setScreen(screen); @@ -159,8 +159,8 @@ @Override public void run() { - if (TuttiScreen.SELECT_CAMPAIGN == context.getScreen()) { - // Reselect home campaign + if (TuttiScreen.SELECT_SCIENTIFIC_CRUISE == context.getScreen()) { + // Reselect home scientificCruise // SelectCampaignUI homeUI = (SelectCampaignUI) currentBody; // homeUI.getHandler().selectCampaign(); } @@ -230,11 +230,11 @@ } public void showSelectCampaign() { - context.setScreen(TuttiScreen.SELECT_CAMPAIGN); + context.setScreen(TuttiScreen.SELECT_SCIENTIFIC_CRUISE); } public void showFillCatches() { - context.setScreen(TuttiScreen.FILL_CATCHES); + context.setScreen(TuttiScreen.FILL_FISHING_OPERATION); } public void showImportScreen() { @@ -319,46 +319,46 @@ closeCurrentBody(); - String surveyId = context.getSurveyId(); - String campaignId = context.getCampaignId(); + String surveyId = context.getProgramId(); + String campaignId = context.getScientificCruiseId(); JComponent screenUI; String screenTitle; switch (screen) { default: - case SELECT_CAMPAIGN: + case SELECT_SCIENTIFIC_CRUISE: - screenUI = new SelectCampaignUI(context); + screenUI = new SelectScientificCruiseUI(context); screenTitle = _("tutti.title.home"); break; - case EDIT_SURVEY: + case EDIT_PROGRAM: if (surveyId == null) { - screenTitle = _("tutti.title.create.survey"); + screenTitle = _("tutti.title.create.program"); } else { - screenTitle = _("tutti.title.edit.survey"); + screenTitle = _("tutti.title.edit.program"); } - screenUI = new EditSurveyUI(context); + screenUI = new EditProgramUI(context); break; - case EDIT_CAMPAIGN: + case EDIT_SCIENTIFIC_CRUISE: if (campaignId == null) { - screenTitle = _("tutti.title.create.campaign"); + screenTitle = _("tutti.title.create.scientificCruise"); } else { - screenTitle = _("tutti.title.edit.campaign"); + screenTitle = _("tutti.title.edit.scientificCruise"); } - screenUI = new EditCampaignUI(context); + screenUI = new EditScientificCruiseUI(context); break; - case FILL_CATCHES: + case FILL_FISHING_OPERATION: screenTitle = _("tutti.title.fill.catches"); - screenUI = new CatchesUI(context); + screenUI = new FishingOperationsUI(context); break; } @@ -371,7 +371,7 @@ ErrorDialogUI.showError(e); // go back to home - context.setScreen(TuttiScreen.SELECT_CAMPAIGN); + context.setScreen(TuttiScreen.SELECT_SCIENTIFIC_CRUISE); } finally { // free ui @@ -430,39 +430,39 @@ } protected void changeTitle() { - String surveyId = context.getSurveyId(); + String surveyId = context.getProgramId(); String title; if (surveyId == null) { - // no survey selected (so neither campaign) + // no program selected (so neither scientificCruise) - title = _("tutti.title.noSelectedSurvey"); + title = _("tutti.title.noSelectedProgram"); } else { - // selected survey + // selected program - Survey survey = persistenceService.getSurvey(surveyId); + Program program = persistenceService.getProgram(surveyId); - title = _("tutti.title.selectedSurvey", survey.getName()) + " / "; + title = _("tutti.title.selectedProgram", program.getName()) + " / "; - String campaignId = context.getCampaignId(); + String campaignId = context.getScientificCruiseId(); if (campaignId == null) { - // no selected campaign + // no selected scientificCruise - title += _("tutti.title.noSelectedCampaign"); + title += _("tutti.title.noSelectedScientificCruise"); } else { - // selected campaign - Campaign campaign; - campaign = persistenceService.getCampaign(campaignId); + // selected scientificCruise + ScientificCruise scientificCruise; + scientificCruise = persistenceService.getScientificCruise(campaignId); - title += _("tutti.title.selectedCampaign", campaign.getName()); + title += _("tutti.title.selectedScientificCruise", scientificCruise.getName()); } } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiScreen.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiScreen.java 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiScreen.java 2012-12-10 02:45:40 UTC (rev 37) @@ -33,25 +33,25 @@ public enum TuttiScreen { /** - * To select survey and campaign. + * To select program and scientificCruise. * * @since 0.1 */ - SELECT_CAMPAIGN, + SELECT_SCIENTIFIC_CRUISE, /** - * To edit a survey. + * To edit a program. * * @since 0.1 */ - EDIT_SURVEY, + EDIT_PROGRAM, /** - * To edit a campaign. + * To edit a scientificCruise. * * @since 0.1 */ - EDIT_CAMPAIGN, + EDIT_SCIENTIFIC_CRUISE, /** * To edit a protocol. @@ -65,5 +65,5 @@ * * @since 0.1 */ - FILL_CATCHES + FILL_FISHING_OPERATION } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUI.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUI.java 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUI.java 2012-12-10 02:45:40 UTC (rev 37) @@ -39,23 +39,37 @@ H getHandler(); /** + * Pattern to use for short numeric values in editors with max 1 digits. + * + * @since 0.2 + */ + public static final String INT_1_DIGITS_PATTERN = "\\d{0,1}"; + + /** * Pattern to use for short numeric values in editors with max 3 digits. * - * @since 2.3 + * @since 0.1 */ public static final String INT_3_DIGITS_PATTERN = "\\d{0,3}"; /** + * Pattern to use for short numeric values in editors with max 4 digits. + * + * @since 0.2 + */ + public static final String INT_4_DIGITS_PATTERN = "\\d{0,4}"; + + /** * Pattern to use for integer numeric values in editors with max 6 digits. * - * @since 2.3 + * @since 0.1 */ public static final String INT_6_DIGITS_PATTERN = "\\d{0,6}"; /** * Pattern to use for integer numeric values in editors with max 7 digits. * - * @since 2.3 + * @since 0.1 */ public static final String INT_7_DIGITS_PATTERN = "\\d{0,7}"; @@ -63,7 +77,7 @@ * Pattern to use for decimal numeric values with 1 decimal digits in * editors. * - * @since 2.3 + * @since 0.1 */ public static final String DECIMAL1_PATTERN = "\\d{0,6}|\\d{1,6}.\\d{0,1}"; @@ -71,7 +85,7 @@ * Pattern to use for decimal numeric values with 2 decimal digits in * editors. * - * @since 2.3 + * @since 0.1 */ public static final String DECIMAL2_PATTERN = "\\d{0,6}|\\d{1,6}.\\d{0,2}"; @@ -79,7 +93,7 @@ * Pattern to use for decimal numeric values with 3 decimal digits in * editors. * - * @since 2.3 + * @since 0.1 */ public static final String DECIMAL3_PATTERN = "\\d{0,6}|\\d{1,6}.\\d{0,3}"; 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 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java 2012-12-10 02:45:40 UTC (rev 37) @@ -26,8 +26,8 @@ import com.google.common.base.Preconditions; import com.google.common.collect.Sets; -import fr.ifremer.tutti.persistence.entities.data.Campaign; -import fr.ifremer.tutti.persistence.entities.data.Survey; +import fr.ifremer.tutti.persistence.entities.data.ScientificCruise; +import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.service.TuttiService; import fr.ifremer.tutti.service.TuttiServiceContext; @@ -55,13 +55,13 @@ /** Logger. */ private static final Log log = LogFactory.getLog(TuttiUIContext.class); - public static final String PROPERTY_SURVEY_ID = "surveyId"; + public static final String PROPERTY_PROGRAM_ID = "programId"; - public static final String PROPERTY_CAMPAIGN_ID = "campaignId"; + public static final String PROPERTY_SCIENTIFIC_CRUISE_ID = "scientificCruiseId"; public static final String PROPERTY_SCREEN = "screen"; - public static final String PROPERTY_CAMPAIGN_CONTEXT_FILLED = "campaignContextFilled"; + public static final String PROPERTY_SCIENTIFIC_CRUISE_CONTEXT_FILLED = "scientificCruiseContextFilled"; /** * Application context (only one for all the application). @@ -92,18 +92,18 @@ protected final SwingSession swingSession; /** - * Id of last selected survey (can be null if none ever selected). + * Id of last selected program (can be null if none ever selected). * * @since 0.1 */ - protected String surveyId; + protected String programId; /** - * Id of last selected campaign (can be null if none ever selected). + * Id of last selected scientificCruise (can be null if none ever selected). * * @since 0.1 */ - protected String campaignId; + protected String scientificCruiseId; /** * Current screen displayed in ui. @@ -138,43 +138,43 @@ return swingSession; } - public String getSurveyId() { - return surveyId; + public String getProgramId() { + return programId; } - public String getCampaignId() { - return campaignId; + public String getScientificCruiseId() { + return scientificCruiseId; } - public boolean isCampaignContextFilled() { - return StringUtils.isNotBlank(surveyId) && - StringUtils.isNotBlank(campaignId); + public boolean isScientificCruiseContextFilled() { + return StringUtils.isNotBlank(programId) && + StringUtils.isNotBlank(scientificCruiseId); } public TuttiScreen getScreen() { return screen; } - public void setSurveyId(String surveyId) { - boolean oldValue = isCampaignContextFilled(); + public void setProgramId(String programId) { + boolean oldValue = isScientificCruiseContextFilled(); - this.surveyId = surveyId; + this.programId = programId; // always propagate the change - firePropertyChange(PROPERTY_SURVEY_ID, null, surveyId); - firePropertyChange(PROPERTY_CAMPAIGN_CONTEXT_FILLED, - oldValue, isCampaignContextFilled()); + firePropertyChange(PROPERTY_PROGRAM_ID, null, programId); + firePropertyChange(PROPERTY_SCIENTIFIC_CRUISE_CONTEXT_FILLED, + oldValue, isScientificCruiseContextFilled()); } - public void setCampaignId(String campaignId) { - boolean oldValue = isCampaignContextFilled(); + public void setScientificCruiseId(String scientificCruiseId) { + boolean oldValue = isScientificCruiseContextFilled(); - this.campaignId = campaignId; + this.scientificCruiseId = scientificCruiseId; // always propagate the change - firePropertyChange(PROPERTY_CAMPAIGN_ID, null, campaignId); - firePropertyChange(PROPERTY_CAMPAIGN_CONTEXT_FILLED, - oldValue, isCampaignContextFilled()); + firePropertyChange(PROPERTY_SCIENTIFIC_CRUISE_ID, null, scientificCruiseId); + firePropertyChange(PROPERTY_SCIENTIFIC_CRUISE_CONTEXT_FILLED, + oldValue, isScientificCruiseContextFilled()); } public void setScreen(TuttiScreen screen) { @@ -185,67 +185,67 @@ public void open() { - if (surveyId == null) { + if (programId == null) { // load it from config - setSurveyId(getConfig().getSurveyId()); + setProgramId(getConfig().getProgramId()); } - if (campaignId == null) { + if (scientificCruiseId == null) { // load it from config - setCampaignId(getConfig().getCampaignId()); + setScientificCruiseId(getConfig().getScientificCruiseId()); } - //check if surveyId is sane + //check if programId is sane PersistenceService persistenceService = getService(PersistenceService.class); - if (surveyId != null) { + if (programId != null) { - Survey survey = persistenceService.getSurvey(surveyId); - if (survey == null) { + Program program = persistenceService.getProgram(programId); + if (program == null) { // not found in this db - setSurveyId(null); - setCampaignId(null); + setProgramId(null); + setScientificCruiseId(null); if (log.isWarnEnabled()) { - log.warn("Remove invalid surveyId: " + surveyId); + log.warn("Remove invalid programId: " + programId); } } else { if (log.isInfoEnabled()) { - log.info("SurveyId valid: " + surveyId); + log.info("ProgramId valid: " + programId); } - setSurveyId(surveyId); + setProgramId(programId); - // test campaignId - if (campaignId != null) { + // test scientificCruiseId + if (scientificCruiseId != null) { - Campaign campaign = - persistenceService.getCampaign(campaignId); + ScientificCruise campaign = + persistenceService.getScientificCruise(scientificCruiseId); if (campaign != null && - !campaign.getSurvey().getId().equals(surveyId)) { + !campaign.getProgram().getId().equals(programId)) { - // not matchin survey, reset campaign id + // not matchin program, reset scientificCruise id campaign = null; } if (campaign == null) { // not found in this db - setCampaignId(null); + setScientificCruiseId(null); if (log.isWarnEnabled()) { - log.warn("Remove invalid campaignId: " + campaignId); + log.warn("Remove invalid scientificCruiseId: " + scientificCruiseId); } } else { if (log.isInfoEnabled()) { - log.info("CampaignId valid: " + campaignId); + log.info("ScientificCruiseId valid: " + scientificCruiseId); } } } @@ -255,11 +255,11 @@ // save back to config saveContextToConfig(); - // list when surveyId or campaingId change to save the configuration + // list when programId or campaingId change to save the configuration addPropertyChangeListener(new PropertyChangeListener() { Set<String> acceptedProperties = Sets.newHashSet( - PROPERTY_SURVEY_ID, PROPERTY_CAMPAIGN_ID); + PROPERTY_PROGRAM_ID, PROPERTY_SCIENTIFIC_CRUISE_ID); @Override public void propertyChange(PropertyChangeEvent evt) { @@ -275,8 +275,8 @@ public void close() { // Clear data references - surveyId = null; - campaignId = null; + programId = null; + scientificCruiseId = null; IOUtils.closeQuietly(serviceContext); @@ -292,11 +292,11 @@ protected void saveContextToConfig() { if (log.isInfoEnabled()) { - log.info("Save config (surveyId: " + surveyId + ", campaignId: " + - campaignId + ")"); + log.info("Save config (programId: " + programId + ", scientificCruiseId: " + + scientificCruiseId + ")"); } - config.setSurveyId(surveyId); - config.setCampaignId(campaignId); + config.setProgramId(programId); + config.setScientificCruiseId(scientificCruiseId); config.save(); } } 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 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfig.java 2012-12-10 02:45:40 UTC (rev 37) @@ -122,12 +122,12 @@ return applicationConfig.getOptionAsBoolean(TuttiConfigOption.SHOW_NUMBER_EDITOR_BUTTON.getKey()); } - public String getSurveyId() { - return applicationConfig.getOption(TuttiConfigOption.SURVEY_ID.getKey()); + public String getProgramId() { + return applicationConfig.getOption(TuttiConfigOption.PROGRAM_ID.getKey()); } - public String getCampaignId() { - return applicationConfig.getOption(TuttiConfigOption.CAMPAIGN_ID.getKey()); + public String getScientificCruiseId() { + return applicationConfig.getOption(TuttiConfigOption.SCIENTIFIC_CRUISE_ID.getKey()); } public KeyStroke getShortCut(String actionName) { @@ -160,26 +160,26 @@ return serviceConfig.getDataDirectory(); } - public void setSurveyId(String surveyId) { - if (surveyId == null) { + public void setProgramId(String programId) { + if (programId == null) { Properties options = applicationConfig.getOptions(); - options.remove(TuttiConfigOption.SURVEY_ID.getKey()); + options.remove(TuttiConfigOption.PROGRAM_ID.getKey()); applicationConfig.setOptions(options); } else { - applicationConfig.setOption(TuttiConfigOption.SURVEY_ID.getKey(), surveyId); + applicationConfig.setOption(TuttiConfigOption.PROGRAM_ID.getKey(), programId); } } - public void setCampaignId(String campaignId) { - if (campaignId == null) { + public void setScientificCruiseId(String scientificCruiseId) { + if (scientificCruiseId == null) { Properties options = applicationConfig.getOptions(); - options.remove(TuttiConfigOption.CAMPAIGN_ID.getKey()); + options.remove(TuttiConfigOption.SCIENTIFIC_CRUISE_ID.getKey()); applicationConfig.setOptions(options); } else { - applicationConfig.setOption(TuttiConfigOption.CAMPAIGN_ID.getKey(), campaignId); + applicationConfig.setOption(TuttiConfigOption.SCIENTIFIC_CRUISE_ID.getKey(), scientificCruiseId); } } } 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 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigOption.java 2012-12-10 02:45:40 UTC (rev 37) @@ -43,13 +43,13 @@ "${tutti.data.directory}/tuttiUI.xml", File.class ), - SURVEY_ID("tutti.surveyId", - n_("tutti.config.surveyId"), + PROGRAM_ID("tutti.programId", + n_("tutti.config.programId"), null, String.class ), - CAMPAIGN_ID("tutti.campaignId", - n_("tutti.config.campaignId"), + SCIENTIFIC_CRUISE_ID("tutti.scientificCruiseId", + n_("tutti.config.scientificCruiseId"), null, String.class ), Deleted: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditCampaignUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditCampaignUI.css 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditCampaignUI.css 2012-12-10 02:45:40 UTC (rev 37) @@ -1,172 +0,0 @@ -/* - * #%L - * Tutti :: UI - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2012 Ifremer - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -JToolBar { - floatable:false; -} - -BeanComboBox { - showReset:true; - i18nPrefix:"tutti.property."; - bean:{model}; -} - -BeanListHeader { - showReset:true; - i18nPrefix:"tutti.property."; -} - -JList { - selectionMode:{ListSelectionModel.MULTIPLE_INTERVAL_SELECTION}; - model:{new DefaultListModel()}; -} - -#splitPane { - orientation:{JSplitPane.VERTICAL_SPLIT}; - resizeWeight:0.3; - oneTouchExpandable:true; - continuousLayout:true; -} - -#nameLabel { - text:"tutti.label.campaign.name"; - labelFor:{nameField}; -} - -#nameField { - text:{model.getName()}; -} - -#surveyPartLabel { - text:"tutti.label.campaign.surveyPart"; - labelFor:{surveyPartField}; -} - -#surveyPartField { - text:{model.getSurveyPart()}; -} - -#countryLabel { - text:"tutti.label.campaign.country"; - labelFor:{countryComboBox}; -} - -#countryComboBox { - property:"country"; - selectedItem:{model.getCountry()}; -} - -#surveyLabel { - text:"tutti.label.campaign.survey"; - labelFor:{surveyComboBox}; -} - -#surveyComboBox { - property:"survey"; - selectedItem:{model.getSurvey()}; -} - -#vesselPane { - horizontalScrollBarPolicy:{JScrollPane.HORIZONTAL_SCROLLBAR_NEVER}; - verticalScrollBarPolicy:{JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED}; -} - -#vesselHeader { - labelText:{_("tutti.label.list.vessel")}; - list:{vesselList}; - beanType:{Vessel.class}; -} - -#gearPane { - horizontalScrollBarPolicy:{JScrollPane.HORIZONTAL_SCROLLBAR_NEVER}; - verticalScrollBarPolicy:{JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED}; -} - -#gearHeader { - labelText:{_("tutti.label.list.gear")}; - list:{gearList}; - beanType:{Gear.class}; -} - -#headOfMissionPane { - horizontalScrollBarPolicy:{JScrollPane.HORIZONTAL_SCROLLBAR_NEVER}; - verticalScrollBarPolicy:{JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED}; -} - -#headOfMissionHeader { - labelText:{_("tutti.label.list.headOfMission")}; - list:{headOfMissionList}; - beanType:{TuttiUser.class}; -} - -#headOfSortRoomPane { - horizontalScrollBarPolicy:{JScrollPane.HORIZONTAL_SCROLLBAR_NEVER}; - verticalScrollBarPolicy:{JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED}; -} - -#headOfSortRoomHeader { - labelText:{_("tutti.label.list.headOfSortRoom")}; - list:{headOfSortRoomList}; - beanType:{TuttiUser.class}; -} - -#commentPane { - columnHeaderView:{new JLabel(_("tutti.label.comment"))}; - minimumSize:{new Dimension(10,50)}; -} - -#commentField { - text:{model.getComment()}; -} - -#saveButton { - actionIcon:"save"; - text:"tutti.action.save"; - enabled:{model.isModify() && model.isValid()}; -} - -#cancelButton { - actionIcon:"cancel"; - text:"tutti.action.cancel"; -} - -#importCasinoButton { - actionIcon:"casino-import"; - text:"tutti.action.casino-import"; -} - -#messagePanel { - border:{BorderFactory.createTitledBorder("Messages")}; - height:200; - width:500; -} - -#errorTable { - rowSelectionAllowed:true; - autoCreateRowSorter:true; - autoResizeMode:2; - cellSelectionEnabled:false; - selectionMode:0; - model:{errorTableModel}; -} Deleted: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditCampaignUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditCampaignUI.jaxx 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditCampaignUI.jaxx 2012-12-10 02:45:40 UTC (rev 37) @@ -1,212 +0,0 @@ -<!-- - #%L - Tutti :: UI - $Id$ - $HeadURL$ - %% - Copyright (C) 2012 Ifremer - %% - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as - published by the Free Software Foundation, either version 3 of the - License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public - License along with this program. If not, see - <http://www.gnu.org/licenses/gpl-3.0.html>. - #L% - --> -<JPanel id='homePanel' layout='{new BorderLayout()}' - implements='fr.ifremer.tutti.ui.swing.TuttiUI<EditCampaignUIModel, EditCampaignUIHandler>'> - - <import> - fr.ifremer.tutti.persistence.entities.data.Survey - fr.ifremer.tutti.persistence.entities.referential.Country - fr.ifremer.tutti.persistence.entities.referential.Gear - fr.ifremer.tutti.persistence.entities.referential.TuttiUser - fr.ifremer.tutti.persistence.entities.referential.Vessel - fr.ifremer.tutti.ui.swing.TuttiUIContext - - jaxx.runtime.swing.editor.bean.BeanComboBox - jaxx.runtime.swing.editor.bean.BeanListHeader - - jaxx.runtime.validator.swing.SwingValidatorUtil - jaxx.runtime.validator.swing.SwingValidatorMessageTableModel - - javax.swing.DefaultListModel - javax.swing.ListSelectionModel - - java.awt.Dimension - - static org.nuiton.i18n.I18n._ - static jaxx.runtime.SwingUtil.getStringValue - </import> - - <script><![CDATA[ - - public EditCampaignUI(TuttiUIContext context) { - EditCampaignUIHandler handler = new EditCampaignUIHandler(context, this); - setContextValue(handler); - handler.beforeInitUI(); - } - - protected void $afterCompleteSetup() { - handler.afterInitUI(); - } - ]]></script> - - <EditCampaignUIHandler id='handler' - initializer='getContextValue(EditCampaignUIHandler.class)'/> - - <EditCampaignUIModel id='model' - initializer='getContextValue(EditCampaignUIModel.class)'/> - - <SwingValidatorMessageTableModel id='errorTableModel'/> - - <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='surveyPart' component='surveyPartField'/> - <field name='country' component='countryComboBox'/> - <field name='survey' component='surveyComboBox'/> - <field name='vessel' component='vesselPane'/> - <field name='gear' component='gearPane'/> - <field name='headOfMission' component='headOfMissionPane'/> - <field name='headOfSortRoom' component='headOfSortRoomPane'/> - </BeanValidator> - - <JSplitPane id='splitPane' constraints='BorderLayout.CENTER'> - <Table fill='both'> - - <!-- campaign survey --> - <row> - <cell anchor='west'> - <JLabel id='surveyLabel'/> - </cell> - <cell weightx='1.0'> - <BeanComboBox id='surveyComboBox' constructorParams='this' - genericType='Survey'/> - </cell> - </row> - - <!-- campaign country --> - <row> - <cell> - <JLabel id='countryLabel'/> - </cell> - <cell> - <BeanComboBox id='countryComboBox' constructorParams='this' - genericType='Country'/> - </cell> - </row> - - <!-- campaign name --> - <row> - <cell> - <JLabel id='nameLabel'/> - </cell> - <cell> - <JTextField id='nameField' - onKeyReleased='handler.setText(event, "name")'/> - </cell> - </row> - - <!-- campaign survey part --> - <row> - <cell> - <JLabel id='surveyPartLabel'/> - </cell> - <cell> - <JTextField id='surveyPartField' - onKeyReleased='handler.setText(event, "surveyPart")'/> - </cell> - </row> - - <!-- campaign vessel / gear --> - <row weighty='0.3'> - <cell columns='2'> - <JPanel layout='{new GridLayout(1, 0)}'> - <JScrollPane id='vesselPane' columnHeaderView="{vesselHeader}" - onFocusGained='vesselList.requestFocus()'> - <JList id='vesselList' - onValueChanged='handler.selectListData(event, "vessel")'/> - <BeanListHeader id='vesselHeader' genericType='Vessel'/> - </JScrollPane> - <JScrollPane id='gearPane' columnHeaderView="{gearHeader}" - onFocusGained='gearList.requestFocus()'> - <JList id='gearList' - onValueChanged='handler.selectListData(event, "gear")'/> - <BeanListHeader id='gearHeader' genericType='Gear'/> - </JScrollPane> - </JPanel> - </cell> - </row> - - <!-- campaign headOfMission / headOfSortRoom --> - <row weighty='0.3'> - <cell columns='2'> - <JPanel layout='{new GridLayout(1, 0)}'> - - <JScrollPane id='headOfMissionPane' - columnHeaderView="{headOfMissionHeader}" - onFocusGained='headOfMissionList.requestFocus()'> - <JList id='headOfMissionList' - onValueChanged='handler.selectListData(event, "headOfMission")'/> - <BeanListHeader id='headOfMissionHeader' - genericType='TuttiUser'/> - </JScrollPane> - <JScrollPane id='headOfSortRoomPane' - columnHeaderView="{headOfSortRoomHeader}" - onFocusGained='headOfSortRoomList.requestFocus()'> - <JList id='headOfSortRoomList' - onValueChanged='handler.selectListData(event, "headOfSortRoom")'/> - <BeanListHeader id='headOfSortRoomHeader' - genericType='TuttiUser'/> - </JScrollPane> - </JPanel> - </cell> - </row> - - <!-- campaign comment --> - <row weighty='0.3'> - <cell columns='2'> - <JScrollPane id='commentPane' - onFocusGained='commentField.requestFocus()'> - <JTextArea id='commentField' - onKeyReleased='handler.setText(event, "comment")'/> - </JScrollPane> - </cell> - </row> - - <!-- Import Actions --> - <row> - <cell columns='2'> - <JButton id='importCasinoButton' - onActionPerformed='handler.importCasino()'/> - </cell> - </row> - - <!-- Form Actions --> - <row> - <cell columns='2'> - <JPanel layout='{new GridLayout(1, 0)}'> - <JButton id='cancelButton' onActionPerformed='handler.cancel()'/> - <JButton id='saveButton' onActionPerformed='handler.save()'/> - </JPanel> - </cell> - </row> - </Table> - <JPanel id='messagePanel' layout='{new GridLayout()}'> - <JScrollPane columnHeaderView='{errorTable.getTableHeader()}'> - <JTable id='errorTable' /> - </JScrollPane> - </JPanel> - </JSplitPane> - -</JPanel> \ No newline at end of file Deleted: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditCampaignUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditCampaignUIHandler.java 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditCampaignUIHandler.java 2012-12-10 02:45:40 UTC (rev 37) @@ -1,158 +0,0 @@ -package fr.ifremer.tutti.ui.swing.content.campaign; - -/* - * #%L - * Tutti :: UI - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2012 Ifremer - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import fr.ifremer.tutti.persistence.entities.TuttiEntities; -import fr.ifremer.tutti.persistence.entities.data.Campaign; -import fr.ifremer.tutti.persistence.entities.data.Survey; -import fr.ifremer.tutti.persistence.entities.referential.TuttiUser; -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.validator.swing.SwingValidatorMessageTableRenderer; -import jaxx.runtime.validator.swing.SwingValidatorUtil; - -import java.util.List; - -/** - * Handler of UI {@link EditCampaignUI}. - * - * @author tchemit <chemit@codelutin.com> - * @since 0.1 - */ -public class EditCampaignUIHandler extends AbstractTuttiUIHandler<EditCampaignUIModel> { - - private final EditCampaignUI ui; - - private final PersistenceService persistenceService; - - public EditCampaignUIHandler(TuttiUIContext context, EditCampaignUI ui) { - super(context); - this.ui = ui; - persistenceService = context.getService(PersistenceService.class); - } - - @Override - public void beforeInitUI() { - - EditCampaignUIModel model = new EditCampaignUIModel(); - - String campaignId = context.getCampaignId(); - if (campaignId == null) { - - Survey survey = - persistenceService.getSurvey(context.getSurveyId()); - model.setSurvey(survey); - } else { - - // load existing survey - Campaign campaign = persistenceService.getCampaign(campaignId); - - model.fromBean(campaign); - } - listModelIsModify(model); - ui.setContextValue(model); - } - - @Override - public void afterInitUI() { - - List<TuttiUser> users = persistenceService.getAllTuttiUser(); - - EditCampaignUIModel model = ui.getModel(); - - initBeanComboBox(ui.getSurveyComboBox(), - persistenceService.getAllSurvey(), - model.getSurvey()); - - initBeanComboBox(ui.getCountryComboBox(), - persistenceService.getAllCountry(), - model.getCountry()); - - initBeanList(ui.getVesselHeader(), - persistenceService.getAllVessel(), - model.getVessel()); - - initBeanList(ui.getGearHeader(), - persistenceService.getAllGear(), - model.getGear()); - - initBeanList(ui.getHeadOfMissionHeader(), - users, - model.getHeadOfMission()); - - initBeanList(ui.getHeadOfSortRoomHeader(), - users, - model.getHeadOfSortRoom()); - - SwingValidatorUtil.installUI(ui.getErrorTable(), - new SwingValidatorMessageTableRenderer()); - - listenValidatorValid(ui.getValidator(), model); - - // if new trait can already cancel his creation - model.setModify(model.isCreate()); - } - - @Override - public void onCloseUI() { - } - - @Override - protected EditCampaignUIModel getModel() { - return ui.getModel(); - } - - public void cancel() { - - context.setScreen(TuttiScreen.SELECT_CAMPAIGN); - } - - public void save() { - - EditCampaignUIModel model = ui.getModel(); - - Campaign bean = model.toBean(); - - Campaign saved; - if (TuttiEntities.isNew(bean)) { - - saved = persistenceService.createCampaign(bean); - } else { - saved = persistenceService.saveCampaign(bean); - } - - context.setSurveyId(saved.getSurvey().getId()); - context.setCampaignId(saved.getId()); - - context.setScreen(TuttiScreen.SELECT_CAMPAIGN); - } - - public void importCasino() { - - } - -} Deleted: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditCampaignUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditCampaignUIModel.java 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditCampaignUIModel.java 2012-12-10 02:45:40 UTC (rev 37) @@ -1,182 +0,0 @@ -package fr.ifremer.tutti.ui.swing.content.campaign; - -/* - * #%L - * Tutti :: UI - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2012 Ifremer - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import fr.ifremer.tutti.persistence.entities.data.Campaign; -import fr.ifremer.tutti.persistence.entities.data.Survey; -import fr.ifremer.tutti.persistence.entities.referential.Country; -import fr.ifremer.tutti.persistence.entities.referential.Gear; -import fr.ifremer.tutti.persistence.entities.referential.TuttiUser; -import fr.ifremer.tutti.persistence.entities.referential.Vessel; -import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; -import org.nuiton.util.beans.Binder; -import org.nuiton.util.beans.BinderFactory; - -import java.util.List; - -/** - * Model of UI {@link EditCampaignUI}. - * - * @author tchemit <chemit@codelutin.com> - * @since 0.1O - */ -public class EditCampaignUIModel extends AbstractTuttiBeanUIModel<Campaign, EditCampaignUIModel> { - - private static final long serialVersionUID = 1L; - - public static final String PROPERTY_SURVEY = "survey"; - - public static final String PROPERTY_NAME = "name"; - - public static final String PROPERTY_COMMENT = "comment"; - - public static final String PROPERTY_COUNTRY = "country"; - - public static final String PROPERTY_SURVEY_PART = "surveyPart"; - - public static final String PROPERTY_VESSEL = "vessel"; - - public static final String PROPERTY_GEAR = "gear"; - - public static final String PROPERTY_HEAD_OF_MISSION = "headOfMission"; - - public static final String PROPERTY_HEAD_OF_SORT_ROOM = "headOfSortRoom"; - - protected Survey survey; - - protected Country country; - - protected String name; - - protected String surveyPart; - - protected List<Vessel> vessel; - - protected List<Gear> gear; - - protected List<TuttiUser> headOfMission; - - protected List<TuttiUser> headOfSortRoom; - - protected String comment; - - protected static Binder<EditCampaignUIModel, Campaign> toBeanBinder = - BinderFactory.newBinder(EditCampaignUIModel.class, - Campaign.class); - - protected static Binder<Campaign, EditCampaignUIModel> fromBeanBinder = - BinderFactory.newBinder(Campaign.class, EditCampaignUIModel.class); - - public EditCampaignUIModel() { - super(Campaign.class, fromBeanBinder, toBeanBinder); - } - - public Survey getSurvey() { - return survey; - } - - public void setSurvey(Survey survey) { - Object oldValue = getSurvey(); - this.survey = survey; - firePropertyChange(PROPERTY_SURVEY, oldValue, survey); - } - - public String getName() { - return name; - } - - public void setName(String name) { - Object oldValue = getName(); - this.name = name; - firePropertyChange(PROPERTY_NAME, oldValue, name); - } - - public String getComment() { - return comment; - } - - public void setComment(String comment) { - Object oldValue = getComment(); - this.comment = comment; - firePropertyChange(PROPERTY_COMMENT, oldValue, comment); - } - - public Country getCountry() { - return country; - } - - public void setCountry(Country country) { - Object oldValue = getCountry(); - this.country = country; - firePropertyChange(PROPERTY_COUNTRY, oldValue, country); - } - - public String getSurveyPart() { - return surveyPart; - } - - public void setSurveyPart(String surveyPart) { - Object oldValue = getSurveyPart(); - this.surveyPart = surveyPart; - firePropertyChange(PROPERTY_SURVEY_PART, oldValue, surveyPart); - } - - public List<Vessel> getVessel() { - return vessel; - } - - public void setVessel(List<Vessel> vessel) { - this.vessel = vessel; - firePropertyChange(PROPERTY_VESSEL, null, vessel); - } - - public List<Gear> getGear() { - return gear; - } - - public void setGear(List<Gear> gear) { - this.gear = gear; - firePropertyChange(PROPERTY_GEAR, null, gear); - } - - public List<TuttiUser> getHeadOfMission() { - return headOfMission; - } - - public void setHeadOfMission(List<TuttiUser> headOfMission) { - this.headOfMission = headOfMission; - firePropertyChange(PROPERTY_HEAD_OF_MISSION, null, headOfMission); - } - - public List<TuttiUser> getHeadOfSortRoom() { - return headOfSortRoom; - } - - public void setHeadOfSortRoom(List<TuttiUser> headOfSortRoom) { - this.headOfSortRoom = headOfSortRoom; - firePropertyChange(PROPERTY_HEAD_OF_SORT_ROOM, null, headOfSortRoom); - } - -} \ No newline at end of file Copied: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditProgramUI.css (from rev 36, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditSurveyUI.css) =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditProgramUI.css (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditProgramUI.css 2012-12-10 02:45:40 UTC (rev 37) @@ -0,0 +1,94 @@ +/* + * #%L + * Tutti :: UI + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +BeanComboBox { + showReset: true; + i18nPrefix: "tutti.property."; + bean: {model}; +} + +#splitPane { + orientation: {JSplitPane.VERTICAL_SPLIT}; + resizeWeight: 0.3; + oneTouchExpandable: true; + continuousLayout: true; +} + +#form { + border: {BorderFactory.createTitledBorder((String)null)}; +} + +#nameLabel { + text: "tutti.label.program.name"; + labelFor: {nameField}; +} + +#nameField { + text: {model.getName()}; +} + +#commentPane { + columnHeaderView: {new JLabel(_("tutti.label.comment"))}; + minimumSize: {new Dimension(10,50)}; +} + +#commentField { + text: {getStringValue(model.getComment())}; +} + +#zoneLabel { + text: "tutti.label.program.zone"; + labelFor: {zoneComboBox}; +} + +#zoneComboBox { + property: "zone"; + selectedItem: {model.getZone()}; +} + +#saveButton { + text: "tutti.action.save"; + enabled: {model.isModify() && model.isValid()}; + actionIcon: "save"; +} + +#cancelButton { + text: "tutti.action.cancel"; + actionIcon: "cancel"; +} + +#messagePanel { + border: {BorderFactory.createTitledBorder("Messages")}; + height: 200; + width: 500; +} + +#errorTable { + rowSelectionAllowed: true; + autoCreateRowSorter: true; + autoResizeMode: 2; + cellSelectionEnabled: false; + selectionMode: 0; + model: {errorTableModel}; +} Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditProgramUI.css ___________________________________________________________________ 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/content/campaign/EditProgramUI.jaxx (from rev 36, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditSurveyUI.jaxx) =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditProgramUI.jaxx (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditProgramUI.jaxx 2012-12-10 02:45:40 UTC (rev 37) @@ -0,0 +1,125 @@ +<!-- + #%L + Tutti :: UI + $Id$ + $HeadURL$ + %% + Copyright (C) 2012 Ifremer + %% + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public + License along with this program. If not, see + <http://www.gnu.org/licenses/gpl-3.0.html>. + #L% + --> +<JPanel id='homePanel' layout='{new BorderLayout()}' + implements='fr.ifremer.tutti.ui.swing.TuttiUI<EditProgramUIModel, EditProgramUIHandler>'> + + <import> + fr.ifremer.tutti.persistence.entities.referential.Zone + fr.ifremer.tutti.ui.swing.TuttiUIContext + + jaxx.runtime.swing.editor.bean.BeanComboBox + jaxx.runtime.validator.swing.SwingValidatorUtil + jaxx.runtime.validator.swing.SwingValidatorMessageTableModel + + java.awt.Dimension + + static org.nuiton.i18n.I18n._ + static jaxx.runtime.SwingUtil.getStringValue + + </import> + + <script><![CDATA[ + + public EditProgramUI(TuttiUIContext context) { + EditProgramUIHandler handler = new EditProgramUIHandler(context, this); + setContextValue(handler); + handler.beforeInitUI(); + } + + protected void $afterCompleteSetup() { + handler.afterInitUI(); + } + ]]></script> + + <EditProgramUIHandler id='handler' + initializer='getContextValue(EditProgramUIHandler.class)'/> + + <EditProgramUIModel id='model' + initializer='getContextValue(EditProgramUIModel.class)'/> + + <SwingValidatorMessageTableModel id='errorTableModel'/> + + <BeanValidator id='validator' bean='model' errorTableModel='errorTableModel' + uiClass='jaxx.runtime.validator.swing.ui.ImageValidationUI'> + <field name='name' component='nameField'/> + <field name='zone' component='zoneComboBox'/> + <field name='comment' component='commentField'/> + </BeanValidator> + + <JSplitPane id='splitPane' constraints='BorderLayout.CENTER'> + + <Table id='form' fill='both'> + + <!-- program name --> + <row> + <cell anchor='west'> + <JLabel id='nameLabel'/> + </cell> + <cell weightx='1.0'> + <JTextField id='nameField' + onKeyReleased='handler.setText(event, "name")'/> + </cell> + </row> + + <!-- program zone --> + <row> + <cell> + <JLabel id='zoneLabel'/> + </cell> + <cell> + <BeanComboBox id='zoneComboBox' constructorParams='this' + genericType='Zone'/> + </cell> + </row> + + <!-- program comment --> + <row weighty='0.8'> + <cell columns='2'> + <JScrollPane id='commentPane' + onFocusGained='commentField.requestFocus()'> + <JTextArea id='commentField' + onKeyReleased='handler.setText(event, "comment")'/> + </JScrollPane> + </cell> + </row> + + <!-- actions --> + <row anchor='south'> + <cell columns='2'> + <JPanel layout='{new GridLayout(1, 0)}'> + <JButton id='cancelButton' onActionPerformed='handler.cancel()'/> + <JButton id='saveButton' onActionPerformed='handler.save()'/> + </JPanel> + </cell> + </row> + </Table> + + <!-- validation messages --> + <JPanel id='messagePanel' layout='{new GridLayout()}'> + <JScrollPane columnHeaderView='{errorTable.getTableHeader()}'> + <JTable id='errorTable' /> + </JScrollPane> + </JPanel> + </JSplitPane> +</JPanel> \ No newline at end of file Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditProgramUI.jaxx ___________________________________________________________________ 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/content/campaign/EditProgramUIHandler.java (from rev 36, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditSurveyUIHandler.java) =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditProgramUIHandler.java (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditProgramUIHandler.java 2012-12-10 02:45:40 UTC (rev 37) @@ -0,0 +1,135 @@ +package fr.ifremer.tutti.ui.swing.content.campaign; + +/* + * #%L + * Tutti :: UI + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ifremer.tutti.persistence.entities.data.Program; +import fr.ifremer.tutti.persistence.entities.TuttiEntities; +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.validator.swing.SwingValidatorMessageTableRenderer; +import jaxx.runtime.validator.swing.SwingValidatorUtil; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * Handler of UI {@link EditProgramUI}. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.1 + */ +public class EditProgramUIHandler extends AbstractTuttiUIHandler<EditProgramUIModel> { + + /** Logger. */ + private static final Log log = + LogFactory.getLog(EditProgramUIHandler.class); + + private final EditProgramUI ui; + + private final PersistenceService persistenceService; + + public EditProgramUIHandler(TuttiUIContext context, EditProgramUI ui) { + super(context); + this.ui = ui; + persistenceService = context.getService(PersistenceService.class); + } + + @Override + public void beforeInitUI() { + + EditProgramUIModel model = new EditProgramUIModel(); + + String surveyId = context.getProgramId(); + if (surveyId == null) { + + if (log.isInfoEnabled()) { + log.info("Edit new program"); + } + } else { + + if (log.isInfoEnabled()) { + log.info("Edit existing program " + surveyId); + } + // load existing program + Program program = persistenceService.getProgram(surveyId); + + model.fromBean(program); + } + + listModelIsModify(model); + + ui.setContextValue(model); + } + + @Override + public void afterInitUI() { + + EditProgramUIModel model = ui.getModel(); + initBeanComboBox(ui.getZoneComboBox(), + persistenceService.getAllZone(), + model.getZone()); + + SwingValidatorUtil.installUI(ui.getErrorTable(), + new SwingValidatorMessageTableRenderer()); + + listenValidatorValid(ui.getValidator(), model); + + // if new program can already cancel his creation + model.setModify(model.isCreate()); + } + + @Override + public void onCloseUI() { + ui.getValidator().setBean(null); + } + + @Override + protected EditProgramUIModel getModel() { + return ui.getModel(); + } + + public void cancel() { + context.setScreen(TuttiScreen.SELECT_SCIENTIFIC_CRUISE); + } + + public void save() { + + EditProgramUIModel model = ui.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_SCIENTIFIC_CRUISE); + } +} Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditProgramUIHandler.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/content/campaign/EditProgramUIModel.java (from rev 36, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditSurveyUIModel.java) =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditProgramUIModel.java (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditProgramUIModel.java 2012-12-10 02:45:40 UTC (rev 37) @@ -0,0 +1,97 @@ +package fr.ifremer.tutti.ui.swing.content.campaign; + +/* + * #%L + * Tutti :: UI + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ifremer.tutti.persistence.entities.data.Program; +import fr.ifremer.tutti.persistence.entities.referential.Zone; +import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; +import org.nuiton.util.beans.Binder; +import org.nuiton.util.beans.BinderFactory; + +/** + * Bean to edit a program. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.1 + */ +public class EditProgramUIModel extends AbstractTuttiBeanUIModel<Program, EditProgramUIModel> { + + private static final long serialVersionUID = 1L; + + public static final String PROPERTY_ZONE = "zone"; + + public static final String PROPERTY_COMMENT = "comment"; + + public static final String PROPERTY_NAME = "name"; + + protected String name; + + protected String comment; + + protected Zone zone; + + protected static Binder<EditProgramUIModel, Program> toBeanBinder = + BinderFactory.newBinder(EditProgramUIModel.class, + Program.class); + + protected static Binder<Program, EditProgramUIModel> fromBeanBinder = + BinderFactory.newBinder(Program.class, EditProgramUIModel.class); + + + public EditProgramUIModel() { + super(Program.class, fromBeanBinder, toBeanBinder); + } + + public String getName() { + return name; + } + + public void setName(String name) { + Object oldValue = getName(); + this.name = name; + firePropertyChange(PROPERTY_NAME, oldValue, name); + } + + public String getComment() { + return comment; + } + + public void setComment(String comment) { + Object oldValue = getComment(); + this.comment = comment; + firePropertyChange(PROPERTY_COMMENT, oldValue, comment); + } + + public Zone getZone() { + return zone; + } + + public void setZone(Zone zone) { + Object oldValue = getZone(); + this.zone = zone; + firePropertyChange(PROPERTY_ZONE, oldValue, zone); + } + +} Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditProgramUIModel.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/content/campaign/EditScientificCruiseUI.css (from rev 36, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditCampaignUI.css) =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditScientificCruiseUI.css (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditScientificCruiseUI.css 2012-12-10 02:45:40 UTC (rev 37) @@ -0,0 +1,223 @@ +/* + * #%L + * Tutti :: UI + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +JToolBar { + floatable: false; +} + +BeanComboBox { + showReset: true; + i18nPrefix: "tutti.property."; + bean: {model}; +} + +BeanListHeader { + showReset: true; + i18nPrefix: "tutti.property."; +} + +JList { + selectionMode: {ListSelectionModel.MULTIPLE_INTERVAL_SELECTION}; + model: {new DefaultListModel()}; +} + +NumberEditor { + autoPopup: {handler.getConfig().isAutoPopupNumberEditor()}; + showPopupButton: {handler.getConfig().isShowNumberEditorButton()}; + bean: {model}; + showReset: true; +} + +#splitPane { + orientation: {JSplitPane.VERTICAL_SPLIT}; + resizeWeight: 0.3; + oneTouchExpandable: true; + continuousLayout: true; +} + +#nameLabel { + text: "tutti.label.scientificCruise.name"; + labelFor: {nameField}; +} + +#nameField { + text: {model.getName()}; +} + +#yearLabel { + text: "tutti.label.scientificCruise.year"; + labelFor: {yearField}; +} + +#yearField { + property: "year"; + model: {model.getYear()}; + useFloat: false; + numberPattern: {INT_4_DIGITS_PATTERN}; +} + +#surveyPartLabel { + text: "tutti.label.scientificCruise.surveyPart"; + labelFor: {surveyPartField}; +} + +#surveyPartField { + text: {model.getSurveyPart()}; +} + +#countryLabel { + text: "tutti.label.scientificCruise.country"; + labelFor: {countryComboBox}; +} + +#countryComboBox { + property: "country"; + selectedItem: {model.getCountry()}; +} + +#programLabel { + text: "tutti.label.scientificCruise.program"; + labelFor: {surveyComboBox}; +} + +#surveyComboBox { + property: "program"; + selectedItem: {model.getProgram()}; +} + +#beginDateLabel { + text: "tutti.label.scientificCruise.beginDate"; + labelFor: {beginDateField}; +} + +#beginDateField { + date: {model.getBeginDate()}; + formats: {"dd/MM/yyyy"}; +} + +#endDateLabel { + text: "tutti.label.scientificCruise.endDate"; + labelFor: {endDateField}; +} + +#endDateField { + date: {model.getEndDate()}; + formats: {"dd/MM/yyyy"}; +} + +#pocheLabel { + text: "tutti.label.scientificCruise.poche"; + labelFor: {pocheField}; +} + +#pocheField { + property: "poche"; + model: {model.getPoche()}; + useFloat: false; + numberPattern: {INT_1_DIGITS_PATTERN}; +} + +#vesselPane { + horizontalScrollBarPolicy: {JScrollPane.HORIZONTAL_SCROLLBAR_NEVER}; + verticalScrollBarPolicy: {JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED}; +} + +#vesselHeader { + labelText: {_("tutti.label.list.vessel")}; + list: {vesselList}; + beanType: {Vessel.class}; +} + +#gearPane { + horizontalScrollBarPolicy: {JScrollPane.HORIZONTAL_SCROLLBAR_NEVER}; + verticalScrollBarPolicy: {JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED}; +} + +#gearHeader { + labelText: {_("tutti.label.list.gear")}; + list: {gearList}; + beanType: {Gear.class}; +} + +#headOfMissionPane { + horizontalScrollBarPolicy: {JScrollPane.HORIZONTAL_SCROLLBAR_NEVER}; + verticalScrollBarPolicy: {JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED}; +} + +#headOfMissionHeader { + labelText: {_("tutti.label.list.headOfMission")}; + list: {headOfMissionList}; + beanType: {Person.class}; +} + +#headOfSortRoomPane { + horizontalScrollBarPolicy: {JScrollPane.HORIZONTAL_SCROLLBAR_NEVER}; + verticalScrollBarPolicy: {JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED}; +} + +#headOfSortRoomHeader { + labelText: {_("tutti.label.list.headOfSortRoom")}; + list: {headOfSortRoomList}; + beanType: {Person.class}; +} + +#commentPane { + columnHeaderView: {new JLabel(_("tutti.label.comment"))}; + minimumSize: {new Dimension(10,50)}; +} + +#commentField { + text: {model.getComment()}; +} + +#saveButton { + actionIcon: "save"; + text: "tutti.action.save"; + enabled: {model.isModify() && model.isValid()}; +} + +#cancelButton { + actionIcon: "cancel"; + text: "tutti.action.cancel"; +} + +#generateNameButton { + actionIcon: "generate"; + text: "tutti.action.generateCampaignName"; + enabled: {model.isCanGenerateName()}; +} +#messagePanel { + border: {BorderFactory.createTitledBorder("Messages")}; + height: 200; + width: 500; +} + +#errorTable { + rowSelectionAllowed: true; + autoCreateRowSorter: true; + autoResizeMode: 2; + cellSelectionEnabled: false; + selectionMode: 0; + model: {errorTableModel}; +} Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditScientificCruiseUI.css ___________________________________________________________________ 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/content/campaign/EditScientificCruiseUI.jaxx (from rev 36, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditCampaignUI.jaxx) =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditScientificCruiseUI.jaxx (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditScientificCruiseUI.jaxx 2012-12-10 02:45:40 UTC (rev 37) @@ -0,0 +1,238 @@ +<!-- + #%L + Tutti :: UI + $Id$ + $HeadURL$ + %% + Copyright (C) 2012 Ifremer + %% + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public + License along with this program. If not, see + <http://www.gnu.org/licenses/gpl-3.0.html>. + #L% + --> +<JPanel id='homePanel' layout='{new BorderLayout()}' + implements='fr.ifremer.tutti.ui.swing.TuttiUI<EditScientificCruiseUIModel, EditScientificCruiseUIHandler>'> + + <import> + fr.ifremer.tutti.persistence.entities.data.Program + fr.ifremer.tutti.persistence.entities.referential.Country + fr.ifremer.tutti.persistence.entities.referential.Gear + fr.ifremer.tutti.persistence.entities.referential.Person + fr.ifremer.tutti.persistence.entities.referential.Vessel + fr.ifremer.tutti.ui.swing.TuttiUIContext + + jaxx.runtime.swing.editor.NumberEditor + jaxx.runtime.swing.editor.bean.BeanComboBox + jaxx.runtime.swing.editor.bean.BeanListHeader + + jaxx.runtime.validator.swing.SwingValidatorUtil + jaxx.runtime.validator.swing.SwingValidatorMessageTableModel + + org.jdesktop.swingx.JXDatePicker + + javax.swing.DefaultListModel + javax.swing.ListSelectionModel + + java.awt.Dimension + + static org.nuiton.i18n.I18n._ + static jaxx.runtime.SwingUtil.getStringValue + </import> + + <script><![CDATA[ + + public EditScientificCruiseUI(TuttiUIContext context) { + EditScientificCruiseUIHandler handler = new EditScientificCruiseUIHandler(context, this); + setContextValue(handler); + handler.beforeInitUI(); + } + + protected void $afterCompleteSetup() { + handler.afterInitUI(); + } + ]]></script> + + <EditScientificCruiseUIHandler id='handler' + initializer='getContextValue(EditScientificCruiseUIHandler.class)'/> + + <EditScientificCruiseUIModel id='model' + initializer='getContextValue(EditScientificCruiseUIModel.class)'/> + + <SwingValidatorMessageTableModel id='errorTableModel'/> + + <BeanValidator id='validator' bean='model' errorTableModel='errorTableModel' + uiClass='jaxx.runtime.validator.swing.ui.ImageValidationUI'> + <field name='program' component='surveyComboBox'/> + <field name='year' component='yearField'/> + <field name='surveyPart' component='surveyPartField'/> + <field name='name' component='nameField'/> + <field name='poche' component='pocheField'/> + <field name='country' component='countryComboBox'/> + <field name='beginDate' component='beginDateField'/> + <field name='endDate' component='endDateField'/> + <field name='vessel' component='vesselPane'/> + <field name='gear' component='gearPane'/> + <field name='headOfMission' component='headOfMissionPane'/> + <field name='headOfSortRoom' component='headOfSortRoomPane'/> + <field name='comment' component='commentField'/> + </BeanValidator> + + <JSplitPane id='splitPane' constraints='BorderLayout.CENTER'> + <Table fill='both'> + + <!-- scientificCruise program / year /program part / name --> + <row> + <cell anchor='west'> + <JLabel id='programLabel'/> + </cell> + <cell weightx='0.3'> + <BeanComboBox id='surveyComboBox' constructorParams='this' + genericType='Program'/> + </cell> + <cell anchor='west'> + <JLabel id='yearLabel'/> + </cell> + <cell weightx='0.3'> + <NumberEditor id='yearField' constructorParams='this'/> + </cell> + <cell> + <JLabel id='surveyPartLabel'/> + </cell> + <cell weightx='0.3'> + <JTextField id='surveyPartField' + onKeyReleased='handler.setText(event, "surveyPart")'/> + </cell> + </row> + + <!-- scientificCruise name --> + <row> + <cell> + <JLabel id='nameLabel'/> + </cell> + <cell weightx='0.3'> + <JTextField id='nameField' + onKeyReleased='handler.setText(event, "name")'/> + </cell> + <cell columns='2'> + <JButton id='generateNameButton' + onActionPerformed='handler.generateCampaignName()'/> + </cell> + <cell> + <JLabel id='pocheLabel'/> + </cell> + <cell weightx='0.3'> + <NumberEditor id='pocheField' constructorParams='this'/> + </cell> + </row> + + <!-- scientificCruise country / begin date / end date --> + <row> + <cell> + <JLabel id='countryLabel'/> + </cell> + <cell weightx='0.3'> + <BeanComboBox id='countryComboBox' constructorParams='this' + genericType='Country'/> + </cell> + <cell> + <JLabel id='beginDateLabel'/> + </cell> + <cell weightx='0.3'> + <JXDatePicker id='beginDateField' + onActionPerformed='handler.setDate(event, "beginDate")'/> + </cell> + <cell> + <JLabel id='endDateLabel'/> + </cell> + <cell weightx='0.3'> + <JXDatePicker id='endDateField' + onActionPerformed='handler.setDate(event, "endDate")'/> + </cell> + </row> + + <!-- scientificCruise vessel / gear --> + <row weighty='0.3'> + <cell columns='6'> + <JPanel layout='{new GridLayout(1, 0)}'> + <JScrollPane id='vesselPane' columnHeaderView="{vesselHeader}" + onFocusGained='vesselList.requestFocus()'> + <JList id='vesselList' + onValueChanged='handler.selectListData(event, "vessel")'/> + <BeanListHeader id='vesselHeader' genericType='Vessel'/> + </JScrollPane> + <JScrollPane id='gearPane' columnHeaderView="{gearHeader}" + onFocusGained='gearList.requestFocus()'> + <JList id='gearList' + onValueChanged='handler.selectListData(event, "gear")'/> + <BeanListHeader id='gearHeader' genericType='Gear'/> + </JScrollPane> + </JPanel> + </cell> + </row> + + <!-- scientificCruise headOfMission / headOfSortRoom --> + <row weighty='0.3'> + <cell columns='6'> + <JPanel layout='{new GridLayout(1, 0)}'> + + <JScrollPane id='headOfMissionPane' + columnHeaderView="{headOfMissionHeader}" + onFocusGained='headOfMissionList.requestFocus()'> + <JList id='headOfMissionList' + onValueChanged='handler.selectListData(event, "headOfMission")'/> + <BeanListHeader id='headOfMissionHeader' + genericType='Person'/> + </JScrollPane> + <JScrollPane id='headOfSortRoomPane' + columnHeaderView="{headOfSortRoomHeader}" + onFocusGained='headOfSortRoomList.requestFocus()'> + <JList id='headOfSortRoomList' + onValueChanged='handler.selectListData(event, "headOfSortRoom")'/> + <BeanListHeader id='headOfSortRoomHeader' + genericType='Person'/> + </JScrollPane> + </JPanel> + </cell> + </row> + + <!-- scientificCruise comment --> + <row weighty='0.3'> + <cell columns='6'> + <JScrollPane id='commentPane' + onFocusGained='commentField.requestFocus()'> + <JTextArea id='commentField' + onKeyReleased='handler.setText(event, "comment")'/> + </JScrollPane> + </cell> + </row> + + <!-- Form Actions --> + <row> + <cell columns='6'> + <JPanel layout='{new GridLayout(1, 0)}'> + <JButton id='cancelButton' onActionPerformed='handler.cancel()'/> + <JButton id='saveButton' onActionPerformed='handler.save()'/> + </JPanel> + </cell> + </row> + </Table> + + <JPanel id='messagePanel' layout='{new GridLayout()}'> + <JScrollPane columnHeaderView='{errorTable.getTableHeader()}'> + <JTable id='errorTable' /> + </JScrollPane> + </JPanel> + </JSplitPane> + +</JPanel> \ No newline at end of file Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditScientificCruiseUI.jaxx ___________________________________________________________________ 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/content/campaign/EditScientificCruiseUIHandler.java (from rev 36, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditCampaignUIHandler.java) =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditScientificCruiseUIHandler.java (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditScientificCruiseUIHandler.java 2012-12-10 02:45:40 UTC (rev 37) @@ -0,0 +1,176 @@ +package fr.ifremer.tutti.ui.swing.content.campaign; + +/* + * #%L + * Tutti :: UI + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ifremer.tutti.persistence.entities.TuttiEntities; +import fr.ifremer.tutti.persistence.entities.data.Program; +import fr.ifremer.tutti.persistence.entities.data.ScientificCruise; +import fr.ifremer.tutti.persistence.entities.referential.Person; +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.validator.swing.SwingValidatorMessageTableRenderer; +import jaxx.runtime.validator.swing.SwingValidatorUtil; +import org.apache.commons.lang3.StringUtils; + +import java.util.List; + +/** + * Handler of UI {@link EditScientificCruiseUI}. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.1 + */ +public class EditScientificCruiseUIHandler extends AbstractTuttiUIHandler<EditScientificCruiseUIModel> { + + private final EditScientificCruiseUI ui; + + private final PersistenceService persistenceService; + + public EditScientificCruiseUIHandler(TuttiUIContext context, EditScientificCruiseUI ui) { + super(context); + this.ui = ui; + persistenceService = context.getService(PersistenceService.class); + } + + @Override + public void beforeInitUI() { + + EditScientificCruiseUIModel model = new EditScientificCruiseUIModel(); + + String campaignId = context.getScientificCruiseId(); + if (campaignId == null) { + + // create new scientificCruise + Program program = + persistenceService.getProgram(context.getProgramId()); + model.setProgram(program); + model.setPoche(1); + } else { + + // load existing program + ScientificCruise scientificCruise = + persistenceService.getScientificCruise(campaignId); + + model.fromBean(scientificCruise); + } + listModelIsModify(model); + ui.setContextValue(model); + } + + @Override + public void afterInitUI() { + + initUI(ui); + + List<Person> users = persistenceService.getAllPerson(); + + EditScientificCruiseUIModel model = ui.getModel(); + + initBeanComboBox(ui.getSurveyComboBox(), + persistenceService.getAllProgram(), + model.getProgram()); + + initBeanComboBox(ui.getCountryComboBox(), + persistenceService.getAllCountry(), + model.getCountry()); + + initBeanList(ui.getVesselHeader(), + persistenceService.getAllVessel(), + model.getVessel()); + + initBeanList(ui.getGearHeader(), + persistenceService.getAllGear(), + model.getGear()); + + initBeanList(ui.getHeadOfMissionHeader(), + users, + model.getHeadOfMission()); + + initBeanList(ui.getHeadOfSortRoomHeader(), + users, + model.getHeadOfSortRoom()); + + SwingValidatorUtil.installUI(ui.getErrorTable(), + new SwingValidatorMessageTableRenderer()); + + listenValidatorValid(ui.getValidator(), model); + + // if new fishingOperation can already cancel his creation + model.setModify(model.isCreate()); + } + + @Override + public void onCloseUI() { + } + + @Override + protected EditScientificCruiseUIModel getModel() { + return ui.getModel(); + } + + public void cancel() { + + context.setScreen(TuttiScreen.SELECT_SCIENTIFIC_CRUISE); + } + + public void save() { + + EditScientificCruiseUIModel model = ui.getModel(); + + ScientificCruise bean = model.toBean(); + + ScientificCruise saved; + if (TuttiEntities.isNew(bean)) { + + saved = persistenceService.createScientificCruise(bean); + } else { + saved = persistenceService.saveScientificCruise(bean); + } + + context.setProgramId(saved.getProgram().getId()); + context.setScientificCruiseId(saved.getId()); + + context.setScreen(TuttiScreen.SELECT_SCIENTIFIC_CRUISE); + } + + public static final String scientificCruiseNameFormat = "%1$s_%2$s"; + + public void generateCampaignName() { + + EditScientificCruiseUIModel model = getModel(); + Program program = model.getProgram(); + Integer year = model.getYear(); + String name = String.format(scientificCruiseNameFormat, program.getName(), year); + + String surveyPart = model.getSurveyPart(); + if (StringUtils.isNotEmpty(surveyPart)) { + name += "_" + surveyPart; + } + model.setName(name); + } + +} Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditScientificCruiseUIHandler.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/content/campaign/EditScientificCruiseUIModel.java (from rev 36, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditCampaignUIModel.java) =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditScientificCruiseUIModel.java (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditScientificCruiseUIModel.java 2012-12-10 02:45:40 UTC (rev 37) @@ -0,0 +1,247 @@ +package fr.ifremer.tutti.ui.swing.content.campaign; + +/* + * #%L + * Tutti :: UI + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ifremer.tutti.persistence.entities.data.Program; +import fr.ifremer.tutti.persistence.entities.data.ScientificCruise; +import fr.ifremer.tutti.persistence.entities.referential.Country; +import fr.ifremer.tutti.persistence.entities.referential.Gear; +import fr.ifremer.tutti.persistence.entities.referential.Person; +import fr.ifremer.tutti.persistence.entities.referential.Vessel; +import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; +import org.nuiton.util.beans.Binder; +import org.nuiton.util.beans.BinderFactory; + +import java.util.Date; +import java.util.List; + +/** + * Model of UI {@link EditScientificCruiseUI}. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.1 + */ +public class EditScientificCruiseUIModel extends AbstractTuttiBeanUIModel<ScientificCruise, EditScientificCruiseUIModel> { + + private static final long serialVersionUID = 1L; + + public static final String PROPERTY_PROGRAM = "program"; + + public static final String PROPERTY_NAME = "name"; + + public static final String PROPERTY_COMMENT = "comment"; + + public static final String PROPERTY_COUNTRY = "country"; + + public static final String PROPERTY_SURVEY_PART = "surveyPart"; + + public static final String PROPERTY_VESSEL = "vessel"; + + public static final String PROPERTY_GEAR = "gear"; + + public static final String PROPERTY_HEAD_OF_MISSION = "headOfMission"; + + public static final String PROPERTY_HEAD_OF_SORT_ROOM = "headOfSortRoom"; + + public static final String PROPERTY_YEAR = "year"; + + public static final String PROPERTY_POCHE = "poche"; + + public static final String PROPERTY_BEGIN_DATE = "beginDate"; + + public static final String PROPERTY_END_DATE = "endDate"; + + public static final String PROPERTY_CAN_GENERATE_NAME = "canGenerateName"; + + protected Program program; + + protected Country country; + + protected String name; + + protected String surveyPart; + + protected List<Vessel> vessel; + + protected List<Gear> gear; + + protected List<Person> headOfMission; + + protected List<Person> headOfSortRoom; + + protected String comment; + + protected Integer year; + + protected Integer poche; + + protected Date beginDate; + + protected Date endDate; + + protected static Binder<EditScientificCruiseUIModel, ScientificCruise> toBeanBinder = + BinderFactory.newBinder(EditScientificCruiseUIModel.class, + ScientificCruise.class); + + protected static Binder<ScientificCruise, EditScientificCruiseUIModel> fromBeanBinder = + BinderFactory.newBinder(ScientificCruise.class, EditScientificCruiseUIModel.class); + + public EditScientificCruiseUIModel() { + super(ScientificCruise.class, fromBeanBinder, toBeanBinder); + } + + public Program getProgram() { + return program; + } + + public void setProgram(Program program) { + Object oldValue = getProgram(); + this.program = program; + firePropertyChange(PROPERTY_PROGRAM, oldValue, program); + firePropertyChange(PROPERTY_CAN_GENERATE_NAME, null, isCanGenerateName()); + } + + public String getName() { + return name; + } + + public void setName(String name) { + Object oldValue = getName(); + this.name = name; + firePropertyChange(PROPERTY_NAME, oldValue, name); + } + + public String getComment() { + return comment; + } + + public void setComment(String comment) { + Object oldValue = getComment(); + this.comment = comment; + firePropertyChange(PROPERTY_COMMENT, oldValue, comment); + } + + public Country getCountry() { + return country; + } + + public void setCountry(Country country) { + Object oldValue = getCountry(); + this.country = country; + firePropertyChange(PROPERTY_COUNTRY, oldValue, country); + } + + public String getSurveyPart() { + return surveyPart; + } + + public void setSurveyPart(String surveyPart) { + Object oldValue = getSurveyPart(); + this.surveyPart = surveyPart; + firePropertyChange(PROPERTY_SURVEY_PART, oldValue, surveyPart); + } + + public Integer getYear() { + return year; + } + + public void setYear(Integer year) { + Object oldValue = getYear(); + this.year = year; + firePropertyChange(PROPERTY_YEAR, oldValue, year); + firePropertyChange(PROPERTY_CAN_GENERATE_NAME, null, isCanGenerateName()); + } + + public Integer getPoche() { + return poche; + } + + public void setPoche(Integer poche) { + Object oldValue = getPoche(); + this.poche = poche; + firePropertyChange(PROPERTY_POCHE, oldValue, poche); + } + + public Date getBeginDate() { + return beginDate; + } + + public void setBeginDate(Date beginDate) { + Object oldValue = getBeginDate(); + this.beginDate = beginDate; + firePropertyChange(PROPERTY_BEGIN_DATE, oldValue, beginDate); + } + + public Date getEndDate() { + return endDate; + } + + public void setEndDate(Date endDate) { + Object oldValue = getEndDate(); + this.endDate = endDate; + firePropertyChange(PROPERTY_END_DATE, oldValue, endDate); + } + + public List<Vessel> getVessel() { + return vessel; + } + + public void setVessel(List<Vessel> vessel) { + this.vessel = vessel; + firePropertyChange(PROPERTY_VESSEL, null, vessel); + } + + public List<Gear> getGear() { + return gear; + } + + public void setGear(List<Gear> gear) { + this.gear = gear; + firePropertyChange(PROPERTY_GEAR, null, gear); + } + + public List<Person> getHeadOfMission() { + return headOfMission; + } + + public void setHeadOfMission(List<Person> headOfMission) { + this.headOfMission = headOfMission; + firePropertyChange(PROPERTY_HEAD_OF_MISSION, null, headOfMission); + } + + public List<Person> getHeadOfSortRoom() { + return headOfSortRoom; + } + + public void setHeadOfSortRoom(List<Person> headOfSortRoom) { + this.headOfSortRoom = headOfSortRoom; + firePropertyChange(PROPERTY_HEAD_OF_SORT_ROOM, null, headOfSortRoom); + } + + public boolean isCanGenerateName() { + return program != null && year != null; + } + +} \ No newline at end of file Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditScientificCruiseUIModel.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/campaign/EditSurveyUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditSurveyUI.css 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditSurveyUI.css 2012-12-10 02:45:40 UTC (rev 37) @@ -1,94 +0,0 @@ -/* - * #%L - * Tutti :: UI - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2012 Ifremer - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -BeanComboBox { - showReset:true; - i18nPrefix:"tutti.property."; - bean:{model}; -} - -#splitPane { - orientation:{JSplitPane.VERTICAL_SPLIT}; - resizeWeight:0.3; - oneTouchExpandable:true; - continuousLayout:true; -} - -#form { - border:{BorderFactory.createTitledBorder((String)null)}; -} - -#nameLabel { - text:"tutti.label.survey.name"; - labelFor:{nameField}; -} - -#nameField { - text:{model.getName()}; -} - -#commentPane { - columnHeaderView:{new JLabel(_("tutti.label.comment"))}; - minimumSize:{new Dimension(10,50)}; -} - -#commentField { - text:{getStringValue(model.getComment())}; -} - -#zoneLabel { - text:"tutti.label.survey.zone"; - labelFor:{zoneComboBox}; -} - -#zoneComboBox { - property:"zone"; - selectedItem:{model.getZone()}; -} - -#saveButton { - text:"tutti.action.save"; - enabled:{model.isModify() && model.isValid()}; - actionIcon:"save"; -} - -#cancelButton { - text:"tutti.action.cancel"; - actionIcon:"cancel"; -} - -#messagePanel { - border:{BorderFactory.createTitledBorder("Messages")}; - height:200; - width:500; -} - -#errorTable { - rowSelectionAllowed:true; - autoCreateRowSorter:true; - autoResizeMode:2; - cellSelectionEnabled:false; - selectionMode:0; - model:{errorTableModel}; -} Deleted: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditSurveyUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditSurveyUI.jaxx 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditSurveyUI.jaxx 2012-12-10 02:45:40 UTC (rev 37) @@ -1,125 +0,0 @@ -<!-- - #%L - Tutti :: UI - $Id$ - $HeadURL$ - %% - Copyright (C) 2012 Ifremer - %% - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as - published by the Free Software Foundation, either version 3 of the - License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public - License along with this program. If not, see - <http://www.gnu.org/licenses/gpl-3.0.html>. - #L% - --> -<JPanel id='homePanel' layout='{new BorderLayout()}' - implements='fr.ifremer.tutti.ui.swing.TuttiUI<EditSurveyUIModel, EditSurveyUIHandler>'> - - <import> - fr.ifremer.tutti.persistence.entities.referential.Zone - fr.ifremer.tutti.ui.swing.TuttiUIContext - - jaxx.runtime.swing.editor.bean.BeanComboBox - jaxx.runtime.validator.swing.SwingValidatorUtil - jaxx.runtime.validator.swing.SwingValidatorMessageTableModel - - java.awt.Dimension - - static org.nuiton.i18n.I18n._ - static jaxx.runtime.SwingUtil.getStringValue - - </import> - - <script><![CDATA[ - - public EditSurveyUI(TuttiUIContext context) { - EditSurveyUIHandler handler = new EditSurveyUIHandler(context, this); - setContextValue(handler); - handler.beforeInitUI(); - } - - protected void $afterCompleteSetup() { - handler.afterInitUI(); - } - ]]></script> - - <EditSurveyUIHandler id='handler' - initializer='getContextValue(EditSurveyUIHandler.class)'/> - - <EditSurveyUIModel id='model' - initializer='getContextValue(EditSurveyUIModel.class)'/> - - <SwingValidatorMessageTableModel id='errorTableModel'/> - - <BeanValidator id='validator' bean='model' errorTableModel='errorTableModel' - uiClass='jaxx.runtime.validator.swing.ui.ImageValidationUI'> - <field name='name' component='nameField'/> - <field name='zone' component='zoneComboBox'/> - <field name='comment' component='commentField'/> - </BeanValidator> - - <JSplitPane id='splitPane' constraints='BorderLayout.CENTER'> - - <Table id='form' fill='both'> - - <!-- survey name --> - <row> - <cell anchor='west'> - <JLabel id='nameLabel'/> - </cell> - <cell weightx='1.0'> - <JTextField id='nameField' - onKeyReleased='handler.setText(event, "name")'/> - </cell> - </row> - - <!-- survey zone --> - <row> - <cell> - <JLabel id='zoneLabel'/> - </cell> - <cell> - <BeanComboBox id='zoneComboBox' constructorParams='this' - genericType='Zone'/> - </cell> - </row> - - <!-- survey comment --> - <row weighty='0.8'> - <cell columns='2'> - <JScrollPane id='commentPane' - onFocusGained='commentField.requestFocus()'> - <JTextArea id='commentField' - onKeyReleased='handler.setText(event, "comment")'/> - </JScrollPane> - </cell> - </row> - - <!-- actions --> - <row anchor='south'> - <cell columns='2'> - <JPanel layout='{new GridLayout(1, 0)}'> - <JButton id='cancelButton' onActionPerformed='handler.cancel()'/> - <JButton id='saveButton' onActionPerformed='handler.save()'/> - </JPanel> - </cell> - </row> - </Table> - - <!-- validation messages --> - <JPanel id='messagePanel' layout='{new GridLayout()}'> - <JScrollPane columnHeaderView='{errorTable.getTableHeader()}'> - <JTable id='errorTable' /> - </JScrollPane> - </JPanel> - </JSplitPane> -</JPanel> \ No newline at end of file Deleted: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditSurveyUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditSurveyUIHandler.java 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditSurveyUIHandler.java 2012-12-10 02:45:40 UTC (rev 37) @@ -1,134 +0,0 @@ -package fr.ifremer.tutti.ui.swing.content.campaign; - -/* - * #%L - * Tutti :: UI - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2012 Ifremer - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import fr.ifremer.tutti.persistence.entities.data.Survey; -import fr.ifremer.tutti.persistence.entities.TuttiEntities; -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.validator.swing.SwingValidatorMessageTableRenderer; -import jaxx.runtime.validator.swing.SwingValidatorUtil; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -/** - * Handler of UI {@link EditSurveyUI}. - * - * @author tchemit <chemit@codelutin.com> - * @since 0.1 - */ -public class EditSurveyUIHandler extends AbstractTuttiUIHandler<EditSurveyUIModel> { - - /** Logger. */ - private static final Log log = LogFactory.getLog(EditSurveyUIHandler.class); - - private final EditSurveyUI ui; - - private final PersistenceService persistenceService; - - public EditSurveyUIHandler(TuttiUIContext context, EditSurveyUI ui) { - super(context); - this.ui = ui; - persistenceService = context.getService(PersistenceService.class); - } - - @Override - public void beforeInitUI() { - - EditSurveyUIModel model = new EditSurveyUIModel(); - - String surveyId = context.getSurveyId(); - if (surveyId == null) { - - if (log.isInfoEnabled()) { - log.info("Edit new survey"); - } - } else { - - if (log.isInfoEnabled()) { - log.info("Edit existing survey " + surveyId); - } - // load existing survey - Survey survey = persistenceService.getSurvey(surveyId); - - model.fromBean(survey); - } - - listModelIsModify(model); - - ui.setContextValue(model); - } - - @Override - public void afterInitUI() { - - EditSurveyUIModel model = ui.getModel(); - initBeanComboBox(ui.getZoneComboBox(), - persistenceService.getAllZone(), - model.getZone()); - - SwingValidatorUtil.installUI(ui.getErrorTable(), - new SwingValidatorMessageTableRenderer()); - - listenValidatorValid(ui.getValidator(), model); - - // if new survey can already cancel his creation - model.setModify(model.isCreate()); - } - - @Override - public void onCloseUI() { - ui.getValidator().setBean(null); - } - - @Override - protected EditSurveyUIModel getModel() { - return ui.getModel(); - } - - public void cancel() { - context.setScreen(TuttiScreen.SELECT_CAMPAIGN); - } - - public void save() { - - EditSurveyUIModel model = ui.getModel(); - - Survey bean = model.toBean(); - - Survey saved; - if (TuttiEntities.isNew(bean)) { - - saved = persistenceService.createSurvey(bean); - } else { - saved = persistenceService.saveSurvey(bean); - } - - context.setSurveyId(saved.getId()); - context.setScreen(TuttiScreen.SELECT_CAMPAIGN); - } -} Deleted: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditSurveyUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditSurveyUIModel.java 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/EditSurveyUIModel.java 2012-12-10 02:45:40 UTC (rev 37) @@ -1,97 +0,0 @@ -package fr.ifremer.tutti.ui.swing.content.campaign; - -/* - * #%L - * Tutti :: UI - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2012 Ifremer - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import fr.ifremer.tutti.persistence.entities.data.Survey; -import fr.ifremer.tutti.persistence.entities.referential.Zone; -import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; -import org.nuiton.util.beans.Binder; -import org.nuiton.util.beans.BinderFactory; - -/** - * Bean to edit a survey. - * - * @author tchemit <chemit@codelutin.com> - * @since 0.1 - */ -public class EditSurveyUIModel extends AbstractTuttiBeanUIModel<Survey, EditSurveyUIModel> { - - private static final long serialVersionUID = 1L; - - public static final String PROPERTY_ZONE = "zone"; - - public static final String PROPERTY_COMMENT = "comment"; - - public static final String PROPERTY_NAME = "name"; - - protected String name; - - protected String comment; - - protected Zone zone; - - protected static Binder<EditSurveyUIModel, Survey> toBeanBinder = - BinderFactory.newBinder(EditSurveyUIModel.class, - Survey.class); - - protected static Binder<Survey, EditSurveyUIModel> fromBeanBinder = - BinderFactory.newBinder(Survey.class, EditSurveyUIModel.class); - - - public EditSurveyUIModel() { - super(Survey.class, fromBeanBinder, toBeanBinder); - } - - public String getName() { - return name; - } - - public void setName(String name) { - Object oldValue = getName(); - this.name = name; - firePropertyChange(PROPERTY_NAME, oldValue, name); - } - - public String getComment() { - return comment; - } - - public void setComment(String comment) { - Object oldValue = getComment(); - this.comment = comment; - firePropertyChange(PROPERTY_COMMENT, oldValue, comment); - } - - public Zone getZone() { - return zone; - } - - public void setZone(Zone zone) { - Object oldValue = getZone(); - this.zone = zone; - firePropertyChange(PROPERTY_ZONE, oldValue, zone); - } - -} Deleted: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/SelectCampaignUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/SelectCampaignUI.css 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/SelectCampaignUI.css 2012-12-10 02:45:40 UTC (rev 37) @@ -1,77 +0,0 @@ -/* - * #%L - * Tutti :: UI - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2012 Ifremer - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -BeanComboBox { - showReset:true; - i18nPrefix:"tutti.property."; - bean:{model}; -} - -#surveyLabel { - text: "tutti.label.survey"; -} - -#surveyCombobox { - property:"survey"; - selectedItem:{model.getSurvey()}; -} - -#editSurveyButton { - enabled: {model.isSurveyFound()}; - text: "tutti.action.edit"; - actionIcon:"edit"; -} - -#newSurveyButton { - text: "tutti.action.new"; - actionIcon:"add"; -} - -#campaignLabel { - text: "tutti.label.campaign"; - labelFor:{campaignCombobox}; -} - -#campaignCombobox { - property:"campaign"; - enabled: {model.isSurveyFound()}; - selectedItem:{model.getCampaign()}; -} - -#editCampaignButton { - enabled: {model.isSurveyFound() && model.isCampaignFound()}; - text: "tutti.action.edit"; - actionIcon:"edit"; -} - -#newCampaignButton { - actionIcon:"add"; - enabled: {model.isSurveyFound()}; - text: "tutti.action.new"; -} - -#showCatchesButton { - text: "tutti.action.catches"; - enabled: {uiContext.isCampaignContextFilled()}; -} Deleted: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/SelectCampaignUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/SelectCampaignUI.jaxx 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/SelectCampaignUI.jaxx 2012-12-10 02:45:40 UTC (rev 37) @@ -1,104 +0,0 @@ -<!-- - #%L - Tutti :: UI - $Id$ - $HeadURL$ - %% - Copyright (C) 2012 Ifremer - %% - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as - published by the Free Software Foundation, either version 3 of the - License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public - License along with this program. If not, see - <http://www.gnu.org/licenses/gpl-3.0.html>. - #L% - --> -<JPanel id='homePanel' layout='{new BorderLayout()}' - implements='fr.ifremer.tutti.ui.swing.TuttiUI<SelectCampaignUIModel, SelectCampaignUIHandler>'> - - <import> - fr.ifremer.tutti.persistence.entities.data.Survey - fr.ifremer.tutti.persistence.entities.data.Campaign - fr.ifremer.tutti.persistence.entities.data.Trait - fr.ifremer.tutti.ui.swing.TuttiUIContext - - jaxx.runtime.swing.editor.bean.BeanComboBox - - static org.nuiton.i18n.I18n._ - </import> - - <script><![CDATA[ - - protected TuttiUIContext uiContext; - - public SelectCampaignUI(TuttiUIContext context) { - this.uiContext = context; - SelectCampaignUIHandler handler = new SelectCampaignUIHandler(context, this); - setContextValue(handler); - handler.beforeInitUI(); - } - - protected void $afterCompleteSetup() { - handler.afterInitUI(); - } - ]]></script> - - <SelectCampaignUIHandler id='handler' - initializer='getContextValue(SelectCampaignUIHandler.class)'/> - - <SelectCampaignUIModel id='model' - initializer='getContextValue(SelectCampaignUIModel.class)'/> - - <Table fill='both' constraints='BorderLayout.CENTER'> - <row> - <cell anchor='west'> - <JLabel id='surveyLabel'/> - </cell> - <cell weightx='1.0'> - <BeanComboBox id='surveyCombobox' constructorParams='this' - genericType='Survey'/> - </cell> - <cell> - <JPanel layout='{new GridLayout(1,0)}'> - <JButton id='editSurveyButton' - onActionPerformed='handler.showSelectedSurvey()'/> - <JButton id='newSurveyButton' - onActionPerformed='handler.showNewSurvey()'/> - </JPanel> - </cell> - </row> - <row> - <cell> - <JLabel id='campaignLabel'/> - </cell> - <cell> - <BeanComboBox id='campaignCombobox' constructorParams='this' - genericType='Campaign'/> - </cell> - <cell> - <JPanel layout='{new GridLayout(1,0)}'> - <JButton id='editCampaignButton' - onActionPerformed='handler.showSelectedCampaign()'/> - <JButton id='newCampaignButton' - onActionPerformed='handler.showNewCampaign()'/> - </JPanel> - </cell> - </row> - <row> - <cell columns='3'> - <!--JPanel layout='{new GridLayout(1,0)}'--> - <JButton id='showCatchesButton' - onActionPerformed='handler.showCatches()'/> - <!--/JPanel--> - </cell> - </row> - </Table> -</JPanel> Deleted: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/SelectCampaignUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/SelectCampaignUIHandler.java 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/SelectCampaignUIHandler.java 2012-12-10 02:45:40 UTC (rev 37) @@ -1,201 +0,0 @@ -package fr.ifremer.tutti.ui.swing.content.campaign; - -/* - * #%L - * Tutti :: UI - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2012 Ifremer - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import com.google.common.collect.Lists; -import fr.ifremer.tutti.persistence.entities.TuttiEntities; -import fr.ifremer.tutti.persistence.entities.data.Campaign; -import fr.ifremer.tutti.persistence.entities.data.Survey; -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; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.util.List; - -/** - * Main ui content to select campaign. - * - * @author tchemit <chemit@codelutin.com> - * @since 0.1 - */ -public class SelectCampaignUIHandler extends AbstractTuttiUIHandler<SelectCampaignUIModel> { - - /** Logger. */ - private static final Log log = - LogFactory.getLog(SelectCampaignUIHandler.class); - - protected final PersistenceService persistenceService; - - protected final SelectCampaignUI ui; - - public SelectCampaignUIHandler(TuttiUIContext context, SelectCampaignUI ui) { - super(context); - this.ui = ui; - persistenceService = context.getService(PersistenceService.class); - } - - @Override - protected SelectCampaignUIModel getModel() { - return ui.getModel(); - } - - @Override - public void beforeInitUI() { - SelectCampaignUIModel model = new SelectCampaignUIModel(); - - List<Survey> allSurveys = persistenceService.getAllSurvey(); - - model.setSurveys(allSurveys); - - if (allSurveys.isEmpty()) { - // do nothing - - } else { - - // get selected survey (if any) - - String surveyId = context.getSurveyId(); - Survey selectedSurvey = null; - List<Campaign> allCampaigns = null; - if (surveyId != null) { - selectedSurvey = TuttiEntities.findById(allSurveys, surveyId); - allCampaigns = persistenceService.getAllCampaign(surveyId); - } - - model.setSurvey(selectedSurvey); - model.setCampaigns(allCampaigns); - - if (CollectionUtils.isEmpty(allCampaigns)) { - - // nothing to select - } else { - String campaignId = context.getCampaignId(); - - Campaign selectedCampaign = null; - if (campaignId != null) { - selectedCampaign = - TuttiEntities.findById(allCampaigns, campaignId); - } - model.setCampaign(selectedCampaign); - } - } - ui.setContextValue(model); - } - - @Override - public void afterInitUI() { - - SelectCampaignUIModel model = ui.getModel(); - - initBeanComboBox(ui.getSurveyCombobox(), - model.getSurveys(), - model.getSurvey()); - - initBeanComboBox(ui.getCampaignCombobox(), - model.getCampaigns(), - model.getCampaign()); - - model.addPropertyChangeListener("survey", new PropertyChangeListener() { - @Override - public void propertyChange(PropertyChangeEvent evt) { - Survey newValue = (Survey) evt.getNewValue(); - boolean noSurvey = newValue == null; - context.setSurveyId(noSurvey ? null : newValue.getId()); - List<Campaign> campaigns; - if (noSurvey) { - campaigns = Lists.newArrayList(); - } else { - campaigns = persistenceService.getAllCampaign(newValue.getId()); - } - SelectCampaignUIModel model = (SelectCampaignUIModel) evt.getSource(); - model.setCampaigns(campaigns); - model.setCampaign(null); - } - }); - - model.addPropertyChangeListener("campaigns", new PropertyChangeListener() { - @Override - public void propertyChange(PropertyChangeEvent evt) { - // reload combo box - BeanComboBox<Campaign> combobox = ui.getCampaignCombobox(); - List<Campaign> campaigns = (List<Campaign>) evt.getNewValue(); - combobox.setData(null); - combobox.setData(campaigns); - } - }); - - model.addPropertyChangeListener("campaign", new PropertyChangeListener() { - @Override - public void propertyChange(PropertyChangeEvent evt) { - Campaign newValue = (Campaign) evt.getNewValue(); - context.setCampaignId(newValue == null ? null : newValue.getId()); - } - }); - } - - @Override - public void onCloseUI() { - PropertyChangeListener[] listeners = ui.getModel().getPropertyChangeListeners(); - for (PropertyChangeListener listener : listeners) { - getModel().removePropertyChangeListener(listener); - } - } - - public void showCatches() { - - context.setScreen(TuttiScreen.FILL_CATCHES); - } - - public void showSelectedSurvey() { - - Survey survey = getModel().getSurvey(); - context.setSurveyId(survey.getId()); - context.setScreen(TuttiScreen.EDIT_SURVEY); - } - - public void showNewSurvey() { - context.setSurveyId(null); - context.setCampaignId(null); - context.setScreen(TuttiScreen.EDIT_SURVEY); - } - - public void showSelectedCampaign() { - Campaign campaign = getModel().getCampaign(); - context.setCampaignId(campaign.getId()); - context.setScreen(TuttiScreen.EDIT_CAMPAIGN); - } - - public void showNewCampaign() { - context.setCampaignId(null); - context.setScreen(TuttiScreen.EDIT_CAMPAIGN); - } -} Deleted: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/SelectCampaignUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/SelectCampaignUIModel.java 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/SelectCampaignUIModel.java 2012-12-10 02:45:40 UTC (rev 37) @@ -1,123 +0,0 @@ -package fr.ifremer.tutti.ui.swing.content.campaign; - -/* - * #%L - * Tutti :: UI - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2012 Ifremer - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import fr.ifremer.tutti.persistence.entities.data.Campaign; -import fr.ifremer.tutti.persistence.entities.data.Survey; -import org.jdesktop.beans.AbstractSerializableBean; - -import java.util.List; - -/** - * Model of ui {@link SelectCampaignUI}. - * - * @author tchemit <chemit@codelutin.com> - * @since 0.1 - */ -public class SelectCampaignUIModel extends AbstractSerializableBean { - - private static final long serialVersionUID = 1L; - - public static final String PROPERTY_SURVEYS = "surveys"; - - public static final String PROPERTY_SURVEY = "survey"; - - public static final String PROPERTY_CAMPAIGNS = "campaigns"; - - public static final String PROPERTY_CAMPAIGN = "campaign"; - - public static final String PROPERTY_SURVEY_FOUND = "surveyFound"; - - public static final String PROPERTY_CAMPAIGN_FOUND = "campaignFound"; - - protected List<Survey> surveys; - - protected Survey survey; - - protected List<Campaign> campaigns; - - protected Campaign campaign; - - public List<Survey> getSurveys() { - return surveys; - } - - public void setSurveys(List<Survey> surveys) { - Object oldValue = getSurveys(); - this.surveys = surveys; - - // nullify survey -// setSurvey(null); - firePropertyChange(PROPERTY_SURVEYS, oldValue, surveys); - } - - public Survey getSurvey() { - return survey; - } - - public void setSurvey(Survey survey) { - Survey oldValue = getSurvey(); - this.survey = survey; - - // nullify campaigns -// setCampaigns(null); - - firePropertyChange(PROPERTY_SURVEY, oldValue, survey); - firePropertyChange(PROPERTY_SURVEY_FOUND, oldValue != null, survey != null); - } - - public boolean isSurveyFound() { - return survey != null; - } - - public List<Campaign> getCampaigns() { - return campaigns; - } - - public void setCampaigns(List<Campaign> campaigns) { - Object oldValue = getCampaigns(); - this.campaigns = campaigns; - - // nullify campaign -// setCampaign(null); - firePropertyChange(PROPERTY_CAMPAIGNS, oldValue, campaigns); - } - - public Campaign getCampaign() { - return campaign; - } - - public void setCampaign(Campaign campaign) { - Campaign oldValue = getCampaign(); - this.campaign = campaign; - firePropertyChange(PROPERTY_CAMPAIGN, oldValue, campaign); - firePropertyChange(PROPERTY_CAMPAIGN_FOUND, oldValue != null, campaign != null); - } - - public boolean isCampaignFound() { - return campaign != null; - } - -} Copied: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/SelectScientificCruiseUI.css (from rev 36, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/SelectCampaignUI.css) =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/SelectScientificCruiseUI.css (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/SelectScientificCruiseUI.css 2012-12-10 02:45:40 UTC (rev 37) @@ -0,0 +1,77 @@ +/* + * #%L + * Tutti :: UI + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +BeanComboBox { + showReset: true; + i18nPrefix: "tutti.property."; + bean: {model}; +} + +#programLabel { + text: "tutti.label.program"; +} + +#programCombobox { + property: "program"; + selectedItem: {model.getProgram()}; +} + +#editProgramButton { + enabled: {model.isProgramFound()}; + text: "tutti.action.edit"; + actionIcon: "edit"; +} + +#newProgramButton { + text: "tutti.action.new"; + actionIcon: "add"; +} + +#scientificCruiseLabel { + text: "tutti.label.scientificCruise"; + labelFor: {scientificCruiseCombobox}; +} + +#scientificCruiseCombobox { + property: "scientificCruise"; + enabled: {model.isProgramFound()}; + selectedItem: {model.getScientificCruise()}; +} + +#editScientificCruiseButton { + enabled: {model.isProgramFound() && model.isScientificCruiseFound()}; + text: "tutti.action.edit"; + actionIcon: "edit"; +} + +#newScientificCruiseButton { + actionIcon: "add"; + enabled: {model.isProgramFound()}; + text: "tutti.action.new"; +} + +#showFishingOperationsButton { + text: "tutti.action.catches"; + enabled: {uiContext.isScientificCruiseContextFilled()}; +} Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/SelectScientificCruiseUI.css ___________________________________________________________________ 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/content/campaign/SelectScientificCruiseUI.jaxx (from rev 36, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/SelectCampaignUI.jaxx) =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/SelectScientificCruiseUI.jaxx (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/SelectScientificCruiseUI.jaxx 2012-12-10 02:45:40 UTC (rev 37) @@ -0,0 +1,102 @@ +<!-- + #%L + Tutti :: UI + $Id$ + $HeadURL$ + %% + Copyright (C) 2012 Ifremer + %% + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public + License along with this program. If not, see + <http://www.gnu.org/licenses/gpl-3.0.html>. + #L% + --> +<JPanel id='homePanel' layout='{new BorderLayout()}' + implements='fr.ifremer.tutti.ui.swing.TuttiUI<SelectScientificCruiseUIModel, SelectScientificCruiseUIHandler>'> + + <import> + fr.ifremer.tutti.persistence.entities.data.Program + fr.ifremer.tutti.persistence.entities.data.ScientificCruise + fr.ifremer.tutti.ui.swing.TuttiUIContext + + jaxx.runtime.swing.editor.bean.BeanComboBox + + static org.nuiton.i18n.I18n._ + </import> + + <script><![CDATA[ + + protected TuttiUIContext uiContext; + + public SelectScientificCruiseUI(TuttiUIContext context) { + this.uiContext = context; + SelectScientificCruiseUIHandler handler = + new SelectScientificCruiseUIHandler(context, this); + setContextValue(handler); + handler.beforeInitUI(); + } + + protected void $afterCompleteSetup() { + handler.afterInitUI(); + } + ]]></script> + + <SelectScientificCruiseUIHandler id='handler' + initializer='getContextValue(SelectScientificCruiseUIHandler.class)'/> + + <SelectScientificCruiseUIModel id='model' + initializer='getContextValue(SelectScientificCruiseUIModel.class)'/> + + <Table fill='both' constraints='BorderLayout.CENTER'> + <row> + <cell anchor='west'> + <JLabel id='programLabel'/> + </cell> + <cell weightx='1.0'> + <BeanComboBox id='programCombobox' constructorParams='this' + genericType='Program'/> + </cell> + <cell> + <JPanel layout='{new GridLayout(1,0)}'> + <JButton id='editProgramButton' + onActionPerformed='handler.showSelectedProgram()'/> + <JButton id='newProgramButton' + onActionPerformed='handler.showNewProgram()'/> + </JPanel> + </cell> + </row> + <row> + <cell> + <JLabel id='scientificCruiseLabel'/> + </cell> + <cell> + <BeanComboBox id='scientificCruiseCombobox' constructorParams='this' + genericType='ScientificCruise'/> + </cell> + <cell> + <JPanel layout='{new GridLayout(1,0)}'> + <JButton id='editScientificCruiseButton' + onActionPerformed='handler.showSelectedScientificCruise()'/> + <JButton id='newScientificCruiseButton' + onActionPerformed='handler.showNewScientificCruise()'/> + </JPanel> + </cell> + </row> + <row> + <cell columns='3'> + <JButton id='showFishingOperationsButton' + onActionPerformed='handler.showFishingOperations()'/> + </cell> + </row> + </Table> +</JPanel> Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/SelectScientificCruiseUI.jaxx ___________________________________________________________________ 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/content/campaign/SelectScientificCruiseUIHandler.java (from rev 36, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/SelectCampaignUIHandler.java) =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/SelectScientificCruiseUIHandler.java (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/SelectScientificCruiseUIHandler.java 2012-12-10 02:45:40 UTC (rev 37) @@ -0,0 +1,204 @@ +package fr.ifremer.tutti.ui.swing.content.campaign; + +/* + * #%L + * Tutti :: UI + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import com.google.common.collect.Lists; +import fr.ifremer.tutti.persistence.entities.TuttiEntities; +import fr.ifremer.tutti.persistence.entities.data.Program; +import fr.ifremer.tutti.persistence.entities.data.ScientificCruise; +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; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.util.List; + +/** + * Main ui content to select scientificCruise. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.1 + */ +public class SelectScientificCruiseUIHandler extends AbstractTuttiUIHandler<SelectScientificCruiseUIModel> { + + /** Logger. */ + private static final Log log = + LogFactory.getLog(SelectScientificCruiseUIHandler.class); + + protected final PersistenceService persistenceService; + + protected final SelectScientificCruiseUI ui; + + public SelectScientificCruiseUIHandler(TuttiUIContext context, SelectScientificCruiseUI ui) { + super(context); + this.ui = ui; + persistenceService = context.getService(PersistenceService.class); + } + + @Override + protected SelectScientificCruiseUIModel getModel() { + return ui.getModel(); + } + + @Override + public void beforeInitUI() { + SelectScientificCruiseUIModel model = new SelectScientificCruiseUIModel(); + + List<Program> allPrograms = persistenceService.getAllProgram(); + + model.setPrograms(allPrograms); + + if (allPrograms.isEmpty()) { + // do nothing + + if (log.isDebugEnabled()) { + log.debug("No program found."); + } + } else { + + // get selected program (if any) + + String surveyId = context.getProgramId(); + Program selectedProgram = null; + List<ScientificCruise> allScientificCruises = null; + if (surveyId != null) { + selectedProgram = TuttiEntities.findById(allPrograms, surveyId); + allScientificCruises = persistenceService.getAllScientificCruise(surveyId); + } + + model.setProgram(selectedProgram); + model.setScientificCruises(allScientificCruises); + + if (CollectionUtils.isEmpty(allScientificCruises)) { + + // nothing to select + } else { + String campaignId = context.getScientificCruiseId(); + + ScientificCruise selectedCampaign = null; + if (campaignId != null) { + selectedCampaign = + TuttiEntities.findById(allScientificCruises, campaignId); + } + model.setScientificCruise(selectedCampaign); + } + } + ui.setContextValue(model); + } + + @Override + public void afterInitUI() { + + SelectScientificCruiseUIModel model = ui.getModel(); + + initBeanComboBox(ui.getProgramCombobox(), + model.getPrograms(), + model.getProgram()); + + initBeanComboBox(ui.getScientificCruiseCombobox(), + model.getScientificCruises(), + model.getScientificCruise()); + + model.addPropertyChangeListener(SelectScientificCruiseUIModel.PROPERTY_PROGRAM, new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + Program newValue = (Program) evt.getNewValue(); + boolean noSurvey = newValue == null; + context.setProgramId(noSurvey ? null : newValue.getId()); + List<ScientificCruise> campaigns; + if (noSurvey) { + campaigns = Lists.newArrayList(); + } else { + campaigns = persistenceService.getAllScientificCruise(newValue.getId()); + } + SelectScientificCruiseUIModel model = (SelectScientificCruiseUIModel) evt.getSource(); + model.setScientificCruises(campaigns); + model.setScientificCruise(null); + } + }); + + model.addPropertyChangeListener(SelectScientificCruiseUIModel.PROPERTY_SCIENTIFIC_CRUISES, new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + // reload combo box + BeanComboBox<ScientificCruise> combobox = ui.getScientificCruiseCombobox(); + List<ScientificCruise> campaigns = (List<ScientificCruise>) evt.getNewValue(); + combobox.setData(null); + combobox.setData(campaigns); + } + }); + + model.addPropertyChangeListener(SelectScientificCruiseUIModel.PROPERTY_SCIENTIFIC_CRUISE, new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + ScientificCruise newValue = (ScientificCruise) evt.getNewValue(); + context.setScientificCruiseId(newValue == null ? null : newValue.getId()); + } + }); + } + + @Override + public void onCloseUI() { + PropertyChangeListener[] listeners = ui.getModel().getPropertyChangeListeners(); + for (PropertyChangeListener listener : listeners) { + getModel().removePropertyChangeListener(listener); + } + } + + public void showFishingOperations() { + + context.setScreen(TuttiScreen.FILL_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.setScientificCruiseId(null); + context.setScreen(TuttiScreen.EDIT_PROGRAM); + } + + public void showSelectedScientificCruise() { + ScientificCruise scientificCruise = getModel().getScientificCruise(); + context.setScientificCruiseId(scientificCruise.getId()); + context.setScreen(TuttiScreen.EDIT_SCIENTIFIC_CRUISE); + } + + public void showNewScientificCruise() { + context.setScientificCruiseId(null); + context.setScreen(TuttiScreen.EDIT_SCIENTIFIC_CRUISE); + } +} Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/SelectScientificCruiseUIHandler.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/content/campaign/SelectScientificCruiseUIModel.java (from rev 36, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/SelectCampaignUIModel.java) =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/SelectScientificCruiseUIModel.java (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/SelectScientificCruiseUIModel.java 2012-12-10 02:45:40 UTC (rev 37) @@ -0,0 +1,123 @@ +package fr.ifremer.tutti.ui.swing.content.campaign; + +/* + * #%L + * Tutti :: UI + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ifremer.tutti.persistence.entities.data.ScientificCruise; +import fr.ifremer.tutti.persistence.entities.data.Program; +import org.jdesktop.beans.AbstractSerializableBean; + +import java.util.List; + +/** + * Model of ui {@link SelectScientificCruiseUI}. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.1 + */ +public class SelectScientificCruiseUIModel extends AbstractSerializableBean { + + private static final long serialVersionUID = 1L; + + public static final String PROPERTY_PROGRAMS = "programs"; + + public static final String PROPERTY_PROGRAM = "program"; + + public static final String PROPERTY_SCIENTIFIC_CRUISES = "scientificCruises"; + + public static final String PROPERTY_SCIENTIFIC_CRUISE = "scientificCruise"; + + public static final String PROPERTY_PROGRAM_FOUND = "programFound"; + + public static final String PROPERTY_SCIENTIFIC_CRUISE_FOUND = "scientificCruiseFound"; + + protected List<Program> programs; + + protected Program program; + + protected List<ScientificCruise> scientificCruises; + + protected ScientificCruise scientificCruise; + + public List<Program> getPrograms() { + return programs; + } + + public void setPrograms(List<Program> programs) { + Object oldValue = getPrograms(); + this.programs = programs; + + // nullify program +// setProgram(null); + firePropertyChange(PROPERTY_PROGRAMS, oldValue, programs); + } + + public Program getProgram() { + return program; + } + + public void setProgram(Program program) { + Program oldValue = getProgram(); + this.program = program; + + // nullify scientificCruises +// setScientificCruises(null); + + firePropertyChange(PROPERTY_PROGRAM, oldValue, program); + firePropertyChange(PROPERTY_PROGRAM_FOUND, oldValue != null, program != null); + } + + public boolean isProgramFound() { + return program != null; + } + + public List<ScientificCruise> getScientificCruises() { + return scientificCruises; + } + + public void setScientificCruises(List<ScientificCruise> scientificCruises) { + Object oldValue = getScientificCruises(); + this.scientificCruises = scientificCruises; + + // nullify scientificCruise +// setScientificCruise(null); + firePropertyChange(PROPERTY_SCIENTIFIC_CRUISES, oldValue, scientificCruises); + } + + public ScientificCruise getScientificCruise() { + return scientificCruise; + } + + public void setScientificCruise(ScientificCruise scientificCruise) { + ScientificCruise oldValue = getScientificCruise(); + this.scientificCruise = scientificCruise; + firePropertyChange(PROPERTY_SCIENTIFIC_CRUISE, oldValue, scientificCruise); + firePropertyChange(PROPERTY_SCIENTIFIC_CRUISE_FOUND, oldValue != null, scientificCruise != null); + } + + public boolean isScientificCruiseFound() { + return scientificCruise != null; + } + +} Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/campaign/SelectScientificCruiseUIModel.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/catches/CatchesUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/CatchesUI.css 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/CatchesUI.css 2012-12-10 02:45:40 UTC (rev 37) @@ -1,64 +0,0 @@ -/* - * #%L - * Tutti :: UI - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2012 Ifremer - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -BeanComboBox { - showReset:true; - i18nPrefix:"tutti.property."; - bean:{model}; -} - -#newTraitButton { - text:"tutti.action.new"; - actionIcon:"add"; -} - -#traitComboBox { - property:"selectedTrait"; - selectedItem:{model.getSelectedTrait()}; -} - -#speciesTab { - enabled:{model.getSelectedTrait() != null}; -} - -#benthosTab { - enabled:{model.getSelectedTrait() != null}; -} - -#planctonTab { - enabled:{model.getSelectedTrait() != null}; -} - -#macroDechetTab { - enabled:{model.getSelectedTrait() != null}; -} - -#accidentelTab { - enabled:{model.getSelectedTrait() != null}; -} - -#observationIndividuelTab { - enabled:{false}; - /*enabled:{model.getSelectedTrait() != null};*/ -} Deleted: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/CatchesUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/CatchesUI.jaxx 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/CatchesUI.jaxx 2012-12-10 02:45:40 UTC (rev 37) @@ -1,99 +0,0 @@ -<!-- - #%L - Tutti :: UI - $Id$ - $HeadURL$ - %% - Copyright (C) 2012 Ifremer - %% - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as - published by the Free Software Foundation, either version 3 of the - License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public - License along with this program. If not, see - <http://www.gnu.org/licenses/gpl-3.0.html>. - #L% - --> -<JPanel id='homePanel' layout='{new BorderLayout()}' - implements='fr.ifremer.tutti.ui.swing.TuttiUI<CatchesUIModel, CatchesUIHandler>'> - - <import> - fr.ifremer.tutti.persistence.entities.data.Trait - - fr.ifremer.tutti.ui.swing.TuttiUIContext - fr.ifremer.tutti.ui.swing.content.catches.accidentel.AccidentelTabUI - fr.ifremer.tutti.ui.swing.content.catches.benthos.BenthosTabUI - fr.ifremer.tutti.ui.swing.content.catches.macrodechet.MacroDechetTabUI - fr.ifremer.tutti.ui.swing.content.catches.plancton.PlanctonTabUI - fr.ifremer.tutti.ui.swing.content.catches.species.SpeciesTabUI - - jaxx.runtime.swing.editor.bean.BeanComboBox - - static org.nuiton.i18n.I18n._ - </import> - - <script><![CDATA[ -public CatchesUI(TuttiUIContext context) { - CatchesUIHandler handler = new CatchesUIHandler(context, this); - setContextValue(handler); - handler.beforeInitUI(); -} - -protected void $afterCompleteSetup() { - handler.afterInitUI(); -} - ]]></script> - - <CatchesUIHandler id='handler' - initializer='getContextValue(CatchesUIHandler.class)'/> - - <CatchesUIModel id='model' - initializer='getContextValue(CatchesUIModel.class)'/> - - <Table fill='both' id='topPanel' constraints='BorderLayout.NORTH'> - - <!-- catches trait --> - <row> - <cell anchor='west' weightx='1.0'> - <BeanComboBox id='traitComboBox' constructorParams='this' - genericType='Trait'/> - </cell> - <cell anchor='east'> - <JButton id='newTraitButton' - onActionPerformed='getHandler().createNewTrait()'/> - </cell> - </row> - </Table> - - <JTabbedPane id='tabPane' constraints='BorderLayout.CENTER'> - <tab id='traitTab' title='tutti.label.tab.trait'> - <TraitTabUI id='traitTabContent' constructorParams='this'/> - </tab> - <tab id='speciesTab' title='tutti.label.tab.species'> - <SpeciesTabUI id='speciesTabContent' constructorParams='this'/> - </tab> - <tab id='benthosTab' title='tutti.label.tab.benthos'> - <BenthosTabUI id='benthosTabContent' constructorParams='this'/> - </tab> - <tab id='planctonTab' title='tutti.label.tab.plancton'> - <PlanctonTabUI id='planctonTabContent' constructorParams='this'/> - </tab> - <tab id='macroDechetTab' title='tutti.label.tab.macroDechet'> - <MacroDechetTabUI id='macroDechetTabContent' constructorParams='this'/> - </tab> - <tab id='accidentelTab' title='tutti.label.tab.accidentel'> - <AccidentelTabUI id='accidentelTabContent' constructorParams='this'/> - </tab> - <tab id='observationIndividuelTab' title='tutti.label.tab.observationIndividuel'> - <JLabel text='tutti.to.be.done' horizontalAlignment='{JLabel.CENTER}'/> - </tab> - </JTabbedPane> - -</JPanel> \ No newline at end of file Deleted: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/CatchesUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/CatchesUIHandler.java 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/CatchesUIHandler.java 2012-12-10 02:45:40 UTC (rev 37) @@ -1,200 +0,0 @@ -package fr.ifremer.tutti.ui.swing.content.catches; - -/* - * #%L - * Tutti :: UI - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2012 Ifremer - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import fr.ifremer.tutti.persistence.entities.data.Campaign; -import fr.ifremer.tutti.persistence.entities.data.Trait; -import fr.ifremer.tutti.persistence.entities.TuttiEntities; -import fr.ifremer.tutti.service.PersistenceService; -import fr.ifremer.tutti.ui.swing.AbstractTuttiUIHandler; -import fr.ifremer.tutti.ui.swing.TuttiUIContext; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.util.Date; -import java.util.List; - -/** - * Handler of UI {@link CatchesUI}. - * - * @author tchemit <chemit@codelutin.com> - * @since 0.1 - */ -public class CatchesUIHandler extends AbstractTuttiUIHandler<CatchesUIModel> { - - /** Logger. */ - private static final Log log = LogFactory.getLog(CatchesUIHandler.class); - - private final CatchesUI ui; - - private final PersistenceService persistenceService; - - public CatchesUIHandler(TuttiUIContext context, CatchesUI ui) { - super(context); - this.ui = ui; - persistenceService = context.getService(PersistenceService.class); - } - - @Override - public void beforeInitUI() { - - CatchesUIModel model = new CatchesUIModel(); - - String campaignId = context.getCampaignId(); - - // load existing campaign - Campaign campaign = persistenceService.getCampaign(campaignId); - model.setCampaign(campaign); - - List<Trait> traits = persistenceService.getAllTrait(campaignId); - model.setTrait(traits); - - if (log.isInfoEnabled()) { - log.info("Loaded " + traits.size() + " trait(s)."); - } - - ui.setContextValue(model); - } - - @Override - public void afterInitUI() { - - CatchesUIModel model = ui.getModel(); - - initUI(ui); - - List<Trait> traits = model.getTrait(); - - initBeanComboBox(ui.getTraitComboBox(), - traits, - model.getSelectedTrait()); - - model.addPropertyChangeListener(CatchesUIModel.PROPERTY_SELECTED_TRAIT, new PropertyChangeListener() { - @Override - public void propertyChange(PropertyChangeEvent evt) { - selectTrait((Trait) evt.getNewValue()); - } - }); - - model.addPropertyChangeListener(CatchesUIModel.PROPERTY_TRAIT, new PropertyChangeListener() { - @Override - public void propertyChange(PropertyChangeEvent evt) { - ui.getTraitComboBox().setData(null); - ui.getTraitComboBox().setData((List<Trait>) evt.getNewValue()); - } - }); - - if (!traits.isEmpty()) { - - model.setSelectedTrait(traits.get(0)); - } - } - - @Override - public void onCloseUI() { - - // ui will be saved so we do not want to keep selected tab indexes - ui.getTabPane().setSelectedIndex(0); - ui.getTraitTabContent().getTraitTabPane().setSelectedIndex(0); - - // when quitting ui, let's de-select trait (will save any changes) - selectTrait(null); - } - - @Override - protected CatchesUIModel getModel() { - return ui.getModel(); - } - - public void createNewTrait() { - - // deselect selected trait - ui.getModel().setSelectedTrait(null); - - // use a new empty trait - Trait newTrait = new Trait(); - newTrait.setCampaign(ui.getModel().getCampaign()); - newTrait.setDate(new Date()); - selectTrait(newTrait); - } - - public void selectTrait(Trait selectedTrait) { - - if (log.isInfoEnabled()) { - log.info("New selected trait: " + selectedTrait); - } - // back to trait tab - ui.getTabPane().setSelectedIndex(0); - - // back to general tab of trait tabs - ui.getTraitTabContent().getTraitTabPane().setSelectedIndex(0); - - // propagate trait to his tabs - ui.getTraitTabContent().selectTrait(selectedTrait); - ui.getSpeciesTabContent().selectTrait(selectedTrait); - ui.getBenthosTabContent().selectTrait(selectedTrait); - ui.getPlanctonTabContent().selectTrait(selectedTrait); - ui.getMacroDechetTabContent().selectTrait(selectedTrait); - ui.getAccidentelTabContent().selectTrait(selectedTrait); - - // repaint tabs - ui.getTabPane().repaint(); -// ui.getObservationIndividuelTabContent().selectTrait(selectedTrait); - } - - public void saveTrait(Trait toSave) { - - // persist the trait - - boolean create = toSave.getId() == null; - - Trait savedTrait; - if (create) { - savedTrait = persistenceService.createTrait(toSave); - } else { - savedTrait = persistenceService.saveTrait(toSave); - } - - CatchesUIModel model = ui.getModel(); - - // add the saved trait to trait list - - List<Trait> data = model.getTrait(); - - Trait existingTrait = TuttiEntities.findById(data, savedTrait.getId()); - if (existingTrait != null) { - data.remove(existingTrait); - } - data.add(savedTrait); - - // update model trait list - model.setTrait(data); - - // update model selected trait - model.setSelectedTrait(savedTrait); - } -} Deleted: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/CatchesUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/CatchesUIModel.java 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/CatchesUIModel.java 2012-12-10 02:45:40 UTC (rev 37) @@ -1,83 +0,0 @@ -package fr.ifremer.tutti.ui.swing.content.catches; - -/* - * #%L - * Tutti :: UI - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2012 Ifremer - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import fr.ifremer.tutti.persistence.entities.data.Campaign; -import fr.ifremer.tutti.persistence.entities.data.Trait; -import org.jdesktop.beans.AbstractSerializableBean; - -import java.util.List; - -/** - * Model fo UI {@link CatchesUI}. - * - * @author tchemit <chemit@codelutin.com> - * @since 0.1 - */ -public class CatchesUIModel extends AbstractSerializableBean { - - private static final long serialVersionUID = 1L; - - public static final String PROPERTY_TRAIT = "trait"; - - public static final String PROPERTY_SELECTED_TRAIT = "selectedTrait"; - - public static final String PROPERTY_CAMPAIGN = "campaign"; - - protected List<Trait> trait; - - protected Trait selectedTrait; - - protected Campaign campaign; - - public List<Trait> getTrait() { - return trait; - } - - public void setTrait(List<Trait> trait) { - this.trait = trait; - firePropertyChange(PROPERTY_TRAIT, null, trait); - } - - public Trait getSelectedTrait() { - return selectedTrait; - } - - public void setSelectedTrait(Trait selectedTrait) { - Object oldValue = getSelectedTrait(); - this.selectedTrait = selectedTrait; - firePropertyChange(PROPERTY_SELECTED_TRAIT, oldValue, selectedTrait); - } - - public Campaign getCampaign() { - return campaign; - } - - public void setCampaign(Campaign campaign) { - Object oldValue = getCampaign(); - this.campaign = campaign; - firePropertyChange(PROPERTY_CAMPAIGN, oldValue, campaign); - } -} Copied: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/FishingOperationTabUI.css (from rev 36, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/TraitTabUI.css) =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/FishingOperationTabUI.css (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/FishingOperationTabUI.css 2012-12-10 02:45:40 UTC (rev 37) @@ -0,0 +1,503 @@ +/* + * #%L + * Tutti :: UI + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +JToolBar { + floatable: false; +} + +BeanComboBox { + showReset: true; + i18nPrefix: "tutti.property."; + bean: {model}; +} + +BeanListHeader { + showReset: true; + i18nPrefix: "tutti.property."; +} + +JList { + selectionMode: {ListSelectionModel.MULTIPLE_INTERVAL_SELECTION}; + model: {new DefaultListModel()}; +} + +NumberEditor { + autoPopup: {handler.getConfig().isAutoPopupNumberEditor()}; + showPopupButton: {handler.getConfig().isShowNumberEditorButton()}; + bean: {model}; + showReset: true; +} + +#stationNumberLabel { + text: "tutti.label.fishingOperation.stationNumber"; + labelFor: {stationNumberField}; +} + +#stationNumberTraitNumberLabel { + text: "tutti.label.fishingOperation.stationNumberTraitNumber"; +} + +#stationNumberField { + property: "stationNumber"; + model: {model.getStationNumber()}; + useFloat: false; + numberPattern: {INT_6_DIGITS_PATTERN}; +} + +#traitNumberLabel { + text: "tutti.label.fishingOperation.traitNumber"; + labelFor: {traitNumberField}; +} + +#traitNumberField { + property: "traitNumber"; + model: {model.getTraitNumber()}; + useFloat: false; + numberPattern: {INT_6_DIGITS_PATTERN}; +} + +#dateLabel { + text: "tutti.label.fishingOperation.date"; + labelFor: {dateField}; +} + +#dateField { + date: {model.getDate()}; + formats: {"dd/MM/yyyy"}; +} + +#strataLabel { + text: "tutti.label.fishingOperation.strata"; + labelFor: {strataComboBox}; +} + +#strataComboBox { + property: "strata"; + selectedItem: {model.getStrata()}; +} + +#beaufortScaleLabel { + text: "tutti.label.fishingOperation.beaufortScale"; + labelFor: {beaufortScaleComboBox}; +} + +#beaufortScaleComboBox { + property: "beaufortScale"; + selectedItem: {model.getBeaufortScale()}; +} + +#windDirectionLabel { + text: "tutti.label.fishingOperation.windDirection"; + labelFor: {windDirectionField}; +} + +#windDirectionField { + property: "windDirection"; + model: {model.getWindDirection()}; + useFloat: false; + numberPattern: {INT_6_DIGITS_PATTERN}; +} + +#seaStateLabel { + text: "tutti.label.fishingOperation.seaState"; + labelFor: {seaStateComboBox}; +} + +#seaStateComboBox { + property: "seaState"; + selectedItem: {model.getSeaState()}; +} + +#ouvertureHorizontaleLabel { + text: "tutti.label.fishingOperation.ouvertureHorizontale"; + labelFor: {ouvertureHorizontaleField}; +} + +#ouvertureHorizontaleVerticaleLabel { + text: "tutti.label.fishingOperation.ouvertureHorizontaleVerticale"; +} + +#ouvertureHorizontaleField { + property: "ouvertureHorizontale"; + model: {model.getOuvertureHorizontale()}; + useFloat: false; + numberPattern: {INT_6_DIGITS_PATTERN}; +} + +#ouvertureVerticaleLabel { + text: "tutti.label.fishingOperation.ouvertureVerticale"; + labelFor: {ouvertureVerticaleField}; +} + +#ouvertureVerticaleField { + property: "ouvertureVerticale"; + model: {model.getOuvertureVerticale()}; + useFloat: false; + numberPattern: {INT_6_DIGITS_PATTERN}; +} + +#geometrieMesureeCheckBox { + text: "tutti.label.fishingOperation.geometrieMesuree"; + selected: {model.isGeometrieMesuree()}; +} + +#longueurFunesLabel { + text: "tutti.label.fishingOperation.longueurFunes"; + labelFor: {longueurFunesField}; +} + +#longueurFunesBrasLabel { + text: "tutti.label.fishingOperation.longueurFunesBras"; +} + +#longueurFunesField { + property: "longueurFunes"; + model: {model.getLongueurFunes()}; + useFloat: false; + numberPattern: {INT_6_DIGITS_PATTERN}; +} + +#longueurBrasLabel { + text: "tutti.label.fishingOperation.longueurBras"; + labelFor: {longueurBrasField}; +} + +#longueurBrasField { + property: "longueurBras"; + model: {model.getLongueurBras()}; + useFloat: false; + numberPattern: {INT_6_DIGITS_PATTERN}; +} + +#systemeFermetureCulCheckBox { + text: "tutti.label.fishingOperation.systemeFermetureCul"; + selected: {model.isSystemeFermetureCul()}; +} + +#traitRectiligneCheckBox { + text: "tutti.label.fishingOperation.traitRectiligne"; + selected: {model.isTraitRectiligne()}; +} + +#distanceChaluteeLabel { + text: "tutti.label.fishingOperation.distanceChalutee"; + labelFor: {distanceChaluteeField}; +} + +#distanceChaluteeDureeLabel { + text: "tutti.label.fishingOperation.distanceChaluteeDuree"; +} + +#distanceChaluteeField { + property: "distanceChalutee"; + model: {model.getDistanceChalutee()}; + useFloat: false; + numberPattern: {INT_6_DIGITS_PATTERN}; +} + +#dureeLabel { + text: "tutti.label.fishingOperation.duree"; + labelFor: {dureeField}; +} + +#dureeField { + property: "duree"; + model: {model.getDuree()}; + useFloat: false; + numberPattern: {INT_6_DIGITS_PATTERN}; +} + +#traitValidCheckBox { + text: "tutti.label.fishingOperation.traitValid"; + selected: {model.isTraitValid()}; +} + +#localiteLabel { + text: "tutti.label.fishingOperation.localite"; + labelFor: {localiteField}; +} + +#localiteField { + text: {model.getLocalite()}; +} + +#saisisseurPane { + horizontalScrollBarPolicy: {JScrollPane.HORIZONTAL_SCROLLBAR_NEVER}; + verticalScrollBarPolicy: {JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED}; +} + +#saisisseurHeader { + labelText: {_("tutti.label.list.saisisseur")}; + list: {saisisseurList}; + beanType: {Person.class}; +} + +#commentPane { + columnHeaderView: {new JLabel(_("tutti.label.comment"))}; + minimumSize: {new Dimension(10,50)}; +} + +#commentField { + text: {model.getComment()}; +} + +#gearShootingStartLongitudeLabel { + text: "tutti.label.fishingOperation.gearShootingStartLongitude"; + labelFor: {gearShootingStartLongitudeField}; +} + +#gearShootingStartLongitudeField { + text: {getStringValue(model.getGearShootingStartLongitude())}; +} + +#gearShootingStartLatitudeLabel { + text: "tutti.label.fishingOperation.gearShootingStartLatitude"; + labelFor: {gearShootingStartLatitudeField}; +} + +#gearShootingStartLatitudeField { + text: {getStringValue(model.getGearShootingStartLatitude())}; +} + +#gearShootingStartTimeLabel { + text: "tutti.label.fishingOperation.gearShootingStartTime"; + labelFor: {gearShootingStartTimeField}; +} + +#gearShootingStartTimeField { + text: {getStringValue(model.getGearShootingStartTime())}; +} + +#gearShootingStartDepthLabel { + text: "tutti.label.fishingOperation.gearShootingStartDepth"; + labelFor: {gearShootingStartDepthField}; +} + +#gearShootingStartDepthField { + property: "gearShootingStartDepth"; + model: {model.getGearShootingStartDepth()}; + useFloat: false; + numberPattern: {INT_6_DIGITS_PATTERN}; +} + +#gearShootingEndLongitudeLabel { + text: "tutti.label.fishingOperation.gearShootingEndLongitude"; + labelFor: {gearShootingEndLongitudeField}; +} + +#gearShootingEndLongitudeField { + text: {getStringValue(model.getGearShootingEndLongitude())}; +} + +#gearShootingEndLatitudeLabel { + text: "tutti.label.fishingOperation.gearShootingEndLatitude"; + labelFor: {gearShootingEndLatitudeField}; +} + +#gearShootingEndLatitudeField { + text: {getStringValue(model.getGearShootingEndLatitude())}; +} + +#gearShootingEndTimeLabel { + text: "tutti.label.fishingOperation.gearShootingEndTime"; + labelFor: {gearShootingEndTimeField}; +} + +#gearShootingEndTimeField { + text: {getStringValue(model.getGearShootingEndTime())}; +} + +#gearShootingEndDepthLabel { + text: "tutti.label.fishingOperation.gearShootingEndDepth"; + labelFor: {gearShootingEndDepthField}; +} + +#gearShootingEndDepthField { + property: "gearShootingEndDepth"; + model: {model.getGearShootingEndDepth()}; + useFloat: false; + numberPattern: {INT_6_DIGITS_PATTERN}; +} + +#gearShootingStartSurfaceTemperatureLabel { + text: "tutti.label.fishingOperation.gearShootingStartSurfaceTemperature"; + labelFor: {gearShootingStartSurfaceTemperatureField}; +} + +#gearShootingStartSurfaceTemperatureField { + property: "gearShootingStartSurfaceTemperature"; + model: {model.getGearShootingStartSurfaceTemperature()}; + useFloat: false; + numberPattern: {INT_6_DIGITS_PATTERN}; +} + +#gearShootingEndSurfaceTemperatureLabel { + text: "tutti.label.fishingOperation.gearShootingEndSurfaceTemperature"; + labelFor: {gearShootingEndSurfaceTemperatureField}; +} + +#gearShootingEndSurfaceTemperatureField { + property: "gearShootingEndSurfaceTemperature"; + model: {model.getGearShootingEndSurfaceTemperature()}; + useFloat: false; + numberPattern: {INT_6_DIGITS_PATTERN}; +} + +#gearShootingStartBottomTemperatureLabel { + text: "tutti.label.fishingOperation.gearShootingStartBottomTemperature"; + labelFor: {gearShootingStartBottomTemperatureField}; +} + +#gearShootingStartBottomTemperatureField { + property: "gearShootingStartBottomTemperature"; + model: {model.getGearShootingStartBottomTemperature()}; + useFloat: false; + numberPattern: {INT_6_DIGITS_PATTERN}; +} + +#gearShootingEndBottomTemperatureLabel { + text: "tutti.label.fishingOperation.gearShootingEndBottomTemperature"; + labelFor: {gearShootingEndBottomTemperatureField}; +} + +#gearShootingEndBottomTemperatureField { + property: "gearShootingEndBottomTemperature"; + model: {model.getGearShootingEndBottomTemperature()}; + useFloat: false; + numberPattern: {INT_6_DIGITS_PATTERN}; +} + +#averageBottomTemperatureLabel { + text: "tutti.label.fishingOperation.averageBottomTemperature"; + labelFor: {averageBottomTemperatureField}; +} + +#averageBottomTemperatureField { + property: "averageBottomTemperature"; + model: {model.getAverageBottomTemperature()}; + useFloat: false; + numberPattern: {INT_6_DIGITS_PATTERN}; +} + +#gearShootingStartSurfaceSalinityLabel { + text: "tutti.label.fishingOperation.gearShootingStartSurfaceSalinity"; + labelFor: {gearShootingStartSurfaceSalinityField}; +} + +#gearShootingStartSurfaceSalinityField { + property: "gearShootingStartSurfaceSalinity"; + model: {model.getGearShootingStartSurfaceSalinity()}; + useFloat: false; + numberPattern: {INT_6_DIGITS_PATTERN}; +} + +#gearShootingEndSurfaceSalinityLabel { + text: "tutti.label.fishingOperation.gearShootingEndSurfaceSalinity"; + labelFor: {gearShootingEndSurfaceSalinityField}; +} + +#gearShootingEndSurfaceSalinityField { + property: "gearShootingEndSurfaceSalinity"; + model: {model.getGearShootingEndSurfaceSalinity()}; + useFloat: false; + numberPattern: {INT_6_DIGITS_PATTERN}; +} + +#gearShootingStartBottomSalinityLabel { + text: "tutti.label.fishingOperation.gearShootingStartBottomSalinity"; + labelFor: {gearShootingStartBottomSalinityField}; +} + +#gearShootingStartBottomSalinityField { + property: "gearShootingStartBottomSalinity"; + model: {model.getGearShootingStartBottomSalinity()}; + useFloat: false; + numberPattern: {INT_6_DIGITS_PATTERN}; +} + +#gearShootingEndBottomSalinityLabel { + text: "tutti.label.fishingOperation.gearShootingEndBottomSalinity"; + labelFor: {gearShootingEndBottomSalinityField}; +} + +#gearShootingEndBottomSalinityField { + property: "gearShootingEndBottomSalinity"; + model: {model.getGearShootingEndBottomSalinity()}; + useFloat: false; + numberPattern: {INT_6_DIGITS_PATTERN}; +} + +#averageBottomSalinityLabel { + text: "tutti.label.fishingOperation.averageBottomSalinity"; + labelFor: {averageBottomSalinityField}; +} + +#averageBottomSalinityField { + property: "averageBottomSalinity"; + model: {model.getAverageBottomSalinity()}; + useFloat: false; + numberPattern: {INT_6_DIGITS_PATTERN}; +} + +#noTraitPane { + text: "tutti.label.no.fishingOperation.selected"; + horizontalAlignment: {JLabel.CENTER}; +} + +#saveButton { + actionIcon: "save"; + text: "tutti.action.save"; + enabled: {model.isModify() && model.isValid()}; +} + +#cancelButton { + actionIcon: "cancel"; + text: "tutti.action.cancel"; + enabled: {model.isModify()}; +} + +#importPupitriButton { + actionIcon: "pupitri-import"; + text: "tutti.action.pupitri-import"; +} + +#importCasinoButton { + actionIcon: "casino-import"; + text: "tutti.action.casino-import"; +} + +#messagePanel { + border: {BorderFactory.createTitledBorder("Messages")}; + height: 200; + width: 500; +} + +#errorTable { + rowSelectionAllowed: true; + autoCreateRowSorter: true; + autoResizeMode: 2; + cellSelectionEnabled: false; + selectionMode: 0; + model: {errorTableModel}; +} \ No newline at end of file Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/FishingOperationTabUI.css ___________________________________________________________________ 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/content/catches/FishingOperationTabUI.jaxx (from rev 36, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/TraitTabUI.jaxx) =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/FishingOperationTabUI.jaxx (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/FishingOperationTabUI.jaxx 2012-12-10 02:45:40 UTC (rev 37) @@ -0,0 +1,550 @@ +<!-- + #%L + Tutti :: UI + $Id$ + $HeadURL$ + %% + Copyright (C) 2012 Ifremer + %% + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public + License along with this program. If not, see + <http://www.gnu.org/licenses/gpl-3.0.html>. + #L% + --> +<JPanel id='homePanel' layout='{new BorderLayout()}' + implements='fr.ifremer.tutti.ui.swing.TuttiUI<FishingOperationTabUIModel, FishingOperationTabUIHandler>'> + + <import> + fr.ifremer.tutti.persistence.entities.referential.BeaufortScale + fr.ifremer.tutti.persistence.entities.referential.SeaState + fr.ifremer.tutti.persistence.entities.referential.Strata + fr.ifremer.tutti.persistence.entities.data.FishingOperation + fr.ifremer.tutti.persistence.entities.referential.Person + fr.ifremer.tutti.ui.swing.TuttiUIContext + + jaxx.runtime.swing.editor.bean.BeanComboBox + jaxx.runtime.swing.editor.bean.BeanListHeader + jaxx.runtime.swing.editor.NumberEditor + + jaxx.runtime.validator.swing.SwingValidatorUtil + jaxx.runtime.validator.swing.SwingValidatorMessageTableModel + + org.jdesktop.swingx.JXDatePicker + + java.awt.Dimension + + javax.swing.DefaultListModel + javax.swing.ListSelectionModel + + static org.nuiton.i18n.I18n._ + static jaxx.runtime.SwingUtil.getStringValue + </import> + + <script><![CDATA[ + +public FishingOperationTabUI(FishingOperationsUI parentUI) { + FishingOperationTabUIHandler handler = new FishingOperationTabUIHandler(parentUI, this); + setContextValue(handler); + handler.beforeInitUI(); +} + +public void selectFishingOperation(FishingOperation fishingOperation) { handler.selectFishingOperation(fishingOperation); } + +protected void $afterCompleteSetup() { handler.afterInitUI(); } + ]]></script> + + <FishingOperationTabUIHandler id='handler' + initializer='getContextValue(FishingOperationTabUIHandler.class)'/> + + <FishingOperationTabUIModel id='model' + initializer='getContextValue(FishingOperationTabUIModel.class)'/> + + <SwingValidatorMessageTableModel id='errorTableModel'/> + + <BeanValidator id='validator' bean='model' errorTableModel='errorTableModel' + uiClass='jaxx.runtime.validator.swing.ui.ImageValidationUI'> + <field name='stationNumber' component='stationNumberField'/> + <field name='traitNumber' component='traitNumberField'/> + <field name='date' component='dateField'/> + <field name='comment' component='commentField'/> + <field name='saisisseur' component='saisisseurPane'/> + </BeanValidator> + + <JPanel id='traitPane' constraints='BorderLayout.CENTER' + layout='{new BorderLayout()}'> + + <JTabbedPane id='traitTabPane' constraints='BorderLayout.CENTER'> + <tab id='traitGeneralTab' title='tutti.label.tab.fishingOperation.general'> + <Table fill='both' id='generalForm'> + + <!-- Numero station --> + <row> + <cell anchor='west'> + <!--JLabel id='stationNumberLabel'/--> + <JLabel id='stationNumberTraitNumberLabel'/> + </cell> + <cell weightx='1.0'> + <JPanel layout='{new GridLayout(1,0)}'> + <NumberEditor id='stationNumberField' constructorParams='this'/> + <NumberEditor id='traitNumberField' constructorParams='this'/> + </JPanel> + </cell> + </row> + + <!-- Numero fishingOperation / chalut --> + <!--row> + <cell> + <JLabel id='traitNumberLabel'/> + </cell> + <cell> + <NumberEditor id='traitNumberField' constructorParams='this'/> + </cell> + </row--> + + <!-- Date --> + <row> + <cell> + <JLabel id='dateLabel'/> + </cell> + <cell> + <JXDatePicker id='dateField' + onActionPerformed='handler.setDate(event, "date")'/> + </cell> + </row> + + <!-- Strate d'association --> + <row> + <cell> + <JLabel id='strataLabel'/> + </cell> + <cell fill='horizontal'> + <BeanComboBox id='strataComboBox' constructorParams='this' + genericType='Strata'/> + </cell> + </row> + + <!-- Beaufort scale --> + <row> + <cell anchor='west'> + <JLabel id='beaufortScaleLabel'/> + </cell> + <cell fill='horizontal'> + <BeanComboBox id='beaufortScaleComboBox' constructorParams='this' + genericType='BeaufortScale'/> + </cell> + </row> + + <!-- Wind direction --> + <row> + <cell anchor='west'> + <JLabel id='windDirectionLabel'/> + </cell> + <cell fill='horizontal'> + <NumberEditor id='windDirectionField' constructorParams='this'/> + </cell> + </row> + + <!-- Sea state--> + <row> + <cell anchor='west'> + <JLabel id='seaStateLabel'/> + </cell> + <cell fill='horizontal'> + <BeanComboBox id='seaStateComboBox' constructorParams='this' + genericType='SeaState'/> + </cell> + </row> + + <!-- Ouverture horizontale --> + <row> + <cell anchor='west'> + <JLabel id='ouvertureHorizontaleVerticaleLabel'/> + </cell> + <cell fill='horizontal'> + <JPanel layout='{new GridLayout(1,0)}'> + <NumberEditor id='ouvertureHorizontaleField' + constructorParams='this'/> + <NumberEditor id='ouvertureVerticaleField' + constructorParams='this'/> + </JPanel> + </cell> + </row> + + <!-- Ouverture verticale --> + <!--row> + <cell anchor='west'> + <JLabel id='ouvertureVerticaleLabel'/> + </cell> + <cell fill='horizontal'> + <NumberEditor id='ouvertureVerticaleField' + constructorParams='this'/> + </cell> + </row--> + + <!-- Longueur funes --> + <row> + <cell anchor='west'> + <JLabel id='longueurFunesBrasLabel'/> + </cell> + <cell fill='horizontal'> + <JPanel layout='{new GridLayout(1,0)}'> + <NumberEditor id='longueurFunesField' constructorParams='this'/> + <NumberEditor id='longueurBrasField' constructorParams='this'/> + </JPanel> + </cell> + </row> + + <!-- Longueur bras --> + <!--row> + <cell anchor='west'> + <JLabel id='longueurBrasLabel'/> + </cell> + <cell fill='horizontal'> + <NumberEditor id='longueurBrasField' constructorParams='this'/> + </cell> + </row--> + + <!-- Distance chalutée --> + <row> + <cell anchor='west'> + <JLabel id='distanceChaluteeDureeLabel'/> + </cell> + <cell fill='horizontal'> + <JPanel layout='{new GridLayout(1,0)}'> + <NumberEditor id='distanceChaluteeField' constructorParams='this'/> + <NumberEditor id='dureeField' constructorParams='this'/> + </JPanel> + </cell> + </row> + + <!-- Durée --> + <!--row> + <cell anchor='west'> + <JLabel id='dureeLabel'/> + </cell> + <cell fill='horizontal'> + <NumberEditor id='dureeField' constructorParams='this'/> + </cell> + </row--> + + <!-- Localité --> + <row> + <cell> + <JLabel id='localiteLabel'/> + </cell> + <cell> + <JTextField id='localiteField' + onKeyReleased='handler.setText(event, "localite")'/> + </cell> + </row> + + <!-- FishingOperation valide / Rectiligne --> + <row> + <cell columns='2'> + <JPanel layout='{new GridLayout(1,0)}'> + <JCheckBox id='traitValidCheckBox' + onItemStateChanged='handler.setBoolean(event, "traitValid")'/> + <JCheckBox id='traitRectiligneCheckBox' + onItemStateChanged='handler.setBoolean(event, "traitRectiligne")'/> + </JPanel> + </cell> + </row> + + <!-- Système de fermeture du cul / Geometrie mesuree --> + <row> + <cell columns='2'> + <JPanel layout='{new GridLayout(1,0)}'> + <JCheckBox id='systemeFermetureCulCheckBox' + onItemStateChanged='handler.setBoolean(event, "systemeFermetureCul")'/> + <JCheckBox id='geometrieMesureeCheckBox' + onItemStateChanged='handler.setBoolean(event, "geometrieMesuree")'/> + </JPanel> + </cell> + </row> + + <!-- FishingOperation rectiligne --> + <!--row> + <cell columns='2'> + <JCheckBox id='traitRectiligneCheckBox' + onItemStateChanged='handler.setBoolean(event, "traitRectiligne")'/> + </cell> + </row--> + + <!-- Geometrie mesuree --> + <!--row> + <cell columns='2'> + <JCheckBox id='geometrieMesureeCheckBox' + onItemStateChanged='handler.setBoolean(event, "geometrieMesuree")'/> + </cell> + </row--> + + <!-- Saisisseur --> + <row weighty='0.3'> + <cell columns='2'> + <JScrollPane id='saisisseurPane' + columnHeaderView="{saisisseurHeader}" + onFocusGained='saisisseurList.requestFocus()'> + <JList id='saisisseurList' + onValueChanged='handler.selectListData(event, "saisisseur")'/> + <BeanListHeader id='saisisseurHeader' genericType='Person'/> + </JScrollPane> + </cell> + </row> + + <!-- Commentaire --> + <row weighty='0.3'> + <cell columns='2'> + <JScrollPane id='commentPane' + onFocusGained='commentField.requestFocus()'> + <JTextArea id='commentField' + onKeyReleased='handler.setText(event, "comment")'/> + </JScrollPane> + </cell> + </row> + <row> + <cell columns='2'> + <JPanel layout='{new GridLayout(1,0)}'> + <JButton id='importPupitriButton' + onActionPerformed='handler.importPupitri()'/> + <JButton id='importCasinoButton' + onActionPerformed='handler.importCasino()'/> + </JPanel> + </cell> + </row> + </Table> + </tab> + + <tab id='traitGearShootingTab' title='tutti.label.tab.fishingOperation.gearShooting'> + + <Table fill='both' id='gearShootingForm'> + + <!-- GearShootingStart Longitude --> + <row> + <cell> + <JLabel id='gearShootingStartLongitudeLabel'/> + </cell> + <cell weightx='1.0'> + <JTextField id='gearShootingStartLongitudeField' + onKeyReleased='handler.setGearShootingStartLongitude(((JTextField)event.getSource()).getText())'/> + </cell> + </row> + + <!-- GearShootingStart Latitude --> + <row> + <cell> + <JLabel id='gearShootingStartLatitudeLabel'/> + </cell> + <cell weightx='1.0'> + <JTextField id='gearShootingStartLatitudeField' + onKeyReleased='handler.setGearShootingStartLatitude(((JTextField)event.getSource()).getText())'/> + </cell> + </row> + + <!-- GearShootingStart Time --> + <row> + <cell> + <JLabel id='gearShootingStartTimeLabel'/> + </cell> + <cell weightx='1.0'> + <JTextField id='gearShootingStartTimeField' + onKeyReleased='handler.setGearShootingStartTime(((JTextField)event.getSource()).getText())'/> + </cell> + </row> + + <!-- GearShootingStart Depth --> + <row> + <cell> + <JLabel id='gearShootingStartDepthLabel'/> + </cell> + <cell weightx='1.0'> + <NumberEditor id='gearShootingStartDepthField' + constructorParams='this'/> + </cell> + </row> + + <!-- GearShootingEnd Longitude --> + <row> + <cell> + <JLabel id='gearShootingEndLongitudeLabel'/> + </cell> + <cell weightx='1.0'> + <JTextField id='gearShootingEndLongitudeField' + onKeyReleased='handler.setGearShootingEndLongitude(((JTextField)event.getSource()).getText())'/> + </cell> + </row> + + <!-- GearShootingEnd Latitude --> + <row> + <cell> + <JLabel id='gearShootingEndLatitudeLabel'/> + </cell> + <cell weightx='1.0'> + <JTextField id='gearShootingEndLatitudeField' + onKeyReleased='handler.setGearShootingEndLatitude(((JTextField)event.getSource()).getText())'/> + </cell> + </row> + + <!-- GearShootingEnd Time --> + <row> + <cell> + <JLabel id='gearShootingEndTimeLabel'/> + </cell> + <cell weightx='1.0'> + <JTextField id='gearShootingEndTimeField' + onKeyReleased='handler.setGearShootingEndTime(((JTextField)event.getSource()).getText())'/> + </cell> + </row> + + <!-- GearShootingEnd Depth --> + <row> + <cell> + <JLabel id='gearShootingEndDepthLabel'/> + </cell> + <cell weightx='1.0'> + <NumberEditor id='gearShootingEndDepthField' + constructorParams='this'/> + </cell> + </row> + </Table> + </tab> + + <tab id='traitHydrologyTabContent' title='tutti.label.tab.fishingOperation.hydrology'> + + <Table fill='both' id='hydrologyForm'> + + <!-- GearShootingStartSurfaceTemperature --> + <row> + <cell> + <JLabel id='gearShootingStartSurfaceTemperatureLabel'/> + </cell> + <cell weightx='1.0'> + <NumberEditor id='gearShootingStartSurfaceTemperatureField' + constructorParams='this'/> + </cell> + </row> + + <!-- GearShootingEndSurfaceTemperature --> + <row> + <cell> + <JLabel id='gearShootingEndSurfaceTemperatureLabel'/> + </cell> + <cell weightx='1.0'> + <NumberEditor id='gearShootingEndSurfaceTemperatureField' + constructorParams='this'/> + </cell> + </row> + + <!-- GearShootingStartBottomTemperature --> + <row> + <cell> + <JLabel id='gearShootingStartBottomTemperatureLabel'/> + </cell> + <cell weightx='1.0'> + <NumberEditor id='gearShootingStartBottomTemperatureField' + constructorParams='this'/> + </cell> + </row> + + <!-- GearShootingEndBottomTemperature --> + <row> + <cell> + <JLabel id='gearShootingEndBottomTemperatureLabel'/> + </cell> + <cell weightx='1.0'> + <NumberEditor id='gearShootingEndBottomTemperatureField' + constructorParams='this'/> + </cell> + </row> + + <!-- AverageBottomTemperature --> + <row> + <cell> + <JLabel id='averageBottomTemperatureLabel'/> + </cell> + <cell weightx='1.0'> + <NumberEditor id='averageBottomTemperatureField' + constructorParams='this'/> + </cell> + </row> + + <!-- GearShootingStartSurfaceSalinity --> + <row> + <cell> + <JLabel id='gearShootingStartSurfaceSalinityLabel'/> + </cell> + <cell weightx='1.0'> + <NumberEditor id='gearShootingStartSurfaceSalinityField' + constructorParams='this'/> + </cell> + </row> + + <!-- GearShootingEndSurfaceSalinity --> + <row> + <cell> + <JLabel id='gearShootingEndSurfaceSalinityLabel'/> + </cell> + <cell weightx='1.0'> + <NumberEditor id='gearShootingEndSurfaceSalinityField' + constructorParams='this'/> + </cell> + </row> + + <!-- GearShootingStartBottomSalinity --> + <row> + <cell> + <JLabel id='gearShootingStartBottomSalinityLabel'/> + </cell> + <cell weightx='1.0'> + <NumberEditor id='gearShootingStartBottomSalinityField' + constructorParams='this'/> + </cell> + </row> + + <!-- GearShootingEndBottomSalinity --> + <row> + <cell> + <JLabel id='gearShootingEndBottomSalinityLabel'/> + </cell> + <cell weightx='1.0'> + <NumberEditor id='gearShootingEndBottomSalinityField' + constructorParams='this'/> + </cell> + </row> + + <!-- AverageBottomSalinity --> + <row> + <cell> + <JLabel id='averageBottomSalinityLabel'/> + </cell> + <cell weightx='1.0'> + <NumberEditor id='averageBottomSalinityField' + constructorParams='this'/> + </cell> + </row> + + </Table> + </tab> + </JTabbedPane> + + <!-- Actions --> + <JPanel layout='{new BorderLayout()}' constraints='BorderLayout.SOUTH'> + <JPanel layout='{new GridLayout(1,0)}' constraints='BorderLayout.CENTER'> + <JButton id='cancelButton' onActionPerformed='handler.cancel()'/> + <JButton id='saveButton' onActionPerformed='handler.save()'/> + </JPanel> + </JPanel> + + </JPanel> + + <JLabel id='noTraitPane'/> +</JPanel> Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/FishingOperationTabUI.jaxx ___________________________________________________________________ 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/content/catches/FishingOperationTabUIHandler.java (from rev 36, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/TraitTabUIHandler.java) =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/FishingOperationTabUIHandler.java (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/FishingOperationTabUIHandler.java 2012-12-10 02:45:40 UTC (rev 37) @@ -0,0 +1,240 @@ +package fr.ifremer.tutti.ui.swing.content.catches; + +/* + * #%L + * Tutti :: UI + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import fr.ifremer.tutti.persistence.entities.referential.Person; +import fr.ifremer.tutti.service.PersistenceService; +import fr.ifremer.tutti.ui.swing.AbstractTuttiUIHandler; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import javax.swing.JLabel; +import javax.swing.JPanel; +import java.awt.BorderLayout; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.sql.Date; +import java.util.List; + +/** + * Handler for UI {@link FishingOperationTabUI}. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.1 + */ +public class FishingOperationTabUIHandler extends AbstractTuttiUIHandler<FishingOperationTabUIModel> { + + /** Logger. */ + private static final Log log = + LogFactory.getLog(FishingOperationTabUIHandler.class); + + private final FishingOperationTabUI ui; + + private final FishingOperationsUI parentUi; + + private final PersistenceService persistenceService; + + public FishingOperationTabUIHandler(FishingOperationsUI parentUi, FishingOperationTabUI ui) { + super(parentUi.getHandler().getContext()); + this.ui = ui; + this.parentUi = parentUi; + this.persistenceService = context.getService(PersistenceService.class); + } + + @Override + public void beforeInitUI() { + + FishingOperationTabUIModel model = new FishingOperationTabUIModel(); + model.addPropertyChangeListener(FishingOperationTabUIModel.PROPERTY_EMPTY, new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + JPanel form = ui.getTraitPane(); + JLabel noContentPane = ui.getNoTraitPane(); + + Boolean empty = (Boolean) evt.getNewValue(); + ui.remove(form); + ui.remove(noContentPane); + if (empty) { + ui.add(noContentPane, BorderLayout.CENTER); + } else { + ui.add(form, BorderLayout.CENTER); + } + ui.repaint(); + } + }); + + listModelIsModify(model); + + ui.setContextValue(model); + } + + @Override + public void afterInitUI() { + + FishingOperationTabUIModel model = ui.getModel(); + + initUI(ui); + + initBeanList(ui.getSaisisseurHeader(), + persistenceService.getAllPerson(), + model.getSaisisseur()); + + initBeanComboBox(ui.getBeaufortScaleComboBox(), + persistenceService.getAllBeaufortScale(), + model.getBeaufortScale()); + + initBeanComboBox(ui.getStrataComboBox(), + persistenceService.getAllStrata(), + model.getStrata()); + + initBeanComboBox(ui.getSeaStateComboBox(), + persistenceService.getAllSeaState(), + model.getSeaState()); + + model.setEmpty(true); + + listenValidatorValid(ui.getValidator(), getModel()); + } + + @Override + public void onCloseUI() { + } + + @Override + protected FishingOperationTabUIModel getModel() { + return ui.getModel(); + } + + public void selectFishingOperation(FishingOperation bean) { + + boolean empty = bean == null; + + FishingOperationTabUIModel model = ui.getModel(); + + // clean previous selection + ui.getSaisisseurHeader().getList().clearSelection(); + + if (empty) { + + model.fromBean(new FishingOperation()); + } else { + + model.fromBean(bean); + } + + // update saisissuer selection + List<Person> saisisseur = model.getSaisisseur(); + if (CollectionUtils.isNotEmpty(saisisseur)) { + updateIndices(ui.getSaisisseurList(), saisisseur); + } + + // update model empty property + model.setEmpty(empty); + + // reload bean in validator (? really mandatory?) +// ui.getValidator().reloadBean(); + + // if new fishingOperation can already cancel his creation + model.setModify(!empty && model.isCreate()); + } + + public void cancel() { + + String id = ui.getModel().getId(); + + if (log.isInfoEnabled()) { + log.info("Cancel edition for fishingOperation: " + id); + } + boolean newBean = StringUtils.isBlank(id); + + if (newBean) { + + // cancel to create a new fishingOperation + parentUi.getHandler().selectFishingOperation(null); + + } else { + + // reselect in ui the fishingOperation + FishingOperation selectedFishingOperation = parentUi.getModel().getSelectedFishingOperation(); + parentUi.getHandler().selectFishingOperation(selectedFishingOperation); + } + } + + public void save() { + + // get fishingOperation to save + FishingOperation toSave = getModel().toBean(); + + if (log.isInfoEnabled()) { + log.info("Save edition for fishingOperation: " + toSave.getId()); + } + + // keep selected tab (to resotre it after save) + int selectedIndex = ui.getTraitTabPane().getSelectedIndex(); + + // persist current fishingOperation + parentUi.getHandler().saveFishingOperation(toSave); + + // reselect current tab + ui.getTraitTabPane().setSelectedIndex(selectedIndex); + + getModel().setModify(false); + } + + public void importPupitri() { + //TODO + } + + public void importCasino() { + //TODO + } + + public void setGearShootingStartLatitude(String text) { + ui.getModel().setGearShootingStartLatitude(Float.valueOf(text)); + } + + public void setGearShootingStartLongitude(String text) { + ui.getModel().setGearShootingStartLongitude(Float.valueOf(text)); + } + + public void setGearShootingStartTime(String text) { + ui.getModel().setGearShootingStartTime(Date.valueOf(text)); + } + + public void setGearShootingEndLatitude(String text) { + ui.getModel().setGearShootingEndLatitude(Float.valueOf(text)); + } + + public void setGearShootingEndLongitude(String text) { + ui.getModel().setGearShootingEndLongitude(Float.valueOf(text)); + } + + public void setGearShootingEndTime(String text) { + ui.getModel().setGearShootingEndTime(Date.valueOf(text)); + } +} Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/FishingOperationTabUIHandler.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/content/catches/FishingOperationTabUIModel.java (from rev 36, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/TraitTabUIModel.java) =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/FishingOperationTabUIModel.java (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/FishingOperationTabUIModel.java 2012-12-10 02:45:40 UTC (rev 37) @@ -0,0 +1,615 @@ +package fr.ifremer.tutti.ui.swing.content.catches; + +/* + * #%L + * Tutti :: UI + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import fr.ifremer.tutti.persistence.entities.data.ScientificCruise; +import fr.ifremer.tutti.persistence.entities.referential.BeaufortScale; +import fr.ifremer.tutti.persistence.entities.referential.Person; +import fr.ifremer.tutti.persistence.entities.referential.SeaState; +import fr.ifremer.tutti.persistence.entities.referential.Strata; +import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; +import org.nuiton.util.beans.Binder; +import org.nuiton.util.beans.BinderFactory; + +import java.util.Date; +import java.util.List; + +/** + * Model for UI {@link FishingOperationTabUI}. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.1 + */ +public class FishingOperationTabUIModel extends AbstractTuttiBeanUIModel<FishingOperation, FishingOperationTabUIModel> { + + private static final long serialVersionUID = 1L; + + public static final String PROPERTY_EMPTY = "empty"; + + public static final String PROPERTY_STATION_NUMBER = "stationNumber"; + + public static final String PROPERTY_TRAIT_NUMBER = "traitNumber"; + + public static final String PROPERTY_DATE = "date"; + + public static final String PROPERTY_STRATA = "strata"; + + public static final String PROPERTY_GEAR_SHOOTING_START_LATITUDE = "gearShootingStartLatitude"; + + public static final String PROPERTY_GEAR_SHOOTING_START_LONGITUDE = "gearShootingStartLongitude"; + + public static final String PROPERTY_GEAR_SHOOTING_START_TIME = "gearShootingStartTime"; + + public static final String PROPERTY_GEAR_SHOOTING_START_DEPTH = "gearShootingStartDepth"; + + public static final String PROPERTY_GEAR_SHOOTING_END_LATITUDE = "gearShootingEndLatitude"; + + public static final String PROPERTY_GEAR_SHOOTING_END_LONGITUDE = "gearShootingEndLongitude"; + + public static final String PROPERTY_GEAR_SHOOTING_END_TIME = "gearShootingEndTime"; + + public static final String PROPERTY_GEAR_SHOOTING_END_DEPTH = "gearShootingEndDepth"; + + public static final String PROPERTY_BEAUFORT_SCALE = "beaufortScale"; + + public static final String PROPERTY_WIND_DIRECTION = "windDirection"; + + public static final String PROPERTY_SEA_STATE = "seaState"; + + public static final String PROPERTY_OUVERTURE_HORIZONTALE = "ouvertureHorizontale"; + + public static final String PROPERTY_OUVERTURE_VERTICALE = "ouvertureVerticale"; + + public static final String PROPERTY_GEOMETRIE_MESUREE = "geometrieMesuree"; + + public static final String PROPERTY_LONGUEUR_FUNES = "longueurFunes"; + + public static final String PROPERTY_LONGUEUR_BRAS = "longueurBras"; + + public static final String PROPERTY_SYSTEME_FERMETURE_CUL = "systemeFermetureCul"; + + public static final String PROPERTY_TRAIT_RECTILIGNE = "traitRectiligne"; + + public static final String PROPERTY_DISTANCE_CHALUTEE = "distanceChalutee"; + + public static final String PROPERTY_DUREE = "duree"; + + public static final String PROPERTY_TRAIT_VALID = "traitValid"; + + public static final String PROPERTY_LOCALITE = "localite"; + + public static final String PROPERTY_COMMENT = "comment"; + + public static final String PROPERTY_SAISISSEUR = "saisisseur"; + + public static final String PROPERTY_GEAR_SHOOTING_START_SURFACE_TEMPERATURE = "gearShootingStartSurfaceTemperature"; + + public static final String PROPERTY_GEAR_SHOOTING_END_SURFACE_TEMPERATURE = "gearShootingEndSurfaceTemperature"; + + public static final String PROPERTY_GEAR_SHOOTING_START_BOTTOM_TEMPERATURE = "gearShootingStartBottomTemperature"; + + public static final String PROPERTY_GEAR_SHOOTING_END_BOTTOM_TEMPERATURE = "gearShootingEndBottomTemperature"; + + public static final String PROPERTY_AVERAGE_BOTTOM_TEMPERATURE = "averageBottomTemperature"; + + public static final String PROPERTY_GEAR_SHOOTING_START_SURFACE_SALINITY = "gearShootingStartSurfaceSalinity"; + + public static final String PROPERTY_GEAR_SHOOTING_END_SURFACE_SALINITY = "gearShootingEndSurfaceSalinity"; + + public static final String PROPERTY_GEAR_SHOOTING_START_BOTTOM_SALINITY = "gearShootingStartBottomSalinity"; + + public static final String PROPERTY_GEAR_SHOOTING_END_BOTTOM_SALINITY = "gearShootingEndBottomSalinity"; + + public static final String PROPERTY_AVERAGE_BOTTOM_SALINITY = "averageBottomSalinity"; + + protected boolean empty; + + protected ScientificCruise scientificCruise; + + protected Integer stationNumber; + + protected Integer traitNumber; + + protected Date date; + + protected Strata strata; + + protected Float gearShootingStartLatitude; + + protected Float gearShootingStartLongitude; + + protected Date gearShootingStartTime; + + protected Float gearShootingStartDepth; + + protected Float gearShootingEndLatitude; + + protected Float gearShootingEndLongitude; + + protected Date gearShootingEndTime; + + protected Float gearShootingEndDepth; + + protected BeaufortScale beaufortScale; + + protected Integer windDirection; + + protected SeaState seaState; + + protected Float ouvertureHorizontale; + + protected Float ouvertureVerticale; + + protected boolean geometrieMesuree; + + protected Float longueurFunes; + + protected Float longueurBras; + + protected boolean systemeFermetureCul; + + protected boolean traitRectiligne; + + protected Float distanceChalutee; + + protected Float duree; + + protected boolean traitValid; + + protected String localite; + + protected String comment; + + protected List<Person> saisisseur; + + protected Float gearShootingStartSurfaceTemperature; + + protected Float gearShootingEndSurfaceTemperature; + + protected Float gearShootingStartBottomTemperature; + + protected Float gearShootingEndBottomTemperature; + + protected Float averageBottomTemperature; + + protected Float gearShootingStartSurfaceSalinity; + + protected Float gearShootingEndSurfaceSalinity; + + protected Float gearShootingStartBottomSalinity; + + protected Float gearShootingEndBottomSalinity; + + protected Float averageBottomSalinity; + + protected static Binder<FishingOperationTabUIModel, FishingOperation> toBeanBinder = + BinderFactory.newBinder(FishingOperationTabUIModel.class, + FishingOperation.class); + + protected static Binder<FishingOperation, FishingOperationTabUIModel> fromBeanBinder = + BinderFactory.newBinder(FishingOperation.class, FishingOperationTabUIModel.class); + + public FishingOperationTabUIModel() { + super(FishingOperation.class, fromBeanBinder, toBeanBinder); + } + + public boolean isEmpty() { + return empty; + } + + public void setEmpty(boolean empty) { + Object oldValue = isEmpty(); + this.empty = empty; + firePropertyChange(PROPERTY_EMPTY, oldValue, empty); + } + + public ScientificCruise getScientificCruise() { + return scientificCruise; + } + + public void setScientificCruise(ScientificCruise scientificCruise) { + this.scientificCruise = scientificCruise; + } + + public Integer getStationNumber() { + return stationNumber; + } + + public void setStationNumber(Integer stationNumber) { + Object oldValue = getStationNumber(); + this.stationNumber = stationNumber; + firePropertyChange(PROPERTY_STATION_NUMBER, oldValue, stationNumber); + } + + public Integer getTraitNumber() { + return traitNumber; + } + + public void setTraitNumber(Integer traitNumber) { + Object oldValue = getTraitNumber(); + this.traitNumber = traitNumber; + firePropertyChange(PROPERTY_TRAIT_NUMBER, oldValue, traitNumber); + } + + public Date getDate() { + return date; + } + + public void setDate(Date date) { + Object oldValue = getDate(); + this.date = date; + firePropertyChange(PROPERTY_DATE, oldValue, date); + } + + public Strata getStrata() { + return strata; + } + + public void setStrata(Strata strata) { + Object oldValue = getStrata(); + this.strata = strata; + firePropertyChange(PROPERTY_STRATA, oldValue, strata); + } + + public Float getGearShootingStartLatitude() { + return gearShootingStartLatitude; + } + + public void setGearShootingStartLatitude(Float gearShootingStartLatitude) { + Object oldValue = getGearShootingStartLatitude(); + this.gearShootingStartLatitude = gearShootingStartLatitude; + firePropertyChange(PROPERTY_GEAR_SHOOTING_START_LATITUDE, oldValue, gearShootingStartLatitude); + } + + public Float getGearShootingStartLongitude() { + return gearShootingStartLongitude; + } + + public void setGearShootingStartLongitude(Float gearShootingStartLongitude) { + Object oldValue = getGearShootingStartLongitude(); + this.gearShootingStartLongitude = gearShootingStartLongitude; + firePropertyChange(PROPERTY_GEAR_SHOOTING_START_LONGITUDE, oldValue, gearShootingStartLongitude); + } + + public Date getGearShootingStartTime() { + return gearShootingStartTime; + } + + public void setGearShootingStartTime(Date gearShootingStartTime) { + Object oldValue = getGearShootingStartTime(); + this.gearShootingStartTime = gearShootingStartTime; + firePropertyChange(PROPERTY_GEAR_SHOOTING_START_TIME, oldValue, gearShootingStartTime); + } + + public Float getGearShootingStartDepth() { + return gearShootingStartDepth; + } + + public void setGearShootingStartDepth(Float gearShootingStartDepth) { + Object oldValue = getGearShootingStartDepth(); + this.gearShootingStartDepth = gearShootingStartDepth; + firePropertyChange(PROPERTY_GEAR_SHOOTING_START_DEPTH, oldValue, gearShootingStartDepth); + } + + public Float getGearShootingEndLatitude() { + return gearShootingEndLatitude; + } + + public void setGearShootingEndLatitude(Float gearShootingEndLatitude) { + Object oldValue = getGearShootingEndLatitude(); + this.gearShootingEndLatitude = gearShootingEndLatitude; + firePropertyChange(PROPERTY_GEAR_SHOOTING_END_LATITUDE, oldValue, gearShootingEndLatitude); + } + + public Float getGearShootingEndLongitude() { + return gearShootingEndLongitude; + } + + public void setGearShootingEndLongitude(Float gearShootingEndLongitude) { + Object oldValue = getGearShootingEndLongitude(); + this.gearShootingEndLongitude = gearShootingEndLongitude; + firePropertyChange(PROPERTY_GEAR_SHOOTING_END_LONGITUDE, oldValue, gearShootingEndLongitude); + } + + public Date getGearShootingEndTime() { + return gearShootingEndTime; + } + + public void setGearShootingEndTime(Date gearShootingEndTime) { + Object oldValue = getGearShootingEndTime(); + this.gearShootingEndTime = gearShootingEndTime; + firePropertyChange(PROPERTY_GEAR_SHOOTING_END_TIME, oldValue, gearShootingEndTime); + } + + public Float getGearShootingEndDepth() { + return gearShootingEndDepth; + } + + public void setGearShootingEndDepth(Float gearShootingEndDepth) { + Object oldValue = getGearShootingEndDepth(); + this.gearShootingEndDepth = gearShootingEndDepth; + firePropertyChange(PROPERTY_GEAR_SHOOTING_END_DEPTH, oldValue, gearShootingEndDepth); + } + + public BeaufortScale getBeaufortScale() { + return beaufortScale; + } + + public void setBeaufortScale(BeaufortScale beaufortScale) { + Object oldValue = getBeaufortScale(); + this.beaufortScale = beaufortScale; + firePropertyChange(PROPERTY_BEAUFORT_SCALE, oldValue, beaufortScale); + } + + public Integer getWindDirection() { + return windDirection; + } + + public void setWindDirection(Integer windDirection) { + Object oldValue = getWindDirection(); + this.windDirection = windDirection; + firePropertyChange(PROPERTY_WIND_DIRECTION, oldValue, windDirection); + } + + public SeaState getSeaState() { + return seaState; + } + + public void setSeaState(SeaState seaState) { + Object oldValue = getSeaState(); + this.seaState = seaState; + firePropertyChange(PROPERTY_SEA_STATE, oldValue, seaState); + } + + public Float getOuvertureHorizontale() { + return ouvertureHorizontale; + } + + public void setOuvertureHorizontale(Float ouvertureHorizontale) { + Object oldValue = getOuvertureHorizontale(); + this.ouvertureHorizontale = ouvertureHorizontale; + firePropertyChange(PROPERTY_OUVERTURE_HORIZONTALE, oldValue, ouvertureHorizontale); + } + + public Float getOuvertureVerticale() { + return ouvertureVerticale; + } + + public void setOuvertureVerticale(Float ouvertureVerticale) { + Object oldValue = getOuvertureVerticale(); + this.ouvertureVerticale = ouvertureVerticale; + firePropertyChange(PROPERTY_OUVERTURE_VERTICALE, oldValue, ouvertureVerticale); + } + + public boolean isGeometrieMesuree() { + return geometrieMesuree; + } + + public void setGeometrieMesuree(boolean geometrieMesuree) { + Object oldValue = isGeometrieMesuree(); + this.geometrieMesuree = geometrieMesuree; + firePropertyChange(PROPERTY_GEOMETRIE_MESUREE, oldValue, geometrieMesuree); + } + + public Float getLongueurFunes() { + return longueurFunes; + } + + public void setLongueurFunes(Float longueurFunes) { + Object oldValue = getLongueurFunes(); + this.longueurFunes = longueurFunes; + firePropertyChange(PROPERTY_LONGUEUR_FUNES, oldValue, longueurFunes); + } + + public Float getLongueurBras() { + return longueurBras; + } + + public void setLongueurBras(Float longueurBras) { + Object oldValue = getLongueurBras(); + this.longueurBras = longueurBras; + firePropertyChange(PROPERTY_LONGUEUR_BRAS, oldValue, longueurBras); + } + + public boolean isSystemeFermetureCul() { + return systemeFermetureCul; + } + + public void setSystemeFermetureCul(boolean systemeFermetureCul) { + Object oldValue = isSystemeFermetureCul(); + this.systemeFermetureCul = systemeFermetureCul; + firePropertyChange(PROPERTY_SYSTEME_FERMETURE_CUL, oldValue, systemeFermetureCul); + } + + public boolean isTraitRectiligne() { + return traitRectiligne; + } + + public void setTraitRectiligne(boolean traitRectiligne) { + Object oldValue = isTraitRectiligne(); + this.traitRectiligne = traitRectiligne; + firePropertyChange(PROPERTY_TRAIT_RECTILIGNE, oldValue, traitRectiligne); + } + + public Float getDistanceChalutee() { + return distanceChalutee; + } + + public void setDistanceChalutee(Float distanceChalutee) { + Object oldValue = getDistanceChalutee(); + this.distanceChalutee = distanceChalutee; + firePropertyChange(PROPERTY_DISTANCE_CHALUTEE, oldValue, distanceChalutee); + } + + public Float getDuree() { + return duree; + } + + public void setDuree(Float duree) { + Object oldValue = getDuree(); + this.duree = duree; + firePropertyChange(PROPERTY_DUREE, oldValue, duree); + } + + public boolean isTraitValid() { + return traitValid; + } + + public void setTraitValid(boolean traitValid) { + Object oldValue = isTraitValid(); + this.traitValid = traitValid; + firePropertyChange(PROPERTY_TRAIT_VALID, oldValue, traitValid); + } + + public String getLocalite() { + return localite; + } + + public void setLocalite(String localite) { + Object oldValue = getLocalite(); + this.localite = localite; + firePropertyChange(PROPERTY_LOCALITE, oldValue, localite); + } + + public String getComment() { + return comment; + } + + public void setComment(String comment) { + Object oldValue = getComment(); + this.comment = comment; + firePropertyChange(PROPERTY_COMMENT, oldValue, comment); + } + + public List<Person> getSaisisseur() { + return saisisseur; + } + + public void setSaisisseur(List<Person> saisisseur) { + this.saisisseur = saisisseur; + firePropertyChange(PROPERTY_SAISISSEUR, null, saisisseur); + } + + public Float getGearShootingStartSurfaceTemperature() { + return gearShootingStartSurfaceTemperature; + } + + public void setGearShootingStartSurfaceTemperature(Float gearShootingStartSurfaceTemperature) { + Object oldValue = getGearShootingStartSurfaceTemperature(); + this.gearShootingStartSurfaceTemperature = gearShootingStartSurfaceTemperature; + firePropertyChange(PROPERTY_GEAR_SHOOTING_START_SURFACE_TEMPERATURE, oldValue, gearShootingStartSurfaceTemperature); + } + + public Float getGearShootingEndSurfaceTemperature() { + return gearShootingEndSurfaceTemperature; + } + + public void setGearShootingEndSurfaceTemperature(Float gearShootingEndSurfaceTemperature) { + Object oldValue = getGearShootingEndSurfaceTemperature(); + this.gearShootingEndSurfaceTemperature = gearShootingEndSurfaceTemperature; + firePropertyChange(PROPERTY_GEAR_SHOOTING_END_SURFACE_TEMPERATURE, oldValue, gearShootingEndSurfaceTemperature); + } + + public Float getGearShootingStartBottomTemperature() { + return gearShootingStartBottomTemperature; + } + + public void setGearShootingStartBottomTemperature(Float gearShootingStartBottomTemperature) { + Object oldValue = getGearShootingStartBottomTemperature(); + this.gearShootingStartBottomTemperature = gearShootingStartBottomTemperature; + firePropertyChange(PROPERTY_GEAR_SHOOTING_START_BOTTOM_TEMPERATURE, oldValue, gearShootingStartBottomTemperature); + } + + public Float getGearShootingEndBottomTemperature() { + return gearShootingEndBottomTemperature; + } + + public void setGearShootingEndBottomTemperature(Float gearShootingEndBottomTemperature) { + Object oldValue = getGearShootingEndBottomTemperature(); + this.gearShootingEndBottomTemperature = gearShootingEndBottomTemperature; + firePropertyChange(PROPERTY_GEAR_SHOOTING_END_BOTTOM_TEMPERATURE, oldValue, gearShootingEndBottomTemperature); + } + + public Float getAverageBottomTemperature() { + return averageBottomTemperature; + } + + public void setAverageBottomTemperature(Float averageBottomTemperature) { + Object oldValue = getAverageBottomTemperature(); + this.averageBottomTemperature = averageBottomTemperature; + firePropertyChange(PROPERTY_AVERAGE_BOTTOM_TEMPERATURE, oldValue, averageBottomTemperature); + } + + public Float getGearShootingStartSurfaceSalinity() { + return gearShootingStartSurfaceSalinity; + } + + public void setGearShootingStartSurfaceSalinity(Float gearShootingStartSurfaceSalinity) { + Object oldValue = getGearShootingStartSurfaceSalinity(); + this.gearShootingStartSurfaceSalinity = gearShootingStartSurfaceSalinity; + firePropertyChange(PROPERTY_GEAR_SHOOTING_START_SURFACE_SALINITY, oldValue, gearShootingStartSurfaceSalinity); + } + + public Float getGearShootingEndSurfaceSalinity() { + return gearShootingEndSurfaceSalinity; + } + + public void setGearShootingEndSurfaceSalinity(Float gearShootingEndSurfaceSalinity) { + Object oldValue = getGearShootingEndSurfaceSalinity(); + this.gearShootingEndSurfaceSalinity = gearShootingEndSurfaceSalinity; + firePropertyChange(PROPERTY_GEAR_SHOOTING_END_SURFACE_SALINITY, oldValue, gearShootingEndSurfaceSalinity); + } + + public Float getGearShootingStartBottomSalinity() { + return gearShootingStartBottomSalinity; + } + + public void setGearShootingStartBottomSalinity(Float gearShootingStartBottomSalinity) { + Object oldValue = getGearShootingStartBottomSalinity(); + this.gearShootingStartBottomSalinity = gearShootingStartBottomSalinity; + firePropertyChange(PROPERTY_GEAR_SHOOTING_START_BOTTOM_SALINITY, oldValue, gearShootingStartBottomSalinity); + } + + public Float getGearShootingEndBottomSalinity() { + return gearShootingEndBottomSalinity; + } + + public void setGearShootingEndBottomSalinity(Float gearShootingEndBottomSalinity) { + Object oldValue = getGearShootingEndBottomSalinity(); + this.gearShootingEndBottomSalinity = gearShootingEndBottomSalinity; + firePropertyChange(PROPERTY_GEAR_SHOOTING_END_BOTTOM_SALINITY, oldValue, gearShootingEndBottomSalinity); + } + + public Float getAverageBottomSalinity() { + return averageBottomSalinity; + } + + public void setAverageBottomSalinity(Float averageBottomSalinity) { + Object oldValue = getAverageBottomSalinity(); + this.averageBottomSalinity = averageBottomSalinity; + firePropertyChange(PROPERTY_AVERAGE_BOTTOM_SALINITY, oldValue, averageBottomSalinity); + } +} \ No newline at end of file Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/FishingOperationTabUIModel.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/content/catches/FishingOperationsUI.css (from rev 36, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/CatchesUI.css) =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/FishingOperationsUI.css (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/FishingOperationsUI.css 2012-12-10 02:45:40 UTC (rev 37) @@ -0,0 +1,64 @@ +/* + * #%L + * Tutti :: UI + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +BeanComboBox { + showReset: true; + i18nPrefix: "tutti.property."; + bean: {model}; +} + +#newFishingOperationButton { + text: "tutti.action.new"; + actionIcon: "add"; +} + +#traitComboBox { + property: "selectedFishingOperation"; + selectedItem: {model.getSelectedFishingOperation()}; +} + +#speciesTab { + enabled: {model.getSelectedFishingOperation() != null}; +} + +#benthosTab { + enabled: {model.getSelectedFishingOperation() != null}; +} + +#planctonTab { + enabled: {model.getSelectedFishingOperation() != null}; +} + +#macroDechetTab { + enabled: {model.getSelectedFishingOperation() != null}; +} + +#accidentelTab { + enabled: {model.getSelectedFishingOperation() != null}; +} + +#observationIndividuelTab { + enabled: {false}; + /*enabled: {model.getSelectedFishingOperation() != null};*/ +} Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/FishingOperationsUI.css ___________________________________________________________________ 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/content/catches/FishingOperationsUI.jaxx (from rev 36, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/CatchesUI.jaxx) =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/FishingOperationsUI.jaxx (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/FishingOperationsUI.jaxx 2012-12-10 02:45:40 UTC (rev 37) @@ -0,0 +1,99 @@ +<!-- + #%L + Tutti :: UI + $Id$ + $HeadURL$ + %% + Copyright (C) 2012 Ifremer + %% + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public + License along with this program. If not, see + <http://www.gnu.org/licenses/gpl-3.0.html>. + #L% + --> +<JPanel id='homePanel' layout='{new BorderLayout()}' + implements='fr.ifremer.tutti.ui.swing.TuttiUI<FishingOperationsUIModel, FishingOperationsUIHandler>'> + + <import> + fr.ifremer.tutti.persistence.entities.data.FishingOperation + + fr.ifremer.tutti.ui.swing.TuttiUIContext + fr.ifremer.tutti.ui.swing.content.catches.accidentel.AccidentelTabUI + fr.ifremer.tutti.ui.swing.content.catches.benthos.BenthosTabUI + fr.ifremer.tutti.ui.swing.content.catches.macrodechet.MacroDechetTabUI + fr.ifremer.tutti.ui.swing.content.catches.plancton.PlanctonTabUI + fr.ifremer.tutti.ui.swing.content.catches.species.SpeciesTabUI + + jaxx.runtime.swing.editor.bean.BeanComboBox + + static org.nuiton.i18n.I18n._ + </import> + + <script><![CDATA[ +public FishingOperationsUI(TuttiUIContext context) { + FishingOperationsUIHandler handler = new FishingOperationsUIHandler(context, this); + setContextValue(handler); + handler.beforeInitUI(); +} + +protected void $afterCompleteSetup() { + handler.afterInitUI(); +} + ]]></script> + + <FishingOperationsUIHandler id='handler' + initializer='getContextValue(FishingOperationsUIHandler.class)'/> + + <FishingOperationsUIModel id='model' + initializer='getContextValue(FishingOperationsUIModel.class)'/> + + <Table fill='both' id='topPanel' constraints='BorderLayout.NORTH'> + + <!-- FishingOperations fishingOperation --> + <row> + <cell anchor='west' weightx='1.0'> + <BeanComboBox id='traitComboBox' constructorParams='this' + genericType='FishingOperation'/> + </cell> + <cell anchor='east'> + <JButton id='newFishingOperationButton' + onActionPerformed='getHandler().createNewFishingOperation()'/> + </cell> + </row> + </Table> + + <JTabbedPane id='tabPane' constraints='BorderLayout.CENTER'> + <tab id='traitTab' title='tutti.label.tab.fishingOperation'> + <FishingOperationTabUI id='fishingOperationTabContent' constructorParams='this'/> + </tab> + <tab id='speciesTab' title='tutti.label.tab.species'> + <SpeciesTabUI id='speciesTabContent' constructorParams='this'/> + </tab> + <tab id='benthosTab' title='tutti.label.tab.benthos'> + <BenthosTabUI id='benthosTabContent' constructorParams='this'/> + </tab> + <tab id='planctonTab' title='tutti.label.tab.plancton'> + <PlanctonTabUI id='planctonTabContent' constructorParams='this'/> + </tab> + <tab id='macroDechetTab' title='tutti.label.tab.macroDechet'> + <MacroDechetTabUI id='macroDechetTabContent' constructorParams='this'/> + </tab> + <tab id='accidentelTab' title='tutti.label.tab.accidentel'> + <AccidentelTabUI id='accidentelTabContent' constructorParams='this'/> + </tab> + <tab id='observationIndividuelTab' title='tutti.label.tab.observationIndividuel'> + <JLabel text='tutti.to.be.done' horizontalAlignment='{JLabel.CENTER}'/> + </tab> + </JTabbedPane> + +</JPanel> \ No newline at end of file Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/FishingOperationsUI.jaxx ___________________________________________________________________ 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/content/catches/FishingOperationsUIHandler.java (from rev 36, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/CatchesUIHandler.java) =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/FishingOperationsUIHandler.java (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/FishingOperationsUIHandler.java 2012-12-10 02:45:40 UTC (rev 37) @@ -0,0 +1,200 @@ +package fr.ifremer.tutti.ui.swing.content.catches; + +/* + * #%L + * Tutti :: UI + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ifremer.tutti.persistence.entities.TuttiEntities; +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import fr.ifremer.tutti.persistence.entities.data.ScientificCruise; +import fr.ifremer.tutti.service.PersistenceService; +import fr.ifremer.tutti.ui.swing.AbstractTuttiUIHandler; +import fr.ifremer.tutti.ui.swing.TuttiUIContext; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.util.Date; +import java.util.List; + +/** + * Handler of UI {@link FishingOperationsUI}. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.1 + */ +public class FishingOperationsUIHandler extends AbstractTuttiUIHandler<FishingOperationsUIModel> { + + /** Logger. */ + private static final Log log = LogFactory.getLog(FishingOperationsUIHandler.class); + + private final FishingOperationsUI ui; + + private final PersistenceService persistenceService; + + public FishingOperationsUIHandler(TuttiUIContext context, FishingOperationsUI ui) { + super(context); + this.ui = ui; + persistenceService = context.getService(PersistenceService.class); + } + + @Override + public void beforeInitUI() { + + FishingOperationsUIModel model = new FishingOperationsUIModel(); + + String campaignId = context.getScientificCruiseId(); + + // load existing scientificCruise + ScientificCruise scientificCruise = persistenceService.getScientificCruise(campaignId); + model.setScientificCruise(scientificCruise); + + List<FishingOperation> fishingOperations = persistenceService.getAllFishingOperation(campaignId); + model.setFishingOperation(fishingOperations); + + if (log.isInfoEnabled()) { + log.info("Loaded " + fishingOperations.size() + " fishingOperation(s)."); + } + + ui.setContextValue(model); + } + + @Override + public void afterInitUI() { + + FishingOperationsUIModel model = getModel(); + + initUI(ui); + + List<FishingOperation> fishingOperations = model.getFishingOperation(); + + initBeanComboBox(ui.getTraitComboBox(), + fishingOperations, + model.getSelectedFishingOperation()); + + model.addPropertyChangeListener(FishingOperationsUIModel.PROPERTY_SELECTED_FISHING_OPERATION, new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + selectFishingOperation((FishingOperation) evt.getNewValue()); + } + }); + + model.addPropertyChangeListener(FishingOperationsUIModel.PROPERTY_FISHING_OPERATION, new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + ui.getTraitComboBox().setData(null); + ui.getTraitComboBox().setData((List<FishingOperation>) evt.getNewValue()); + } + }); + + if (!fishingOperations.isEmpty()) { + + model.setSelectedFishingOperation(fishingOperations.get(0)); + } + } + + @Override + public void onCloseUI() { + + // ui will be saved so we do not want to keep selected tab indexes + ui.getTabPane().setSelectedIndex(0); + ui.getFishingOperationTabContent().getTraitTabPane().setSelectedIndex(0); + + // when quitting ui, let's de-select fishingOperation (will save any changes) + selectFishingOperation(null); + } + + @Override + protected FishingOperationsUIModel getModel() { + return ui.getModel(); + } + + public void createNewFishingOperation() { + + // deselect selected fishingOperation + getModel().setSelectedFishingOperation(null); + + // use a new empty fishingOperation + FishingOperation newFishingOperation = new FishingOperation(); + newFishingOperation.setScientificCruise(getModel().getScientificCruise()); + newFishingOperation.setDate(new Date()); + selectFishingOperation(newFishingOperation); + } + + public void selectFishingOperation(FishingOperation fishingOperation) { + + if (log.isInfoEnabled()) { + log.info("New selected fishingOperation: " + fishingOperation); + } + // back to fishingOperation tab + ui.getTabPane().setSelectedIndex(0); + + // back to general tab of fishingOperation tabs + ui.getFishingOperationTabContent().getTraitTabPane().setSelectedIndex(0); + + // propagate fishingOperation to his tabs + ui.getFishingOperationTabContent().selectFishingOperation(fishingOperation); + ui.getSpeciesTabContent().selectFishingOperation(fishingOperation); + ui.getBenthosTabContent().selectFishingOperation(fishingOperation); + ui.getPlanctonTabContent().selectFishingOperation(fishingOperation); + ui.getMacroDechetTabContent().selectFishingOperation(fishingOperation); + ui.getAccidentelTabContent().selectFishingOperation(fishingOperation); + + // repaint tabs + ui.getTabPane().repaint(); +// ui.getObservationIndividuelTabContent().selectFishingOperation(selectedFishingOperation); + } + + public void saveFishingOperation(FishingOperation toSave) { + + // persist the fishingOperation + + boolean create = toSave.getId() == null; + + FishingOperation savedFishingOperation; + if (create) { + savedFishingOperation = persistenceService.createFishingOperation(toSave); + } else { + savedFishingOperation = persistenceService.saveFishingOperation(toSave); + } + + FishingOperationsUIModel model = getModel(); + + // add the saved fishingOperation to fishingOperation list + + List<FishingOperation> data = model.getFishingOperation(); + + FishingOperation existingFishingOperation = TuttiEntities.findById(data, savedFishingOperation.getId()); + if (existingFishingOperation != null) { + data.remove(existingFishingOperation); + } + data.add(savedFishingOperation); + + // update model fishingOperation list + model.setFishingOperation(data); + + // update model selected fishingOperation + model.setSelectedFishingOperation(savedFishingOperation); + } +} Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/FishingOperationsUIHandler.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/content/catches/FishingOperationsUIModel.java (from rev 36, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/CatchesUIModel.java) =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/FishingOperationsUIModel.java (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/FishingOperationsUIModel.java 2012-12-10 02:45:40 UTC (rev 37) @@ -0,0 +1,83 @@ +package fr.ifremer.tutti.ui.swing.content.catches; + +/* + * #%L + * Tutti :: UI + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ifremer.tutti.persistence.entities.data.ScientificCruise; +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import org.jdesktop.beans.AbstractSerializableBean; + +import java.util.List; + +/** + * Model fo UI {@link FishingOperationsUI}. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.1 + */ +public class FishingOperationsUIModel extends AbstractSerializableBean { + + private static final long serialVersionUID = 1L; + + public static final String PROPERTY_FISHING_OPERATION = "fishingOperation"; + + public static final String PROPERTY_SELECTED_FISHING_OPERATION = "selectedFishingOperation"; + + public static final String PROPERTY_SCIENTIFIC_CRUISE = "scientificCruise"; + + protected List<FishingOperation> fishingOperation; + + protected FishingOperation selectedFishingOperation; + + protected ScientificCruise scientificCruise; + + public List<FishingOperation> getFishingOperation() { + return fishingOperation; + } + + public void setFishingOperation(List<FishingOperation> fishingOperation) { + this.fishingOperation = fishingOperation; + firePropertyChange(PROPERTY_FISHING_OPERATION, null, fishingOperation); + } + + public FishingOperation getSelectedFishingOperation() { + return selectedFishingOperation; + } + + public void setSelectedFishingOperation(FishingOperation selectedFishingOperation) { + Object oldValue = getSelectedFishingOperation(); + this.selectedFishingOperation = selectedFishingOperation; + firePropertyChange(PROPERTY_SELECTED_FISHING_OPERATION, oldValue, selectedFishingOperation); + } + + public ScientificCruise getScientificCruise() { + return scientificCruise; + } + + public void setScientificCruise(ScientificCruise scientificCruise) { + Object oldValue = getScientificCruise(); + this.scientificCruise = scientificCruise; + firePropertyChange(PROPERTY_SCIENTIFIC_CRUISE, oldValue, scientificCruise); + } +} Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/FishingOperationsUIModel.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/catches/TraitTabUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/TraitTabUI.css 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/TraitTabUI.css 2012-12-10 02:45:40 UTC (rev 37) @@ -1,498 +0,0 @@ -/* - * #%L - * Tutti :: UI - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2012 Ifremer - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -JToolBar { - floatable:false; -} - -BeanComboBox { - showReset:true; - i18nPrefix:"tutti.property."; - bean:{model}; -} - -BeanListHeader { - showReset:true; - i18nPrefix:"tutti.property."; -} - -JList { - selectionMode:{ListSelectionModel.MULTIPLE_INTERVAL_SELECTION}; - model:{new DefaultListModel()}; -} - -NumberEditor { - autoPopup:{handler.getConfig().isAutoPopupNumberEditor()}; - showPopupButton:{handler.getConfig().isShowNumberEditorButton()}; - bean:{model}; - showReset:true; -} - -#stationNumberLabel { - text:"tutti.label.trait.stationNumber"; - labelFor:{stationNumberField}; -} - -#stationNumberTraitNumberLabel { - text:"tutti.label.trait.stationNumberTraitNumber"; -} - -#stationNumberField { - property:"stationNumber"; - model:{model.getStationNumber()}; - useFloat:false; - numberPattern:{INT_6_DIGITS_PATTERN}; -} - -#traitNumberLabel { - text:"tutti.label.trait.traitNumber"; - labelFor:{traitNumberField}; -} - -#traitNumberField { - property:"traitNumber"; - model:{model.getTraitNumber()}; - useFloat:false; - numberPattern:{INT_6_DIGITS_PATTERN}; -} - -#dateLabel { - text:"tutti.label.trait.date"; - labelFor:{dateField}; -} - -#dateField { - date:{model.getDate()}; - formats:{"dd/MM/yyyy"}; -} - -#strataLabel { - text:"tutti.label.trait.strata"; - labelFor:{strataComboBox}; -} - -#strataComboBox { - property:"strata"; - selectedItem:{model.getStrata()}; -} - -#beaufortScaleLabel { - text:"tutti.label.trait.beaufortScale"; - labelFor:{beaufortScaleComboBox}; -} - -#beaufortScaleComboBox { - property:"beaufortScale"; - selectedItem:{model.getBeaufortScale()}; -} - -#windDirectionLabel { - text:"tutti.label.trait.windDirection"; - labelFor:{windDirectionField}; -} - -#windDirectionField { - property:"windDirection"; - model:{model.getWindDirection()}; - useFloat:false; - numberPattern:{INT_6_DIGITS_PATTERN}; -} - -#seaStateLabel { - text:"tutti.label.trait.seaState"; - labelFor:{seaStateComboBox}; -} - -#seaStateComboBox { - property:"seaState"; - selectedItem:{model.getSeaState()}; -} - -#ouvertureHorizontaleLabel { - text:"tutti.label.trait.ouvertureHorizontale"; - labelFor:{ouvertureHorizontaleField}; -} - -#ouvertureHorizontaleVerticaleLabel { - text:"tutti.label.trait.ouvertureHorizontaleVerticale"; -} - -#ouvertureHorizontaleField { - property:"ouvertureHorizontale"; - model:{model.getOuvertureHorizontale()}; - useFloat:false; - numberPattern:{INT_6_DIGITS_PATTERN}; -} - -#ouvertureVerticaleLabel { - text:"tutti.label.trait.ouvertureVerticale"; - labelFor:{ouvertureVerticaleField}; -} - -#ouvertureVerticaleField { - property:"ouvertureVerticale"; - model:{model.getOuvertureVerticale()}; - useFloat:false; - numberPattern:{INT_6_DIGITS_PATTERN}; -} - -#geometrieMesureeCheckBox { - text:"tutti.label.trait.geometrieMesuree"; - selected:{model.isGeometrieMesuree()}; -} - -#longueurFunesLabel { - text:"tutti.label.trait.longueurFunes"; - labelFor:{longueurFunesField}; -} - -#longueurFunesBrasLabel { - text:"tutti.label.trait.longueurFunesBras"; -} - -#longueurFunesField { - property:"longueurFunes"; - model:{model.getLongueurFunes()}; - useFloat:false; - numberPattern:{INT_6_DIGITS_PATTERN}; -} - -#longueurBrasLabel { - text:"tutti.label.trait.longueurBras"; - labelFor:{longueurBrasField}; -} - -#longueurBrasField { - property:"longueurBras"; - model:{model.getLongueurBras()}; - useFloat:false; - numberPattern:{INT_6_DIGITS_PATTERN}; -} - -#systemeFermetureCulCheckBox { - text:"tutti.label.trait.systemeFermetureCul"; - selected:{model.isSystemeFermetureCul()}; -} - -#traitRectiligneCheckBox { - text:"tutti.label.trait.traitRectiligne"; - selected:{model.isTraitRectiligne()}; -} - -#distanceChaluteeLabel { - text:"tutti.label.trait.distanceChalutee"; - labelFor:{distanceChaluteeField}; -} - -#distanceChaluteeDureeLabel { - text:"tutti.label.trait.distanceChaluteeDuree"; -} - -#distanceChaluteeField { - property:"distanceChalutee"; - model:{model.getDistanceChalutee()}; - useFloat:false; - numberPattern:{INT_6_DIGITS_PATTERN}; -} - -#dureeLabel { - text:"tutti.label.trait.duree"; - labelFor:{dureeField}; -} - -#dureeField { - property:"duree"; - model:{model.getDuree()}; - useFloat:false; - numberPattern:{INT_6_DIGITS_PATTERN}; -} - -#traitValidCheckBox { - text:"tutti.label.trait.traitValid"; - selected:{model.isTraitValid()}; -} - -#localiteLabel { - text:"tutti.label.trait.localite"; - labelFor:{localiteField}; -} - -#localiteField { - text:{model.getLocalite()}; -} - -#saisisseurPane { - horizontalScrollBarPolicy:{JScrollPane.HORIZONTAL_SCROLLBAR_NEVER}; - verticalScrollBarPolicy:{JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED}; -} - -#saisisseurHeader { - labelText:{_("tutti.label.list.saisisseur")}; - list:{saisisseurList}; - beanType:{TuttiUser.class}; -} - -#commentPane { - columnHeaderView:{new JLabel(_("tutti.label.comment"))}; - minimumSize:{new Dimension(10,50)}; -} - -#commentField { - text:{model.getComment()}; -} - -#gearShootingStartLongitudeLabel { - text:"tutti.label.trait.gearShootingStartLongitude"; - labelFor:{gearShootingStartLongitudeField}; -} - -#gearShootingStartLongitudeField { - text:{getStringValue(model.getGearShootingStartLongitude())}; -} - -#gearShootingStartLatitudeLabel { - text:"tutti.label.trait.gearShootingStartLatitude"; - labelFor:{gearShootingStartLatitudeField}; -} - -#gearShootingStartLatitudeField { - text:{getStringValue(model.getGearShootingStartLatitude())}; -} - -#gearShootingStartTimeLabel { - text:"tutti.label.trait.gearShootingStartTime"; - labelFor:{gearShootingStartTimeField}; -} - -#gearShootingStartTimeField { - text:{getStringValue(model.getGearShootingStartTime())}; -} - -#gearShootingStartDepthLabel { - text:"tutti.label.trait.gearShootingStartDepth"; - labelFor:{gearShootingStartDepthField}; -} - -#gearShootingStartDepthField { - property:"gearShootingStartDepth"; - model:{model.getGearShootingStartDepth()}; - useFloat:false; - numberPattern:{INT_6_DIGITS_PATTERN}; -} - -#gearShootingEndLongitudeLabel { - text:"tutti.label.trait.gearShootingEndLongitude"; - labelFor:{gearShootingEndLongitudeField}; -} - -#gearShootingEndLongitudeField { - text:{getStringValue(model.getGearShootingEndLongitude())}; -} - -#gearShootingEndLatitudeLabel { - text:"tutti.label.trait.gearShootingEndLatitude"; - labelFor:{gearShootingEndLatitudeField}; -} - -#gearShootingEndLatitudeField { - text:{getStringValue(model.getGearShootingEndLatitude())}; -} - -#gearShootingEndTimeLabel { - text:"tutti.label.trait.gearShootingEndTime"; - labelFor:{gearShootingEndTimeField}; -} - -#gearShootingEndTimeField { - text:{getStringValue(model.getGearShootingEndTime())}; -} - -#gearShootingEndDepthLabel { - text:"tutti.label.trait.gearShootingEndDepth"; - labelFor:{gearShootingEndDepthField}; -} - -#gearShootingEndDepthField { - property:"gearShootingEndDepth"; - model:{model.getGearShootingEndDepth()}; - useFloat:false; - numberPattern:{INT_6_DIGITS_PATTERN}; -} - -#gearShootingStartSurfaceTemperatureLabel { - text:"tutti.label.trait.gearShootingStartSurfaceTemperature"; - labelFor:{gearShootingStartSurfaceTemperatureField}; -} - -#gearShootingStartSurfaceTemperatureField { - property:"gearShootingStartSurfaceTemperature"; - model:{model.getGearShootingStartSurfaceTemperature()}; - useFloat:false; - numberPattern:{INT_6_DIGITS_PATTERN}; -} - -#gearShootingEndSurfaceTemperatureLabel { - text:"tutti.label.trait.gearShootingEndSurfaceTemperature"; - labelFor:{gearShootingEndSurfaceTemperatureField}; -} - -#gearShootingEndSurfaceTemperatureField { - property:"gearShootingEndSurfaceTemperature"; - model:{model.getGearShootingEndSurfaceTemperature()}; - useFloat:false; - numberPattern:{INT_6_DIGITS_PATTERN}; -} - -#gearShootingStartBottomTemperatureLabel { - text:"tutti.label.trait.gearShootingStartBottomTemperature"; - labelFor:{gearShootingStartBottomTemperatureField}; -} - -#gearShootingStartBottomTemperatureField { - property:"gearShootingStartBottomTemperature"; - model:{model.getGearShootingStartBottomTemperature()}; - useFloat:false; - numberPattern:{INT_6_DIGITS_PATTERN}; -} - -#gearShootingEndBottomTemperatureLabel { - text:"tutti.label.trait.gearShootingEndBottomTemperature"; - labelFor:{gearShootingEndBottomTemperatureField}; -} - -#gearShootingEndBottomTemperatureField { - property:"gearShootingEndBottomTemperature"; - model:{model.getGearShootingEndBottomTemperature()}; - useFloat:false; - numberPattern:{INT_6_DIGITS_PATTERN}; -} - -#averageBottomTemperatureLabel { - text:"tutti.label.trait.averageBottomTemperature"; - labelFor:{averageBottomTemperatureField}; -} - -#averageBottomTemperatureField { - property:"averageBottomTemperature"; - model:{model.getAverageBottomTemperature()}; - useFloat:false; - numberPattern:{INT_6_DIGITS_PATTERN}; -} - -#gearShootingStartSurfaceSalinityLabel { - text:"tutti.label.trait.gearShootingStartSurfaceSalinity"; - labelFor:{gearShootingStartSurfaceSalinityField}; -} - -#gearShootingStartSurfaceSalinityField { - property:"gearShootingStartSurfaceSalinity"; - model:{model.getGearShootingStartSurfaceSalinity()}; - useFloat:false; - numberPattern:{INT_6_DIGITS_PATTERN}; -} - -#gearShootingEndSurfaceSalinityLabel { - text:"tutti.label.trait.gearShootingEndSurfaceSalinity"; - labelFor:{gearShootingEndSurfaceSalinityField}; -} - -#gearShootingEndSurfaceSalinityField { - property:"gearShootingEndSurfaceSalinity"; - model:{model.getGearShootingEndSurfaceSalinity()}; - useFloat:false; - numberPattern:{INT_6_DIGITS_PATTERN}; -} - -#gearShootingStartBottomSalinityLabel { - text:"tutti.label.trait.gearShootingStartBottomSalinity"; - labelFor:{gearShootingStartBottomSalinityField}; -} - -#gearShootingStartBottomSalinityField { - property:"gearShootingStartBottomSalinity"; - model:{model.getGearShootingStartBottomSalinity()}; - useFloat:false; - numberPattern:{INT_6_DIGITS_PATTERN}; -} - -#gearShootingEndBottomSalinityLabel { - text:"tutti.label.trait.gearShootingEndBottomSalinity"; - labelFor:{gearShootingEndBottomSalinityField}; -} - -#gearShootingEndBottomSalinityField { - property:"gearShootingEndBottomSalinity"; - model:{model.getGearShootingEndBottomSalinity()}; - useFloat:false; - numberPattern:{INT_6_DIGITS_PATTERN}; -} - -#averageBottomSalinityLabel { - text:"tutti.label.trait.averageBottomSalinity"; - labelFor:{averageBottomSalinityField}; -} - -#averageBottomSalinityField { - property:"averageBottomSalinity"; - model:{model.getAverageBottomSalinity()}; - useFloat:false; - numberPattern:{INT_6_DIGITS_PATTERN}; -} - -#noTraitPane { - text:"tutti.label.no.trait.selected"; - horizontalAlignment:{JLabel.CENTER}; -} - -#saveButton { - actionIcon:"save"; - text:"tutti.action.save"; - enabled:{model.isModify() && model.isValid()}; -} - -#cancelButton { - actionIcon:"cancel"; - text:"tutti.action.cancel"; - enabled:{model.isModify()}; -} - -#importPupitriButton { - actionIcon:"pupitri-import"; - text:"tutti.action.pupitri-import"; -} - -#messagePanel { - border:{BorderFactory.createTitledBorder("Messages")}; - height:200; - width:500; -} - -#errorTable { - rowSelectionAllowed:true; - autoCreateRowSorter:true; - autoResizeMode:2; - cellSelectionEnabled:false; - selectionMode:0; - model:{errorTableModel}; -} \ No newline at end of file Deleted: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/TraitTabUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/TraitTabUI.jaxx 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/TraitTabUI.jaxx 2012-12-10 02:45:40 UTC (rev 37) @@ -1,543 +0,0 @@ -<!-- - #%L - Tutti :: UI - $Id$ - $HeadURL$ - %% - Copyright (C) 2012 Ifremer - %% - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as - published by the Free Software Foundation, either version 3 of the - License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public - License along with this program. If not, see - <http://www.gnu.org/licenses/gpl-3.0.html>. - #L% - --> -<JPanel id='homePanel' layout='{new BorderLayout()}' - implements='fr.ifremer.tutti.ui.swing.TuttiUI<TraitTabUIModel, TraitTabUIHandler>'> - - <import> - fr.ifremer.tutti.persistence.entities.referential.BeaufortScale - fr.ifremer.tutti.persistence.entities.referential.SeaState - fr.ifremer.tutti.persistence.entities.data.Strata - fr.ifremer.tutti.persistence.entities.data.Trait - fr.ifremer.tutti.persistence.entities.referential.TuttiUser - fr.ifremer.tutti.ui.swing.TuttiUIContext - - jaxx.runtime.swing.editor.bean.BeanComboBox - jaxx.runtime.swing.editor.bean.BeanListHeader - jaxx.runtime.swing.editor.NumberEditor - - jaxx.runtime.validator.swing.SwingValidatorUtil - jaxx.runtime.validator.swing.SwingValidatorMessageTableModel - - org.jdesktop.swingx.JXDatePicker - - java.awt.Dimension - - javax.swing.DefaultListModel - javax.swing.ListSelectionModel - - static org.nuiton.i18n.I18n._ - static jaxx.runtime.SwingUtil.getStringValue - </import> - - <script><![CDATA[ - -public TraitTabUI(CatchesUI parentUI) { - TraitTabUIHandler handler = new TraitTabUIHandler(parentUI, this); - setContextValue(handler); - handler.beforeInitUI(); -} - -public void selectTrait(Trait trait) { handler.selectTrait(trait); } - -protected void $afterCompleteSetup() { handler.afterInitUI(); } - ]]></script> - - <TraitTabUIHandler id='handler' - initializer='getContextValue(TraitTabUIHandler.class)'/> - - <TraitTabUIModel id='model' - initializer='getContextValue(TraitTabUIModel.class)'/> - - <SwingValidatorMessageTableModel id='errorTableModel'/> - - <BeanValidator id='validator' bean='model' errorTableModel='errorTableModel' - uiClass='jaxx.runtime.validator.swing.ui.ImageValidationUI'> - <field name='stationNumber' component='stationNumberField'/> - <field name='traitNumber' component='traitNumberField'/> - <field name='date' component='dateField'/> - <field name='comment' component='commentField'/> - <field name='saisisseur' component='saisisseurPane'/> - </BeanValidator> - - <JPanel id='traitPane' constraints='BorderLayout.CENTER' - layout='{new BorderLayout()}'> - - <JTabbedPane id='traitTabPane' constraints='BorderLayout.CENTER'> - <tab id='traitGeneralTab' title='tutti.label.tab.trait.general'> - <Table fill='both' id='generalForm'> - - <!-- Numero station --> - <row> - <cell anchor='west'> - <!--JLabel id='stationNumberLabel'/--> - <JLabel id='stationNumberTraitNumberLabel'/> - </cell> - <cell weightx='1.0'> - <JPanel layout='{new GridLayout(1,0)}'> - <NumberEditor id='stationNumberField' constructorParams='this'/> - <NumberEditor id='traitNumberField' constructorParams='this'/> - </JPanel> - </cell> - </row> - - <!-- Numero trait / chalut --> - <!--row> - <cell> - <JLabel id='traitNumberLabel'/> - </cell> - <cell> - <NumberEditor id='traitNumberField' constructorParams='this'/> - </cell> - </row--> - - <!-- Date --> - <row> - <cell> - <JLabel id='dateLabel'/> - </cell> - <cell> - <JXDatePicker id='dateField' - onActionPerformed='model.setDate(((JXDatePicker)event.getSource()).getDate())'/> - </cell> - </row> - - <!-- Strate d'association --> - <row> - <cell> - <JLabel id='strataLabel'/> - </cell> - <cell fill='horizontal'> - <BeanComboBox id='strataComboBox' constructorParams='this' - genericType='Strata'/> - </cell> - </row> - - <!-- Beaufort scale --> - <row> - <cell anchor='west'> - <JLabel id='beaufortScaleLabel'/> - </cell> - <cell fill='horizontal'> - <BeanComboBox id='beaufortScaleComboBox' constructorParams='this' - genericType='BeaufortScale'/> - </cell> - </row> - - <!-- Wind direction --> - <row> - <cell anchor='west'> - <JLabel id='windDirectionLabel'/> - </cell> - <cell fill='horizontal'> - <NumberEditor id='windDirectionField' constructorParams='this'/> - </cell> - </row> - - <!-- Sea state--> - <row> - <cell anchor='west'> - <JLabel id='seaStateLabel'/> - </cell> - <cell fill='horizontal'> - <BeanComboBox id='seaStateComboBox' constructorParams='this' - genericType='SeaState'/> - </cell> - </row> - - <!-- Ouverture horizontale --> - <row> - <cell anchor='west'> - <JLabel id='ouvertureHorizontaleVerticaleLabel'/> - </cell> - <cell fill='horizontal'> - <JPanel layout='{new GridLayout(1,0)}'> - <NumberEditor id='ouvertureHorizontaleField' - constructorParams='this'/> - <NumberEditor id='ouvertureVerticaleField' - constructorParams='this'/> - </JPanel> - </cell> - </row> - - <!-- Ouverture verticale --> - <!--row> - <cell anchor='west'> - <JLabel id='ouvertureVerticaleLabel'/> - </cell> - <cell fill='horizontal'> - <NumberEditor id='ouvertureVerticaleField' - constructorParams='this'/> - </cell> - </row--> - - <!-- Longueur funes --> - <row> - <cell anchor='west'> - <JLabel id='longueurFunesBrasLabel'/> - </cell> - <cell fill='horizontal'> - <JPanel layout='{new GridLayout(1,0)}'> - <NumberEditor id='longueurFunesField' constructorParams='this'/> - <NumberEditor id='longueurBrasField' constructorParams='this'/> - </JPanel> - </cell> - </row> - - <!-- Longueur bras --> - <!--row> - <cell anchor='west'> - <JLabel id='longueurBrasLabel'/> - </cell> - <cell fill='horizontal'> - <NumberEditor id='longueurBrasField' constructorParams='this'/> - </cell> - </row--> - - <!-- Distance chalutée --> - <row> - <cell anchor='west'> - <JLabel id='distanceChaluteeDureeLabel'/> - </cell> - <cell fill='horizontal'> - <JPanel layout='{new GridLayout(1,0)}'> - <NumberEditor id='distanceChaluteeField' constructorParams='this'/> - <NumberEditor id='dureeField' constructorParams='this'/> - </JPanel> - </cell> - </row> - - <!-- Durée --> - <!--row> - <cell anchor='west'> - <JLabel id='dureeLabel'/> - </cell> - <cell fill='horizontal'> - <NumberEditor id='dureeField' constructorParams='this'/> - </cell> - </row--> - - <!-- Localité --> - <row> - <cell> - <JLabel id='localiteLabel'/> - </cell> - <cell> - <JTextField id='localiteField' - onKeyReleased='handler.setText(event, "localite")'/> - </cell> - </row> - - <!-- Trait valide / Rectiligne --> - <row> - <cell columns='2'> - <JPanel layout='{new GridLayout(1,0)}'> - <JCheckBox id='traitValidCheckBox' - onItemStateChanged='handler.setBoolean(event, "traitValid")'/> - <JCheckBox id='traitRectiligneCheckBox' - onItemStateChanged='handler.setBoolean(event, "traitRectiligne")'/> - </JPanel> - </cell> - </row> - - <!-- Système de fermeture du cul / Geometrie mesuree --> - <row> - <cell columns='2'> - <JPanel layout='{new GridLayout(1,0)}'> - <JCheckBox id='systemeFermetureCulCheckBox' - onItemStateChanged='handler.setBoolean(event, "systemeFermetureCul")'/> - <JCheckBox id='geometrieMesureeCheckBox' - onItemStateChanged='handler.setBoolean(event, "geometrieMesuree")'/> - </JPanel> - </cell> - </row> - - <!-- Trait rectiligne --> - <!--row> - <cell columns='2'> - <JCheckBox id='traitRectiligneCheckBox' - onItemStateChanged='handler.setBoolean(event, "traitRectiligne")'/> - </cell> - </row--> - - <!-- Geometrie mesuree --> - <!--row> - <cell columns='2'> - <JCheckBox id='geometrieMesureeCheckBox' - onItemStateChanged='handler.setBoolean(event, "geometrieMesuree")'/> - </cell> - </row--> - - <!-- Saisisseur --> - <row weighty='0.3'> - <cell columns='2'> - <JScrollPane id='saisisseurPane' - columnHeaderView="{saisisseurHeader}" - onFocusGained='saisisseurList.requestFocus()'> - <JList id='saisisseurList' - onValueChanged='handler.selectListData(event, "saisisseur")'/> - <BeanListHeader id='saisisseurHeader' genericType='TuttiUser'/> - </JScrollPane> - </cell> - </row> - - <!-- Commentaire --> - <row weighty='0.3'> - <cell columns='2'> - <JScrollPane id='commentPane' - onFocusGained='commentField.requestFocus()'> - <JTextArea id='commentField' - onKeyReleased='handler.setText(event, "comment")'/> - </JScrollPane> - </cell> - </row> - </Table> - </tab> - - <tab id='traitGearShootingTab' title='tutti.label.tab.trait.gearShooting'> - - <Table fill='both' id='gearShootingForm'> - - <!-- GearShootingStart Longitude --> - <row> - <cell> - <JLabel id='gearShootingStartLongitudeLabel'/> - </cell> - <cell weightx='1.0'> - <JTextField id='gearShootingStartLongitudeField' - onKeyReleased='handler.setGearShootingStartLongitude(((JTextField)event.getSource()).getText())'/> - </cell> - </row> - - <!-- GearShootingStart Latitude --> - <row> - <cell> - <JLabel id='gearShootingStartLatitudeLabel'/> - </cell> - <cell weightx='1.0'> - <JTextField id='gearShootingStartLatitudeField' - onKeyReleased='handler.setGearShootingStartLatitude(((JTextField)event.getSource()).getText())'/> - </cell> - </row> - - <!-- GearShootingStart Time --> - <row> - <cell> - <JLabel id='gearShootingStartTimeLabel'/> - </cell> - <cell weightx='1.0'> - <JTextField id='gearShootingStartTimeField' - onKeyReleased='handler.setGearShootingStartTime(((JTextField)event.getSource()).getText())'/> - </cell> - </row> - - <!-- GearShootingStart Depth --> - <row> - <cell> - <JLabel id='gearShootingStartDepthLabel'/> - </cell> - <cell weightx='1.0'> - <NumberEditor id='gearShootingStartDepthField' - constructorParams='this'/> - </cell> - </row> - - <!-- GearShootingEnd Longitude --> - <row> - <cell> - <JLabel id='gearShootingEndLongitudeLabel'/> - </cell> - <cell weightx='1.0'> - <JTextField id='gearShootingEndLongitudeField' - onKeyReleased='handler.setGearShootingEndLongitude(((JTextField)event.getSource()).getText())'/> - </cell> - </row> - - <!-- GearShootingEnd Latitude --> - <row> - <cell> - <JLabel id='gearShootingEndLatitudeLabel'/> - </cell> - <cell weightx='1.0'> - <JTextField id='gearShootingEndLatitudeField' - onKeyReleased='handler.setGearShootingEndLatitude(((JTextField)event.getSource()).getText())'/> - </cell> - </row> - - <!-- GearShootingEnd Time --> - <row> - <cell> - <JLabel id='gearShootingEndTimeLabel'/> - </cell> - <cell weightx='1.0'> - <JTextField id='gearShootingEndTimeField' - onKeyReleased='handler.setGearShootingEndTime(((JTextField)event.getSource()).getText())'/> - </cell> - </row> - - <!-- GearShootingEnd Depth --> - <row> - <cell> - <JLabel id='gearShootingEndDepthLabel'/> - </cell> - <cell weightx='1.0'> - <NumberEditor id='gearShootingEndDepthField' - constructorParams='this'/> - </cell> - </row> - </Table> - </tab> - - <tab id='traitHydrologyTabContent' title='tutti.label.tab.trait.hydrology'> - - <Table fill='both' id='hydrologyForm'> - - <!-- GearShootingStartSurfaceTemperature --> - <row> - <cell> - <JLabel id='gearShootingStartSurfaceTemperatureLabel'/> - </cell> - <cell weightx='1.0'> - <NumberEditor id='gearShootingStartSurfaceTemperatureField' - constructorParams='this'/> - </cell> - </row> - - <!-- GearShootingEndSurfaceTemperature --> - <row> - <cell> - <JLabel id='gearShootingEndSurfaceTemperatureLabel'/> - </cell> - <cell weightx='1.0'> - <NumberEditor id='gearShootingEndSurfaceTemperatureField' - constructorParams='this'/> - </cell> - </row> - - <!-- GearShootingStartBottomTemperature --> - <row> - <cell> - <JLabel id='gearShootingStartBottomTemperatureLabel'/> - </cell> - <cell weightx='1.0'> - <NumberEditor id='gearShootingStartBottomTemperatureField' - constructorParams='this'/> - </cell> - </row> - - <!-- GearShootingEndBottomTemperature --> - <row> - <cell> - <JLabel id='gearShootingEndBottomTemperatureLabel'/> - </cell> - <cell weightx='1.0'> - <NumberEditor id='gearShootingEndBottomTemperatureField' - constructorParams='this'/> - </cell> - </row> - - <!-- AverageBottomTemperature --> - <row> - <cell> - <JLabel id='averageBottomTemperatureLabel'/> - </cell> - <cell weightx='1.0'> - <NumberEditor id='averageBottomTemperatureField' - constructorParams='this'/> - </cell> - </row> - - <!-- GearShootingStartSurfaceSalinity --> - <row> - <cell> - <JLabel id='gearShootingStartSurfaceSalinityLabel'/> - </cell> - <cell weightx='1.0'> - <NumberEditor id='gearShootingStartSurfaceSalinityField' - constructorParams='this'/> - </cell> - </row> - - <!-- GearShootingEndSurfaceSalinity --> - <row> - <cell> - <JLabel id='gearShootingEndSurfaceSalinityLabel'/> - </cell> - <cell weightx='1.0'> - <NumberEditor id='gearShootingEndSurfaceSalinityField' - constructorParams='this'/> - </cell> - </row> - - <!-- GearShootingStartBottomSalinity --> - <row> - <cell> - <JLabel id='gearShootingStartBottomSalinityLabel'/> - </cell> - <cell weightx='1.0'> - <NumberEditor id='gearShootingStartBottomSalinityField' - constructorParams='this'/> - </cell> - </row> - - <!-- GearShootingEndBottomSalinity --> - <row> - <cell> - <JLabel id='gearShootingEndBottomSalinityLabel'/> - </cell> - <cell weightx='1.0'> - <NumberEditor id='gearShootingEndBottomSalinityField' - constructorParams='this'/> - </cell> - </row> - - <!-- AverageBottomSalinity --> - <row> - <cell> - <JLabel id='averageBottomSalinityLabel'/> - </cell> - <cell weightx='1.0'> - <NumberEditor id='averageBottomSalinityField' - constructorParams='this'/> - </cell> - </row> - - </Table> - </tab> - </JTabbedPane> - - <!-- Actions --> - <JPanel layout='{new BorderLayout()}' constraints='BorderLayout.SOUTH'> - <JPanel layout='{new GridLayout(1,0)}' constraints='BorderLayout.NORTH'> - <JButton id='importPupitriButton' onActionPerformed='handler.importPupitri()'/> - </JPanel> - <JPanel layout='{new GridLayout(1,0)}' constraints='BorderLayout.CENTER'> - <JButton id='cancelButton' onActionPerformed='handler.cancel()'/> - <JButton id='saveButton' onActionPerformed='handler.save()'/> - </JPanel> - </JPanel> - - </JPanel> - - <JLabel id='noTraitPane'/> -</JPanel> Deleted: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/TraitTabUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/TraitTabUIHandler.java 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/TraitTabUIHandler.java 2012-12-10 02:45:40 UTC (rev 37) @@ -1,234 +0,0 @@ -package fr.ifremer.tutti.ui.swing.content.catches; - -/* - * #%L - * Tutti :: UI - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2012 Ifremer - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import fr.ifremer.tutti.persistence.entities.data.Trait; -import fr.ifremer.tutti.persistence.entities.referential.TuttiUser; -import fr.ifremer.tutti.service.PersistenceService; -import fr.ifremer.tutti.ui.swing.AbstractTuttiUIHandler; -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import javax.swing.JLabel; -import javax.swing.JPanel; -import java.awt.BorderLayout; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.sql.Date; -import java.util.List; - -/** - * Handler for UI {@link TraitTabUI}. - * - * @author tchemit <chemit@codelutin.com> - * @since 0.1 - */ -public class TraitTabUIHandler extends AbstractTuttiUIHandler<TraitTabUIModel> { - - /** Logger. */ - private static final Log log = - LogFactory.getLog(TraitTabUIHandler.class); - - private final TraitTabUI ui; - - private final CatchesUI parentUi; - - private final PersistenceService persistenceService; - - public TraitTabUIHandler(CatchesUI parentUi, TraitTabUI ui) { - super(parentUi.getHandler().getContext()); - this.ui = ui; - this.parentUi = parentUi; - this.persistenceService = context.getService(PersistenceService.class); - } - - @Override - public void beforeInitUI() { - - TraitTabUIModel model = new TraitTabUIModel(); - model.addPropertyChangeListener(TraitTabUIModel.PROPERTY_EMPTY, new PropertyChangeListener() { - @Override - public void propertyChange(PropertyChangeEvent evt) { - JPanel form = ui.getTraitPane(); - JLabel noContentPane = ui.getNoTraitPane(); - - Boolean empty = (Boolean) evt.getNewValue(); - ui.remove(form); - ui.remove(noContentPane); - if (empty) { - ui.add(noContentPane, BorderLayout.CENTER); - } else { - ui.add(form, BorderLayout.CENTER); - } - ui.repaint(); - } - }); - - listModelIsModify(model); - - ui.setContextValue(model); - } - - @Override - public void afterInitUI() { - - TraitTabUIModel model = ui.getModel(); - - initUI(ui); - - initBeanList(ui.getSaisisseurHeader(), - persistenceService.getAllTuttiUser(), - model.getSaisisseur()); - - initBeanComboBox(ui.getBeaufortScaleComboBox(), - persistenceService.getAllBeaufortScale(), - model.getBeaufortScale()); - - initBeanComboBox(ui.getStrataComboBox(), - persistenceService.getAllStrata(), - model.getStrata()); - - initBeanComboBox(ui.getSeaStateComboBox(), - persistenceService.getAllSeaState(), - model.getSeaState()); - - model.setEmpty(true); - - listenValidatorValid(ui.getValidator(), getModel()); - } - - @Override - public void onCloseUI() { - } - - @Override - protected TraitTabUIModel getModel() { - return ui.getModel(); - } - - public void selectTrait(Trait bean) { - - boolean empty = bean == null; - - TraitTabUIModel model = ui.getModel(); - - // clean previous selection - ui.getSaisisseurHeader().getList().clearSelection(); - - if (empty) { - - model.fromBean(new Trait()); - } else { - - model.fromBean(bean); - } - - // update saisissuer selection - List<TuttiUser> saisisseur = model.getSaisisseur(); - if (CollectionUtils.isNotEmpty(saisisseur)) { - updateIndices(ui.getSaisisseurList(), saisisseur); - } - - // update model empty property - model.setEmpty(empty); - - // reload bean in validator (? really mandatory?) -// ui.getValidator().reloadBean(); - - // if new trait can already cancel his creation - model.setModify(!empty && model.isCreate()); - } - - public void cancel() { - - String id = ui.getModel().getId(); - - if (log.isInfoEnabled()) { - log.info("Cancel edition for trait: " + id); - } - boolean newBean = StringUtils.isBlank(id); - - if (newBean) { - - // cancel to create a new trait - parentUi.getHandler().selectTrait(null); - - } else { - - // reselect in ui the trait - Trait selectedTrait = parentUi.getModel().getSelectedTrait(); - parentUi.getHandler().selectTrait(selectedTrait); - } - } - - public void save() { - - // get trait to save - Trait toSave = ui.getModel().toBean(); - - if (log.isInfoEnabled()) { - log.info("Save edition for trait: " + toSave.getId()); - } - - // keep selected tab (to resotre it after save) - int selectedIndex = ui.getTraitTabPane().getSelectedIndex(); - - // persist current trait - parentUi.getHandler().saveTrait(toSave); - - // reselect current tab - ui.getTraitTabPane().setSelectedIndex(selectedIndex); - } - - public void importPupitri() { - //TODO - } - - public void setGearShootingStartLatitude(String text) { - ui.getModel().setGearShootingStartLatitude(Float.valueOf(text)); - } - - public void setGearShootingStartLongitude(String text) { - ui.getModel().setGearShootingStartLongitude(Float.valueOf(text)); - } - - public void setGearShootingStartTime(String text) { - ui.getModel().setGearShootingStartTime(Date.valueOf(text)); - } - - public void setGearShootingEndLatitude(String text) { - ui.getModel().setGearShootingEndLatitude(Float.valueOf(text)); - } - - public void setGearShootingEndLongitude(String text) { - ui.getModel().setGearShootingEndLongitude(Float.valueOf(text)); - } - - public void setGearShootingEndTime(String text) { - ui.getModel().setGearShootingEndTime(Date.valueOf(text)); - } -} Deleted: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/TraitTabUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/TraitTabUIModel.java 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/TraitTabUIModel.java 2012-12-10 02:45:40 UTC (rev 37) @@ -1,615 +0,0 @@ -package fr.ifremer.tutti.ui.swing.content.catches; - -/* - * #%L - * Tutti :: UI - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2012 Ifremer - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import fr.ifremer.tutti.persistence.entities.data.Campaign; -import fr.ifremer.tutti.persistence.entities.data.Strata; -import fr.ifremer.tutti.persistence.entities.data.Trait; -import fr.ifremer.tutti.persistence.entities.referential.BeaufortScale; -import fr.ifremer.tutti.persistence.entities.referential.SeaState; -import fr.ifremer.tutti.persistence.entities.referential.TuttiUser; -import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; -import org.nuiton.util.beans.Binder; -import org.nuiton.util.beans.BinderFactory; - -import java.util.Date; -import java.util.List; - -/** - * Model for UI {@link TraitTabUI}. - * - * @author tchemit <chemit@codelutin.com> - * @since 0.1 - */ -public class TraitTabUIModel extends AbstractTuttiBeanUIModel<Trait, TraitTabUIModel> { - - private static final long serialVersionUID = 1L; - - public static final String PROPERTY_EMPTY = "empty"; - - public static final String PROPERTY_STATION_NUMBER = "stationNumber"; - - public static final String PROPERTY_TRAIT_NUMBER = "traitNumber"; - - public static final String PROPERTY_DATE = "date"; - - public static final String PROPERTY_STRATA = "strata"; - - public static final String PROPERTY_GEAR_SHOOTING_START_LATITUDE = "gearShootingStartLatitude"; - - public static final String PROPERTY_GEAR_SHOOTING_START_LONGITUDE = "gearShootingStartLongitude"; - - public static final String PROPERTY_GEAR_SHOOTING_START_TIME = "gearShootingStartTime"; - - public static final String PROPERTY_GEAR_SHOOTING_START_DEPTH = "gearShootingStartDepth"; - - public static final String PROPERTY_GEAR_SHOOTING_END_LATITUDE = "gearShootingEndLatitude"; - - public static final String PROPERTY_GEAR_SHOOTING_END_LONGITUDE = "gearShootingEndLongitude"; - - public static final String PROPERTY_GEAR_SHOOTING_END_TIME = "gearShootingEndTime"; - - public static final String PROPERTY_GEAR_SHOOTING_END_DEPTH = "gearShootingEndDepth"; - - public static final String PROPERTY_BEAUFORT_SCALE = "beaufortScale"; - - public static final String PROPERTY_WIND_DIRECTION = "windDirection"; - - public static final String PROPERTY_SEA_STATE = "seaState"; - - public static final String PROPERTY_OUVERTURE_HORIZONTALE = "ouvertureHorizontale"; - - public static final String PROPERTY_OUVERTURE_VERTICALE = "ouvertureVerticale"; - - public static final String PROPERTY_GEOMETRIE_MESUREE = "geometrieMesuree"; - - public static final String PROPERTY_LONGUEUR_FUNES = "longueurFunes"; - - public static final String PROPERTY_LONGUEUR_BRAS = "longueurBras"; - - public static final String PROPERTY_SYSTEME_FERMETURE_CUL = "systemeFermetureCul"; - - public static final String PROPERTY_TRAIT_RECTILIGNE = "traitRectiligne"; - - public static final String PROPERTY_DISTANCE_CHALUTEE = "distanceChalutee"; - - public static final String PROPERTY_DUREE = "duree"; - - public static final String PROPERTY_TRAIT_VALID = "traitValid"; - - public static final String PROPERTY_LOCALITE = "localite"; - - public static final String PROPERTY_COMMENT = "comment"; - - public static final String PROPERTY_SAISISSEUR = "saisisseur"; - - public static final String PROPERTY_GEAR_SHOOTING_START_SURFACE_TEMPERATURE = "gearShootingStartSurfaceTemperature"; - - public static final String PROPERTY_GEAR_SHOOTING_END_SURFACE_TEMPERATURE = "gearShootingEndSurfaceTemperature"; - - public static final String PROPERTY_GEAR_SHOOTING_START_BOTTOM_TEMPERATURE = "gearShootingStartBottomTemperature"; - - public static final String PROPERTY_GEAR_SHOOTING_END_BOTTOM_TEMPERATURE = "gearShootingEndBottomTemperature"; - - public static final String PROPERTY_AVERAGE_BOTTOM_TEMPERATURE = "averageBottomTemperature"; - - public static final String PROPERTY_GEAR_SHOOTING_START_SURFACE_SALINITY = "gearShootingStartSurfaceSalinity"; - - public static final String PROPERTY_GEAR_SHOOTING_END_SURFACE_SALINITY = "gearShootingEndSurfaceSalinity"; - - public static final String PROPERTY_GEAR_SHOOTING_START_BOTTOM_SALINITY = "gearShootingStartBottomSalinity"; - - public static final String PROPERTY_GEAR_SHOOTING_END_BOTTOM_SALINITY = "gearShootingEndBottomSalinity"; - - public static final String PROPERTY_AVERAGE_BOTTOM_SALINITY = "averageBottomSalinity"; - - protected boolean empty; - - protected Campaign campaign; - - protected Integer stationNumber; - - protected Integer traitNumber; - - protected Date date; - - protected Strata strata; - - protected Float gearShootingStartLatitude; - - protected Float gearShootingStartLongitude; - - protected Date gearShootingStartTime; - - protected Float gearShootingStartDepth; - - protected Float gearShootingEndLatitude; - - protected Float gearShootingEndLongitude; - - protected Date gearShootingEndTime; - - protected Float gearShootingEndDepth; - - protected BeaufortScale beaufortScale; - - protected Integer windDirection; - - protected SeaState seaState; - - protected Float ouvertureHorizontale; - - protected Float ouvertureVerticale; - - protected boolean geometrieMesuree; - - protected Float longueurFunes; - - protected Float longueurBras; - - protected boolean systemeFermetureCul; - - protected boolean traitRectiligne; - - protected Float distanceChalutee; - - protected Float duree; - - protected boolean traitValid; - - protected String localite; - - protected String comment; - - protected List<TuttiUser> saisisseur; - - protected Float gearShootingStartSurfaceTemperature; - - protected Float gearShootingEndSurfaceTemperature; - - protected Float gearShootingStartBottomTemperature; - - protected Float gearShootingEndBottomTemperature; - - protected Float averageBottomTemperature; - - protected Float gearShootingStartSurfaceSalinity; - - protected Float gearShootingEndSurfaceSalinity; - - protected Float gearShootingStartBottomSalinity; - - protected Float gearShootingEndBottomSalinity; - - protected Float averageBottomSalinity; - - protected static Binder<TraitTabUIModel, Trait> toBeanBinder = - BinderFactory.newBinder(TraitTabUIModel.class, - Trait.class); - - protected static Binder<Trait, TraitTabUIModel> fromBeanBinder = - BinderFactory.newBinder(Trait.class, TraitTabUIModel.class); - - public TraitTabUIModel() { - super(Trait.class, fromBeanBinder, toBeanBinder); - } - - public boolean isEmpty() { - return empty; - } - - public void setEmpty(boolean empty) { - Object oldValue = isEmpty(); - this.empty = empty; - firePropertyChange(PROPERTY_EMPTY, oldValue, empty); - } - - public Campaign getCampaign() { - return campaign; - } - - public void setCampaign(Campaign campaign) { - this.campaign = campaign; - } - - public Integer getStationNumber() { - return stationNumber; - } - - public void setStationNumber(Integer stationNumber) { - Object oldValue = getStationNumber(); - this.stationNumber = stationNumber; - firePropertyChange(PROPERTY_STATION_NUMBER, oldValue, stationNumber); - } - - public Integer getTraitNumber() { - return traitNumber; - } - - public void setTraitNumber(Integer traitNumber) { - Object oldValue = getTraitNumber(); - this.traitNumber = traitNumber; - firePropertyChange(PROPERTY_TRAIT_NUMBER, oldValue, traitNumber); - } - - public Date getDate() { - return date; - } - - public void setDate(Date date) { - Object oldValue = getDate(); - this.date = date; - firePropertyChange(PROPERTY_DATE, oldValue, date); - } - - public Strata getStrata() { - return strata; - } - - public void setStrata(Strata strata) { - Object oldValue = getStrata(); - this.strata = strata; - firePropertyChange(PROPERTY_STRATA, oldValue, strata); - } - - public Float getGearShootingStartLatitude() { - return gearShootingStartLatitude; - } - - public void setGearShootingStartLatitude(Float gearShootingStartLatitude) { - Object oldValue = getGearShootingStartLatitude(); - this.gearShootingStartLatitude = gearShootingStartLatitude; - firePropertyChange(PROPERTY_GEAR_SHOOTING_START_LATITUDE, oldValue, gearShootingStartLatitude); - } - - public Float getGearShootingStartLongitude() { - return gearShootingStartLongitude; - } - - public void setGearShootingStartLongitude(Float gearShootingStartLongitude) { - Object oldValue = getGearShootingStartLongitude(); - this.gearShootingStartLongitude = gearShootingStartLongitude; - firePropertyChange(PROPERTY_GEAR_SHOOTING_START_LONGITUDE, oldValue, gearShootingStartLongitude); - } - - public Date getGearShootingStartTime() { - return gearShootingStartTime; - } - - public void setGearShootingStartTime(Date gearShootingStartTime) { - Object oldValue = getGearShootingStartTime(); - this.gearShootingStartTime = gearShootingStartTime; - firePropertyChange(PROPERTY_GEAR_SHOOTING_START_TIME, oldValue, gearShootingStartTime); - } - - public Float getGearShootingStartDepth() { - return gearShootingStartDepth; - } - - public void setGearShootingStartDepth(Float gearShootingStartDepth) { - Object oldValue = getGearShootingStartDepth(); - this.gearShootingStartDepth = gearShootingStartDepth; - firePropertyChange(PROPERTY_GEAR_SHOOTING_START_DEPTH, oldValue, gearShootingStartDepth); - } - - public Float getGearShootingEndLatitude() { - return gearShootingEndLatitude; - } - - public void setGearShootingEndLatitude(Float gearShootingEndLatitude) { - Object oldValue = getGearShootingEndLatitude(); - this.gearShootingEndLatitude = gearShootingEndLatitude; - firePropertyChange(PROPERTY_GEAR_SHOOTING_END_LATITUDE, oldValue, gearShootingEndLatitude); - } - - public Float getGearShootingEndLongitude() { - return gearShootingEndLongitude; - } - - public void setGearShootingEndLongitude(Float gearShootingEndLongitude) { - Object oldValue = getGearShootingEndLongitude(); - this.gearShootingEndLongitude = gearShootingEndLongitude; - firePropertyChange(PROPERTY_GEAR_SHOOTING_END_LONGITUDE, oldValue, gearShootingEndLongitude); - } - - public Date getGearShootingEndTime() { - return gearShootingEndTime; - } - - public void setGearShootingEndTime(Date gearShootingEndTime) { - Object oldValue = getGearShootingEndTime(); - this.gearShootingEndTime = gearShootingEndTime; - firePropertyChange(PROPERTY_GEAR_SHOOTING_END_TIME, oldValue, gearShootingEndTime); - } - - public Float getGearShootingEndDepth() { - return gearShootingEndDepth; - } - - public void setGearShootingEndDepth(Float gearShootingEndDepth) { - Object oldValue = getGearShootingEndDepth(); - this.gearShootingEndDepth = gearShootingEndDepth; - firePropertyChange(PROPERTY_GEAR_SHOOTING_END_DEPTH, oldValue, gearShootingEndDepth); - } - - public BeaufortScale getBeaufortScale() { - return beaufortScale; - } - - public void setBeaufortScale(BeaufortScale beaufortScale) { - Object oldValue = getBeaufortScale(); - this.beaufortScale = beaufortScale; - firePropertyChange(PROPERTY_BEAUFORT_SCALE, oldValue, beaufortScale); - } - - public Integer getWindDirection() { - return windDirection; - } - - public void setWindDirection(Integer windDirection) { - Object oldValue = getWindDirection(); - this.windDirection = windDirection; - firePropertyChange(PROPERTY_WIND_DIRECTION, oldValue, windDirection); - } - - public SeaState getSeaState() { - return seaState; - } - - public void setSeaState(SeaState seaState) { - Object oldValue = getSeaState(); - this.seaState = seaState; - firePropertyChange(PROPERTY_SEA_STATE, oldValue, seaState); - } - - public Float getOuvertureHorizontale() { - return ouvertureHorizontale; - } - - public void setOuvertureHorizontale(Float ouvertureHorizontale) { - Object oldValue = getOuvertureHorizontale(); - this.ouvertureHorizontale = ouvertureHorizontale; - firePropertyChange(PROPERTY_OUVERTURE_HORIZONTALE, oldValue, ouvertureHorizontale); - } - - public Float getOuvertureVerticale() { - return ouvertureVerticale; - } - - public void setOuvertureVerticale(Float ouvertureVerticale) { - Object oldValue = getOuvertureVerticale(); - this.ouvertureVerticale = ouvertureVerticale; - firePropertyChange(PROPERTY_OUVERTURE_VERTICALE, oldValue, ouvertureVerticale); - } - - public boolean isGeometrieMesuree() { - return geometrieMesuree; - } - - public void setGeometrieMesuree(boolean geometrieMesuree) { - Object oldValue = isGeometrieMesuree(); - this.geometrieMesuree = geometrieMesuree; - firePropertyChange(PROPERTY_GEOMETRIE_MESUREE, oldValue, geometrieMesuree); - } - - public Float getLongueurFunes() { - return longueurFunes; - } - - public void setLongueurFunes(Float longueurFunes) { - Object oldValue = getLongueurFunes(); - this.longueurFunes = longueurFunes; - firePropertyChange(PROPERTY_LONGUEUR_FUNES, oldValue, longueurFunes); - } - - public Float getLongueurBras() { - return longueurBras; - } - - public void setLongueurBras(Float longueurBras) { - Object oldValue = getLongueurBras(); - this.longueurBras = longueurBras; - firePropertyChange(PROPERTY_LONGUEUR_BRAS, oldValue, longueurBras); - } - - public boolean isSystemeFermetureCul() { - return systemeFermetureCul; - } - - public void setSystemeFermetureCul(boolean systemeFermetureCul) { - Object oldValue = isSystemeFermetureCul(); - this.systemeFermetureCul = systemeFermetureCul; - firePropertyChange(PROPERTY_SYSTEME_FERMETURE_CUL, oldValue, systemeFermetureCul); - } - - public boolean isTraitRectiligne() { - return traitRectiligne; - } - - public void setTraitRectiligne(boolean traitRectiligne) { - Object oldValue = isTraitRectiligne(); - this.traitRectiligne = traitRectiligne; - firePropertyChange(PROPERTY_TRAIT_RECTILIGNE, oldValue, traitRectiligne); - } - - public Float getDistanceChalutee() { - return distanceChalutee; - } - - public void setDistanceChalutee(Float distanceChalutee) { - Object oldValue = getDistanceChalutee(); - this.distanceChalutee = distanceChalutee; - firePropertyChange(PROPERTY_DISTANCE_CHALUTEE, oldValue, distanceChalutee); - } - - public Float getDuree() { - return duree; - } - - public void setDuree(Float duree) { - Object oldValue = getDuree(); - this.duree = duree; - firePropertyChange(PROPERTY_DUREE, oldValue, duree); - } - - public boolean isTraitValid() { - return traitValid; - } - - public void setTraitValid(boolean traitValid) { - Object oldValue = isTraitValid(); - this.traitValid = traitValid; - firePropertyChange(PROPERTY_TRAIT_VALID, oldValue, traitValid); - } - - public String getLocalite() { - return localite; - } - - public void setLocalite(String localite) { - Object oldValue = getLocalite(); - this.localite = localite; - firePropertyChange(PROPERTY_LOCALITE, oldValue, localite); - } - - public String getComment() { - return comment; - } - - public void setComment(String comment) { - Object oldValue = getComment(); - this.comment = comment; - firePropertyChange(PROPERTY_COMMENT, oldValue, comment); - } - - public List<TuttiUser> getSaisisseur() { - return saisisseur; - } - - public void setSaisisseur(List<TuttiUser> saisisseur) { - this.saisisseur = saisisseur; - firePropertyChange(PROPERTY_SAISISSEUR, null, saisisseur); - } - - public Float getGearShootingStartSurfaceTemperature() { - return gearShootingStartSurfaceTemperature; - } - - public void setGearShootingStartSurfaceTemperature(Float gearShootingStartSurfaceTemperature) { - Object oldValue = getGearShootingStartSurfaceTemperature(); - this.gearShootingStartSurfaceTemperature = gearShootingStartSurfaceTemperature; - firePropertyChange(PROPERTY_GEAR_SHOOTING_START_SURFACE_TEMPERATURE, oldValue, gearShootingStartSurfaceTemperature); - } - - public Float getGearShootingEndSurfaceTemperature() { - return gearShootingEndSurfaceTemperature; - } - - public void setGearShootingEndSurfaceTemperature(Float gearShootingEndSurfaceTemperature) { - Object oldValue = getGearShootingEndSurfaceTemperature(); - this.gearShootingEndSurfaceTemperature = gearShootingEndSurfaceTemperature; - firePropertyChange(PROPERTY_GEAR_SHOOTING_END_SURFACE_TEMPERATURE, oldValue, gearShootingEndSurfaceTemperature); - } - - public Float getGearShootingStartBottomTemperature() { - return gearShootingStartBottomTemperature; - } - - public void setGearShootingStartBottomTemperature(Float gearShootingStartBottomTemperature) { - Object oldValue = getGearShootingStartBottomTemperature(); - this.gearShootingStartBottomTemperature = gearShootingStartBottomTemperature; - firePropertyChange(PROPERTY_GEAR_SHOOTING_START_BOTTOM_TEMPERATURE, oldValue, gearShootingStartBottomTemperature); - } - - public Float getGearShootingEndBottomTemperature() { - return gearShootingEndBottomTemperature; - } - - public void setGearShootingEndBottomTemperature(Float gearShootingEndBottomTemperature) { - Object oldValue = getGearShootingEndBottomTemperature(); - this.gearShootingEndBottomTemperature = gearShootingEndBottomTemperature; - firePropertyChange(PROPERTY_GEAR_SHOOTING_END_BOTTOM_TEMPERATURE, oldValue, gearShootingEndBottomTemperature); - } - - public Float getAverageBottomTemperature() { - return averageBottomTemperature; - } - - public void setAverageBottomTemperature(Float averageBottomTemperature) { - Object oldValue = getAverageBottomTemperature(); - this.averageBottomTemperature = averageBottomTemperature; - firePropertyChange(PROPERTY_AVERAGE_BOTTOM_TEMPERATURE, oldValue, averageBottomTemperature); - } - - public Float getGearShootingStartSurfaceSalinity() { - return gearShootingStartSurfaceSalinity; - } - - public void setGearShootingStartSurfaceSalinity(Float gearShootingStartSurfaceSalinity) { - Object oldValue = getGearShootingStartSurfaceSalinity(); - this.gearShootingStartSurfaceSalinity = gearShootingStartSurfaceSalinity; - firePropertyChange(PROPERTY_GEAR_SHOOTING_START_SURFACE_SALINITY, oldValue, gearShootingStartSurfaceSalinity); - } - - public Float getGearShootingEndSurfaceSalinity() { - return gearShootingEndSurfaceSalinity; - } - - public void setGearShootingEndSurfaceSalinity(Float gearShootingEndSurfaceSalinity) { - Object oldValue = getGearShootingEndSurfaceSalinity(); - this.gearShootingEndSurfaceSalinity = gearShootingEndSurfaceSalinity; - firePropertyChange(PROPERTY_GEAR_SHOOTING_END_SURFACE_SALINITY, oldValue, gearShootingEndSurfaceSalinity); - } - - public Float getGearShootingStartBottomSalinity() { - return gearShootingStartBottomSalinity; - } - - public void setGearShootingStartBottomSalinity(Float gearShootingStartBottomSalinity) { - Object oldValue = getGearShootingStartBottomSalinity(); - this.gearShootingStartBottomSalinity = gearShootingStartBottomSalinity; - firePropertyChange(PROPERTY_GEAR_SHOOTING_START_BOTTOM_SALINITY, oldValue, gearShootingStartBottomSalinity); - } - - public Float getGearShootingEndBottomSalinity() { - return gearShootingEndBottomSalinity; - } - - public void setGearShootingEndBottomSalinity(Float gearShootingEndBottomSalinity) { - Object oldValue = getGearShootingEndBottomSalinity(); - this.gearShootingEndBottomSalinity = gearShootingEndBottomSalinity; - firePropertyChange(PROPERTY_GEAR_SHOOTING_END_BOTTOM_SALINITY, oldValue, gearShootingEndBottomSalinity); - } - - public Float getAverageBottomSalinity() { - return averageBottomSalinity; - } - - public void setAverageBottomSalinity(Float averageBottomSalinity) { - Object oldValue = getAverageBottomSalinity(); - this.averageBottomSalinity = averageBottomSalinity; - firePropertyChange(PROPERTY_AVERAGE_BOTTOM_SALINITY, oldValue, averageBottomSalinity); - } -} \ No newline at end of file Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/accidentel/AccidentelTabUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/accidentel/AccidentelTabUI.css 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/accidentel/AccidentelTabUI.css 2012-12-10 02:45:40 UTC (rev 37) @@ -23,37 +23,37 @@ */ NumberEditor { - autoPopup:{handler.getConfig().isAutoPopupNumberEditor()}; - showPopupButton:{handler.getConfig().isShowNumberEditorButton()}; - bean:{model}; - showReset:true; + autoPopup: {handler.getConfig().isAutoPopupNumberEditor()}; + showPopupButton: {handler.getConfig().isShowNumberEditorButton()}; + bean: {model}; + showReset: true; } #totalWeightLabel { - text:"tutti.label.captureAccidentel.totalWeight"; - labelFor:{totalWeightField}; + text: "tutti.label.captureAccidentel.totalWeight"; + labelFor: {totalWeightField}; } #totalWeightField { - property:"totalWeight"; - model:{model.getTotalWeight()}; - useFloat:false; - numberPattern:{INT_6_DIGITS_PATTERN}; + property: "totalWeight"; + model: {model.getTotalWeight()}; + useFloat: false; + numberPattern: {INT_6_DIGITS_PATTERN}; } #sampleTotalWeightLabel { - text:"tutti.label.captureAccidentel.sampleTotalWeight"; - labelFor:{totalWeightField}; + text: "tutti.label.captureAccidentel.sampleTotalWeight"; + labelFor: {totalWeightField}; } #sampleTotalWeightField { - property:"sampleTotalWeight"; - model:{model.getSampleTotalWeight()}; - useFloat:false; - numberPattern:{INT_6_DIGITS_PATTERN}; + property: "sampleTotalWeight"; + model: {model.getSampleTotalWeight()}; + useFloat: false; + numberPattern: {INT_6_DIGITS_PATTERN}; } #table { - model:{getContextValue(TableModel.class)}; - columnModel:{getContextValue(TableColumnModel.class)}; + model: {getContextValue(TableModel.class)}; + columnModel: {getContextValue(TableColumnModel.class)}; } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/accidentel/AccidentelTabUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/accidentel/AccidentelTabUI.jaxx 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/accidentel/AccidentelTabUI.jaxx 2012-12-10 02:45:40 UTC (rev 37) @@ -25,10 +25,10 @@ implements='fr.ifremer.tutti.ui.swing.TuttiUI<AccidentelTabUIModel, AccidentelTabUIHandler>'> <import> - fr.ifremer.tutti.persistence.entities.data.Trait + fr.ifremer.tutti.persistence.entities.data.FishingOperation fr.ifremer.tutti.ui.swing.TuttiUIContext - fr.ifremer.tutti.ui.swing.content.catches.CatchesUI + fr.ifremer.tutti.ui.swing.content.catches.FishingOperationsUI jaxx.runtime.swing.editor.NumberEditor @@ -43,13 +43,13 @@ <script><![CDATA[ -public AccidentelTabUI(CatchesUI parentUI) { +public AccidentelTabUI(FishingOperationsUI parentUI) { AccidentelTabUIHandler handler = new AccidentelTabUIHandler(parentUI, this); setContextValue(handler); handler.beforeInitUI(); } -public void selectTrait(Trait trait) { handler.selectTrait(trait); } +public void selectFishingOperation(FishingOperation fishingOperation) { handler.selectFishingOperation(fishingOperation); } protected void $afterCompleteSetup() { handler.afterInitUI(); } ]]></script> Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/accidentel/AccidentelTabUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/accidentel/AccidentelTabUIHandler.java 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/accidentel/AccidentelTabUIHandler.java 2012-12-10 02:45:40 UTC (rev 37) @@ -25,12 +25,12 @@ */ import fr.ifremer.tutti.persistence.entities.data.AccidentelBatch; +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; -import fr.ifremer.tutti.persistence.entities.data.Trait; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.ui.swing.AbstractTuttiUIHandler; -import fr.ifremer.tutti.ui.swing.content.catches.CatchesUI; +import fr.ifremer.tutti.ui.swing.content.catches.FishingOperationsUI; import jaxx.runtime.SwingUtil; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -59,11 +59,11 @@ private final AccidentelTabUI ui; - private final CatchesUI parentUi; + private final FishingOperationsUI parentUi; private final PersistenceService persistenceService; - public AccidentelTabUIHandler(CatchesUI parentUi, AccidentelTabUI ui) { + public AccidentelTabUIHandler(FishingOperationsUI parentUi, AccidentelTabUI ui) { super(parentUi.getHandler().getContext()); this.ui = ui; this.parentUi = parentUi; @@ -148,7 +148,7 @@ return ui.getModel(); } - public void selectTrait(Trait bean) { + public void selectFishingOperation(FishingOperation bean) { boolean empty = bean == null; @@ -158,7 +158,7 @@ if (empty) { catches = null; - bean = new Trait(); + bean = new FishingOperation(); } else { catches = persistenceService.getAllAccidentelBatch(bean.getId()); } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/accidentel/AccidentelTabUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/accidentel/AccidentelTabUIModel.java 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/accidentel/AccidentelTabUIModel.java 2012-12-10 02:45:40 UTC (rev 37) @@ -25,7 +25,7 @@ */ import fr.ifremer.tutti.persistence.entities.data.AccidentelBatch; -import fr.ifremer.tutti.persistence.entities.data.Trait; +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import org.jdesktop.beans.AbstractSerializableBean; import org.nuiton.util.beans.BinderFactory; @@ -81,15 +81,15 @@ firePropertyChange(PROPERTY_CATCHES, oldValue, catches); } - public void fromBean(Trait bean) { - BinderFactory.newBinder(Trait.class, + public void fromBean(FishingOperation bean) { + BinderFactory.newBinder(FishingOperation.class, AccidentelTabUIModel.class).copy(bean, this); } - public Trait toBean() { - Trait result = new Trait(); + public FishingOperation toBean() { + FishingOperation result = new FishingOperation(); BinderFactory.newBinder(AccidentelTabUIModel.class, - Trait.class).copy(this, result); + FishingOperation.class).copy(this, result); return result; } } \ No newline at end of file Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/benthos/BenthosTabUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/benthos/BenthosTabUI.jaxx 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/benthos/BenthosTabUI.jaxx 2012-12-10 02:45:40 UTC (rev 37) @@ -25,10 +25,10 @@ implements='fr.ifremer.tutti.ui.swing.TuttiUI<BenthosTabUIModel, BenthosTabUIHandler>'> <import> - fr.ifremer.tutti.persistence.entities.data.Trait + fr.ifremer.tutti.persistence.entities.data.FishingOperation fr.ifremer.tutti.ui.swing.TuttiUIContext - fr.ifremer.tutti.ui.swing.content.catches.CatchesUI + fr.ifremer.tutti.ui.swing.content.catches.FishingOperationsUI jaxx.runtime.swing.editor.NumberEditor @@ -43,13 +43,13 @@ <script><![CDATA[ -public BenthosTabUI(CatchesUI parentUI) { +public BenthosTabUI(FishingOperationsUI parentUI) { BenthosTabUIHandler handler = new BenthosTabUIHandler(parentUI, this); setContextValue(handler); handler.beforeInitUI(); } -public void selectTrait(Trait trait) { handler.selectTrait(trait); } +public void selectFishingOperation(FishingOperation fishingOperation) { handler.selectFishingOperation(fishingOperation); } protected void $afterCompleteSetup() { handler.afterInitUI(); } ]]></script> Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/benthos/BenthosTabUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/benthos/BenthosTabUIHandler.java 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/benthos/BenthosTabUIHandler.java 2012-12-10 02:45:40 UTC (rev 37) @@ -25,12 +25,12 @@ */ import fr.ifremer.tutti.persistence.entities.data.BenthosBatch; +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; -import fr.ifremer.tutti.persistence.entities.data.Trait; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.ui.swing.AbstractTuttiUIHandler; -import fr.ifremer.tutti.ui.swing.content.catches.CatchesUI; +import fr.ifremer.tutti.ui.swing.content.catches.FishingOperationsUI; import jaxx.runtime.SwingUtil; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -59,11 +59,11 @@ private final BenthosTabUI ui; - private final CatchesUI parentUi; + private final FishingOperationsUI parentUi; private final PersistenceService persistenceService; - public BenthosTabUIHandler(CatchesUI parentUi, BenthosTabUI ui) { + public BenthosTabUIHandler(FishingOperationsUI parentUi, BenthosTabUI ui) { super(parentUi.getHandler().getContext()); this.ui = ui; this.parentUi = parentUi; @@ -148,7 +148,7 @@ return ui.getModel(); } - public void selectTrait(Trait bean) { + public void selectFishingOperation(FishingOperation bean) { boolean empty = bean == null; @@ -158,7 +158,7 @@ if (empty) { catches = null; - bean = new Trait(); + bean = new FishingOperation(); } else { catches = persistenceService.getAllBenthosBatch(bean.getId()); } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/benthos/BenthosTabUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/benthos/BenthosTabUIModel.java 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/benthos/BenthosTabUIModel.java 2012-12-10 02:45:40 UTC (rev 37) @@ -25,7 +25,7 @@ */ import fr.ifremer.tutti.persistence.entities.data.BenthosBatch; -import fr.ifremer.tutti.persistence.entities.data.Trait; +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import org.jdesktop.beans.AbstractSerializableBean; import org.nuiton.util.beans.BinderFactory; @@ -81,15 +81,15 @@ firePropertyChange(PROPERTY_CATCHES, oldValue, catches); } - public void fromBean(Trait bean) { - BinderFactory.newBinder(Trait.class, + public void fromBean(FishingOperation bean) { + BinderFactory.newBinder(FishingOperation.class, BenthosTabUIModel.class).copy(bean, this); } - public Trait toBean() { - Trait result = new Trait(); + public FishingOperation toBean() { + FishingOperation result = new FishingOperation(); BinderFactory.newBinder(BenthosTabUIModel.class, - Trait.class).copy(this, result); + FishingOperation.class).copy(this, result); return result; } } \ No newline at end of file Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/macrodechet/MacroDechetTabUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/macrodechet/MacroDechetTabUI.jaxx 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/macrodechet/MacroDechetTabUI.jaxx 2012-12-10 02:45:40 UTC (rev 37) @@ -25,10 +25,10 @@ implements='fr.ifremer.tutti.ui.swing.TuttiUI<MacroDechetTabUIModel, MacroDechetTabUIHandler>'> <import> - fr.ifremer.tutti.persistence.entities.data.Trait + fr.ifremer.tutti.persistence.entities.data.FishingOperation fr.ifremer.tutti.ui.swing.TuttiUIContext - fr.ifremer.tutti.ui.swing.content.catches.CatchesUI + fr.ifremer.tutti.ui.swing.content.catches.FishingOperationsUI jaxx.runtime.swing.editor.NumberEditor @@ -43,13 +43,13 @@ <script><![CDATA[ -public MacroDechetTabUI(CatchesUI parentUI) { +public MacroDechetTabUI(FishingOperationsUI parentUI) { MacroDechetTabUIHandler handler = new MacroDechetTabUIHandler(parentUI, this); setContextValue(handler); handler.beforeInitUI(); } -public void selectTrait(Trait trait) { handler.selectTrait(trait); } +public void selectFishingOperation(FishingOperation fishingOperation) { handler.selectFishingOperation(fishingOperation); } protected void $afterCompleteSetup() { handler.afterInitUI(); } ]]></script> Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/macrodechet/MacroDechetTabUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/macrodechet/MacroDechetTabUIHandler.java 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/macrodechet/MacroDechetTabUIHandler.java 2012-12-10 02:45:40 UTC (rev 37) @@ -24,13 +24,13 @@ * #L% */ -import fr.ifremer.tutti.persistence.entities.data.Trait; +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.MacroDechetBatch; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.ui.swing.AbstractTuttiUIHandler; -import fr.ifremer.tutti.ui.swing.content.catches.CatchesUI; +import fr.ifremer.tutti.ui.swing.content.catches.FishingOperationsUI; import jaxx.runtime.SwingUtil; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -59,11 +59,11 @@ private final MacroDechetTabUI ui; - private final CatchesUI parentUi; + private final FishingOperationsUI parentUi; private final PersistenceService persistenceService; - public MacroDechetTabUIHandler(CatchesUI parentUi, MacroDechetTabUI ui) { + public MacroDechetTabUIHandler(FishingOperationsUI parentUi, MacroDechetTabUI ui) { super(parentUi.getHandler().getContext()); this.ui = ui; this.parentUi = parentUi; @@ -148,7 +148,7 @@ return ui.getModel(); } - public void selectTrait(Trait bean) { + public void selectFishingOperation(FishingOperation bean) { boolean empty = bean == null; @@ -158,7 +158,7 @@ if (empty) { catches = null; - bean = new Trait(); + bean = new FishingOperation(); } else { catches = persistenceService.getAllMacroDechetBatch(bean.getId()); } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/macrodechet/MacroDechetTabUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/macrodechet/MacroDechetTabUIModel.java 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/macrodechet/MacroDechetTabUIModel.java 2012-12-10 02:45:40 UTC (rev 37) @@ -24,8 +24,8 @@ * #L% */ +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.MacroDechetBatch; -import fr.ifremer.tutti.persistence.entities.data.Trait; import org.jdesktop.beans.AbstractSerializableBean; import org.nuiton.util.beans.BinderFactory; @@ -81,15 +81,15 @@ firePropertyChange(PROPERTY_CATCHES, oldValue, catches); } - public void fromBean(Trait bean) { - BinderFactory.newBinder(Trait.class, + public void fromBean(FishingOperation bean) { + BinderFactory.newBinder(FishingOperation.class, MacroDechetTabUIModel.class).copy(bean, this); } - public Trait toBean() { - Trait result = new Trait(); + public FishingOperation toBean() { + FishingOperation result = new FishingOperation(); BinderFactory.newBinder(MacroDechetTabUIModel.class, - Trait.class).copy(this, result); + FishingOperation.class).copy(this, result); return result; } } \ No newline at end of file Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/plancton/PlanctonTabUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/plancton/PlanctonTabUI.jaxx 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/plancton/PlanctonTabUI.jaxx 2012-12-10 02:45:40 UTC (rev 37) @@ -25,10 +25,10 @@ implements='fr.ifremer.tutti.ui.swing.TuttiUI<PlanctonTabUIModel, PlanctonTabUIHandler>'> <import> - fr.ifremer.tutti.persistence.entities.data.Trait + fr.ifremer.tutti.persistence.entities.data.FishingOperation fr.ifremer.tutti.ui.swing.TuttiUIContext - fr.ifremer.tutti.ui.swing.content.catches.CatchesUI + fr.ifremer.tutti.ui.swing.content.catches.FishingOperationsUI jaxx.runtime.swing.editor.NumberEditor @@ -43,13 +43,13 @@ <script><![CDATA[ -public PlanctonTabUI(CatchesUI parentUI) { +public PlanctonTabUI(FishingOperationsUI parentUI) { PlanctonTabUIHandler handler = new PlanctonTabUIHandler(parentUI, this); setContextValue(handler); handler.beforeInitUI(); } -public void selectTrait(Trait trait) { handler.selectTrait(trait); } +public void selectFishingOperation(FishingOperation fishingOperation) { handler.selectFishingOperation(fishingOperation); } protected void $afterCompleteSetup() { handler.afterInitUI(); } ]]></script> Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/plancton/PlanctonTabUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/plancton/PlanctonTabUIHandler.java 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/plancton/PlanctonTabUIHandler.java 2012-12-10 02:45:40 UTC (rev 37) @@ -25,12 +25,12 @@ */ import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; -import fr.ifremer.tutti.persistence.entities.data.Trait; +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.PlanctonBatch; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.ui.swing.AbstractTuttiUIHandler; -import fr.ifremer.tutti.ui.swing.content.catches.CatchesUI; +import fr.ifremer.tutti.ui.swing.content.catches.FishingOperationsUI; import jaxx.runtime.SwingUtil; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -59,11 +59,11 @@ private final PlanctonTabUI ui; - private final CatchesUI parentUi; + private final FishingOperationsUI parentUi; private final PersistenceService persistenceService; - public PlanctonTabUIHandler(CatchesUI parentUi, PlanctonTabUI ui) { + public PlanctonTabUIHandler(FishingOperationsUI parentUi, PlanctonTabUI ui) { super(parentUi.getHandler().getContext()); this.ui = ui; this.parentUi = parentUi; @@ -148,7 +148,7 @@ return ui.getModel(); } - public void selectTrait(Trait bean) { + public void selectFishingOperation(FishingOperation bean) { boolean empty = bean == null; @@ -158,7 +158,7 @@ if (empty) { catches = null; - bean = new Trait(); + bean = new FishingOperation(); } else { catches = persistenceService.getAllPlanctonBatch(bean.getId()); } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/plancton/PlanctonTabUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/plancton/PlanctonTabUIModel.java 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/plancton/PlanctonTabUIModel.java 2012-12-10 02:45:40 UTC (rev 37) @@ -24,8 +24,8 @@ * #L% */ +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.PlanctonBatch; -import fr.ifremer.tutti.persistence.entities.data.Trait; import org.jdesktop.beans.AbstractSerializableBean; import org.nuiton.util.beans.BinderFactory; @@ -81,15 +81,15 @@ firePropertyChange(PROPERTY_CATCHES, oldValue, catches); } - public void fromBean(Trait bean) { - BinderFactory.newBinder(Trait.class, + public void fromBean(FishingOperation bean) { + BinderFactory.newBinder(FishingOperation.class, PlanctonTabUIModel.class).copy(bean, this); } - public Trait toBean() { - Trait result = new Trait(); + public FishingOperation toBean() { + FishingOperation result = new FishingOperation(); BinderFactory.newBinder(PlanctonTabUIModel.class, - Trait.class).copy(this, result); + FishingOperation.class).copy(this, result); return result; } } \ No newline at end of file Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/species/SpeciesBatchRowModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/species/SpeciesBatchRowModel.java 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/species/SpeciesBatchRowModel.java 2012-12-10 02:45:40 UTC (rev 37) @@ -68,7 +68,7 @@ public static final String PROPERTY_SAMPLE_WEIGHT = "sampleWeight"; - public static final String PROPERTY_ELEVATION_RATIO = "elevationRatio"; + public static final String PROPERTY_SAMPLING_RATIO = "samplingRatio"; public static final String PROPERTY_COMMENT = "comment"; @@ -160,7 +160,7 @@ * * @since 0.2 */ - protected Float elevationRatio; + protected Float samplingRatio; /** * Comment on this catches. @@ -315,14 +315,14 @@ firePropertyChange(PROPERTY_SAMPLE_WEIGHT, oldValue, sampleWeight); } - public Float getElevationRatio() { - return elevationRatio; + public Float getSamplingRatio() { + return samplingRatio; } - public void setElevationRatio(Float elevationRatio) { - Object oldValue = getElevationRatio(); - this.elevationRatio = elevationRatio; - firePropertyChange(PROPERTY_ELEVATION_RATIO, oldValue, elevationRatio); + public void setSamplingRatio(Float samplingRatio) { + Object oldValue = getSamplingRatio(); + this.samplingRatio = samplingRatio; + firePropertyChange(PROPERTY_SAMPLING_RATIO, oldValue, samplingRatio); } public String getComment() { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/species/SpeciesBatchTableModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/species/SpeciesBatchTableModel.java 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/species/SpeciesBatchTableModel.java 2012-12-10 02:45:40 UTC (rev 37) @@ -102,7 +102,7 @@ n_("tutti.table.species.batch.header.sampleWeight")); public static final ColumnIdentifier<SpeciesBatchRowModel> ELEVATION_RATIO = ColumnIdentifier.newId( - SpeciesBatchRowModel.PROPERTY_ELEVATION_RATIO, + SpeciesBatchRowModel.PROPERTY_SAMPLING_RATIO, n_("tutti.table.species.batch.header.elevationRate"), n_("tutti.table.species.batch.header.elevationRate")); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/species/SpeciesTabUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/species/SpeciesTabUI.css 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/species/SpeciesTabUI.css 2012-12-10 02:45:40 UTC (rev 37) @@ -23,63 +23,63 @@ */ NumberEditor { - autoPopup:{handler.getConfig().isAutoPopupNumberEditor()}; - showPopupButton:{handler.getConfig().isShowNumberEditorButton()}; - bean:{model}; - showReset:true; + autoPopup: {handler.getConfig().isAutoPopupNumberEditor()}; + showPopupButton: {handler.getConfig().isShowNumberEditorButton()}; + bean: {model}; + showReset: true; } #totalWeightLabel { - text:"tutti.label.species.totalWeight"; - labelFor:{totalWeightField}; + text: "tutti.label.species.totalWeight"; + labelFor: {totalWeightField}; } #totalWeightField { - property:"totalWeight"; - model:{model.getTotalWeight()}; - useFloat:false; - numberPattern:{INT_6_DIGITS_PATTERN}; + property: "totalWeight"; + model: {model.getTotalWeight()}; + useFloat: false; + numberPattern: {INT_6_DIGITS_PATTERN}; } #totalVracWeightLabel { - text:"tutti.label.species.totalVracWeight"; - labelFor:{totalVracWeightField}; + text: "tutti.label.species.totalVracWeight"; + labelFor: {totalVracWeightField}; } #totalVracWeightField { - property:"totalVracWeight"; - model:{model.getTotalVracWeight()}; - useFloat:false; - numberPattern:{INT_6_DIGITS_PATTERN}; + property: "totalVracWeight"; + model: {model.getTotalVracWeight()}; + useFloat: false; + numberPattern: {INT_6_DIGITS_PATTERN}; } #sampleVracWeightLabel { - text:"tutti.label.species.sampleVracWeight"; - labelFor:{sampleVracWeightField}; + text: "tutti.label.species.sampleVracWeight"; + labelFor: {sampleVracWeightField}; } #sampleVracWeightField { - property:"sampleVracWeight"; - model:{model.getSampleVracWeight()}; - useFloat:false; - numberPattern:{INT_6_DIGITS_PATTERN}; + property: "sampleVracWeight"; + model: {model.getSampleVracWeight()}; + useFloat: false; + numberPattern: {INT_6_DIGITS_PATTERN}; } #totalHorsVracWeightLabel { - text:"tutti.label.species.totalHorsVracWeight"; - labelFor:{totalHorsVracWeightField}; + text: "tutti.label.species.totalHorsVracWeight"; + labelFor: {totalHorsVracWeightField}; } #totalHorsVracWeightField { - property:"totalHorsVracWeight"; - model:{model.getTotalHorsVracWeight()}; - useFloat:false; - numberPattern:{INT_6_DIGITS_PATTERN}; + property: "totalHorsVracWeight"; + model: {model.getTotalHorsVracWeight()}; + useFloat: false; + numberPattern: {INT_6_DIGITS_PATTERN}; } #table { - selectionMode:{ListSelectionModel.SINGLE_SELECTION}; - selectionBackground:{null}; - selectionForeground:{Color.BLACK}; - sortable:false; + selectionMode: {ListSelectionModel.SINGLE_SELECTION}; + selectionBackground: {null}; + selectionForeground: {Color.BLACK}; + sortable: false; } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/species/SpeciesTabUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/species/SpeciesTabUI.jaxx 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/species/SpeciesTabUI.jaxx 2012-12-10 02:45:40 UTC (rev 37) @@ -25,10 +25,10 @@ implements='fr.ifremer.tutti.ui.swing.TuttiUI<SpeciesTabUIModel, SpeciesTabUIHandler>'> <import> - fr.ifremer.tutti.persistence.entities.data.Trait + fr.ifremer.tutti.persistence.entities.data.FishingOperation fr.ifremer.tutti.ui.swing.TuttiUIContext - fr.ifremer.tutti.ui.swing.content.catches.CatchesUI + fr.ifremer.tutti.ui.swing.content.catches.FishingOperationsUI fr.ifremer.tutti.ui.swing.content.catches.species.frequency.SpeciesFrequencyUI org.jdesktop.swingx.JXTable @@ -47,22 +47,22 @@ <script><![CDATA[ -public SpeciesTabUI(CatchesUI parentUI) { +public SpeciesTabUI(FishingOperationsUI parentUI) { SpeciesTabUIHandler handler = new SpeciesTabUIHandler(parentUI, this); setContextValue(handler); handler.beforeInitUI(); } -public void selectTrait(Trait trait) { handler.selectTrait(trait); } +public void selectFishingOperation(FishingOperation fishingOperation) { handler.selectFishingOperation(fishingOperation); } protected void $afterCompleteSetup() { handler.afterInitUI(); } ]]></script> <SpeciesTabUIHandler id='handler' - initializer='getContextValue(SpeciesTabUIHandler.class)'/> + initializer='getContextValue(SpeciesTabUIHandler.class)'/> <SpeciesTabUIModel id='model' - initializer='getContextValue(SpeciesTabUIModel.class)'/> + initializer='getContextValue(SpeciesTabUIModel.class)'/> <SwingValidatorMessageTableModel id='errorTableModel'/> Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/species/SpeciesTabUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/species/SpeciesTabUIHandler.java 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/species/SpeciesTabUIHandler.java 2012-12-10 02:45:40 UTC (rev 37) @@ -26,9 +26,9 @@ import com.google.common.collect.Lists; import fr.ifremer.tutti.persistence.entities.TuttiEntities; +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency; -import fr.ifremer.tutti.persistence.entities.data.Trait; import fr.ifremer.tutti.persistence.entities.data.VracHorsVracEnum; import fr.ifremer.tutti.persistence.entities.referential.Sex; import fr.ifremer.tutti.persistence.entities.referential.Species; @@ -36,7 +36,7 @@ import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.ui.swing.TuttiUI; -import fr.ifremer.tutti.ui.swing.content.catches.CatchesUI; +import fr.ifremer.tutti.ui.swing.content.catches.FishingOperationsUI; import fr.ifremer.tutti.ui.swing.content.catches.species.frequency.SpeciesFrequencyRowModel; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIHandler; @@ -64,13 +64,13 @@ private final SpeciesTabUI ui; - private final CatchesUI parentUi; + private final FishingOperationsUI parentUi; private final PersistenceService persistenceService; private final BeanMonitor traitMonitor; - public SpeciesTabUIHandler(CatchesUI parentUi, SpeciesTabUI ui) { + public SpeciesTabUIHandler(FishingOperationsUI parentUi, SpeciesTabUI ui) { super(parentUi.getHandler().getContext(), SpeciesBatchRowModel.PROPERTY_SPECIES, SpeciesBatchRowModel.PROPERTY_SPECIES_TO_CONFIRM, @@ -81,7 +81,7 @@ SpeciesBatchRowModel.PROPERTY_AGE, SpeciesBatchRowModel.PROPERTY_WEIGHT, SpeciesBatchRowModel.PROPERTY_SAMPLE_WEIGHT, - SpeciesBatchRowModel.PROPERTY_ELEVATION_RATIO, + SpeciesBatchRowModel.PROPERTY_SAMPLING_RATIO, SpeciesBatchRowModel.PROPERTY_COMMENT, SpeciesBatchRowModel.PROPERTY_FREQUENCY); this.ui = ui; @@ -160,10 +160,10 @@ protected void saveRow(SpeciesBatchRowModel row) { SpeciesBatch catchBean = row.toBean(); - Trait trait = getModel().getTrait(); - catchBean.setTrait(trait); + FishingOperation fishingOperation = getModel().getTrait(); + catchBean.setFishingOperation(fishingOperation); if (log.isInfoEnabled()) { - log.info("Selected trait: " + trait.getId()); + log.info("Selected fishingOperation: " + fishingOperation.getId()); } if (TuttiEntities.isNew(catchBean)) { @@ -191,7 +191,7 @@ row.setFrequency(frequencyRows); } - public void selectTrait(Trait bean) { + public void selectFishingOperation(FishingOperation bean) { JXTable table = ui.getTable(); @@ -203,18 +203,18 @@ if (traitMonitor.wasModified()) { - // previous trait was modified, let's save it + // previous fishingOperation was modified, let's save it SpeciesTabUIModel traitMonitorBean = (SpeciesTabUIModel) traitMonitor.getBean(); - Trait trait = traitMonitorBean.toBean(); + FishingOperation fishingOperation = traitMonitorBean.toBean(); if (log.isInfoEnabled()) { - log.info("Trait " + trait.getId() + + log.info("FishingOperation " + fishingOperation.getId() + " was modified, will save it."); } - persistenceService.saveTrait(trait); + persistenceService.saveFishingOperation(fishingOperation); } // make sure selection is empty (will remove bean from monitor) @@ -228,12 +228,12 @@ if (empty) { rows = null; - bean = new Trait(); + bean = new FishingOperation(); model.setTrait(null); } else { if (log.isInfoEnabled()) { - log.info("Get species batch for trait: " + bean.getId()); + log.info("Get species batch for fishingOperation: " + bean.getId()); } rows = Lists.newArrayList(); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/species/SpeciesTabUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/species/SpeciesTabUIModel.java 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/species/SpeciesTabUIModel.java 2012-12-10 02:45:40 UTC (rev 37) @@ -24,7 +24,7 @@ * #L% */ -import fr.ifremer.tutti.persistence.entities.data.Trait; +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIModel; import org.nuiton.util.beans.Binder; import org.nuiton.util.beans.BinderModelBuilder; @@ -33,7 +33,7 @@ * @author tchemit <chemit@codelutin.com> * @since 0.1 */ -public class SpeciesTabUIModel extends AbstractTuttiTableUIModel<Trait, SpeciesBatchRowModel, SpeciesTabUIModel> { +public class SpeciesTabUIModel extends AbstractTuttiTableUIModel<FishingOperation, SpeciesBatchRowModel, SpeciesTabUIModel> { private static final long serialVersionUID = 1L; @@ -45,7 +45,7 @@ public static final String PROPERTY_TOTAL_HORS_VRAC_WEIGHT = "totalHorsVracWeight"; - protected Trait trait; + protected FishingOperation trait; protected Float totalWeight; @@ -55,7 +55,7 @@ protected Float totalHorsVracWeight; - protected static final Binder<Trait, SpeciesTabUIModel> fromBeanBinder = BinderModelBuilder.newEmptyBuilder(Trait.class, SpeciesTabUIModel.class) + protected static final Binder<FishingOperation, SpeciesTabUIModel> fromBeanBinder = BinderModelBuilder.newEmptyBuilder(FishingOperation.class, SpeciesTabUIModel.class) .addProperty("speciesTotalWeight", PROPERTY_TOTAL_WEIGHT) .addProperty("speciesTotalHorsVracWeight", PROPERTY_TOTAL_HORS_VRAC_WEIGHT) .addProperty("speciesTotalVracWeight", PROPERTY_TOTAL_VRAC_WEIGHT) @@ -63,7 +63,7 @@ .addProperty("id", PROPERTY_ID) .toBinder(); - protected static final Binder<SpeciesTabUIModel, Trait> toBeanBinder = BinderModelBuilder.newEmptyBuilder(SpeciesTabUIModel.class, Trait.class) + protected static final Binder<SpeciesTabUIModel, FishingOperation> toBeanBinder = BinderModelBuilder.newEmptyBuilder(SpeciesTabUIModel.class, FishingOperation.class) .addProperty(PROPERTY_TOTAL_WEIGHT, "speciesTotalWeight") .addProperty(PROPERTY_TOTAL_HORS_VRAC_WEIGHT, "speciesTotalHorsVracWeight") .addProperty(PROPERTY_TOTAL_VRAC_WEIGHT, "speciesTotalVracWeight") @@ -71,14 +71,14 @@ .toBinder(); public SpeciesTabUIModel() { - super(Trait.class, fromBeanBinder, toBeanBinder); + super(FishingOperation.class, fromBeanBinder, toBeanBinder); } - public Trait getTrait() { + public FishingOperation getTrait() { return trait; } - public void setTrait(Trait trait) { + public void setTrait(FishingOperation trait) { this.trait = trait; } @@ -123,7 +123,7 @@ } @Override - protected Trait newEntity() { + protected FishingOperation newEntity() { return trait; } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/species/frequency/SpeciesFrequencyUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/species/frequency/SpeciesFrequencyUI.css 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/catches/species/frequency/SpeciesFrequencyUI.css 2012-12-10 02:45:40 UTC (rev 37) @@ -82,7 +82,7 @@ } #generateButton { - actionIcon: "generate-lengthSteps"; + actionIcon: "generate"; text: "tutti.action.generate"; enabled: {model.isCanGenerate()}; } Deleted: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/campaign/EditCampaignUIModel-error-validation.xml =================================================================== --- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/campaign/EditCampaignUIModel-error-validation.xml 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/campaign/EditCampaignUIModel-error-validation.xml 2012-12-10 02:45:40 UTC (rev 37) @@ -1,84 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - #%L - Tutti :: UI - $Id$ - $HeadURL$ - %% - Copyright (C) 2012 Ifremer - %% - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as - published by the Free Software Foundation, either version 3 of the - License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public - License along with this program. If not, see - <http://www.gnu.org/licenses/gpl-3.0.html>. - #L% - --> -<!DOCTYPE validators PUBLIC - "-//Apache Struts//XWork Validator 1.0.3//EN" - "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> -<validators> - - <field name="name"> - <field-validator type="requiredstring" short-circuit="true"> - <message>tutti.validator.error.campaign.name.required</message> - </field-validator> - </field> - - <field name="survey"> - <field-validator type="required" short-circuit="true"> - <message>tutti.validator.error.campaign.survey.required</message> - </field-validator> - </field> - - <field name="country"> - <field-validator type="required" short-circuit="true"> - <message>tutti.validator.error.campaign.country.required</message> - </field-validator> - </field> - - <field name="vessel"> - <field-validator type="fieldexpression" short-circuit="true"> - <param name="expression"> - <![CDATA[ vessel != null && !vessel.empty ]]> - </param> - <message>tutti.validator.error.campaign.vessel.required</message> - </field-validator> - </field> - - <field name="gear"> - <field-validator type="fieldexpression" short-circuit="true"> - <param name="expression"> - <![CDATA[ gear != null && !gear.empty ]]> - </param> - <message>tutti.validator.error.campaign.gear.required</message> - </field-validator> - </field> - - <field name="headOfMission"> - <field-validator type="fieldexpression" short-circuit="true"> - <param name="expression"> - <![CDATA[ headOfMission != null && !headOfMission.empty ]]> - </param> - <message>tutti.validator.error.campaign.headOfMission.required</message> - </field-validator> - </field> - - <field name="headOfSortRoom"> - <field-validator type="fieldexpression" short-circuit="true"> - <param name="expression"> - <![CDATA[ headOfSortRoom != null && !headOfSortRoom.empty ]]> - </param> - <message>tutti.validator.error.campaign.headOfSortRoom.required</message> - </field-validator> - </field> - -</validators> Copied: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/campaign/EditProgramUIModel-error-validation.xml (from rev 36, trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/campaign/EditSurveyUIModel-error-validation.xml) =================================================================== --- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/campaign/EditProgramUIModel-error-validation.xml (rev 0) +++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/campaign/EditProgramUIModel-error-validation.xml 2012-12-10 02:45:40 UTC (rev 37) @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + #%L + Tutti :: UI + $Id$ + $HeadURL$ + %% + Copyright (C) 2012 Ifremer + %% + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public + License along with this program. If not, see + <http://www.gnu.org/licenses/gpl-3.0.html>. + #L% + --> +<!DOCTYPE validators PUBLIC + "-//Apache Struts//XWork Validator 1.0.3//EN" + "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> +<validators> + + <field name="name"> + + <field-validator type="requiredstring" short-circuit="true"> + <message>tutti.validator.error.program.name.required</message> + </field-validator> + + </field> + + <field name="zone"> + + <field-validator type="required" short-circuit="true"> + <message>tutti.validator.error.program.zone.required</message> + </field-validator> + + </field> +</validators> Property changes on: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/campaign/EditProgramUIModel-error-validation.xml ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Copied: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/campaign/EditScientificCruiseUIModel-error-validation.xml (from rev 36, trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/campaign/EditCampaignUIModel-error-validation.xml) =================================================================== --- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/campaign/EditScientificCruiseUIModel-error-validation.xml (rev 0) +++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/campaign/EditScientificCruiseUIModel-error-validation.xml 2012-12-10 02:45:40 UTC (rev 37) @@ -0,0 +1,109 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + #%L + Tutti :: UI + $Id$ + $HeadURL$ + %% + Copyright (C) 2012 Ifremer + %% + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public + License along with this program. If not, see + <http://www.gnu.org/licenses/gpl-3.0.html>. + #L% + --> +<!DOCTYPE validators PUBLIC + "-//Apache Struts//XWork Validator 1.0.3//EN" + "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> +<validators> + + <field name="name"> + <field-validator type="requiredstring" short-circuit="true"> + <message>tutti.validator.error.scientificCruise.name.required</message> + </field-validator> + </field> + + <field name="program"> + <field-validator type="required" short-circuit="true"> + <message>tutti.validator.error.scientificCruise.program.required</message> + </field-validator> + </field> + + <field name="year"> + <field-validator type="required" short-circuit="true"> + <message>tutti.validator.error.scientificCruise.year.required</message> + </field-validator> + </field> + + <field name="poche"> + <field-validator type="required" short-circuit="true"> + <message>tutti.validator.error.scientificCruise.poche.required</message> + </field-validator> + </field> + + <field name="beginDate"> + <field-validator type="required" short-circuit="true"> + <message>tutti.validator.error.scientificCruise.beginDate.required</message> + </field-validator> + </field> + + <field name="endDate"> + <field-validator type="required" short-circuit="true"> + <message>tutti.validator.error.scientificCruise.endDate.required</message> + </field-validator> + </field> + + + <field name="country"> + <field-validator type="required" short-circuit="true"> + <message>tutti.validator.error.scientificCruise.country.required</message> + </field-validator> + </field> + + <field name="vessel"> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"> + <![CDATA[ vessel != null && !vessel.empty ]]> + </param> + <message>tutti.validator.error.scientificCruise.vessel.required</message> + </field-validator> + </field> + + <field name="gear"> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"> + <![CDATA[ gear != null && !gear.empty ]]> + </param> + <message>tutti.validator.error.scientificCruise.gear.required</message> + </field-validator> + </field> + + <field name="headOfMission"> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"> + <![CDATA[ headOfMission != null && !headOfMission.empty ]]> + </param> + <message>tutti.validator.error.scientificCruise.headOfMission.required</message> + </field-validator> + </field> + + <field name="headOfSortRoom"> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"> + <![CDATA[ headOfSortRoom != null && !headOfSortRoom.empty ]]> + </param> + <message>tutti.validator.error.scientificCruise.headOfSortRoom.required</message> + </field-validator> + </field> + +</validators> Property changes on: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/campaign/EditScientificCruiseUIModel-error-validation.xml ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Deleted: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/campaign/EditSurveyUIModel-error-validation.xml =================================================================== --- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/campaign/EditSurveyUIModel-error-validation.xml 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/campaign/EditSurveyUIModel-error-validation.xml 2012-12-10 02:45:40 UTC (rev 37) @@ -1,45 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - #%L - Tutti :: UI - $Id$ - $HeadURL$ - %% - Copyright (C) 2012 Ifremer - %% - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as - published by the Free Software Foundation, either version 3 of the - License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public - License along with this program. If not, see - <http://www.gnu.org/licenses/gpl-3.0.html>. - #L% - --> -<!DOCTYPE validators PUBLIC - "-//Apache Struts//XWork Validator 1.0.3//EN" - "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> -<validators> - - <field name="name"> - - <field-validator type="requiredstring" short-circuit="true"> - <message>tutti.validator.error.survey.name.required</message> - </field-validator> - - </field> - - <field name="zone"> - - <field-validator type="required" short-circuit="true"> - <message>tutti.validator.error.survey.zone.required</message> - </field-validator> - - </field> -</validators> Copied: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/catches/FishingOperationTabUIModel-error-validation.xml (from rev 36, trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/catches/TraitTabUIModel-error-validation.xml) =================================================================== --- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/catches/FishingOperationTabUIModel-error-validation.xml (rev 0) +++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/catches/FishingOperationTabUIModel-error-validation.xml 2012-12-10 02:45:40 UTC (rev 37) @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + #%L + Tutti :: UI + $Id$ + $HeadURL$ + %% + Copyright (C) 2012 Ifremer + %% + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public + License along with this program. If not, see + <http://www.gnu.org/licenses/gpl-3.0.html>. + #L% + --> +<!DOCTYPE validators PUBLIC + "-//Apache Struts//XWork Validator 1.0.3//EN" + "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> +<validators> + + <field name="stationNumber"> + + <field-validator type="required" short-circuit="true"> + <message>tutti.validator.error.fishingOperation.stationNumber.required</message> + </field-validator> + + </field> + + <field name="date"> + + <field-validator type="required" short-circuit="true"> + <message>tutti.validator.error.fishingOperation.date.required</message> + </field-validator> + + </field> +</validators> Property changes on: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/catches/FishingOperationTabUIModel-error-validation.xml ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Deleted: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/catches/TraitTabUIModel-error-validation.xml =================================================================== --- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/catches/TraitTabUIModel-error-validation.xml 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/catches/TraitTabUIModel-error-validation.xml 2012-12-10 02:45:40 UTC (rev 37) @@ -1,45 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - #%L - Tutti :: UI - $Id$ - $HeadURL$ - %% - Copyright (C) 2012 Ifremer - %% - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as - published by the Free Software Foundation, either version 3 of the - License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public - License along with this program. If not, see - <http://www.gnu.org/licenses/gpl-3.0.html>. - #L% - --> -<!DOCTYPE validators PUBLIC - "-//Apache Struts//XWork Validator 1.0.3//EN" - "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> -<validators> - - <field name="stationNumber"> - - <field-validator type="required" short-circuit="true"> - <message>tutti.validator.error.trait.stationNumber.required</message> - </field-validator> - - </field> - - <field name="date"> - - <field-validator type="required" short-circuit="true"> - <message>tutti.validator.error.trait.date.required</message> - </field-validator> - - </field> -</validators> Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties =================================================================== --- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2012-12-08 11:10:51 UTC (rev 36) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2012-12-10 02:45:40 UTC (rev 37) @@ -14,6 +14,7 @@ tutti.action.fillCatches=Captures tutti.action.fillCatches.tip=Saisir des captures tutti.action.generate=Générer +tutti.action.generateCampaignName=Générer le nom tutti.action.manageProtocol=Protocole tutti.action.manageProtocol.tip=Gérer les protocoles tutti.action.new=Nouveau @@ -28,27 +29,54 @@ tutti.action.site.tip=Accéder au site du projet Tutti tutti.application.config=Configuration de l'application Tutti tutti.application.name=Tutti -tutti.config.campaignId=Identifiant de la dernière campagne utilisée tutti.config.category.applications=Application tutti.config.category.applications.description=Application tutti.config.category.other=Autres tutti.config.category.other.description=Autres options tutti.config.category.shortcuts=Raccourcis tutti.config.category.shortcuts.description=Liste des raccourcis clavier -tutti.config.surveyId=Identifiant de la dernière série de campagne utilisée +tutti.config.programId=Identifiant de la dernière série de campagne utilisée +tutti.config.scientificCruiseId=Identifiant de la dernière campagne utilisée tutti.config.ui.autoPopupNumberEditor=Toujours afficher le pavé numérique lors de l'édition d'un nombre tutti.config.ui.config=Chemin du fichier de configuration des interfaces graphiques tutti.config.ui.showNumberEditorButton=Afficher le pavé numérique de saisie tutti.label.benthos.sampleTotalWeight=Poids total échantillonné tutti.label.benthos.totalWeight=Poids total -tutti.label.campaign=Campagne -tutti.label.campaign.country=Pays -tutti.label.campaign.name=Nom -tutti.label.campaign.survey=Série -tutti.label.campaign.surveyPart=Série partielle tutti.label.captureAccidentel.sampleTotalWeight=Poids total échantillonné tutti.label.captureAccidentel.totalWeight=Poids total tutti.label.comment=Commentaire +tutti.label.fishingOperation.averageBottomSalinity=Salinité de fond moyenne +tutti.label.fishingOperation.averageBottomTemperature=Température de fond moyenne +tutti.label.fishingOperation.beaufortScale=Force du vent +tutti.label.fishingOperation.date=Date +tutti.label.fishingOperation.distanceChaluteeDuree=Distance chalutée / Durée +tutti.label.fishingOperation.gearShootingEndBottomSalinity=Salinité de fond fin de traine +tutti.label.fishingOperation.gearShootingEndBottomTemperature=Température de fond fin de traine +tutti.label.fishingOperation.gearShootingEndDepth=Profondeur fin de traine +tutti.label.fishingOperation.gearShootingEndLatitude=Latitude fin de traine +tutti.label.fishingOperation.gearShootingEndLongitude=Longitude fin de traine +tutti.label.fishingOperation.gearShootingEndSurfaceSalinity=Salinité de surface fin de traine +tutti.label.fishingOperation.gearShootingEndSurfaceTemperature=Temperature de surface fin de traine +tutti.label.fishingOperation.gearShootingEndTime=Fin de traine +tutti.label.fishingOperation.gearShootingStartBottomSalinity=Salinité de fond début de traine +tutti.label.fishingOperation.gearShootingStartBottomTemperature=Température de fond début de traine +tutti.label.fishingOperation.gearShootingStartDepth=Profondeur début de traine +tutti.label.fishingOperation.gearShootingStartLatitude=Latitude début de traine +tutti.label.fishingOperation.gearShootingStartLongitude=Longitude début de traine +tutti.label.fishingOperation.gearShootingStartSurfaceSalinity=Salinité de surface début de traine +tutti.label.fishingOperation.gearShootingStartSurfaceTemperature=Temperature de surface début de traine +tutti.label.fishingOperation.gearShootingStartTime=Début de traine +tutti.label.fishingOperation.geometrieMesuree=Géométrie mesurée +tutti.label.fishingOperation.localite=Localité +tutti.label.fishingOperation.longueurFunesBras=Longueur des funes / bras +tutti.label.fishingOperation.ouvertureHorizontaleVerticale=Ouverture horizontale / verticale +tutti.label.fishingOperation.seaState=Etat de la mer +tutti.label.fishingOperation.stationNumberTraitNumber=Numéro de la station / Trait +tutti.label.fishingOperation.strata=Strate d'association +tutti.label.fishingOperation.systemeFermetureCul=Système de fermeture de cul +tutti.label.fishingOperation.traitRectiligne=Trait rectiligne +tutti.label.fishingOperation.traitValid=Trait valide +tutti.label.fishingOperation.windDirection=Direction du vent tutti.label.frequencyConfiguration.maxStep=Classe max tutti.label.frequencyConfiguration.minStep=Classe min tutti.label.frequencyConfiguration.mode=Mode de saisie @@ -68,58 +96,35 @@ tutti.label.list.vessel=Navire(s) tutti.label.macroDechet.sampleTotalWeight=Poids total échantillonné tutti.label.macroDechet.totalWeight=Poids total -tutti.label.no.trait.selected=< Aucun trait sélectionné > +tutti.label.no.fishingOperation.selected=< Aucun trait sélectionné > tutti.label.plancton.sampleTotalWeight=Poids total échantillonné tutti.label.plancton.totalWeight=Poids total +tutti.label.program=Série de campagne +tutti.label.program.name=Nom +tutti.label.program.zone=Zone +tutti.label.scientificCruise=Campagne +tutti.label.scientificCruise.beginDate=Date de début +tutti.label.scientificCruise.country=Pays +tutti.label.scientificCruise.endDate=Date de fin +tutti.label.scientificCruise.name=Nom +tutti.label.scientificCruise.poche=Nombre de poches +tutti.label.scientificCruise.program=Série +tutti.label.scientificCruise.surveyPart=Série partielle +tutti.label.scientificCruise.year=Année tutti.label.species.sampleVracWeight=Poids total vrac échant. tutti.label.species.totalHorsVracWeight=Poids total hors vrac tutti.label.species.totalVracWeight=Poids total vrac tutti.label.species.totalWeight=Poids total -tutti.label.survey=Série de campagne -tutti.label.survey.name=Nom -tutti.label.survey.zone=Zone tutti.label.tab.accidentel=Captures accidentelles tutti.label.tab.benthos=Benthos +tutti.label.tab.fishingOperation=Trait +tutti.label.tab.fishingOperation.gearShooting=Données de traine +tutti.label.tab.fishingOperation.general=Caractéristiques générales +tutti.label.tab.fishingOperation.hydrology=Paramètres hydrologiques tutti.label.tab.macroDechet=Macro déchets tutti.label.tab.observationIndividuel=Observations individuelles tutti.label.tab.plancton=Plancton tutti.label.tab.species=Espèces -tutti.label.tab.trait=Trait -tutti.label.tab.trait.gearShooting=Données de traine -tutti.label.tab.trait.general=Caractéristiques générales -tutti.label.tab.trait.hydrology=Paramètres hydrologiques -tutti.label.trait.averageBottomSalinity=Salinité de fond moyenne -tutti.label.trait.averageBottomTemperature=Température de fond moyenne -tutti.label.trait.beaufortScale=Force du vent -tutti.label.trait.date=Date -tutti.label.trait.distanceChaluteeDuree=Distance chalutée / Durée -tutti.label.trait.gearShootingEndBottomSalinity=Salinité de fond fin de traine -tutti.label.trait.gearShootingEndBottomTemperature=Température de fond fin de traine -tutti.label.trait.gearShootingEndDepth=Profondeur fin de traine -tutti.label.trait.gearShootingEndLatitude=Latitude fin de traine -tutti.label.trait.gearShootingEndLongitude=Longitude fin de traine -tutti.label.trait.gearShootingEndSurfaceSalinity=Salinité de surface fin de traine -tutti.label.trait.gearShootingEndSurfaceTemperature=Temperature de surface fin de traine -tutti.label.trait.gearShootingEndTime=Fin de traine -tutti.label.trait.gearShootingStartBottomSalinity=Salinité de fond début de traine -tutti.label.trait.gearShootingStartBottomTemperature=Température de fond début de traine -tutti.label.trait.gearShootingStartDepth=Profondeur début de traine -tutti.label.trait.gearShootingStartLatitude=Latitude début de traine -tutti.label.trait.gearShootingStartLongitude=Longitude début de traine -tutti.label.trait.gearShootingStartSurfaceSalinity=Salinité de surface début de traine -tutti.label.trait.gearShootingStartSurfaceTemperature=Temperature de surface début de traine -tutti.label.trait.gearShootingStartTime=Début de traine -tutti.label.trait.geometrieMesuree=Géométrie mesurée -tutti.label.trait.localite=Localité -tutti.label.trait.longueurFunesBras=Longueur des funes / bras -tutti.label.trait.ouvertureHorizontaleVerticale=Ouverture horizontale / verticale -tutti.label.trait.seaState=Etat de la mer -tutti.label.trait.stationNumberTraitNumber=Numéro de la station / Trait -tutti.label.trait.strata=Strate d'association -tutti.label.trait.systemeFermetureCul=Système de fermeture de cul -tutti.label.trait.traitRectiligne=Trait rectiligne -tutti.label.trait.traitValid=Trait valide -tutti.label.trait.windDirection=Direction du vent tutti.legend.frequencyConfiguration=Configuration tutti.menu.actions=Actions tutti.menu.actions.tip=Actions @@ -167,26 +172,30 @@ tutti.table.species.frequency.header.number=Nombre tutti.table.species.frequency.header.weight=Poids observé tutti.title.about=À propos de Tutti -tutti.title.create.campaign=Créer une nouvelle campagne -tutti.title.create.survey=Créer une nouvelle série de campagne -tutti.title.edit.campaign=Editer une campagne existante -tutti.title.edit.survey=Editer une série de campagne existante +tutti.title.create.program=Créer une nouvelle série de campagne +tutti.title.create.scientificCruise=Créer une nouvelle campagne +tutti.title.edit.program=Editer une série de campagne existante +tutti.title.edit.scientificCruise=Editer une campagne existante tutti.title.fill.catches=Saisie des captures tutti.title.frequency=Saisie des mensurations tutti.title.home=Sélection de la campagne -tutti.title.noSelectedCampaign=Pas de campagne sélectionné -tutti.title.noSelectedSurvey=Pas de série de campagne sélectionné -tutti.title.selectedCampaign=Campagne %s -tutti.title.selectedSurvey=Série de campagne %s +tutti.title.noSelectedProgram=Pas de série de campagne sélectionné +tutti.title.noSelectedScientificCruise=Pas de campagne sélectionné +tutti.title.selectedProgram=Série de campagne %s +tutti.title.selectedScientificCruise=Campagne %s tutti.to.be.done=< A FAIRE > -tutti.validator.error.campaign.country.required=Le pays est obligatoire -tutti.validator.error.campaign.gear.required=Au moins un engin doit être sélectionné -tutti.validator.error.campaign.headOfMission.required=Au moins un chef de mission doit être sélectionné -tutti.validator.error.campaign.headOfSortRoom.required=Au moins un responsable de salle de tri doit être sélectionné -tutti.validator.error.campaign.name.required=Le nom de la campagne est obligatoire -tutti.validator.error.campaign.survey.required=La série est obligatoire -tutti.validator.error.campaign.vessel.required=Au moins un bateau doit être sélectionné -tutti.validator.error.survey.name.required=Le nom de la série est obligatoire -tutti.validator.error.survey.zone.required=La zone de la série est obligatoire -tutti.validator.error.trait.date.required=La date du trait est obligatoire -tutti.validator.error.trait.stationNumber.required=Le numéro de station est obligatoire +tutti.validator.error.fishingOperation.date.required=La date du fishingOperation est obligatoire +tutti.validator.error.fishingOperation.stationNumber.required=Le numéro de station 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.scientificCruise.beginDate.required=La date de début est obligatoire +tutti.validator.error.scientificCruise.country.required=Le pays est obligatoire +tutti.validator.error.scientificCruise.endDate.required=La date de fin est obligatoire +tutti.validator.error.scientificCruise.gear.required=Au moins un engin doit être sélectionné +tutti.validator.error.scientificCruise.headOfMission.required=Au moins un chef de mission doit être sélectionné +tutti.validator.error.scientificCruise.headOfSortRoom.required=Au moins un responsable de salle de tri doit être sélectionné +tutti.validator.error.scientificCruise.name.required=Le nom de la campagne est obligatoire +tutti.validator.error.scientificCruise.poche.required=Le nombre de poche est obligatoire +tutti.validator.error.scientificCruise.program.required=La série est obligatoire +tutti.validator.error.scientificCruise.vessel.required=Au moins un bateau doit être sélectionné +tutti.validator.error.scientificCruise.year.required=L'année est obligatoire Deleted: trunk/tutti-ui-swing/src/main/resources/icons/action-generate-lengthSteps.png =================================================================== (Binary files differ) Copied: trunk/tutti-ui-swing/src/main/resources/icons/action-generate.png (from rev 36, trunk/tutti-ui-swing/src/main/resources/icons/action-generate-lengthSteps.png) =================================================================== (Binary files differ) Property changes on: trunk/tutti-ui-swing/src/main/resources/icons/action-generate.png ___________________________________________________________________ Added: svn:mime-type + image/png Added: svn:keywords + Author Date Id Revision HeadURL
participants (1)
-
tchemit@users.forge.codelutin.com