r1251 - in trunk: . tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util
Author: tchemit Date: 2013-09-30 18:23:08 +0200 (Mon, 30 Sep 2013) New Revision: 1251 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1251 Log: fixes #3359: [TECH] Updates jaxx to 2.5.27 fixes #3392: [TECH] Updates nuiton-decorator to 3.0-alpha-2 fixes #3400: [TECH] Updates eugene to 2.7.2 refs #3333: [CAMPAGNE] pouvoir ajouter plusieur engins professionnels de m?\195?\170me type ?\195?\160 une campagne Added: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Gears.java Modified: trunk/pom.xml trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2013-09-30 12:34:52 UTC (rev 1250) +++ trunk/pom.xml 2013-09-30 16:23:08 UTC (rev 1251) @@ -123,15 +123,15 @@ <nuitonI18nVersion>2.5.2</nuitonI18nVersion> <nuitonConfigVersion>3.0-alpha-1</nuitonConfigVersion> <nuitonCsvVersion>3.0-alpha-1</nuitonCsvVersion> - <nuitonDecoratorVersion>3.0-SNAPSHOT</nuitonDecoratorVersion> + <nuitonDecoratorVersion>3.0-alpha-2</nuitonDecoratorVersion> <nuitonUpdaterVersion>3.0-alpha-1</nuitonUpdaterVersion> <nuitonUtilsVersion>2.7.1</nuitonUtilsVersion> <nuitonValidatorVersion>3.0-alpha-1</nuitonValidatorVersion> - <eugenePluginVersion>2.7.2-SNAPSHOT</eugenePluginVersion> + <eugenePluginVersion>2.7.2</eugenePluginVersion> <hibernateVersion>3.6.10.Final</hibernateVersion> - <jaxxVersion>2.5.27-SNAPSHOT</jaxxVersion> + <jaxxVersion>2.5.27</jaxxVersion> <swingXVersion>1.6.4</swingXVersion> <xworkVersion>2.3.15.1</xworkVersion> Added: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Gears.java =================================================================== --- trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Gears.java (rev 0) +++ trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Gears.java 2013-09-30 16:23:08 UTC (rev 1251) @@ -0,0 +1,65 @@ +package fr.ifremer.tutti.persistence.entities.referential; + +/* + * #%L + * Tutti :: Persistence + * $Id$ + * $HeadURL:$ + * %% + * Copyright (C) 2012 - 2013 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import org.apache.commons.lang3.ObjectUtils; +import org.nuiton.util.beans.Binder; +import org.nuiton.util.beans.BinderFactory; + +import javax.annotation.Generated; + +@Generated(value = "org.nuiton.eugene.java.SimpleJavaBeanTransformer", date = "Mon Sep 30 14:14:53 CEST 2013") +public class Gears extends AbstractGears { + + public static boolean equals(Gear g0, Gear g1) { + return ObjectUtils.equals(g0.getId(), g1.getId()) && ObjectUtils.equals(g0.getRankOrder(), g1.getRankOrder()); + } + + public static Gear newGearWithRankOrder(Gear gear) { + Binder<Gear, Gear> binder = BinderFactory.newBinder(Gear.class); + GearBean2 result = new GearBean2(); + binder.copy(gear, result); + return result; + } + + + public static class GearBean2 extends GearBean { + + @Override + public boolean equals(Object o) { + boolean result = super.equals(o); + if (result) { + result = ObjectUtils.equals(rankOrder, ((GearBean2) o).rankOrder); + } + return result; + } + + @Override + public int hashCode() { + return super.hashCode() + 13 * (rankOrder == null ? 0 : rankOrder.hashCode()); + } + + } +} //Gears Property changes on: trunk/tutti-persistence/src/main/java/fr/ifremer/tutti/persistence/entities/referential/Gears.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java 2013-09-30 12:34:52 UTC (rev 1250) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java 2013-09-30 16:23:08 UTC (rev 1251) @@ -31,6 +31,7 @@ import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.persistence.entities.referential.Gear; +import fr.ifremer.tutti.persistence.entities.referential.Gears; import fr.ifremer.tutti.persistence.entities.referential.Person; import fr.ifremer.tutti.persistence.entities.referential.Vessel; import fr.ifremer.tutti.service.DecoratorService; @@ -38,14 +39,18 @@ import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler; import fr.ifremer.tutti.ui.swing.util.CloseableUI; import fr.ifremer.tutti.ui.swing.util.TuttiUI; +import jaxx.runtime.swing.editor.bean.BeanDoubleListModel; +import jaxx.runtime.swing.renderer.DecoratorListCellRenderer; import jaxx.runtime.validator.swing.SwingValidator; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.nuiton.decorator.Decorator; import javax.swing.JComponent; import javax.swing.JList; import javax.swing.JPopupMenu; import javax.swing.JSeparator; +import javax.swing.ListCellRenderer; import javax.swing.SwingUtilities; import java.awt.Point; import java.awt.Rectangle; @@ -94,7 +99,7 @@ private final PersistenceService persistenceService; /** - * The gear selected popup grab fro the double list. + * The gear selected popup grab from the double list. * * @since 2.6 */ @@ -222,9 +227,96 @@ allVesselList, model.getVessel()); + ui.getGearList().setModel(new BeanDoubleListModel<Gear>() { + + private static final long serialVersionUID = 1L; + + private boolean valueAdjusting; + + @Override + public void moveUpSelected(Gear item) { + super.moveUpSelected(item); + rebuildRankOrder(); + } + + @Override + public void moveDownSelected(Gear item) { + super.moveDownSelected(item); + rebuildRankOrder(); + } + + @Override + public void setSelected(List<Gear> selected) { + valueAdjusting = true; + try { + super.setSelected(selected); + } finally { + valueAdjusting = false; + } + rebuildRankOrder(); + } + + @Override + public void addToSelected(Gear item) { + + Gear target = Gears.newGearWithRankOrder(item); + // rank order = position in list + int rankOrder = getSelectedListSize(); + target.setRankOrder((short) rankOrder); + if (log.isInfoEnabled()) { + log.info("Add to selected " + target.getRankOrder() + " - " + target.getName()); + } + + super.addToSelected(target); + rebuildRankOrder(); + } + + @Override + public void addToSelected(List<Gear> items) { + valueAdjusting = true; + try { + for (Gear item : items) { + addToSelected(item); + } + } finally { + valueAdjusting = false; + } + rebuildRankOrder(); + } + + @Override + public void removeFromSelected(Gear item) { + super.removeFromSelected(item); + rebuildRankOrder(); + } + + @Override + public void removeFromSelected(List<Gear> items) { + valueAdjusting = true; + try { + for (Gear item : items) { + removeFromSelected(item); + } + } finally { + valueAdjusting = false; + } + rebuildRankOrder(); + } + + protected void rebuildRankOrder() { + if (!valueAdjusting) { + int index = 1; + for (Gear gear : getSelected()) { + gear.setRankOrder((short) (index++)); + } + } + selectedModel.refresh(); + } + }); initBeanList(ui.getGearList(), allGearList, - model.getGear()); + model.getGear(), + getDecorator(Gear.class, DecoratorService.GEAR_WITH_RANK_ORDER)); // add more actions on selected gear popup gearPopupMenu = ui.getGearList().getSelectedList().getComponentPopupMenu(); @@ -234,6 +326,19 @@ gearPopupMenu.add(ui.getViewGearCaracteristicsItem(), 0); gearPopupMenu.add(ui.getEditGearCaracteristicsItem(), 0); +// DecoratorService decoratorService = +// context.getDecoratorService(); +// Decorator<Gear> decorator = getDecorator(Gear.class, DecoratorService.GEAR_WITH_RANK_ORDER); +// ListCellRenderer cellRenderer = ui.getGearList().getSelectedList().getCellRenderer(); +// ui.getGearList().getSelectedList().setCellRenderer(new DecoratorListCellRenderer(cellRenderer, decorator) { +// +// @Override +// protected Object decorateValue(Object value, int index) { +// Object result = super.decorateValue(value, index); +// return index + " - " + result; +// } +// }); + initBeanList(ui.getHeadOfMissionList(), users, model.getHeadOfMission()); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java 2013-09-30 12:34:52 UTC (rev 1250) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java 2013-09-30 16:23:08 UTC (rev 1251) @@ -34,6 +34,7 @@ import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.FishingOperations; import fr.ifremer.tutti.persistence.entities.referential.Gear; +import fr.ifremer.tutti.persistence.entities.referential.Gears; import fr.ifremer.tutti.persistence.entities.referential.Person; import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; import fr.ifremer.tutti.service.PersistenceService; @@ -351,10 +352,12 @@ // get the rankorder of the gear from cruise gears Gear gear = fishingOperation == null ? null : fishingOperation.getGear(); if (gear != null) { + Gear newGear = Gears.newGearWithRankOrder(gear); + fishingOperation.setGear(newGear); Cruise cruise = getDataContext().getCruise(); for (Gear cruiseGear : cruise.getGear()) { - if (cruiseGear.equals(gear)) { - gear.setRankOrder(cruiseGear.getRankOrder()); + if (Gears.equals(cruiseGear, newGear)) { + newGear.setRankOrder(cruiseGear.getRankOrder()); break; } } @@ -451,7 +454,12 @@ if (cruise != null) { // update gear universe - ui.getGearComboBox().setData(Lists.newArrayList(cruise.getGear())); + // add a equals on id + rankOrder + List<Gear> gears = Lists.newArrayList(); + for (Gear gear : cruise.getGear()) { + gears.add(Gears.newGearWithRankOrder(gear)); + } + ui.getGearComboBox().setData(gears); } editFishingOperationUIModel.fromBean(bean); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-09-30 12:34:52 UTC (rev 1250) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-09-30 16:23:08 UTC (rev 1251) @@ -31,6 +31,8 @@ import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.Program; +import fr.ifremer.tutti.persistence.entities.referential.Gear; +import fr.ifremer.tutti.persistence.entities.referential.Gears; import fr.ifremer.tutti.persistence.entities.referential.Person; import fr.ifremer.tutti.persistence.entities.referential.TuttiLocation; import fr.ifremer.tutti.persistence.entities.referential.Vessel; @@ -257,8 +259,13 @@ "Could not find cruise in ui context"); ui.getMultirigAggregationField().setEnabled(cruise.getMultirigNumber() != 1); + // add a equals on id + rankOrder + List<Gear> gears = Lists.newArrayList(); + for (Gear gear : cruise.getGear()) { + gears.add(Gears.newGearWithRankOrder(gear)); + } initBeanFilterableComboBox(ui.getGearComboBox(), - Lists.newArrayList(cruise.getGear()), + gears, null, DecoratorService.GEAR_WITH_RANK_ORDER); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java 2013-09-30 12:34:52 UTC (rev 1250) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java 2013-09-30 16:23:08 UTC (rev 1251) @@ -675,7 +675,8 @@ protected <E extends TuttiEntity> void initBeanList( BeanDoubleList<E> list, List<E> data, - List<E> selectedData) { + List<E> selectedData, + Decorator<E> selectedDecorator) { Preconditions.checkNotNull(list, "No list!"); @@ -694,7 +695,10 @@ list.setI18nPrefix("tutti.property."); // add data list to combo box - list.init((JXPathDecorator<E>) decorator, data, selectedData); + list.init((JXPathDecorator<E>) decorator, + (JXPathDecorator<E>) selectedDecorator, + data, + selectedData); if (log.isDebugEnabled()) { log.debug("Jlist [" + beanType.getName() + "] : " + @@ -702,6 +706,22 @@ } } + /** + * Prépare un component de choix d'entités pour un type d'entité donné et + * pour un service de persistance donné. + * + * @param list le component graphique à initialiser + * @param data la liste des données à mettre dans la liste de gauche + * @param selectedData la liste des données à mettre dans la liste de droite + */ + protected <E extends TuttiEntity> void initBeanList( + BeanDoubleList<E> list, + List<E> data, + List<E> selectedData) { + + initBeanList(list, data, selectedData, null); + } + protected void initNumberEditor(NumberEditor editor) { if (log.isDebugEnabled()) { log.debug("init number editor " + editor.getName());
participants (1)
-
tchemit@users.forge.codelutin.com