r276 - in trunk/tutti-ui-swing/src/main: java/fr/ifremer/tutti/ui/swing java/fr/ifremer/tutti/ui/swing/content/cruise java/fr/ifremer/tutti/ui/swing/content/home java/fr/ifremer/tutti/ui/swing/content/operation java/fr/ifremer/tutti/ui/swing/content/operation/catches java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos java/fr/ifremer/tutti/ui/swing/content/operation/catches/macrowaste java/fr/ifremer/tutti/ui/sw
Author: kmorin Date: 2013-01-31 09:47:56 +0100 (Thu, 31 Jan 2013) New Revision: 276 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/276 Log: - change icons - display the alert number in the validator message widget tooltip + change the icon accroding to the alert types - replace popups by cardlayouts - add fileds to the species catch Added: trunk/tutti-ui-swing/src/main/resources/icons/action-alert-error.png trunk/tutti-ui-swing/src/main/resources/icons/action-alert-info.png trunk/tutti-ui-swing/src/main/resources/icons/action-alert-none.png trunk/tutti-ui-swing/src/main/resources/icons/action-alert-warning.png trunk/tutti-ui-swing/src/main/resources/icons/action-protocol.png Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiBeanUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProtocolAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCatchesAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/macrowaste/MacroWasteBatchUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/plankton/PlanktonBatchUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/FrequencyCellComponent.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/AddSpeciesAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/AddSpeciesUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/CaracteristicTabUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesTableModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiTabContainerUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/CustomTab.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/SwingValidatorMessageWidget.java trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiBeanUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiBeanUIModel.java 2013-01-31 08:45:23 UTC (rev 275) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiBeanUIModel.java 2013-01-31 08:47:56 UTC (rev 276) @@ -97,8 +97,12 @@ } public String getTitle() { - return "test title"; + return null; } + + public String getIcon() { + return null; + } public boolean isModify() { return modify; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiUIHandler.java 2013-01-31 08:45:23 UTC (rev 275) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiUIHandler.java 2013-01-31 08:47:56 UTC (rev 276) @@ -100,6 +100,8 @@ public abstract void onCloseUI(); public abstract M getModel(); + + public abstract SwingValidator<M> getValidator(); protected final TuttiUIContext context; @@ -286,6 +288,10 @@ Decorator<E> decorator = getDecorator(beanType, null); + if (data == null) { + data = Lists.newArrayList(); + } + if (log.isInfoEnabled()) { log.info("entity comboBox list [" + beanType.getName() + "] : " + (data == null ? 0 : data.size())); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProtocolAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProtocolAction.java 2013-01-31 08:45:23 UTC (rev 275) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProtocolAction.java 2013-01-31 08:47:56 UTC (rev 276) @@ -48,7 +48,7 @@ public EditSelectedProtocolAction(MainUIHandler handler) { super(handler, "editProtocol", - "edit", + "protocol", _("tutti.action.editSelectedProtocol"), _("tutti.action.editSelectedProtocol.tip"), true Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUIHandler.java 2013-01-31 08:45:23 UTC (rev 275) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUIHandler.java 2013-01-31 08:47:56 UTC (rev 276) @@ -138,6 +138,11 @@ return ui.getModel(); } + @Override + public SwingValidator<TuttiUIContext> getValidator() { + return null; + } + //------------------------------------------------------------------------// //-- Public methods --// //------------------------------------------------------------------------// Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java 2013-01-31 08:45:23 UTC (rev 275) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java 2013-01-31 08:47:56 UTC (rev 276) @@ -269,6 +269,11 @@ return ui.getModel(); } + @Override + public SwingValidator<EditCruiseUIModel> getValidator() { + return ui.getValidator(); + } + public static final String cruiseNameFormat = "%1$s_%2$s"; public void generateCampaignName() { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCatchesAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCatchesAction.java 2013-01-31 08:45:23 UTC (rev 275) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCatchesAction.java 2013-01-31 08:47:56 UTC (rev 276) @@ -30,6 +30,7 @@ import fr.ifremer.tutti.ui.swing.TuttiUIContext; import java.awt.event.ActionEvent; +import org.apache.commons.logging.LogFactory; import static org.nuiton.i18n.I18n._; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css 2013-01-31 08:45:23 UTC (rev 275) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css 2013-01-31 08:47:56 UTC (rev 276) @@ -30,6 +30,7 @@ #programLabel { text: "tutti.label.program"; + actionIcon: program; } #programCombobox { @@ -51,6 +52,7 @@ #cruiseLabel { text: "tutti.label.cruise"; labelFor: {cruiseCombobox}; + actionIcon: cruise; } #cruiseCombobox { @@ -72,6 +74,7 @@ #protocolLabel { text: "tutti.label.protocol"; labelFor: {protocolCombobox}; + actionIcon: protocol; } #protocolCombobox { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java 2013-01-31 08:45:23 UTC (rev 275) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java 2013-01-31 08:47:56 UTC (rev 276) @@ -43,6 +43,7 @@ import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.List; +import jaxx.runtime.validator.swing.SwingValidator; /** * Main ui content to select cruise. @@ -72,6 +73,11 @@ } @Override + public SwingValidator<SelectCruiseUIModel> getValidator() { + return null; + } + + @Override public void beforeInitUI() { SelectCruiseUIModel model = new SelectCruiseUIModel(); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-01-31 08:45:23 UTC (rev 275) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-01-31 08:47:56 UTC (rev 276) @@ -66,6 +66,8 @@ import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.List; +import jaxx.runtime.SwingUtil; +import jaxx.runtime.validator.swing.SwingValidator; /** * Handler for UI {@link EditFishingOperationUI}. @@ -330,10 +332,6 @@ }); } - MainUI main = ui.getContextValue(MainUI.class, MainUI.class.getName()); - main.clearValidators(); - main.registerValidator(ui.getValidator()); - } @Override @@ -374,6 +372,9 @@ @Override public void onShowTab() { + MainUI main = ui.getContextValue(MainUI.class, MainUI.class.getName()); + main.clearValidators(); + main.registerValidator(ui.getValidator()); } @Override @@ -386,6 +387,11 @@ return ui.getModel(); } + @Override + public SwingValidator<EditFishingOperationUIModel> getValidator() { + return ui.getValidator(); + } + //------------------------------------------------------------------------// //-- Public methods --// //------------------------------------------------------------------------// Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java 2013-01-31 08:45:23 UTC (rev 275) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java 2013-01-31 08:47:56 UTC (rev 276) @@ -54,9 +54,8 @@ private static final long serialVersionUID = 1L; - public static final String TITLE = - n_("tutti.label.tab.fishingOperation.general"); - + public static final String TITLE = n_("tutti.label.tab.fishingOperation.general"); + public static final String PROPERTY_PERSISTED = "persisted"; public static final String PROPERTY_EMPTY = "empty"; @@ -209,6 +208,7 @@ gearShootingEndLongitudeAsSexagecimal = SexagecimalPosition.valueOf(gearShootingEndLongitude); } + @Override public String getTitle() { return TITLE; } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java 2013-01-31 08:45:23 UTC (rev 275) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java 2013-01-31 08:47:56 UTC (rev 276) @@ -43,6 +43,7 @@ import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.List; +import jaxx.runtime.validator.swing.SwingValidator; import static org.nuiton.i18n.I18n._; @@ -181,6 +182,11 @@ } @Override + public SwingValidator<FishingOperationsUIModel> getValidator() { + return null; + } + + @Override protected JTabbedPane getTabPanel() { return ui.getTabPane(); } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.css 2013-01-31 08:45:23 UTC (rev 275) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.css 2013-01-31 08:47:56 UTC (rev 276) @@ -238,6 +238,22 @@ text: "tutti.action.pupitri-import"; } +#benthosTab { + enabled: {false}; +} + +#planktonTab { + enabled: {false}; +} + +#macroWasteTab { + enabled: {false}; +} + +#accidentalTab { + enabled: {false}; +} + #observationIndividuelTab { enabled: {false}; } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx 2013-01-31 08:45:23 UTC (rev 275) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx 2013-01-31 08:47:56 UTC (rev 276) @@ -31,7 +31,9 @@ fr.ifremer.tutti.ui.swing.content.operation.catches.macrowaste.MacroWasteBatchUI fr.ifremer.tutti.ui.swing.content.operation.catches.plankton.PlanktonBatchUI fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchUI + fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyUI fr.ifremer.tutti.ui.swing.content.operation.catches.species.split.CreateSpeciesBatchUI + fr.ifremer.tutti.ui.swing.content.operation.catches.species.split.SplitSpeciesBatchUI fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI org.jdesktop.swingx.JXTitledPanel @@ -294,12 +296,18 @@ </tab> <tab id='speciesTab' title='tutti.label.tab.species'> <JPanel id='speciesTabPanel'> - <JXTitledPanel id='speciesTabFishingOperationReminderLabel' constraints='"main"'> + <JXTitledPanel id='speciesTabFishingOperationReminderLabel' constraints='EditCatchesUIHandler.MAIN_CARD'> <SpeciesBatchUI id='speciesTabContent' constructorParams='this'/> </JXTitledPanel> - <JXTitledPanel id='speciesTabCreateBatchReminderLabel' constraints='"createBatch"'> + <JXTitledPanel id='speciesTabCreateBatchReminderLabel' constraints='EditCatchesUIHandler.CREATE_BATCH_CARD'> <CreateSpeciesBatchUI id='speciesTabCreateBatch' constructorParams='this'/> </JXTitledPanel> + <JXTitledPanel id='speciesTabSplitBatchReminderLabel' constraints='EditCatchesUIHandler.SPLIT_BATCH_CARD'> + <SplitSpeciesBatchUI id='speciesTabSplitBatch' constructorParams='this'/> + </JXTitledPanel> + <JXTitledPanel id='speciesTabFrequencyEditorLabel' constraints='EditCatchesUIHandler.EDIT_FREQUENCY_CARD'> + <SpeciesFrequencyUI id='speciesTabFrequencyEditor' constructorParams='speciesTabContent'/> + </JXTitledPanel> </JPanel> </tab> <tab id='benthosTab' title='tutti.label.tab.benthos'> Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java 2013-01-31 08:45:23 UTC (rev 275) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java 2013-01-31 08:47:56 UTC (rev 276) @@ -28,11 +28,19 @@ import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; +import fr.ifremer.tutti.ui.swing.MainUI; +import fr.ifremer.tutti.ui.swing.TuttiUI; import fr.ifremer.tutti.ui.swing.content.operation.FishingOperationsUI; import fr.ifremer.tutti.ui.swing.util.AbstractTuttiTabContainerUIHandler; import fr.ifremer.tutti.ui.swing.util.TabHandler; import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor; +import java.awt.Component; +import java.awt.Container; +import java.awt.LayoutManager; +import javax.swing.JPanel; import javax.swing.JTabbedPane; +import jaxx.runtime.swing.CardLayout2Ext; +import jaxx.runtime.validator.swing.SwingValidator; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -43,6 +51,14 @@ public class EditCatchesUIHandler extends AbstractTuttiTabContainerUIHandler<EditCatchesUIModel> implements TabHandler { + public static final String MAIN_CARD = "main"; + + public static final String CREATE_BATCH_CARD = "createBatch"; + + public static final String SPLIT_BATCH_CARD = "splitBatch"; + + public static final String EDIT_FREQUENCY_CARD = "editFrequency"; + /** Logger. */ private static final Log log = LogFactory.getLog(EditCatchesUIHandler.class); @@ -131,6 +147,11 @@ } @Override + public SwingValidator<EditCatchesUIModel> getValidator() { + return ui.getValidator(); + } + + @Override protected JTabbedPane getTabPanel() { return ui.getTabPane(); } @@ -147,7 +168,7 @@ @Override public void onShowTab() { - + registerValidators(); } //------------------------------------------------------------------------// @@ -240,8 +261,51 @@ persistenceService.saveCatchBatch(catchBatch); } + protected void registerValidators() { + MainUI main = ui.getContextValue(MainUI.class, MainUI.class.getName()); + main.clearValidators(); + main.registerValidator(getValidator()); + main.registerValidator(ui.getSpeciesTabContent().getHandler().getValidator()); + } + public void importPupitri() { //TODO } + + public void setSelectedCard(String card) { + Component selectedComponent = getTabPanel().getSelectedComponent(); + if (selectedComponent.getClass().isAssignableFrom(JPanel.class)) { + JPanel panel = (JPanel) selectedComponent; + LayoutManager layoutManager = panel.getLayout(); + if (layoutManager.getClass().isAssignableFrom(CardLayout2Ext.class)) { + CardLayout2Ext layout = (CardLayout2Ext) layoutManager; + layout.setSelected(card); + + if (MAIN_CARD.equals(card)) { + registerValidators(); + + } else { + Container cardContainer = (Container)layout.getComponent(panel, card); + TuttiUI tuttiUi = null; + if (TuttiUI.class.isInstance(cardContainer)) { + tuttiUi = (TuttiUI) cardContainer; + + } else { + for (Component comp : cardContainer.getComponents()) { + if (TuttiUI.class.isInstance(comp)) { + tuttiUi = (TuttiUI) comp; + } + } + } + if (tuttiUi != null) { + MainUI main = ui.getContextValue(MainUI.class, MainUI.class.getName()); + main.clearValidators(); + main.registerValidator(tuttiUi.getHandler().getValidator()); + } + } + } + } + + } } \ No newline at end of file Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIModel.java 2013-01-31 08:45:23 UTC (rev 275) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIModel.java 2013-01-31 08:47:56 UTC (rev 276) @@ -57,6 +57,10 @@ public static final String PROPERTY_SPECIES_TOTAL_SAMPLE_SORTED_WEIGHT = "speciesTotalSampleSortedWeight"; public static final String PROPERTY_SPECIES_TOTAL_UNSORTED_WEIGHT = "speciesTotalUnsortedWeight"; + + public static final String PROPERTY_SPECIES_TOTAL_INERT_WEIGHT = "speciesTotalInertWeight"; + + public static final String PROPERTY_SPECIES_TOTAL_LIVING_NOT_ITEMIZED_WEIGHT = "speciesTotalLivingNotItemizedWeight"; public static final String PROPERTY_BENTHOS_TOTAL_WEIGHT = "benthosTotalWeight"; @@ -82,6 +86,8 @@ PROPERTY_SPECIES_TOTAL_SORTED_WEIGHT, PROPERTY_SPECIES_TOTAL_UNSORTED_WEIGHT, PROPERTY_SPECIES_TOTAL_SAMPLE_SORTED_WEIGHT, + PROPERTY_SPECIES_TOTAL_INERT_WEIGHT, + PROPERTY_SPECIES_TOTAL_LIVING_NOT_ITEMIZED_WEIGHT, PROPERTY_BENTHOS_TOTAL_WEIGHT, PROPERTY_BENTHOS_TOTAL_SORTED_WEIGHT, PROPERTY_BENTHOS_TOTAL_UNSORTED_WEIGHT, @@ -97,6 +103,8 @@ PROPERTY_SPECIES_TOTAL_SORTED_WEIGHT, PROPERTY_SPECIES_TOTAL_UNSORTED_WEIGHT, PROPERTY_SPECIES_TOTAL_SAMPLE_SORTED_WEIGHT, + PROPERTY_SPECIES_TOTAL_INERT_WEIGHT, + PROPERTY_SPECIES_TOTAL_LIVING_NOT_ITEMIZED_WEIGHT, PROPERTY_BENTHOS_TOTAL_WEIGHT, PROPERTY_BENTHOS_TOTAL_SORTED_WEIGHT, PROPERTY_BENTHOS_TOTAL_UNSORTED_WEIGHT, @@ -114,6 +122,10 @@ protected Float speciesTotalUnsortedWeight; + protected Float speciesTotalInertWeight; + + protected Float speciesTotalLivingNotItemizedWeight; + protected Float benthosTotalWeight; protected Float benthosTotalSortedWeight; @@ -260,7 +272,27 @@ this.speciesTotalUnsortedWeight = speciesTotalUnsortedWeight; firePropertyChange(PROPERTY_SPECIES_TOTAL_UNSORTED_WEIGHT, oldValue, speciesTotalUnsortedWeight); } + + public Float getSpeciesTotalInertWeight() { + return speciesTotalInertWeight; + } + public void setSpeciesTotalInertWeight(Float speciesTotalInertWeight) { + Object oldValue = getSpeciesTotalInertWeight(); + this.speciesTotalInertWeight = speciesTotalInertWeight; + firePropertyChange(PROPERTY_SPECIES_TOTAL_INERT_WEIGHT, oldValue, speciesTotalInertWeight); + } + + public Float getSpeciesTotalLivingNotItemizedWeight() { + return speciesTotalLivingNotItemizedWeight; + } + + public void setSpeciesTotalLivingNotItemizedWeight(Float speciesTotalLivingNotItemizedWeight) { + Object oldValue = getSpeciesTotalLivingNotItemizedWeight(); + this.speciesTotalLivingNotItemizedWeight = speciesTotalLivingNotItemizedWeight; + firePropertyChange(PROPERTY_SPECIES_TOTAL_LIVING_NOT_ITEMIZED_WEIGHT, oldValue, speciesTotalLivingNotItemizedWeight); + } + public Float getBenthosTotalWeight() { return benthosTotalWeight; } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java 2013-01-31 08:45:23 UTC (rev 275) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java 2013-01-31 08:47:56 UTC (rev 276) @@ -44,6 +44,7 @@ import org.nuiton.util.decorator.Decorator; import java.util.List; +import jaxx.runtime.validator.swing.SwingValidator; import static org.nuiton.i18n.I18n.n_; @@ -181,6 +182,11 @@ } @Override + public SwingValidator<AccidentalBatchUIModel> getValidator() { + return null; + } + + @Override public void beforeInitUI() { if (log.isInfoEnabled()) { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java 2013-01-31 08:45:23 UTC (rev 275) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java 2013-01-31 08:47:56 UTC (rev 276) @@ -44,6 +44,7 @@ import org.nuiton.util.decorator.Decorator; import java.util.List; +import jaxx.runtime.validator.swing.SwingValidator; import static org.nuiton.i18n.I18n.n_; @@ -184,6 +185,11 @@ } @Override + public SwingValidator<BenthosBatchUIModel> getValidator() { + return ui.getValidator(); + } + + @Override public void beforeInitUI() { if (log.isInfoEnabled()) { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/macrowaste/MacroWasteBatchUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/macrowaste/MacroWasteBatchUIHandler.java 2013-01-31 08:45:23 UTC (rev 275) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/macrowaste/MacroWasteBatchUIHandler.java 2013-01-31 08:47:56 UTC (rev 276) @@ -43,6 +43,7 @@ import org.nuiton.util.decorator.Decorator; import java.util.List; +import jaxx.runtime.validator.swing.SwingValidator; import static org.nuiton.i18n.I18n.n_; @@ -186,6 +187,11 @@ } @Override + public SwingValidator<MacroWasteBatchUIModel> getValidator() { + return ui.getValidator(); + } + + @Override public void beforeInitUI() { if (log.isInfoEnabled()) { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/plankton/PlanktonBatchUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/plankton/PlanktonBatchUIHandler.java 2013-01-31 08:45:23 UTC (rev 275) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/plankton/PlanktonBatchUIHandler.java 2013-01-31 08:47:56 UTC (rev 276) @@ -44,6 +44,7 @@ import org.nuiton.util.decorator.Decorator; import java.util.List; +import jaxx.runtime.validator.swing.SwingValidator; import static org.nuiton.i18n.I18n.n_; @@ -182,6 +183,11 @@ } @Override + public SwingValidator<PlanktonBatchUIModel> getValidator() { + return ui.getValidator(); + } + + @Override public void beforeInitUI() { if (log.isInfoEnabled()) { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.css 2013-01-31 08:45:23 UTC (rev 275) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.css 2013-01-31 08:47:56 UTC (rev 276) @@ -37,7 +37,6 @@ #speciesTotalWeightField { property: speciesTotalWeight; model: {model.getSpeciesTotalWeight()}; - useFloat: false; numberPattern: {INT_6_DIGITS_PATTERN}; } @@ -49,7 +48,6 @@ #speciesTotalSortedWeightField { property: speciesTotalSortedWeight; model: {model.getSpeciesTotalSortedWeight()}; - useFloat: false; numberPattern: {INT_6_DIGITS_PATTERN}; } @@ -61,7 +59,6 @@ #speciesTotalSampleSortedWeightField { property: speciesTotalSampleSortedWeight; model: {model.getSpeciesTotalSampleSortedWeight()}; - useFloat: false; numberPattern: {INT_6_DIGITS_PATTERN}; } @@ -76,6 +73,29 @@ enabled: false; } +#speciesTotalInertWeightLabel { + text: "tutti.label.catches.speciesTotalInertWeight"; + labelFor: {speciesTotalInertWeightField}; +} + +#speciesTotalInertWeightField { + property: speciesTotalInertWeight; + model: {model.getSpeciesTotalInertWeight()}; + numberPattern: {INT_6_DIGITS_PATTERN}; +} + +#speciesTotalLivingNotItemizedWeightLabel { + text: "tutti.label.catches.speciesTotalLivingNotItemizedWeight"; + labelFor: {speciesTotalLivingNotItemizedWeightField}; +} + +#speciesTotalLivingNotItemizedWeightField { + property: speciesTotalLivingNotItemizedWeight; + model: {model.getSpeciesTotalLivingNotItemizedWeight()}; + numberPattern: {INT_6_DIGITS_PATTERN}; +} + + #tablePopup { label: "tutti.title.batchActions"; } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.jaxx 2013-01-31 08:45:23 UTC (rev 275) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.jaxx 2013-01-31 08:47:56 UTC (rev 276) @@ -124,6 +124,24 @@ <JTextField id='speciesTotalUnsortedWeightField'/> </cell> </row> + + <!-- Poids inerte / Poids vivant non détaillé --> + <row> + <cell> + <JLabel id='speciesTotalInertWeightLabel'/> + </cell> + <cell> + <NumberEditor id='speciesTotalInertWeightField' + constructorParams='this'/> + </cell> + <cell> + <JLabel id='speciesTotalLivingNotItemizedWeightLabel'/> + </cell> + <cell> + <NumberEditor id='speciesTotalLivingNotItemizedWeightField' + constructorParams='this'/> + </cell> + </row> <!-- Toolbar / Filter --> <row> Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-01-31 08:45:23 UTC (rev 275) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-01-31 08:47:56 UTC (rev 276) @@ -44,10 +44,10 @@ import fr.ifremer.tutti.ui.swing.TuttiUI; import fr.ifremer.tutti.ui.swing.content.operation.AbstractTuttiBatchTableUIHandler; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI; +import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIHandler; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.FrequencyCellComponent; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyRowModel; -import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.split.CreateSpeciesBatchUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.split.CreateSpeciesBatchUIModel; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.split.SplitSpeciesBatchRowModel; @@ -79,9 +79,8 @@ import java.util.List; import java.util.Set; import jaxx.runtime.SwingUtil; -import jaxx.runtime.swing.CardLayout2Ext; +import jaxx.runtime.validator.swing.SwingValidator; -import static org.nuiton.i18n.I18n._; import static org.nuiton.i18n.I18n.n_; /** @@ -118,12 +117,6 @@ */ private final SpeciesBatchUI ui; - private SplitSpeciesBatchUI splitSpeciesBatchEditor; - - private CreateSpeciesBatchUI createSpeciesBatchEditor; - - private SpeciesFrequencyUI speciesFrequencyEditor; - private final EnumMap<TableViewMode, RowFilter<SpeciesBatchTableModel, Integer>> tableFilters; public SpeciesBatchUIHandler(TuttiUI<?, ?> parentUi, @@ -381,6 +374,11 @@ } @Override + public SwingValidator<SpeciesBatchUIModel> getValidator() { + return ui.getValidator(); + } + + @Override public void beforeInitUI() { if (log.isInfoEnabled()) { @@ -625,27 +623,11 @@ } - @Override public void onCloseUI() { if (log.isInfoEnabled()) { log.info("Closing: " + ui); } - - if (splitSpeciesBatchEditor != null) { - getContext().getSwingSession().add(splitSpeciesBatchEditor); - closeUI(splitSpeciesBatchEditor); - } - - if (createSpeciesBatchEditor != null) { - getContext().getSwingSession().add(createSpeciesBatchEditor); - closeUI(createSpeciesBatchEditor); - } - - if (speciesFrequencyEditor != null) { - getContext().getSwingSession().add(speciesFrequencyEditor); - closeUI(speciesFrequencyEditor); - } } //------------------------------------------------------------------------// @@ -658,9 +640,7 @@ CreateSpeciesBatchUI createBatchEditor = parent.getSpeciesTabCreateBatch(); createBatchEditor.getHandler().openUI(getModel()); - - CardLayout2Ext card = (CardLayout2Ext) parent.getSpeciesTabPanel().getLayout(); - card.setSelected("createBatch"); + parent.getHandler().setSelectedCard(EditCatchesUIHandler.CREATE_BATCH_CARD); } public void addSpeciesBatch(CreateSpeciesBatchUIModel createModel) { @@ -708,23 +688,27 @@ if (log.isInfoEnabled()) { log.info("Open split batch ui for row [" + rowIndex + ']'); } - SplitSpeciesBatchUI splitBatchEditor = getSplitSpeciesBatchEditor(); + + EditCatchesUI parent = SwingUtil.getParentContainer(ui, EditCatchesUI.class); + SplitSpeciesBatchUI splitBatchEditor = parent.getSpeciesTabSplitBatch(); + splitBatchEditor.getHandler().editBatch(parentBatch); + parent.getHandler().setSelectedCard(EditCatchesUIHandler.SPLIT_BATCH_CARD); + } - openDialog(ui, - splitBatchEditor, - _("tutti.title.splitBatch"), - ui.getPreferredSize()); + public void splitBatch(SplitSpeciesBatchUIModel splitModel) { + if (splitModel.isValid()) { - // at close, synch back batches ? - SplitSpeciesBatchUIModel splitModel = splitBatchEditor.getModel(); + JXTable table = getTable(); - if (splitModel.isValid()) { + // get selected row + int insertRow = table.getSelectedRow(); + + SpeciesBatchTableModel tableModel = getTableModel(); + SpeciesBatchRowModel parentBatch = tableModel.getEntry(insertRow); // create batch rows - int insertRow = rowIndex; - SampleCategoryType selectedCategory = splitModel.getSelectedCategory(); SampleCategoryEnum sampleCategoryEnum = selectedCategory.getType(); @@ -760,9 +744,6 @@ saveRows(newBatches); } - // reset split ui - splitBatchEditor.getHandler().editBatch(null); - recomputeBatchActionEnable(); // // reselect this cell @@ -898,27 +879,6 @@ } - public SplitSpeciesBatchUI getSplitSpeciesBatchEditor() { - if (splitSpeciesBatchEditor == null) { - splitSpeciesBatchEditor = new SplitSpeciesBatchUI(ui); - } - return splitSpeciesBatchEditor; - } - - public CreateSpeciesBatchUI getCreateSpeciesBatchEditor() { - if (createSpeciesBatchEditor == null) { - createSpeciesBatchEditor = new CreateSpeciesBatchUI(ui); - } - return createSpeciesBatchEditor; - } - - public SpeciesFrequencyUI getSpeciesFrequencyEditor() { - if (speciesFrequencyEditor == null) { - speciesFrequencyEditor = new SpeciesFrequencyUI(ui); - } - return speciesFrequencyEditor; - } - public void updateTotalFromFrequencies(SpeciesBatchRowModel row) { Float totalNumber = null; Float totalWeight = null; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIModel.java 2013-01-31 08:45:23 UTC (rev 275) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIModel.java 2013-01-31 08:47:56 UTC (rev 276) @@ -121,7 +121,9 @@ EditCatchesUIModel.PROPERTY_SPECIES_TOTAL_WEIGHT, EditCatchesUIModel.PROPERTY_SPECIES_TOTAL_SORTED_WEIGHT, EditCatchesUIModel.PROPERTY_SPECIES_TOTAL_UNSORTED_WEIGHT, - EditCatchesUIModel.PROPERTY_SPECIES_TOTAL_SAMPLE_SORTED_WEIGHT); + EditCatchesUIModel.PROPERTY_SPECIES_TOTAL_SAMPLE_SORTED_WEIGHT, + EditCatchesUIModel.PROPERTY_SPECIES_TOTAL_INERT_WEIGHT, + EditCatchesUIModel.PROPERTY_SPECIES_TOTAL_LIVING_NOT_ITEMIZED_WEIGHT); } public Float getSpeciesTotalWeight() { @@ -156,6 +158,22 @@ catchesUIModel.setSpeciesTotalUnsortedWeight(speciesTotalUnsortedWeight); } + public Float getSpeciesTotalInertWeight() { + return catchesUIModel.getSpeciesTotalInertWeight(); + } + + public void setSpeciesTotalInertWeight(Float speciesTotalInertWeight) { + catchesUIModel.setSpeciesTotalInertWeight(speciesTotalInertWeight); + } + + public Float getSpeciesTotalLivingNotItemizedWeight() { + return catchesUIModel.getSpeciesTotalLivingNotItemizedWeight(); + } + + public void setSpeciesTotalLivingNotItemizedWeight(Float speciesTotalLivingNotItemizedWeight) { + catchesUIModel.setSpeciesTotalLivingNotItemizedWeight(speciesTotalLivingNotItemizedWeight); + } + public List<SampleCategoryType> getSamplingOrder() { return samplingOrder; } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/FrequencyCellComponent.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/FrequencyCellComponent.java 2013-01-31 08:45:23 UTC (rev 275) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/FrequencyCellComponent.java 2013-01-31 08:47:56 UTC (rev 276) @@ -26,10 +26,13 @@ import com.google.common.base.Preconditions; import com.google.common.collect.Lists; +import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI; +import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIHandler; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchRowModel; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchTableModel; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchUIHandler; +import fr.ifremer.tutti.ui.swing.content.operation.catches.species.split.CreateSpeciesBatchUI; import fr.ifremer.tutti.ui.swing.util.table.AbstractSelectTableAction; import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier; import jaxx.runtime.SwingUtil; @@ -49,6 +52,7 @@ import java.awt.event.MouseEvent; import java.util.List; import javax.swing.table.DefaultTableCellRenderer; +import jaxx.runtime.swing.CardLayout2Ext; import static org.nuiton.i18n.I18n._; @@ -137,19 +141,16 @@ log.info("Will edit frequencies for row: " + rowIndex); } - SpeciesBatchUIHandler handler = ui.getHandler(); - SpeciesFrequencyUI frequencyEditor = - handler.getSpeciesFrequencyEditor(); - frequencyEditor.editBatch(editRow); + EditCatchesUI parent = SwingUtil.getParentContainer(ui, EditCatchesUI.class); + SpeciesFrequencyUI frequencyEditor = parent.getSpeciesTabFrequencyEditor(); - // open frequency dialog - handler.openDialog(ui, - frequencyEditor, - _("tutti.title.frequency"), - ui.getPreferredSize()); + frequencyEditor.getHandler().editBatch(editRow, this); - SpeciesFrequencyUIModel frequencyModel = frequencyEditor.getModel(); - + // open frequency editor + parent.getHandler().setSelectedCard(EditCatchesUIHandler.EDIT_FREQUENCY_CARD); + } + + public void validateEdition(SpeciesFrequencyUIModel frequencyModel) { if (frequencyModel.isValid()) { // at close, synch back frequencies @@ -173,11 +174,9 @@ editRow.setFrequency(frequency); // update frequencies total - handler.updateTotalFromFrequencies(editRow); + ui.getHandler().updateTotalFromFrequencies(editRow); } - frequencyEditor.editBatch(null); - int r = rowIndex; int c = columnIndex; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUI.jaxx 2013-01-31 08:45:23 UTC (rev 275) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUI.jaxx 2013-01-31 08:47:56 UTC (rev 276) @@ -26,10 +26,11 @@ <import> fr.ifremer.tutti.persistence.entities.referential.Caracteristic - + + fr.ifremer.tutti.ui.swing.TuttiUI fr.ifremer.tutti.ui.swing.TuttiUIContext + fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchRowModel - fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchUI jaxx.runtime.swing.CardLayout2Ext jaxx.runtime.swing.editor.bean.BeanComboBox @@ -52,17 +53,13 @@ <script><![CDATA[ - public SpeciesFrequencyUI(SpeciesBatchUI parentUI) { + public SpeciesFrequencyUI(TuttiUI parentUI) { JAXXUtil.initContext(this, parentUI); SpeciesFrequencyUIHandler handler = new SpeciesFrequencyUIHandler(parentUI.getHandler().getContext(), this); setContextValue(handler); handler.beforeInitUI(); } - public void editBatch(SpeciesBatchRowModel row) { - handler.editBatch(row); - } - protected void $afterCompleteSetup() { handler.afterInitUI(); } @@ -85,124 +82,112 @@ <CardLayout2Ext id='modeConfigurationLayout' constructorParams='this, "modeConfigurationPanel"'/> - <JSplitPane id='splitPane' constraints='BorderLayout.CENTER'> + <JPanel id='configurationPanel' layout='{new BorderLayout()}' + constraints='BorderLayout.NORTH'> - <JPanel layout='{new BorderLayout()}'> + <JPanel layout='{new BorderLayout()}' constraints='BorderLayout.CENTER'> + <VBox id='modePanel' constraints='BorderLayout.WEST' + verticalAlignment='{SwingConstants.CENTER}'> + <JRadioButton id='simpleModeButton' + onActionPerformed='model.setConfigurationMode(SpeciesFrequencyUIModel.ConfigurationMode.SIMPLE)'/> + <JRadioButton id='autoGenModeButton' + onActionPerformed='model.setConfigurationMode(SpeciesFrequencyUIModel.ConfigurationMode.AUTO_GEN)'/> + <JRadioButton id='rafaleModeButton' + onActionPerformed='model.setConfigurationMode(SpeciesFrequencyUIModel.ConfigurationMode.RAFALE)'/> + </VBox> - <JPanel id='configurationPanel' layout='{new BorderLayout()}' - constraints='BorderLayout.NORTH'> - - <JPanel layout='{new BorderLayout()}' constraints='BorderLayout.CENTER'> - <VBox id='modePanel' constraints='BorderLayout.WEST' - verticalAlignment='{SwingConstants.CENTER}'> - <JRadioButton id='simpleModeButton' - onActionPerformed='model.setConfigurationMode(SpeciesFrequencyUIModel.ConfigurationMode.SIMPLE)'/> - <JRadioButton id='autoGenModeButton' - onActionPerformed='model.setConfigurationMode(SpeciesFrequencyUIModel.ConfigurationMode.AUTO_GEN)'/> - <JRadioButton id='rafaleModeButton' - onActionPerformed='model.setConfigurationMode(SpeciesFrequencyUIModel.ConfigurationMode.RAFALE)'/> - </VBox> - - <JPanel id='modeConfigurationPanel' constraints='BorderLayout.CENTER'> - <JPanel id='simpleModePanel' constraints='"simpleMode"' - layout='{new BorderLayout()}'> - <JLabel id='simpleModeLabel' constraints='BorderLayout.CENTER'/> - </JPanel> - <JPanel id='autoGenModePanel' constraints='"autoGenMode"'> - <Table fill='both' constraints='BorderLayout.SOUTH'> - <!-- Min step--> - <row> - <cell anchor='west'> - <JLabel id='minStepLabel'/> - </cell> - <cell weightx='1.0'> - <NumberEditor id='minStepField' constructorParams='this'/> - </cell> - </row> - <!-- Max step--> - <row> - <cell anchor='west'> - <JLabel id='maxStepLabel'/> - </cell> - <cell weightx='1.0'> - <NumberEditor id='maxStepField' constructorParams='this'/> - </cell> - </row> - <!-- Actions --> - <row> - <cell columns='2'> - <JPanel layout='{new GridLayout(1, 0)}'> - <JButton id='generateButton' - onActionPerformed='handler.generateLengthSteps()'/> - </JPanel> - </cell> - </row> - </Table> - </JPanel> - <JPanel id='rafaleModePanel' constraints='"rafaleMode"'> - <Table fill='both' constraints='BorderLayout.SOUTH'> - <!-- Rafale step--> - <row> - <cell weightx='1.0'> - <JLabel id='rafaleStepLabel'/> - </cell> - </row> - <row> - <cell weightx='1.0'> - <NumberEditor id='rafaleStepField' - constructorParams='this'/> - </cell> - </row> - </Table> - </JPanel> - </JPanel> + <JPanel id='modeConfigurationPanel' constraints='BorderLayout.CENTER'> + <JPanel id='simpleModePanel' constraints='"simpleMode"' + layout='{new BorderLayout()}'> + <JLabel id='simpleModeLabel' constraints='BorderLayout.CENTER'/> </JPanel> - <Table fill='both' constraints='BorderLayout.SOUTH'> - <row> - <cell columns='2'> - <JSeparator/> - </cell> - </row> - <!-- length step caracteristic --> - <row> - <cell anchor='west'> - <JLabel id='lengthStepCaracteristicLabel'/> - </cell> - <cell weightx='1.0'> - <BeanComboBox id='lengthStepCaracteristicComboBox' - constructorParams='this' - genericType='Caracteristic'/> - </cell> - </row> - <!-- Step --> - <row> - <cell anchor='west'> - <JLabel id='stepLabel'/> - </cell> - <cell weightx='1.0'> - <NumberEditor id='stepField' constructorParams='this'/> - </cell> - </row> - </Table> + <JPanel id='autoGenModePanel' constraints='"autoGenMode"'> + <Table fill='both' constraints='BorderLayout.SOUTH'> + <!-- Min step--> + <row> + <cell anchor='west'> + <JLabel id='minStepLabel'/> + </cell> + <cell weightx='1.0'> + <NumberEditor id='minStepField' constructorParams='this'/> + </cell> + </row> + <!-- Max step--> + <row> + <cell anchor='west'> + <JLabel id='maxStepLabel'/> + </cell> + <cell weightx='1.0'> + <NumberEditor id='maxStepField' constructorParams='this'/> + </cell> + </row> + <!-- Actions --> + <row> + <cell columns='2'> + <JPanel layout='{new GridLayout(1, 0)}'> + <JButton id='generateButton' + onActionPerformed='handler.generateLengthSteps()'/> + </JPanel> + </cell> + </row> + </Table> + </JPanel> + <JPanel id='rafaleModePanel' constraints='"rafaleMode"'> + <Table fill='both' constraints='BorderLayout.SOUTH'> + <!-- Rafale step--> + <row> + <cell weightx='1.0'> + <JLabel id='rafaleStepLabel'/> + </cell> + </row> + <row> + <cell weightx='1.0'> + <NumberEditor id='rafaleStepField' + constructorParams='this'/> + </cell> + </row> + </Table> + </JPanel> </JPanel> + </JPanel> + <Table fill='both' constraints='BorderLayout.SOUTH'> + <row> + <cell columns='2'> + <JSeparator/> + </cell> + </row> + <!-- length step caracteristic --> + <row> + <cell anchor='west'> + <JLabel id='lengthStepCaracteristicLabel'/> + </cell> + <cell weightx='1.0'> + <BeanComboBox id='lengthStepCaracteristicComboBox' + constructorParams='this' + genericType='Caracteristic'/> + </cell> + </row> + <!-- Step --> + <row> + <cell anchor='west'> + <JLabel id='stepLabel'/> + </cell> + <cell weightx='1.0'> + <NumberEditor id='stepField' constructorParams='this'/> + </cell> + </row> + </Table> + </JPanel> - <JScrollPane id='tableScrollPane' constraints='BorderLayout.CENTER'> - <JXTable id='table'/> - </JScrollPane> + <JScrollPane id='tableScrollPane' constraints='BorderLayout.CENTER'> + <JXTable id='table'/> + </JScrollPane> - <!-- actions --> - <JPanel id='actionPanel' layout='{new GridLayout(1, 0)}' - constraints='BorderLayout.SOUTH'> - <JButton id='cancelButton' onActionPerformed='handler.cancel()'/> - <JButton id='saveButton' onActionPerformed='handler.save()'/> - </JPanel> + <!-- actions --> + <JPanel id='actionPanel' layout='{new GridLayout(1, 0)}' + constraints='BorderLayout.SOUTH'> + <JButton id='cancelButton' onActionPerformed='handler.cancel()'/> + <JButton id='saveButton' onActionPerformed='handler.save()'/> + </JPanel> - </JPanel> - <!-- Messages report --> - <JPanel id='messagePanel' layout='{new GridLayout()}'> - <JScrollPane columnHeaderView='{errorTable.getTableHeader()}'> - <JTable id='errorTable'/> - </JScrollPane> - </JPanel> - </JSplitPane> </JPanel> \ No newline at end of file Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java 2013-01-31 08:45:23 UTC (rev 275) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java 2013-01-31 08:47:56 UTC (rev 276) @@ -34,8 +34,11 @@ import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.ui.swing.TuttiUI; import fr.ifremer.tutti.ui.swing.TuttiUIContext; +import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI; +import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIHandler; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchRowModel; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchUIHandler; +import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.FrequencyCellComponent.FrequencyCellEditor; import fr.ifremer.tutti.ui.swing.util.Cancelable; import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; @@ -55,6 +58,9 @@ import java.util.Collections; import java.util.List; import java.util.Map; +import jaxx.runtime.SwingUtil; +import jaxx.runtime.swing.CardLayout2Ext; +import jaxx.runtime.validator.swing.SwingValidator; /** * @author tchemit <chemit@codelutin.com> @@ -72,12 +78,14 @@ * @since 0.2 */ private final SpeciesFrequencyUI ui; + + private FrequencyCellEditor frequencyEditor; private TuttiProtocol protocol; private Map<String, SpeciesProtocol> speciesProtocol; - private Map<String, Caracteristic> lengthSteCaracteristic; + private Map<String, Caracteristic> lengthStepCaracteristics; public SpeciesFrequencyUIHandler(TuttiUIContext context, SpeciesFrequencyUI ui) { @@ -150,6 +158,11 @@ } @Override + public SwingValidator<SpeciesFrequencyUIModel> getValidator() { + return ui.getValidator(); + } + + @Override public void beforeInitUI() { SpeciesFrequencyUIModel model = new SpeciesFrequencyUIModel(); @@ -166,7 +179,7 @@ SpeciesBatchUIHandler.FREQUENCY_LENGTH_CONTEXT_ENTRY.getContextValue(ui); Preconditions.checkNotNull(lengthStepCaracterics); - lengthSteCaracteristic = TuttiEntities.splitById(lengthStepCaracterics); + lengthStepCaracteristics = TuttiEntities.splitById(lengthStepCaracterics); SpeciesFrequencyUIModel model = getModel(); @@ -270,9 +283,6 @@ initTable(table); - SwingValidatorUtil.installUI(ui.getErrorTable(), - new SwingValidatorMessageTableRenderer()); - listenValidatorValid(ui.getValidator(), model); } @@ -281,6 +291,17 @@ if (log.isInfoEnabled()) { log.info("closing: " + ui); } + + frequencyEditor = null; + + // evict model from validator + ui.getValidator().setBean(null); + + // when canceling always invalid model (in that way) + getModel().setValid(false); + + EditCatchesUI parent = SwingUtil.getParentContainer(ui, EditCatchesUI.class); + parent.getHandler().setSelectedCard(EditCatchesUIHandler.MAIN_CARD); } //------------------------------------------------------------------------// @@ -294,14 +315,8 @@ log.info("Cancel UI " + ui); } - // evict model from validator - ui.getValidator().setBean(null); - - // when canceling always invalid model (in that way) - getModel().setValid(false); - // close dialog - closeDialog(ui); + closeUI(ui); } //------------------------------------------------------------------------// @@ -380,8 +395,10 @@ getTable().scrollRowToVisible(rowIndex); } - public void editBatch(SpeciesBatchRowModel speciesBatch) { + public void editBatch(SpeciesBatchRowModel speciesBatch, FrequencyCellEditor editor) { + frequencyEditor = editor; + Caracteristic lengthStepCaracteristic = null; Float lengthStep = 1f; @@ -440,7 +457,7 @@ String lengthStepPmfmId = sProtocol.getLengthStepPmfmId(); lengthStepCaracteristic = - lengthSteCaracteristic.get(lengthStepPmfmId); + this.lengthStepCaracteristics.get(lengthStepPmfmId); lengthStep = sProtocol.getLengthStep(); if (log.isInfoEnabled()) { @@ -478,7 +495,9 @@ log.info("Save UI " + ui); } - closeDialog(ui); + frequencyEditor.validateEdition(getModel()); + + closeUI(ui); } //------------------------------------------------------------------------// Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/AddSpeciesAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/AddSpeciesAction.java 2013-01-31 08:45:23 UTC (rev 275) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/AddSpeciesAction.java 2013-01-31 08:47:56 UTC (rev 276) @@ -31,6 +31,7 @@ import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; import fr.ifremer.tutti.ui.swing.TuttiUIContext; +import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.List; @@ -51,7 +52,7 @@ /** Logger. */ private static final Log log = LogFactory.getLog(AddSpeciesAction.class); - protected AddSpeciesUI popup; +// protected AddSpeciesUI popup; protected List<Species> allSpecies; @@ -64,15 +65,6 @@ false ); - popup = new AddSpeciesUI(getHandler().getUi()); - popup.getValidateButton().addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - getHandler().closeDialog(popup); - } - }); - TuttiPersistence persistenceService = getContext().getService(PersistenceService.class); allSpecies = persistenceService.getAllSpecies(); } @@ -80,30 +72,25 @@ @Override protected void doAction(ActionEvent event) { CreateSpeciesBatchUIHandler handler = getHandler(); - AddSpeciesUIModel model = popup.getModel(); - model.setSelectedSpecies(null); List<Species> availableSpecies = handler.getModel().getAvailableSpecies(); - List<Species> species = Lists.newArrayList(allSpecies); + final List<Species> species = Lists.newArrayList(allSpecies); species.removeAll(availableSpecies); - model.setSpecies(species); // open the popup asynchronously because the setVisible(true) method returns // only after setVisible(false) has been called and this prevents the loading to hide. SwingUtilities.invokeLater(new Runnable() { @Override public void run() { -// getHandler().openDialog(popup, _("tutti.title.createBatch")); - - Species species = popup.getModel().getSelectedSpecies(); + Species selectedSpecies = getHandler().openAddSpeciesDialog( _("tutti.title.createBatch"), species); if (species != null) { CreateSpeciesBatchUIHandler handler = getHandler(); CreateSpeciesBatchUIModel model = handler.getModel(); List<Species> availableSpecies = Lists.newArrayList(model.getAvailableSpecies()); - availableSpecies.add(species); + availableSpecies.add(selectedSpecies); model.setAvailableSpecies(availableSpecies); - model.setSpecies(species); + model.setSpecies(selectedSpecies); } } }); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/AddSpeciesUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/AddSpeciesUIHandler.java 2013-01-31 08:45:23 UTC (rev 275) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/AddSpeciesUIHandler.java 2013-01-31 08:47:56 UTC (rev 276) @@ -39,6 +39,7 @@ import java.util.List; import javax.swing.JDialog; import jaxx.runtime.SwingUtil; +import jaxx.runtime.validator.swing.SwingValidator; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -80,5 +81,10 @@ public AddSpeciesUIModel getModel() { return ui.getModel(); } + + @Override + public SwingValidator<AddSpeciesUIModel> getValidator() { + return null; + } } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIHandler.java 2013-01-31 08:45:23 UTC (rev 275) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIHandler.java 2013-01-31 08:47:56 UTC (rev 276) @@ -34,12 +34,10 @@ import fr.ifremer.tutti.ui.swing.AbstractTuttiUIHandler; import fr.ifremer.tutti.ui.swing.TuttiUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI; -import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchUI; +import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIHandler; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchUIModel; import fr.ifremer.tutti.ui.swing.util.Cancelable; import java.awt.Dimension; -import jaxx.runtime.validator.swing.SwingValidatorMessageTableRenderer; -import jaxx.runtime.validator.swing.SwingValidatorUtil; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -48,6 +46,7 @@ import java.util.List; import jaxx.runtime.SwingUtil; import jaxx.runtime.swing.CardLayout2Ext; +import jaxx.runtime.validator.swing.SwingValidator; /** * Handler of {@link CreateSpeciesBatchUI}. @@ -178,9 +177,7 @@ getModel().setValid(false); EditCatchesUI parent = SwingUtil.getParentContainer(ui, EditCatchesUI.class); - - CardLayout2Ext card = (CardLayout2Ext) parent.getSpeciesTabPanel().getLayout(); - card.setSelected("main"); + parent.getHandler().setSelectedCard(EditCatchesUIHandler.MAIN_CARD); } @@ -189,6 +186,11 @@ return ui.getModel(); } + @Override + public SwingValidator<CreateSpeciesBatchUIModel> getValidator() { + return ui.getValidator(); + } + //------------------------------------------------------------------------// //-- Cancelable methods --// //------------------------------------------------------------------------// @@ -249,8 +251,15 @@ closeUI(ui); } - public CreateSpeciesBatchUI getUi() { - return ui; + public Species openAddSpeciesDialog(String title, List<Species> species) { + AddSpeciesUI dialog = new AddSpeciesUI(ui); + AddSpeciesUIModel model = dialog.getModel(); + model.setSelectedSpecies(null); + model.setSpecies(species); + + openDialog(ui, dialog, title, new Dimension(400, 130)); + + return model.getSelectedSpecies(); } } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUI.jaxx 2013-01-31 08:45:23 UTC (rev 275) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUI.jaxx 2013-01-31 08:47:56 UTC (rev 276) @@ -25,6 +25,7 @@ implements='fr.ifremer.tutti.ui.swing.TuttiUI<SplitSpeciesBatchUIModel, SplitSpeciesBatchUIHandler>'> <import> + fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI fr.ifremer.tutti.ui.swing.content.operation.catches.species.SampleCategoryType fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchUI @@ -47,7 +48,7 @@ <script><![CDATA[ -public SplitSpeciesBatchUI(SpeciesBatchUI parentUI) { +public SplitSpeciesBatchUI(EditCatchesUI parentUI) { JAXXUtil.initContext(this, parentUI); SplitSpeciesBatchUIHandler handler = new SplitSpeciesBatchUIHandler(parentUI, this); setContextValue(handler); @@ -72,89 +73,75 @@ <field name='sampleWeight' component='sampleWeightField'/> </BeanValidator> - <JSplitPane id='splitPane' constraints='BorderLayout.CENTER'> + <Table id='configurationPanel' fill='both' + constraints='BorderLayout.NORTH'> - <JPanel layout='{new BorderLayout()}'> + <!-- SampleCategory choice --> + <row> + <cell anchor='west'> + <JLabel id='categoryLabel'/> + </cell> + <cell weightx='1.0'> + <BeanComboBox id='categoryComboBox' constructorParams='this' + genericType='SampleCategoryType'/> + </cell> + </row> - <Table id='configurationPanel' fill='both' - constraints='BorderLayout.NORTH'> + <!-- Split as a sample or not ? --> + <row> + <cell columns='2'> + <JCheckBox id='sampleCheckBox' + onItemStateChanged='handler.setBoolean(event, "sample")'/> + </cell> + </row> - <!-- SampleCategory choice --> - <row> - <cell anchor='west'> - <JLabel id='categoryLabel'/> - </cell> - <cell weightx='1.0'> - <BeanComboBox id='categoryComboBox' constructorParams='this' - genericType='SampleCategoryType'/> - </cell> - </row> + <row> + <cell columns="2"> + <JSeparator/> + </cell> + </row> - <!-- Split as a sample or not ? --> - <row> - <cell columns='2'> - <JCheckBox id='sampleCheckBox' - onItemStateChanged='handler.setBoolean(event, "sample")'/> - </cell> - </row> + <!-- Incoming Batch Species --> + <row> + <cell anchor='west'> + <JLabel id='speciesLabel'/> + </cell> + <cell weightx='1.0'> + <JTextField id='speciesField'/> + </cell> + </row> - <row> - <cell columns="2"> - <JSeparator/> - </cell> - </row> + <!-- Incoming Batch Total weight --> + <row> + <cell anchor='west'> + <JLabel id='batchWeightLabel'/> + </cell> + <cell weightx='1.0'> + <JTextField id='batchWeightField'/> + </cell> + </row> - <!-- Incoming Batch Species --> - <row> - <cell anchor='west'> - <JLabel id='speciesLabel'/> - </cell> - <cell weightx='1.0'> - <JTextField id='speciesField'/> - </cell> - </row> + <!-- Sample Total weight --> + <row> + <cell anchor='west'> + <JLabel id='sampleWeightLabel'/> + </cell> + <cell weightx='1.0'> + <JTextField id='sampleWeightField'/> + </cell> + </row> - <!-- Incoming Batch Total weight --> - <row> - <cell anchor='west'> - <JLabel id='batchWeightLabel'/> - </cell> - <cell weightx='1.0'> - <JTextField id='batchWeightField'/> - </cell> - </row> + </Table> - <!-- Sample Total weight --> - <row> - <cell anchor='west'> - <JLabel id='sampleWeightLabel'/> - </cell> - <cell weightx='1.0'> - <JTextField id='sampleWeightField'/> - </cell> - </row> + <JScrollPane id='tableScrollPane' constraints='BorderLayout.CENTER'> + <JXTable id='table'/> + </JScrollPane> - </Table> - - <JScrollPane id='tableScrollPane' constraints='BorderLayout.CENTER'> - <JXTable id='table'/> - </JScrollPane> - - <!-- actions --> - <JPanel id='actionPanel' layout='{new GridLayout(1, 0)}' - constraints='BorderLayout.SOUTH'> - <JButton id='cancelButton' onActionPerformed='handler.cancel()'/> - <JButton id='saveButton' onActionPerformed='handler.save()'/> - </JPanel> - + <!-- actions --> + <JPanel id='actionPanel' layout='{new GridLayout(1, 0)}' + constraints='BorderLayout.SOUTH'> + <JButton id='cancelButton' onActionPerformed='handler.cancel()'/> + <JButton id='saveButton' onActionPerformed='handler.save()'/> </JPanel> - <!-- Messages report --> - <JPanel id='messagePanel' layout='{new GridLayout()}'> - <JScrollPane columnHeaderView='{errorTable.getTableHeader()}'> - <JTable id='errorTable'/> - </JScrollPane> - </JPanel> - </JSplitPane> - </JPanel> Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java 2013-01-31 08:45:23 UTC (rev 275) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java 2013-01-31 08:47:56 UTC (rev 276) @@ -30,6 +30,8 @@ import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.ui.swing.TuttiUI; +import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI; +import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIHandler; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SampleCategory; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SampleCategoryType; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchRowModel; @@ -47,6 +49,9 @@ import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.List; +import jaxx.runtime.SwingUtil; +import jaxx.runtime.swing.CardLayout2Ext; +import jaxx.runtime.validator.swing.SwingValidator; /** * Handler of {@link SplitSpeciesBatchUI}. @@ -75,12 +80,12 @@ */ private final SplitSpeciesBatchUI ui; - public SplitSpeciesBatchUIHandler(SpeciesBatchUI parentUi, + public SplitSpeciesBatchUIHandler(EditCatchesUI parentUi, SplitSpeciesBatchUI ui) { super(parentUi.getHandler().getContext(), SplitSpeciesBatchRowModel.PROPERTY_CATEGORY_VALUE, SplitSpeciesBatchRowModel.PROPERTY_WEIGHT); - this.parentUi = parentUi; + this.parentUi = parentUi.getSpeciesTabContent(); this.ui = ui; } @@ -145,6 +150,11 @@ } @Override + public SwingValidator<SplitSpeciesBatchUIModel> getValidator() { + return ui.getValidator(); + } + + @Override public void beforeInitUI() { SplitSpeciesBatchUIModel model = new SplitSpeciesBatchUIModel(); @@ -200,9 +210,6 @@ initTable(getTable()); - SwingValidatorUtil.installUI(ui.getErrorTable(), - new SwingValidatorMessageTableRenderer()); - listenValidatorValid(ui.getValidator(), model); } @@ -211,6 +218,15 @@ if (log.isInfoEnabled()) { log.info("closing: " + ui); } + + // evict model from validator + ui.getValidator().setBean(null); + + // when canceling always invalid model + getModel().setValid(false); + + EditCatchesUI parent = SwingUtil.getParentContainer(ui, EditCatchesUI.class); + parent.getHandler().setSelectedCard(EditCatchesUIHandler.MAIN_CARD); } //------------------------------------------------------------------------// @@ -223,15 +239,7 @@ if (log.isInfoEnabled()) { log.info("Cancel UI " + ui); } - - // evict model from validator - ui.getValidator().setBean(null); - - // when canceling always invalid model - getModel().setValid(false); - - // close dialog - closeDialog(ui); + closeUI(ui); } //------------------------------------------------------------------------// @@ -299,7 +307,11 @@ log.info("Save UI " + ui); } - closeDialog(ui); + EditCatchesUI parent = SwingUtil.getParentContainer(ui, EditCatchesUI.class); + parent.getSpeciesTabContent().getHandler().splitBatch(getModel()); + + // close dialog + closeUI(ui); } //------------------------------------------------------------------------// Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/CaracteristicTabUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/CaracteristicTabUIHandler.java 2013-01-31 08:45:23 UTC (rev 275) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/CaracteristicTabUIHandler.java 2013-01-31 08:47:56 UTC (rev 276) @@ -40,6 +40,7 @@ import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIHandler; import java.util.List; import jaxx.runtime.swing.editor.bean.BeanComboBox; +import jaxx.runtime.validator.swing.SwingValidator; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -106,6 +107,11 @@ public M getModel() { return (M) getUI().getModel(); } + + @Override + public SwingValidator<M> getValidator() { + return null; + } @Override protected void onAfterSelectedRowChanged(int oldRowIndex, Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUIHandler.java 2013-01-31 08:45:23 UTC (rev 275) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUIHandler.java 2013-01-31 08:47:56 UTC (rev 276) @@ -37,6 +37,7 @@ import fr.ifremer.tutti.ui.swing.util.editor.CaracteristicValueRenderer; import java.util.List; import jaxx.runtime.swing.editor.bean.BeanComboBox; +import jaxx.runtime.validator.swing.SwingValidator; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jdesktop.swingx.JXTable; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUIHandler.java 2013-01-31 08:45:23 UTC (rev 275) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUIHandler.java 2013-01-31 08:47:56 UTC (rev 276) @@ -36,6 +36,7 @@ import fr.ifremer.tutti.ui.swing.util.editor.CaracteristicValueEditor; import fr.ifremer.tutti.ui.swing.util.editor.CaracteristicValueRenderer; import jaxx.runtime.swing.editor.bean.BeanComboBox; +import jaxx.runtime.validator.swing.SwingValidator; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jdesktop.swingx.JXTable; @@ -207,7 +208,7 @@ table.setColumnModel(columnModel); initTable(table); } - + //------------------------------------------------------------------------// //-- Public methods --// //------------------------------------------------------------------------// Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIHandler.java 2013-01-31 08:45:23 UTC (rev 275) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIHandler.java 2013-01-31 08:47:56 UTC (rev 276) @@ -125,4 +125,9 @@ return ui.getModel(); } + @Override + public SwingValidator<EditProgramUIModel> getValidator() { + return ui.getValidator(); + } + } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesTableModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesTableModel.java 2013-01-31 08:45:23 UTC (rev 275) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesTableModel.java 2013-01-31 08:47:56 UTC (rev 276) @@ -101,7 +101,6 @@ result.setWeightEnabled(true); result.setCountIfNoFrequencyEnabled(true); result.setCalcifySampleEnabled(true); - result.setValid(false); return result; } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java 2013-01-31 08:45:23 UTC (rev 275) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java 2013-01-31 08:47:56 UTC (rev 276) @@ -140,6 +140,11 @@ } @Override + public SwingValidator<EditProtocolUIModel> getValidator() { + return ui.getValidator(); + } + + @Override public void beforeInitUI() { EditProtocolUIModel model = new EditProtocolUIModel(); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiTabContainerUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiTabContainerUIHandler.java 2013-01-31 08:45:23 UTC (rev 275) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiTabContainerUIHandler.java 2013-01-31 08:47:56 UTC (rev 276) @@ -31,6 +31,7 @@ import fr.ifremer.tutti.ui.swing.TuttiUIContext; import java.awt.Component; import javax.swing.DefaultSingleSelectionModel; +import javax.swing.Icon; import javax.swing.JTabbedPane; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/CustomTab.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/CustomTab.java 2013-01-31 08:45:23 UTC (rev 275) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/CustomTab.java 2013-01-31 08:47:56 UTC (rev 276) @@ -32,6 +32,7 @@ import java.beans.PropertyChangeListener; import javax.swing.JLabel; import javax.swing.JPanel; +import jaxx.runtime.SwingUtil; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -58,8 +59,6 @@ public CustomTab(AbstractTuttiBeanUIModel model) { this.model = model; - title.setText(_(model.getTitle())); - setBackground(null); this.model.addPropertyChangeListener(AbstractTuttiBeanUIModel.PROPERTY_MODIFY, new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent evt) { @@ -71,6 +70,14 @@ CustomTab.this.title.setText(title); } }); + + setBackground(null); + + title.setText(_(model.getTitle())); + String actionIcon = model.getIcon(); + if (actionIcon != null) { + title.setIcon(SwingUtil.createActionIcon(actionIcon)); + } add(title); } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/SwingValidatorMessageWidget.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/SwingValidatorMessageWidget.java 2013-01-31 08:45:23 UTC (rev 275) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/SwingValidatorMessageWidget.java 2013-01-31 08:47:56 UTC (rev 276) @@ -45,6 +45,8 @@ import javax.swing.JToggleButton; import javax.swing.KeyStroke; import javax.swing.ListSelectionModel; +import javax.swing.event.TableModelEvent; +import javax.swing.event.TableModelListener; import jaxx.runtime.SwingUtil; import jaxx.runtime.validator.swing.SwingValidator; import jaxx.runtime.validator.swing.SwingValidatorMessageTableModel; @@ -55,6 +57,7 @@ import org.jdesktop.swingx.JXTitledPanel; import static org.nuiton.i18n.I18n._; +import org.nuiton.validator.NuitonValidatorScope; /** * Button which opens a popup containing a table with the errors found @@ -76,8 +79,58 @@ protected Point popupPosition = null; public SwingValidatorMessageWidget() { - super(SwingUtil.createActionIcon("table-error")); + super(SwingUtil.createActionIcon("alert-none")); + setToolTipText(_("tutti.validator.alert.none")); + errorTableModel.addTableModelListener(new TableModelListener() { + + public void tableChanged(TableModelEvent e) { + int alerts = errorTableModel.getRowCount(); + String label; + switch (alerts) { + case 0: + label = "tutti.validator.alert.none"; + break; + case 1: + label = "tutti.validator.alert.one"; + break; + default: + label = "tutti.validator.alert.several"; + } + + NuitonValidatorScope maxScope; + String icon; + if (alerts == 0) { + maxScope = null; + icon = "alert-none"; + + } else { + maxScope = NuitonValidatorScope.INFO; + for (int i = 0 ; i < alerts ; i++) { + NuitonValidatorScope scope = errorTableModel.getRow(i).getScope(); + int diff = scope.compareTo(maxScope); + if (diff < 0) { + maxScope = scope; + } + } + switch (maxScope) { + case INFO: + icon = "alert-info"; + break; + case WARNING: + icon = "alert-warning"; + break; + default: + icon = "alert-error"; + + } + } + + setToolTipText(_(label, alerts)); + setIcon(SwingUtil.createActionIcon(icon)); + } + }); + errorTable.setModel(errorTableModel); errorTable.setRowSelectionAllowed(true); errorTable.setAutoCreateRowSorter(true); @@ -105,18 +158,6 @@ cm.setDragInsets(cr.getDragInsets()); cm.registerComponent(popup); - addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - if(isSelected()) { - popup.setVisible(true); - } else { - popup.dispose(); - } - } - }); - popup.addWindowListener(new WindowAdapter() { @Override @@ -138,6 +179,18 @@ }); + addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + if(isSelected()) { + popup.setVisible(true); + } else { + popup.dispose(); + } + } + }); + addHierarchyBoundsListener(new HierarchyBoundsAdapter() { @Override @@ -184,5 +237,5 @@ errorTableModel.clearValidators(); errorTableModel.clear(); } - + } Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties =================================================================== --- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-31 08:45:23 UTC (rev 275) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-31 08:47:56 UTC (rev 276) @@ -123,12 +123,14 @@ tutti.label.catches.macroWasteTotalWeight=Poids TOTAL (kg) tutti.label.catches.planktonTotalSampleWeight=Poids total échantillonné tutti.label.catches.planktonTotalWeight=Poids total +tutti.label.catches.speciesTotalInertWeight=Poids inerte (kg) +tutti.label.catches.speciesTotalLivingNotItemizedWeight=Poids vivant non détaillé (kg) tutti.label.catches.speciesTotalSampleSortedWeight=Poids VRAC trié (kg) tutti.label.catches.speciesTotalSortedWeight=Poids total VRAC (kg) tutti.label.catches.speciesTotalUnsortedWeight=Poids total HORS VRAC (kg) tutti.label.catches.speciesTotalWeight=Poids TOTAL (kg) tutti.label.comment=Commentaire -tutti.label.createSpeciesBatch.batchWeight=Poids du lot +tutti.label.createSpeciesBatch.batchWeight=Poids du lot (kg) tutti.label.createSpeciesBatch.sortedUnsortedCategory=V / HV tutti.label.createSpeciesBatch.species=Espèce du lot tutti.label.cruise=Campagne @@ -303,16 +305,16 @@ tutti.table.species.batch.header.number=Nombre tutti.table.species.batch.header.sexCategory=Sexe tutti.table.species.batch.header.sizeCategory=Class. Tri -tutti.table.species.batch.header.sortedUnsortedCategory=V/HV +tutti.table.species.batch.header.sortedUnsortedCategory=V/HV (kg) tutti.table.species.batch.header.species=Espèce tutti.table.species.batch.header.toConfirm=A Confirmer -tutti.table.species.batch.header.weight=Poids sous-échantillonné -tutti.table.species.frequency.header.computedWeight=Poids calculé +tutti.table.species.batch.header.weight=Poids sous-échantillonné (kg) +tutti.table.species.frequency.header.computedWeight=Poids calculé (kg) tutti.table.species.frequency.header.lengthStep=Classe de taille tutti.table.species.frequency.header.number=Nombre -tutti.table.species.frequency.header.weight=Poids observé +tutti.table.species.frequency.header.weight=Poids observé (kg) tutti.table.species.sampleCategory.header.category=Catégorie -tutti.table.species.sampleCategory.header.weight=Poids +tutti.table.species.sampleCategory.header.weight=Poids (kg) tutti.timeeditor.H=H tutti.title.about=À propos de Tutti tutti.title.choose.protocolExportFile=Choisir le fichier où exporter le protocole @@ -333,7 +335,7 @@ tutti.title.noSelectedProtocol=Pas de protocol sélectionné tutti.title.selectedCruise=Campagne %s tutti.title.selectedProgram=Série de campagne %s -tutti.title.selectedProtocol=Protocol %s +tutti.title.selectedProtocol=Protocole %s tutti.title.splitBatch=Catégoriser un lot tutti.title.validate.operations=Validation des opérations de pêches (%s) tutti.to.be.done=< A FAIRE > @@ -342,10 +344,13 @@ tutti.update.application.url.description= tutti.update.database.url.description= tutti.update.location.description= +tutti.validator.alert.none=Aucune alerte +tutti.validator.alert.one=1 alerte +tutti.validator.alert.several=%s alertes tutti.validator.error.comment.too.long=Taille de commentaire trop longue (limitée à %s caractères) tutti.validator.error.createSpeciesBatch.batchWeight.invalidValue=Le poids du lot doit être strictement positif tutti.validator.error.createSpeciesBatch.batchWeight.required=Le poids du lot est obligatoire -tutti.validator.error.createSpeciesBatch.sortedUnsortedCategory.required=LA catégorie Vrac / Hors Vrac est obligatoire +tutti.validator.error.createSpeciesBatch.sortedUnsortedCategory.required=La catégorie Vrac / Hors Vrac est obligatoire tutti.validator.error.createSpeciesBatch.species.required=L'espèce est obligatoire tutti.validator.error.createSpeciesBatch.speciesAndCategory.notAvailable=Couple (espèce - Vrac/Hors Vrac) déjà utilisée tutti.validator.error.cruise.beginDate.required=La date de début est obligatoire Added: trunk/tutti-ui-swing/src/main/resources/icons/action-alert-error.png =================================================================== (Binary files differ) Property changes on: trunk/tutti-ui-swing/src/main/resources/icons/action-alert-error.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/tutti-ui-swing/src/main/resources/icons/action-alert-info.png =================================================================== (Binary files differ) Property changes on: trunk/tutti-ui-swing/src/main/resources/icons/action-alert-info.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/tutti-ui-swing/src/main/resources/icons/action-alert-none.png =================================================================== (Binary files differ) Property changes on: trunk/tutti-ui-swing/src/main/resources/icons/action-alert-none.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/tutti-ui-swing/src/main/resources/icons/action-alert-warning.png =================================================================== (Binary files differ) Property changes on: trunk/tutti-ui-swing/src/main/resources/icons/action-alert-warning.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/tutti-ui-swing/src/main/resources/icons/action-protocol.png =================================================================== (Binary files differ) Property changes on: trunk/tutti-ui-swing/src/main/resources/icons/action-protocol.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream
participants (1)
-
kmorin@users.forge.codelutin.com