r129 - 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/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/swing/content/operation/catches/plankton java/fr/ifremer/tu
Author: tchemit Date: 2012-12-29 21:50:48 +0100 (Sat, 29 Dec 2012) New Revision: 129 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/129 Log: refs #1812: [Ecran Trait] Tableaux de pmfm (utilisation BeanComboBox) + am?\195?\169lioration code clean code improve table api (add isRowValid method on handler (should be implemented on each table) Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SampleCategoryType.java Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/AbstractTuttiBatchTableUIHandler.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/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/SpeciesBatchRowModel.java 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/frequency/SpeciesFrequencyUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSampleCategoryUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentRowModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTableModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingRowModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUI.jaxx 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/GearShootingTabUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTableModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyRowModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUI.jaxx 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/HydrologyTabUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTableModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/AttachmentEditorUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/CaracteristicValueEditor.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/CaracteristicValueRenderer.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/CaracteristicRow.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/AbstractTuttiUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiUIHandler.java 2012-12-29 15:32:03 UTC (rev 128) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiUIHandler.java 2012-12-29 20:50:48 UTC (rev 129) @@ -38,6 +38,7 @@ import jaxx.runtime.swing.editor.bean.BeanComboBox; import jaxx.runtime.swing.editor.bean.BeanDoubleList; import jaxx.runtime.swing.renderer.DecoratorListCellRenderer; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jdesktop.swingx.JXDatePicker; @@ -165,12 +166,16 @@ List<E> data, E selectedData) { + Preconditions.checkNotNull(comboBox, "No comboBox!"); + Class<E> beanType = (Class<E>) comboBox.getHandler().getTargetClass(); + Preconditions.checkNotNull(beanType, "No beanType on the combobox!"); + Decorator<E> decorator = getDecorator(beanType, null); if (log.isInfoEnabled()) { - log.info("entity list [" + beanType.getName() + "] : " + + log.info("entity comboBox list [" + beanType.getName() + "] : " + (data == null ? 0 : data.size())); } @@ -296,7 +301,6 @@ if (DecoratorService.LabelAware.class.isAssignableFrom(type)) { decorator = getDecorator(DecoratorService.LabelAware.class, null); - } } Preconditions.checkNotNull(decorator); @@ -336,7 +340,6 @@ }); } - protected void listModelIsModify(AbstractTuttiBeanUIModel model) { model.addPropertyChangeListener(new PropertyChangeListener() { @@ -352,4 +355,13 @@ } }); } + + protected <B> void selectFirstInCombo(BeanComboBox<B> combo) { + List<B> data = combo.getData(); + B selectedItem = null; + if (CollectionUtils.isNotEmpty(data)) { + selectedItem = data.get(0); + } + combo.setSelectedItem(selectedItem); + } } 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 2012-12-29 15:32:03 UTC (rev 128) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java 2012-12-29 20:50:48 UTC (rev 129) @@ -110,7 +110,7 @@ List<Person> users = persistenceService.getAllPerson(); - EditCruiseUIModel model = ui.getModel(); + EditCruiseUIModel model = getModel(); initBeanComboBox(ui.getSurveyComboBox(), persistenceService.getAllProgram(), @@ -161,7 +161,7 @@ public void save() { - EditCruiseUIModel model = ui.getModel(); + EditCruiseUIModel model = getModel(); Cruise bean = model.toBean(); 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 2012-12-29 15:32:03 UTC (rev 128) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java 2012-12-29 20:50:48 UTC (rev 129) @@ -136,7 +136,7 @@ @Override public void afterInitUI() { - SelectCruiseUIModel model = ui.getModel(); + SelectCruiseUIModel model = getModel(); initBeanComboBox(ui.getProgramCombobox(), model.getPrograms(), @@ -198,7 +198,7 @@ @Override public void onCloseUI() { - PropertyChangeListener[] listeners = ui.getModel().getPropertyChangeListeners(); + PropertyChangeListener[] listeners = getModel().getPropertyChangeListeners(); for (PropertyChangeListener listener : listeners) { getModel().removePropertyChangeListener(listener); } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/AbstractTuttiBatchTableUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/AbstractTuttiBatchTableUIHandler.java 2012-12-29 15:32:03 UTC (rev 128) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/AbstractTuttiBatchTableUIHandler.java 2012-12-29 20:50:48 UTC (rev 129) @@ -68,8 +68,6 @@ protected abstract void saveSelectedRowIfRequired(); - protected abstract boolean isRowValid(R row); - protected abstract void saveRow(R row); protected abstract FishingOperation getFishingOperation(); 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 2012-12-29 15:32:03 UTC (rev 128) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2012-12-29 20:50:48 UTC (rev 129) @@ -162,7 +162,7 @@ ui.getFishingOperationValidPanel().remove( ui.getFishingOperationResetRadio()); - final EditFishingOperationUIModel model = ui.getModel(); + final EditFishingOperationUIModel model = getModel(); initUI(ui); @@ -174,17 +174,17 @@ // // public void intervalAdded(ListDataEvent e) { // log.info(">>>>>>>>>> intervalAdded " + saisisseurModel.getSelected()); -// ui.getModel().setSaisisseur(saisisseurModel.getSelected()); +// getModel().setSaisisseur(saisisseurModel.getSelected()); // } // // public void intervalRemoved(ListDataEvent e) { // log.info(">>>>>>>>>> intervalRemoved " + saisisseurModel.getSelected()); -// ui.getModel().setSaisisseur(saisisseurModel.getSelected()); +// getModel().setSaisisseur(saisisseurModel.getSelected()); // } // // public void contentsChanged(ListDataEvent e) { // log.info(">>>>>>>>>> contentsChanged " + saisisseurModel.getSelected()); -// ui.getModel().setSaisisseur(saisisseurModel.getSelected()); +// getModel().setSaisisseur(saisisseurModel.getSelected()); // } // }); @@ -249,7 +249,7 @@ } ); CaracteristicMap gearShootingCaracteristics = model.getGearShootingCaracteristics(); - ui.getModel().setGearShootingCaracteristics(gearShootingCaracteristics); + getModel().setGearShootingCaracteristics(gearShootingCaracteristics); gearShootingModel.setGearShootingCaracteristics(gearShootingCaracteristics); //init environment @@ -266,7 +266,7 @@ } ); CaracteristicMap environmentCaracteristics = model.getEnvironmentCaracteristics(); - ui.getModel().setEnvironmentCaracteristics(environmentCaracteristics); + getModel().setEnvironmentCaracteristics(environmentCaracteristics); environmentModel.setEnvironmentCaracteristics(environmentCaracteristics); //init hydrology 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 2012-12-29 15:32:03 UTC (rev 128) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java 2012-12-29 20:50:48 UTC (rev 129) @@ -43,8 +43,6 @@ import org.jdesktop.swingx.table.DefaultTableColumnModelExt; import org.nuiton.util.decorator.Decorator; -import javax.swing.table.TableCellRenderer; -import javax.swing.table.TableColumnModel; import java.util.List; import static org.nuiton.i18n.I18n.n_; @@ -99,64 +97,7 @@ return getModel().getFishingOperation(); } - @Override - protected TableColumnModel createTableColumnModel(TableCellRenderer defaultRenderer) { - DefaultTableColumnModelExt columnModel = - new DefaultTableColumnModelExt(); - - List<Species> allSpecies = persistenceService.getAllSpecies(); - - { - // Species (by code) column - - Decorator<Species> decorator = getDecorator( - Species.class, DecoratorService.SPECIES_BY_CODE); - - addComboDataColumnToModel(columnModel, - AccidentalBatchTableModel.SPECIES_BY_CODE, - decorator, allSpecies); - } - - { - // Species (by genusCode) column - - Decorator<Species> decorator = getDecorator( - Species.class, DecoratorService.SPECIES_BY_GENUS); - - addComboDataColumnToModel(columnModel, - AccidentalBatchTableModel.SPECIES_BY_GENUS_CODE, - decorator, allSpecies); - - } - - { // Weight column - - addFloatColumnToModel(columnModel, - AccidentalBatchTableModel.WEIGHT, - TuttiUI.DECIMAL3_PATTERN); - } - - { // Comment column - - addColumnToModel(columnModel, - LongTextCellComponent.newEditor(ui.getLongTextEditor()), - LongTextCellComponent.newRender(n_("tutti.tooltip.comment.none")), - AccidentalBatchTableModel.COMMENT); - } - - { // File column - - addColumnToModel(columnModel, - AttachmentCellComponent.newEditor(ui.getAttachmentEditor()), - AttachmentCellComponent.newRender( - getDecorator(Attachment.class, null), - n_("tutti.tooltip.attachment.none")), - AccidentalBatchTableModel.ATTACHMENTS); - } - return columnModel; - } - @Override protected void onRowModified(AccidentalBatchRowModel row, String propertyName, @@ -328,8 +269,59 @@ JXTable table = getTable(); // create table column model - TableColumnModel columnModel = createTableColumnModel(table.getDefaultRenderer(Object.class)); + DefaultTableColumnModelExt columnModel = + new DefaultTableColumnModelExt(); + List<Species> allSpecies = persistenceService.getAllSpecies(); + + { + // Species (by code) column + + Decorator<Species> decorator = getDecorator( + Species.class, DecoratorService.SPECIES_BY_CODE); + + addComboDataColumnToModel(columnModel, + AccidentalBatchTableModel.SPECIES_BY_CODE, + decorator, allSpecies); + } + + { + // Species (by genusCode) column + + Decorator<Species> decorator = getDecorator( + Species.class, DecoratorService.SPECIES_BY_GENUS); + + addComboDataColumnToModel(columnModel, + AccidentalBatchTableModel.SPECIES_BY_GENUS_CODE, + decorator, allSpecies); + + } + + { // Weight column + + addFloatColumnToModel(columnModel, + AccidentalBatchTableModel.WEIGHT, + TuttiUI.DECIMAL3_PATTERN); + } + + { // Comment column + + addColumnToModel(columnModel, + LongTextCellComponent.newEditor(ui.getLongTextEditor()), + LongTextCellComponent.newRender(n_("tutti.tooltip.comment.none")), + AccidentalBatchTableModel.COMMENT); + } + + { // File column + + addColumnToModel(columnModel, + AttachmentCellComponent.newEditor(ui.getAttachmentEditor()), + AttachmentCellComponent.newRender( + getDecorator(Attachment.class, null), + n_("tutti.tooltip.attachment.none")), + AccidentalBatchTableModel.ATTACHMENTS); + } + // create table model AccidentalBatchTableModel tableModel = new AccidentalBatchTableModel(columnModel); 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 2012-12-29 15:32:03 UTC (rev 128) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java 2012-12-29 20:50:48 UTC (rev 129) @@ -43,8 +43,6 @@ import org.jdesktop.swingx.table.DefaultTableColumnModelExt; import org.nuiton.util.decorator.Decorator; -import javax.swing.table.TableCellRenderer; -import javax.swing.table.TableColumnModel; import java.util.List; import static org.nuiton.i18n.I18n.n_; @@ -103,94 +101,7 @@ return getModel().getFishingOperation(); } -// @Override -// protected String[] getRowPropertiesToIgnore() { -// return new String[]{ -// BenthosBatchRowModel.PROPERTY_SAMPLE_WEIGHT, -// BenthosBatchRowModel.PROPERTY_SAMPLING_RATIO -// }; -// } - @Override - protected TableColumnModel createTableColumnModel(TableCellRenderer defaultRenderer) { - - DefaultTableColumnModelExt columnModel = - new DefaultTableColumnModelExt(); - - List<Species> allSpecies = persistenceService.getAllSpecies(); - - { - // Species (by code) column - - Decorator<Species> decorator = getDecorator( - Species.class, DecoratorService.SPECIES_BY_CODE); - - addComboDataColumnToModel(columnModel, - BenthosBatchTableModel.SPECIES_BY_CODE, - decorator, allSpecies); - } - - { - // Species (by genusCode) column - - Decorator<Species> decorator = getDecorator( - Species.class, DecoratorService.SPECIES_BY_GENUS); - - addComboDataColumnToModel(columnModel, - BenthosBatchTableModel.SPECIES_BY_GENUS_CODE, - decorator, allSpecies); - - } - - { // Weight column - - addFloatColumnToModel(columnModel, - BenthosBatchTableModel.WEIGHT, - TuttiUI.DECIMAL3_PATTERN); - } - - { // Number column - - addIntegerColumnToModel(columnModel, - BenthosBatchTableModel.NUMBER, - TuttiUI.INT_3_DIGITS_PATTERN); - } - - { // Sample weight column - - addFloatColumnToModel(columnModel, - BenthosBatchTableModel.SAMPLE_WEIGHT, - TuttiUI.DECIMAL3_PATTERN); - } - - { // Comment column - - addColumnToModel(columnModel, - LongTextCellComponent.newEditor(ui.getLongTextEditor()), - LongTextCellComponent.newRender(n_("tutti.tooltip.comment.none")), - BenthosBatchTableModel.COMMENT); - } - - { // File column - - addColumnToModel(columnModel, - AttachmentCellComponent.newEditor(ui.getAttachmentEditor()), - AttachmentCellComponent.newRender( - getDecorator(Attachment.class, null), - n_("tutti.tooltip.attachment.none")), - BenthosBatchTableModel.ATTACHMENTS); - } - - { // Species to confirm column - - addBooleanColumnToModel(columnModel, - BenthosBatchTableModel.SPECIES_TO_CONFIRM, - getTable()); - } - return columnModel; - } - - @Override protected void onRowModified(BenthosBatchRowModel row, String propertyName, Object oldValue, @@ -364,8 +275,81 @@ JXTable table = getTable(); // create table column model - TableColumnModel columnModel = createTableColumnModel(table.getDefaultRenderer(Object.class)); + DefaultTableColumnModelExt columnModel = + new DefaultTableColumnModelExt(); + + List<Species> allSpecies = persistenceService.getAllSpecies(); + + { + // Species (by code) column + + Decorator<Species> decorator = getDecorator( + Species.class, DecoratorService.SPECIES_BY_CODE); + + addComboDataColumnToModel(columnModel, + BenthosBatchTableModel.SPECIES_BY_CODE, + decorator, allSpecies); + } + + { + // Species (by genusCode) column + + Decorator<Species> decorator = getDecorator( + Species.class, DecoratorService.SPECIES_BY_GENUS); + + addComboDataColumnToModel(columnModel, + BenthosBatchTableModel.SPECIES_BY_GENUS_CODE, + decorator, allSpecies); + + } + + { // Weight column + + addFloatColumnToModel(columnModel, + BenthosBatchTableModel.WEIGHT, + TuttiUI.DECIMAL3_PATTERN); + } + + { // Number column + + addIntegerColumnToModel(columnModel, + BenthosBatchTableModel.NUMBER, + TuttiUI.INT_3_DIGITS_PATTERN); + } + + { // Sample weight column + + addFloatColumnToModel(columnModel, + BenthosBatchTableModel.SAMPLE_WEIGHT, + TuttiUI.DECIMAL3_PATTERN); + } + + { // Comment column + + addColumnToModel(columnModel, + LongTextCellComponent.newEditor(ui.getLongTextEditor()), + LongTextCellComponent.newRender(n_("tutti.tooltip.comment.none")), + BenthosBatchTableModel.COMMENT); + } + + { // File column + + addColumnToModel(columnModel, + AttachmentCellComponent.newEditor(ui.getAttachmentEditor()), + AttachmentCellComponent.newRender( + getDecorator(Attachment.class, null), + n_("tutti.tooltip.attachment.none")), + BenthosBatchTableModel.ATTACHMENTS); + } + + { // Species to confirm column + + addBooleanColumnToModel(columnModel, + BenthosBatchTableModel.SPECIES_TO_CONFIRM, + getTable()); + } + // create table model BenthosBatchTableModel tableModel = new BenthosBatchTableModel(columnModel); 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 2012-12-29 15:32:03 UTC (rev 128) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/macrowaste/MacroWasteBatchUIHandler.java 2012-12-29 20:50:48 UTC (rev 129) @@ -42,8 +42,6 @@ import org.jdesktop.swingx.table.DefaultTableColumnModelExt; import org.nuiton.util.decorator.Decorator; -import javax.swing.table.TableCellRenderer; -import javax.swing.table.TableColumnModel; import java.util.List; import static org.nuiton.i18n.I18n.n_; @@ -100,68 +98,6 @@ } @Override - protected TableColumnModel createTableColumnModel(TableCellRenderer defaultRenderer) { - - DefaultTableColumnModelExt columnModel = - new DefaultTableColumnModelExt(); - - { - // MacroWaste Category column - - Decorator<CaracteristicQualitativeValue> decorator = getDecorator( - CaracteristicQualitativeValue.class, null); - - addComboDataColumnToModel(columnModel, - MacroWasteBatchTableModel.MACRO_WASTE_CATEGORY, - decorator, persistenceService.getMacroWasteCategoryCaracteristic().getQualitativeValue()); - } - - { - // MacroWaste Size Category column - - Decorator<CaracteristicQualitativeValue> decorator = getDecorator( - CaracteristicQualitativeValue.class, null); - - addComboDataColumnToModel(columnModel, - MacroWasteBatchTableModel.MACRO_WASTE_SIZE_CATEGORY, - decorator, persistenceService.getMacroWasteSizeCategoryCaracteristic().getQualitativeValue()); - } - - { // Weight column - - addFloatColumnToModel(columnModel, - MacroWasteBatchTableModel.WEIGHT, - TuttiUI.DECIMAL3_PATTERN); - } - - { // Number column - - addIntegerColumnToModel(columnModel, - MacroWasteBatchTableModel.NUMBER, - TuttiUI.INT_3_DIGITS_PATTERN); - } - - { // Comment column - - addColumnToModel(columnModel, - LongTextCellComponent.newEditor(ui.getLongTextEditor()), - LongTextCellComponent.newRender(n_("tutti.tooltip.comment.none")), - MacroWasteBatchTableModel.COMMENT); - } - - { // File column - - addColumnToModel(columnModel, - AttachmentCellComponent.newEditor(ui.getAttachmentEditor()), - AttachmentCellComponent.newRender( - getDecorator(Attachment.class, null), - n_("tutti.tooltip.attachment.none")), - MacroWasteBatchTableModel.ATTACHMENTS); - } - return columnModel; - } - - @Override protected void onRowModified(MacroWasteBatchRowModel row, String propertyName, Object oldValue, @@ -334,8 +270,63 @@ JXTable table = getTable(); // create table column model - TableColumnModel columnModel = createTableColumnModel(table.getDefaultRenderer(Object.class)); + DefaultTableColumnModelExt columnModel = + new DefaultTableColumnModelExt(); + { + // MacroWaste Category column + + Decorator<CaracteristicQualitativeValue> decorator = getDecorator( + CaracteristicQualitativeValue.class, null); + + addComboDataColumnToModel(columnModel, + MacroWasteBatchTableModel.MACRO_WASTE_CATEGORY, + decorator, persistenceService.getMacroWasteCategoryCaracteristic().getQualitativeValue()); + } + + { + // MacroWaste Size Category column + + Decorator<CaracteristicQualitativeValue> decorator = getDecorator( + CaracteristicQualitativeValue.class, null); + + addComboDataColumnToModel(columnModel, + MacroWasteBatchTableModel.MACRO_WASTE_SIZE_CATEGORY, + decorator, persistenceService.getMacroWasteSizeCategoryCaracteristic().getQualitativeValue()); + } + + { // Weight column + + addFloatColumnToModel(columnModel, + MacroWasteBatchTableModel.WEIGHT, + TuttiUI.DECIMAL3_PATTERN); + } + + { // Number column + + addIntegerColumnToModel(columnModel, + MacroWasteBatchTableModel.NUMBER, + TuttiUI.INT_3_DIGITS_PATTERN); + } + + { // Comment column + + addColumnToModel(columnModel, + LongTextCellComponent.newEditor(ui.getLongTextEditor()), + LongTextCellComponent.newRender(n_("tutti.tooltip.comment.none")), + MacroWasteBatchTableModel.COMMENT); + } + + { // File column + + addColumnToModel(columnModel, + AttachmentCellComponent.newEditor(ui.getAttachmentEditor()), + AttachmentCellComponent.newRender( + getDecorator(Attachment.class, null), + n_("tutti.tooltip.attachment.none")), + MacroWasteBatchTableModel.ATTACHMENTS); + } + // create table model MacroWasteBatchTableModel tableModel = new MacroWasteBatchTableModel(columnModel); 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 2012-12-29 15:32:03 UTC (rev 128) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/plankton/PlanktonBatchUIHandler.java 2012-12-29 20:50:48 UTC (rev 129) @@ -43,8 +43,6 @@ import org.jdesktop.swingx.table.DefaultTableColumnModelExt; import org.nuiton.util.decorator.Decorator; -import javax.swing.table.TableCellRenderer; -import javax.swing.table.TableColumnModel; import java.util.List; import static org.nuiton.i18n.I18n.n_; @@ -99,84 +97,7 @@ return getModel().getFishingOperation(); } -// @Override -// protected String[] getRowPropertiesToIgnore() { -// return new String[]{ -// PlanktonBatchRowModel.PROPERTY_SAMPLE_WEIGHT, -// PlanktonBatchRowModel.PROPERTY_SAMPLING_RATIO -// }; -// } - @Override - protected TableColumnModel createTableColumnModel(TableCellRenderer defaultRenderer) { - - DefaultTableColumnModelExt columnModel = - new DefaultTableColumnModelExt(); - - List<Species> allSpecies = persistenceService.getAllSpecies(); - - { // Species (by code) column - - Decorator<Species> decorator = getDecorator( - Species.class, DecoratorService.SPECIES_BY_CODE); - - addComboDataColumnToModel(columnModel, - PlanktonBatchTableModel.SPECIES_BY_CODE, - decorator, allSpecies); - } - - { // Species (by genusCode) column - - Decorator<Species> decorator = getDecorator( - Species.class, DecoratorService.SPECIES_BY_GENUS); - - addComboDataColumnToModel(columnModel, - PlanktonBatchTableModel.SPECIES_BY_GENUS_CODE, - decorator, allSpecies); - - } - - { // Weight column - - addFloatColumnToModel(columnModel, - PlanktonBatchTableModel.WEIGHT, - TuttiUI.DECIMAL3_PATTERN); - } - - { // Sample weight column - - addColumnToModel(columnModel, - PlanktonBatchTableModel.SAMPLE_WEIGHT); - } - - { // Comment column - - addColumnToModel(columnModel, - LongTextCellComponent.newEditor(ui.getLongTextEditor()), - LongTextCellComponent.newRender(n_("tutti.tooltip.comment.none")), - PlanktonBatchTableModel.COMMENT); - } - - { // File column - - addColumnToModel(columnModel, - AttachmentCellComponent.newEditor(ui.getAttachmentEditor()), - AttachmentCellComponent.newRender( - getDecorator(Attachment.class, null), - n_("tutti.tooltip.attachment.none")), - PlanktonBatchTableModel.ATTACHMENTS); - } - - { // Species to confirm column - - addBooleanColumnToModel(columnModel, - PlanktonBatchTableModel.SPECIES_TO_CONFIRM, - getTable()); - } - return columnModel; - } - - @Override protected void onRowModified(PlanktonBatchRowModel row, String propertyName, Object oldValue, @@ -348,8 +269,70 @@ JXTable table = getTable(); // create table column model - TableColumnModel columnModel = createTableColumnModel(table.getDefaultRenderer(Object.class)); + DefaultTableColumnModelExt columnModel = + new DefaultTableColumnModelExt(); + List<Species> allSpecies = persistenceService.getAllSpecies(); + + { // Species (by code) column + + Decorator<Species> decorator = getDecorator( + Species.class, DecoratorService.SPECIES_BY_CODE); + + addComboDataColumnToModel(columnModel, + PlanktonBatchTableModel.SPECIES_BY_CODE, + decorator, allSpecies); + } + + { // Species (by genusCode) column + + Decorator<Species> decorator = getDecorator( + Species.class, DecoratorService.SPECIES_BY_GENUS); + + addComboDataColumnToModel(columnModel, + PlanktonBatchTableModel.SPECIES_BY_GENUS_CODE, + decorator, allSpecies); + + } + + { // Weight column + + addFloatColumnToModel(columnModel, + PlanktonBatchTableModel.WEIGHT, + TuttiUI.DECIMAL3_PATTERN); + } + + { // Sample weight column + + addColumnToModel(columnModel, + PlanktonBatchTableModel.SAMPLE_WEIGHT); + } + + { // Comment column + + addColumnToModel(columnModel, + LongTextCellComponent.newEditor(ui.getLongTextEditor()), + LongTextCellComponent.newRender(n_("tutti.tooltip.comment.none")), + PlanktonBatchTableModel.COMMENT); + } + + { // File column + + addColumnToModel(columnModel, + AttachmentCellComponent.newEditor(ui.getAttachmentEditor()), + AttachmentCellComponent.newRender( + getDecorator(Attachment.class, null), + n_("tutti.tooltip.attachment.none")), + PlanktonBatchTableModel.ATTACHMENTS); + } + + { // Species to confirm column + + addBooleanColumnToModel(columnModel, + PlanktonBatchTableModel.SPECIES_TO_CONFIRM, + getTable()); + } + // create table model PlanktonBatchTableModel tableModel = new PlanktonBatchTableModel(columnModel); Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SampleCategoryType.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SampleCategoryType.java (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SampleCategoryType.java 2012-12-29 20:50:48 UTC (rev 129) @@ -0,0 +1,49 @@ +package fr.ifremer.tutti.ui.swing.content.operation.catches.species; + +import fr.ifremer.tutti.persistence.entities.data.SampleCategoryEnum; +import fr.ifremer.tutti.service.DecoratorService; + +import static org.nuiton.i18n.I18n._; +import static org.nuiton.i18n.I18n.n_; + +/** + * All sample category types. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.3 + */ +public enum SampleCategoryType implements DecoratorService.LabelAware { + sortedUnsorted( + n_("tutti.sampleCategoryType.sortedUnsorted"), + SampleCategoryEnum.sortedUnsorted), + size( + n_("tutti.sampleCategoryType.size"), + SampleCategoryEnum.size), + sex( + n_("tutti.sampleCategoryType.sex"), + SampleCategoryEnum.sex), + maturity( + n_("tutti.sampleCategoryType.maturity"), + SampleCategoryEnum.maturity), + age( + n_("tutti.sampleCategoryType.age"), + SampleCategoryEnum.age); + + private final String i18nKey; + + private final SampleCategoryEnum type; + + private SampleCategoryType(String i18nKey, SampleCategoryEnum type) { + this.i18nKey = i18nKey; + this.type = type; + } + + @Override + public String getLabel() { + return _(i18nKey); + } + + public SampleCategoryEnum getType() { + return type; + } +} Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SampleCategoryType.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/operation/catches/species/SpeciesBatchRowModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java 2012-12-29 15:32:03 UTC (rev 128) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java 2012-12-29 20:50:48 UTC (rev 129) @@ -98,53 +98,53 @@ public static final String PROPERTY_ATTACHMENTS = "attachments"; /** - * Species observed. + * Is catch is vrac or horsVrac?. * * @since 0.2 */ - protected Species species; + protected final SampleCategory<CaracteristicQualitativeValue> sortedUnsortedSampleCategory; /** - * Is the species need to be confirmed?. + * Weight category (can be null). * * @since 0.2 */ - protected boolean speciesToConfirm; + protected final SampleCategory<CaracteristicQualitativeValue> sizeSampleCategory; /** - * Is catch is vrac or horsVrac?. + * Sex (can be null). * * @since 0.2 */ - protected final SampleCategory<CaracteristicQualitativeValue> sortedUnsortedSampleCategory = new SampleCategory<CaracteristicQualitativeValue>(); + protected final SampleCategory<CaracteristicQualitativeValue> sexSampleCategory; /** - * Weight category (can be null). + * Maturity (can be null). * * @since 0.2 */ - protected final SampleCategory<CaracteristicQualitativeValue> sizeSampleCategory = new SampleCategory<CaracteristicQualitativeValue>(); + protected final SampleCategory<CaracteristicQualitativeValue> maturitySampleCategory; /** - * Sex (can be null). + * Age (can be null). * * @since 0.2 */ - protected final SampleCategory<CaracteristicQualitativeValue> sexSampleCategory = new SampleCategory<CaracteristicQualitativeValue>(); + protected final SampleCategory<Float> ageSampleCategory; /** - * Maturity (can be null). + * Species observed. * * @since 0.2 */ - protected final SampleCategory<CaracteristicQualitativeValue> maturitySampleCategory = new SampleCategory<CaracteristicQualitativeValue>(); + protected Species species; /** - * Age (can be null). + * Is the species need to be confirmed?. * * @since 0.2 */ - protected final SampleCategory<Float> ageSampleCategory = new SampleCategory<Float>(); + protected boolean speciesToConfirm; /** * Observed weight. @@ -206,6 +206,11 @@ public SpeciesBatchRowModel() { super(SpeciesBatch.class, fromBeanBinder, toBeanBinder); frequency = Lists.newArrayList(); + sortedUnsortedSampleCategory = SampleCategory.newSample(SampleCategoryType.sortedUnsorted); + sizeSampleCategory = SampleCategory.newSample(SampleCategoryType.size); + sexSampleCategory = SampleCategory.newSample(SampleCategoryType.sex); + maturitySampleCategory = SampleCategory.newSample(SampleCategoryType.maturity); + ageSampleCategory = SampleCategory.newSample(SampleCategoryType.age); } public SpeciesBatchRowModel(SpeciesBatch aBatch, @@ -455,22 +460,4 @@ public SampleCategory<Float> getAgeSampleCategory() { return ageSampleCategory; } - - public boolean isRowValid() { - boolean result = species != null; - if (result) { - result = weight != null; - - if (!result) { - - // No weight filled, so at least one sample category must be valid - result = sortedUnsortedSampleCategory.isValid() || - sizeSampleCategory.isValid() || - sexSampleCategory.isValid() || - maturitySampleCategory.isValid() || - ageSampleCategory.isValid(); - } - } - return result; - } } 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 2012-12-29 15:32:03 UTC (rev 128) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.jaxx 2012-12-29 20:50:48 UTC (rev 129) @@ -29,6 +29,7 @@ fr.ifremer.tutti.ui.swing.TuttiUIContext fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyUI + fr.ifremer.tutti.ui.swing.content.operation.catches.species.split.SplitSampleCategoryUI fr.ifremer.tutti.ui.swing.util.editor.LongTextEditorUI fr.ifremer.tutti.ui.swing.util.editor.AttachmentEditorUI @@ -80,9 +81,12 @@ <SpeciesFrequencyUI id='frequencyEditor' constructorParams='this'/> + <SplitSampleCategoryUI id='sampleCategoryEditor' constructorParams='this'/> + <LongTextEditorUI id='longTextEditor'/> <AttachmentEditorUI id='attachmentEditor'/> + <Table id='form' fill='both' constraints='BorderLayout.NORTH'> <!-- Poids total / Poids total vrac --> 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 2012-12-29 15:32:03 UTC (rev 128) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java 2012-12-29 20:50:48 UTC (rev 129) @@ -42,8 +42,6 @@ import org.jdesktop.swingx.table.DefaultTableColumnModelExt; import javax.swing.JDialog; -import javax.swing.table.TableCellRenderer; -import javax.swing.table.TableColumnModel; import java.awt.Color; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; @@ -95,41 +93,6 @@ } @Override - protected TableColumnModel createTableColumnModel(TableCellRenderer defaultRenderer) { - - DefaultTableColumnModelExt columnModel = new DefaultTableColumnModelExt(); - - { // LengthStep - - addFloatColumnToModel(columnModel, - SpeciesFrequencyTableModel.LENGTH_STEP, - TuttiUI.DECIMAL1_PATTERN); - } - - { // Number - - addIntegerColumnToModel(columnModel, - SpeciesFrequencyTableModel.NUMBER, - TuttiUI.INT_6_DIGITS_PATTERN); - } - - { // Weight - - addFloatColumnToModel(columnModel, - SpeciesFrequencyTableModel.WEIGHT, - TuttiUI.DECIMAL3_PATTERN); - } - - { // ComputedWeight - - addFloatColumnToModel(columnModel, - SpeciesFrequencyTableModel.COMPUTED_WEIGHT, - TuttiUI.DECIMAL3_PATTERN); - } - return columnModel; - } - - @Override protected void onRowModified(SpeciesFrequencyRowModel row, String propertyName, Object oldValue, @@ -153,6 +116,12 @@ Boolean newValue) { } + @Override + protected boolean isRowValid(SpeciesFrequencyRowModel row) { + //TODO + return true; + } + //------------------------------------------------------------------------// //-- AbstractTuttiUIHandler methods --// //------------------------------------------------------------------------// @@ -186,8 +155,36 @@ JXTable table = getTable(); // create table column model - TableColumnModel columnModel = createTableColumnModel(table.getDefaultRenderer(Object.class)); + DefaultTableColumnModelExt columnModel = new DefaultTableColumnModelExt(); + { // LengthStep + + addFloatColumnToModel(columnModel, + SpeciesFrequencyTableModel.LENGTH_STEP, + TuttiUI.DECIMAL1_PATTERN); + } + + { // Number + + addIntegerColumnToModel(columnModel, + SpeciesFrequencyTableModel.NUMBER, + TuttiUI.INT_6_DIGITS_PATTERN); + } + + { // Weight + + addFloatColumnToModel(columnModel, + SpeciesFrequencyTableModel.WEIGHT, + TuttiUI.DECIMAL3_PATTERN); + } + + { // ComputedWeight + + addFloatColumnToModel(columnModel, + SpeciesFrequencyTableModel.COMPUTED_WEIGHT, + TuttiUI.DECIMAL3_PATTERN); + } + // create table model SpeciesFrequencyTableModel tableModel = new SpeciesFrequencyTableModel(columnModel, model); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSampleCategoryUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSampleCategoryUIHandler.java 2012-12-29 15:32:03 UTC (rev 128) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSampleCategoryUIHandler.java 2012-12-29 20:50:48 UTC (rev 129) @@ -363,7 +363,7 @@ for (CaracteristicQualitativeValue qualitativeValue : data.getQualitativeValue()) { SplitSampleCategoryRowModel newRow = tableModel.createNewRow(); newRow.setCategoryValue(qualitativeValue); - tableModel.addNewRow(tableModel.getRowCount(), newRow); + tableModel.addNewRow(newRow); } } } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentRowModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentRowModel.java 2012-12-29 15:32:03 UTC (rev 128) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentRowModel.java 2012-12-29 20:50:48 UTC (rev 129) @@ -27,24 +27,23 @@ import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; import fr.ifremer.tutti.ui.swing.util.table.CaracteristicRow; -import java.util.Map.Entry; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import org.nuiton.util.beans.Binder; import org.nuiton.util.beans.BinderFactory; +import java.io.Serializable; + /** - * * @author kmorin * @since 0.3 */ public class EnvironmentRowModel extends AbstractTuttiBeanUIModel<CaracteristicRow, EnvironmentRowModel> { - - private static final Log log = LogFactory.getLog(EnvironmentRowModel.class); - + + private static final long serialVersionUID = 1L; + public static final String PROPERTY_KEY = "key"; + public static final String PROPERTY_VALUE = "value"; - + protected static final Binder<CaracteristicRow, EnvironmentRowModel> fromBeanBinder = BinderFactory.newBinder(CaracteristicRow.class, EnvironmentRowModel.class); @@ -52,20 +51,16 @@ protected static final Binder<EnvironmentRowModel, CaracteristicRow> toBeanBinder = BinderFactory.newBinder(EnvironmentRowModel.class, CaracteristicRow.class); - + protected Caracteristic key; - - protected Object value; + protected Serializable value; + public EnvironmentRowModel() { super(CaracteristicRow.class, fromBeanBinder, toBeanBinder); } - - public EnvironmentRowModel(Caracteristic key) { - this(key, null); - } - - public EnvironmentRowModel(Caracteristic key, Object value) { + + public EnvironmentRowModel(Caracteristic key, Serializable value) { this(); this.key = key; this.value = value; @@ -81,14 +76,14 @@ firePropertyChange(PROPERTY_KEY, oldValue, key); } - public Object getValue() { + public Serializable getValue() { return value; } - public void setValue(Object value) { + public void setValue(Serializable value) { Object oldValue = getValue(); this.value = value; firePropertyChange(PROPERTY_VALUE, oldValue, value); } - + } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUI.css 2012-12-29 15:32:03 UTC (rev 128) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUI.css 2012-12-29 20:50:48 UTC (rev 129) @@ -21,6 +21,23 @@ * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ + +BeanComboBox { + i18nPrefix: "tutti.property."; + bean: {model}; +} + +#newRowKey { + showReset: false; + property: selectedCaracteristic; + enabled: {!newRowKey.isEmpty()}; +} + +#addRow { + actionIcon: "add"; + enabled: {!newRowKey.isEmpty() && newRowKey.getSelectedItem() != null}; +} + #environmentTable { selectionMode: {ListSelectionModel.SINGLE_SELECTION}; selectionBackground: {null}; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUI.jaxx 2012-12-29 15:32:03 UTC (rev 128) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUI.jaxx 2012-12-29 20:50:48 UTC (rev 129) @@ -21,28 +21,34 @@ <http://www.gnu.org/licenses/gpl-3.0.html>. #L% --> -<Table implements='fr.ifremer.tutti.ui.swing.TuttiUI<EnvironmentTabUIModel, EnvironmentTabUIHandler>'> - +<Table + implements='fr.ifremer.tutti.ui.swing.TuttiUI<EnvironmentTabUIModel, EnvironmentTabUIHandler>'> + <import> + fr.ifremer.tutti.ui.swing.content.operation.EditFishingOperationUI + fr.ifremer.tutti.ui.swing.util.table.CaracteristicRow + + jaxx.runtime.swing.editor.bean.BeanComboBox + org.jdesktop.swingx.JXTable - fr.ifremer.tutti.ui.swing.content.operation.EditFishingOperationUI + javax.swing.ListSelectionModel java.awt.Color </import> - + <EnvironmentTabUIHandler id='handler' - initializer='getContextValue(EnvironmentTabUIHandler.class)'/> + initializer='getContextValue(EnvironmentTabUIHandler.class)'/> <EnvironmentTabUIModel id='model' - initializer='getContextValue(EnvironmentTabUIModel.class)'/> - + initializer='getContextValue(EnvironmentTabUIModel.class)'/> + <row fill='both'> <cell fill='both' weightx='1'> - <JComboBox id='newRowKey'/> + <BeanComboBox id='newRowKey' constructorParams='this' + genericType='CaracteristicRow'/> </cell> <cell fill='both'> - <JButton id='addRow' actionIcon='add' - onActionPerformed='handler.addRow()'/> + <JButton id='addRow' onActionPerformed='handler.addRow()'/> </cell> </row> <row fill='both' weighty='1'> @@ -65,5 +71,4 @@ } ]]></script> - </Table> \ No newline at end of file Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUIHandler.java 2012-12-29 15:32:03 UTC (rev 128) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUIHandler.java 2012-12-29 20:50:48 UTC (rev 129) @@ -27,89 +27,73 @@ import com.google.common.collect.Lists; import fr.ifremer.tutti.persistence.entities.CaracteristicMap; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; -import fr.ifremer.tutti.ui.swing.TuttiUIContext; import fr.ifremer.tutti.ui.swing.content.operation.EditFishingOperationUI; import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor; import fr.ifremer.tutti.ui.swing.util.editor.CaracteristicValueEditor; import fr.ifremer.tutti.ui.swing.util.editor.CaracteristicValueRenderer; -import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableModel; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIHandler; import fr.ifremer.tutti.ui.swing.util.table.CaracteristicRow; import fr.ifremer.tutti.ui.swing.util.table.TableRowModificationListener; -import java.util.Collection; -import java.util.List; -import javax.swing.DefaultComboBoxModel; -import javax.swing.JComboBox; -import javax.swing.event.ListDataEvent; -import javax.swing.event.ListDataListener; -import javax.swing.event.ListSelectionListener; -import javax.swing.table.TableCellRenderer; -import javax.swing.table.TableColumnModel; +import jaxx.runtime.swing.editor.bean.BeanComboBox; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jdesktop.swingx.JXTable; import org.jdesktop.swingx.table.DefaultTableColumnModelExt; +import javax.swing.event.ListSelectionListener; +import java.util.Collection; +import java.util.List; + /** - * * @author kmorin * @since 0.3 */ public class EnvironmentTabUIHandler extends AbstractTuttiTableUIHandler<EnvironmentRowModel, EnvironmentTabUIModel> { private final static Log log = LogFactory.getLog(EnvironmentTabUIHandler.class); - - protected EnvironmentTabUI ui; - - public EnvironmentTabUIHandler(EditFishingOperationUI parentUi, EnvironmentTabUI ui) { - super(parentUi.getHandler().getContext(), EnvironmentRowModel.PROPERTY_VALUE); + + protected final EnvironmentTabUI ui; + + public EnvironmentTabUIHandler(EditFishingOperationUI parentUi, + EnvironmentTabUI ui) { + super(parentUi.getHandler().getContext(), + EnvironmentRowModel.PROPERTY_VALUE); this.ui = ui; } - + @Override protected JXTable getTable() { return ui.getEnvironmentTable(); } @Override - protected AbstractTuttiTableModel<EnvironmentRowModel> getTableModel() { + protected EnvironmentTableModel getTableModel() { return (EnvironmentTableModel) getTable().getModel(); } @Override - protected TableColumnModel createTableColumnModel(TableCellRenderer defaultRenderer) { - DefaultTableColumnModelExt columnModel = new DefaultTableColumnModelExt(); - - { - - addColumnToModel(columnModel, - null, - newTableCellRender(Caracteristic.class), - EnvironmentTableModel.KEY); - } - - { - - addColumnToModel(columnModel, - new CaracteristicValueEditor(context), - new CaracteristicValueRenderer(context), - EnvironmentTableModel.VALUE); - } - - - return columnModel; + protected void onRowModified(EnvironmentRowModel row, + String propertyName, + Object oldValue, + Object newValue) { } @Override - protected void onRowModified(EnvironmentRowModel row, String propertyName, Object oldValue, Object newValue) { + protected void onRowValidStateChanged(EnvironmentRowModel row, + Boolean oldValue, + Boolean newValue) { } @Override - protected void onRowValidStateChanged(EnvironmentRowModel row, Boolean oldValue, Boolean newValue) { + protected void onRowModifyStateChanged(EnvironmentRowModel row, + Boolean oldValue, + Boolean newValue) { } @Override - protected void onRowModifyStateChanged(EnvironmentRowModel row, Boolean oldValue, Boolean newValue) { + protected boolean isRowValid(EnvironmentRowModel row) { + //TODO + return true; } @Override @@ -121,61 +105,55 @@ @Override public void afterInitUI() { initUI(ui); - + JXTable table = getTable(); // create table column model - TableColumnModel columnModel = createTableColumnModel(table.getDefaultRenderer(Object.class)); + DefaultTableColumnModelExt columnModel = new DefaultTableColumnModelExt(); + { + + addColumnToModel(columnModel, + null, + newTableCellRender(Caracteristic.class), + EnvironmentTableModel.KEY); + } + + { + + addColumnToModel(columnModel, + new CaracteristicValueEditor(context), + new CaracteristicValueRenderer(context), + EnvironmentTableModel.VALUE); + } + // create table model EnvironmentTableModel tableModel = new EnvironmentTableModel(columnModel); table.setModel(tableModel); table.setColumnModel(columnModel); - - final JComboBox keyCombo = ui.getNewRowKey(); - keyCombo.setModel(new DefaultComboBoxModel()); - - keyCombo.getModel().addListDataListener(new ListDataListener() { - public void intervalAdded(ListDataEvent e) { - keyCombo.setEnabled(true); - ui.getAddRow().setEnabled(true); - } + initBeanComboBox(ui.getNewRowKey(), + Lists.<CaracteristicRow>newArrayList(), null); - public void intervalRemoved(ListDataEvent e) { - if (keyCombo.getItemCount() == 0) { - keyCombo.setEnabled(false); - ui.getAddRow().setEnabled(false); - } - } - - public void contentsChanged(ListDataEvent e) { - keyCombo.setEnabled(true); - ui.getAddRow().setEnabled(true); - } - }); - // modify the model when the user enters a value ListSelectionListener listener = new TableRowModificationListener<EnvironmentRowModel>( tableModel, getRowMonitor()) { - + @Override protected void saveSelectedRow() { TuttiBeanMonitor<EnvironmentRowModel> monitor = getRowMonitor(); EnvironmentRowModel row = monitor.getBean(); if (row != null) { - ui.getModel().setCaracteristic(row.getKey(), row.getValue()); + getModel().setCaracteristic(row.getKey(), row.getValue()); } } }; table.getSelectionModel().addListSelectionListener(listener); - table.getTableHeader().setReorderingAllowed(false); - } - + @Override public void onCloseUI() { } @@ -184,52 +162,53 @@ protected EnvironmentTabUIModel getModel() { return ui.getModel(); } - - /** - * Adds a row with the parameter selected in the combo box - */ + + /** Adds a row with the parameter selected in the combo box */ public void addRow() { - JComboBox keyCombo = ui.getNewRowKey(); + BeanComboBox<CaracteristicRow> keyCombo = ui.getNewRowKey(); CaracteristicRow selectedItem = (CaracteristicRow) keyCombo.getSelectedItem(); Caracteristic caracteristic = selectedItem.getCaracteristics()[0]; - EnvironmentRowModel row = new EnvironmentRowModel(caracteristic); - getTableModel().addNewRow(getTable().getRowCount(), row); - ui.getModel().setCaracteristic(caracteristic, null); - + EnvironmentRowModel row = getTableModel().createNewRow(); + row.setKey(caracteristic); + getTableModel().addNewRow(row); + getModel().setCaracteristic(caracteristic, null); + keyCombo.removeItem(selectedItem); + selectFirstInCombo(keyCombo); } - - /** - * Resets the table with the data from the database - */ + + /** Resets the table with the data from the database */ public void reset() { - CaracteristicMap environmentCaracteristics = ui.getModel().getEnvironmentCaracteristics(); + EnvironmentTableModel tableModel = getTableModel(); + + EnvironmentTabUIModel model = getModel(); + + CaracteristicMap environmentCaracteristics = model.getEnvironmentCaracteristics(); if (environmentCaracteristics == null) { environmentCaracteristics = new CaracteristicMap(); } - + List<EnvironmentRowModel> rows = Lists.newArrayList(); Collection<Caracteristic> caracteristics = environmentCaracteristics.keySet(); for (Caracteristic key : environmentCaracteristics.keySet()) { - rows.add(new EnvironmentRowModel(key, environmentCaracteristics.get(key))); + EnvironmentRowModel newRow = tableModel.createNewRow(); + newRow.setKey(key); + newRow.setValue(environmentCaracteristics.get(key)); + rows.add(newRow); } - - AbstractTuttiTableModel<EnvironmentRowModel> tableModel = getTableModel(); + tableModel.setRows(rows, false); - - JComboBox keyCombo = ui.getNewRowKey(); - DefaultComboBoxModel keyComboModel = (DefaultComboBoxModel) keyCombo.getModel(); - keyComboModel.removeAllElements(); - - List<Caracteristic> availableCaracteristics = ui.getModel().getAvailableCaracteristics(); - log.info(availableCaracteristics); - for (Caracteristic caracteristic : availableCaracteristics) { + + List<CaracteristicRow> caracteristicList = Lists.newArrayList(); + + for (Caracteristic caracteristic : model.getAvailableCaracteristics()) { if (!caracteristics.contains(caracteristic)) { CaracteristicRow row = new CaracteristicRow(caracteristic.getName(), caracteristic); - keyComboModel.addElement(row); + caracteristicList.add(row); } } - keyCombo.setEnabled(keyCombo.getItemCount() > 0); + + ui.getNewRowKey().setData(caracteristicList); + selectFirstInCombo(ui.getNewRowKey()); } - } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUIModel.java 2012-12-29 15:32:03 UTC (rev 128) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUIModel.java 2012-12-29 20:50:48 UTC (rev 129) @@ -24,30 +24,30 @@ * #L% */ -import java.util.List; import fr.ifremer.tutti.persistence.entities.CaracteristicMap; -import com.google.common.collect.Maps; -import java.util.Map; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.ui.swing.content.operation.EditFishingOperationUIModel; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIModel; +import fr.ifremer.tutti.ui.swing.util.table.CaracteristicRow; import org.nuiton.util.beans.Binder; import org.nuiton.util.beans.BinderModelBuilder; -import static org.nuiton.i18n.I18n._; +import java.io.Serializable; +import java.util.List; /** - * * @author kmorin * @since 0.3 */ public class EnvironmentTabUIModel extends AbstractTuttiTableUIModel<FishingOperation, EnvironmentRowModel, EnvironmentTabUIModel> { - + + private static final long serialVersionUID = 1L; + protected CaracteristicMap environmentCaracteristics = new CaracteristicMap(); - + protected List<Caracteristic> availableCaracteristics; - + protected static final Binder<FishingOperation, EnvironmentTabUIModel> fromBeanBinder = BinderModelBuilder.newEmptyBuilder(FishingOperation.class, EnvironmentTabUIModel.class) .toBinder(); @@ -68,20 +68,25 @@ } this.environmentCaracteristics = environmentCaracteristics; } - - public void setCaracteristic(Caracteristic caracteristic, Object value) { + + public void setCaracteristic(Caracteristic caracteristic, Serializable value) { Object oldValue = environmentCaracteristics.clone(); environmentCaracteristics.put(caracteristic, value); firePropertyChange(EditFishingOperationUIModel.PROPERTY_ENVIRONMENT_CARACTERISTICS, oldValue, environmentCaracteristics); } - + public List<Caracteristic> getAvailableCaracteristics() { return availableCaracteristics; } - + public void setAvailableCaracteristics(List<Caracteristic> caracteristics) { -// Object oldValue = availableCaracteristics; availableCaracteristics = caracteristics; -// firePropertyChange(EditFishingOperationUIModel.PROPERTY_ENVIRONMENT_CARACTERISTICS, oldValue, availableCaracteristics); } + + //>>>--- Warning Added only to be able to use a BeanComboBox editor! ---// + + public void setSelectedCaracteristic(CaracteristicRow selectedCaracteristic) { + } + //<<<--- Warning Added only to be able to use a BeanComboBox editor! ---// + } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTableModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTableModel.java 2012-12-29 15:32:03 UTC (rev 128) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTableModel.java 2012-12-29 20:50:48 UTC (rev 129) @@ -24,43 +24,39 @@ * #L% */ -import org.apache.commons.logging.Log; -import com.google.common.base.Preconditions; -import java.util.List; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableModel; import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier; + import javax.swing.table.TableColumnModel; -import org.apache.commons.logging.LogFactory; import static org.nuiton.i18n.I18n.n_; /** - * * @author kmorin - * since 0.3 + * @since 0.3 */ public class EnvironmentTableModel extends AbstractTuttiTableModel<EnvironmentRowModel> { + private static final long serialVersionUID = 1L; + public static final ColumnIdentifier<EnvironmentRowModel> KEY = ColumnIdentifier.newId( EnvironmentRowModel.PROPERTY_KEY, n_("tutti.table.fishing.environment.header.key"), n_("tutti.table.fishing.environment.header.key")); - + public static final ColumnIdentifier<EnvironmentRowModel> VALUE = ColumnIdentifier.newId( EnvironmentRowModel.PROPERTY_VALUE, n_("tutti.table.fishing.environment.header.value"), n_("tutti.table.fishing.environment.header.value")); - + public EnvironmentTableModel(TableColumnModel columnModel) { super(columnModel); - setNoneEditableCols(KEY); } - + @Override protected EnvironmentRowModel createNewRow() { EnvironmentRowModel result = new EnvironmentRowModel(); return result; } - } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingRowModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingRowModel.java 2012-12-29 15:32:03 UTC (rev 128) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingRowModel.java 2012-12-29 20:50:48 UTC (rev 129) @@ -27,23 +27,23 @@ import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; import fr.ifremer.tutti.ui.swing.util.table.CaracteristicRow; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import org.nuiton.util.beans.Binder; import org.nuiton.util.beans.BinderFactory; +import java.io.Serializable; + /** - * * @author kmorin * @since 0.3 */ public class GearShootingRowModel extends AbstractTuttiBeanUIModel<CaracteristicRow, GearShootingRowModel> { - - private static final Log log = LogFactory.getLog(GearShootingRowModel.class); - + + private static final long serialVersionUID = 1L; + public static final String PROPERTY_KEY = "key"; + public static final String PROPERTY_VALUE = "value"; - + protected static final Binder<CaracteristicRow, GearShootingRowModel> fromBeanBinder = BinderFactory.newBinder(CaracteristicRow.class, GearShootingRowModel.class); @@ -51,24 +51,14 @@ protected static final Binder<GearShootingRowModel, CaracteristicRow> toBeanBinder = BinderFactory.newBinder(GearShootingRowModel.class, CaracteristicRow.class); - + protected Caracteristic key; - - protected Object value; + protected Serializable value; + public GearShootingRowModel() { super(CaracteristicRow.class, fromBeanBinder, toBeanBinder); } - - public GearShootingRowModel(Caracteristic key) { - this(key, null); - } - - public GearShootingRowModel(Caracteristic key, Object value) { - this(); - this.key = key; - this.value = value; - } public Caracteristic getKey() { return key; @@ -80,14 +70,14 @@ firePropertyChange(PROPERTY_KEY, oldValue, key); } - public Object getValue() { + public Serializable getValue() { return value; } - public void setValue(Object value) { + public void setValue(Serializable value) { Object oldValue = getValue(); this.value = value; firePropertyChange(PROPERTY_VALUE, oldValue, value); } - + } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUI.css 2012-12-29 15:32:03 UTC (rev 128) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUI.css 2012-12-29 20:50:48 UTC (rev 129) @@ -21,6 +21,23 @@ * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ + +BeanComboBox { + i18nPrefix: "tutti.property."; + bean: {model}; +} + +#newRowKey { + showReset: false; + property: selectedCaracteristic; + enabled: {!newRowKey.isEmpty()}; +} + +#addRow { + actionIcon: "add"; + enabled: {!newRowKey.isEmpty() && newRowKey.getSelectedItem() != null}; +} + #gearShootingTable { selectionMode: {ListSelectionModel.SINGLE_SELECTION}; selectionBackground: {null}; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUI.jaxx 2012-12-29 15:32:03 UTC (rev 128) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUI.jaxx 2012-12-29 20:50:48 UTC (rev 129) @@ -21,24 +21,29 @@ <http://www.gnu.org/licenses/gpl-3.0.html>. #L% --> -<Table implements='fr.ifremer.tutti.ui.swing.TuttiUI<GearShootingTabUIModel, GearShootingTabUIHandler>'> - +<Table + implements='fr.ifremer.tutti.ui.swing.TuttiUI<GearShootingTabUIModel, GearShootingTabUIHandler>'> + <import> + fr.ifremer.tutti.ui.swing.content.operation.EditFishingOperationUI + fr.ifremer.tutti.ui.swing.util.table.CaracteristicRow + + jaxx.runtime.swing.editor.bean.BeanComboBox org.jdesktop.swingx.JXTable - fr.ifremer.tutti.ui.swing.content.operation.EditFishingOperationUI javax.swing.ListSelectionModel java.awt.Color </import> - + <GearShootingTabUIHandler id='handler' - initializer='getContextValue(GearShootingTabUIHandler.class)'/> + initializer='getContextValue(GearShootingTabUIHandler.class)'/> <GearShootingTabUIModel id='model' - initializer='getContextValue(GearShootingTabUIModel.class)'/> - + initializer='getContextValue(GearShootingTabUIModel.class)'/> + <row fill='both'> <cell fill='both' weightx='1'> - <JComboBox id='newRowKey'/> + <BeanComboBox id='newRowKey' constructorParams='this' + genericType='CaracteristicRow'/> </cell> <cell fill='both'> <JButton id='addRow' actionIcon='add' @@ -65,5 +70,5 @@ } ]]></script> - + </Table> \ No newline at end of file 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 2012-12-29 15:32:03 UTC (rev 128) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUIHandler.java 2012-12-29 20:50:48 UTC (rev 129) @@ -31,85 +31,67 @@ import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor; import fr.ifremer.tutti.ui.swing.util.editor.CaracteristicValueEditor; import fr.ifremer.tutti.ui.swing.util.editor.CaracteristicValueRenderer; -import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableModel; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIHandler; import fr.ifremer.tutti.ui.swing.util.table.CaracteristicRow; import fr.ifremer.tutti.ui.swing.util.table.TableRowModificationListener; -import java.util.Collection; -import java.util.List; -import javax.swing.DefaultComboBoxModel; -import javax.swing.JComboBox; -import javax.swing.event.ListDataEvent; -import javax.swing.event.ListDataListener; -import javax.swing.event.ListSelectionListener; -import javax.swing.table.TableCellRenderer; -import javax.swing.table.TableColumnModel; +import jaxx.runtime.swing.editor.bean.BeanComboBox; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jdesktop.swingx.JXTable; import org.jdesktop.swingx.table.DefaultTableColumnModelExt; +import javax.swing.event.ListSelectionListener; +import java.util.Collection; +import java.util.List; + /** - * * @author kmorin * @since 0.3 */ public class GearShootingTabUIHandler extends AbstractTuttiTableUIHandler<GearShootingRowModel, GearShootingTabUIModel> { private final static Log log = LogFactory.getLog(GearShootingTabUIHandler.class); - - protected GearShootingTabUI ui; - + + protected final GearShootingTabUI ui; + public GearShootingTabUIHandler(EditFishingOperationUI parentUi, GearShootingTabUI ui) { super(parentUi.getHandler().getContext(), GearShootingRowModel.PROPERTY_VALUE); this.ui = ui; } - + @Override protected JXTable getTable() { return ui.getGearShootingTable(); } @Override - protected AbstractTuttiTableModel<GearShootingRowModel> getTableModel() { + protected GearShootingTableModel getTableModel() { return (GearShootingTableModel) getTable().getModel(); } @Override - protected TableColumnModel createTableColumnModel(TableCellRenderer defaultRenderer) { - DefaultTableColumnModelExt columnModel = - new DefaultTableColumnModelExt(); - - { - - addColumnToModel(columnModel, - null, - newTableCellRender(Caracteristic.class), - GearShootingTableModel.KEY); - } - - { - - addColumnToModel(columnModel, - new CaracteristicValueEditor(context), - new CaracteristicValueRenderer(context), - GearShootingTableModel.VALUE); - } - - - return columnModel; + protected void onRowModified(GearShootingRowModel row, + String propertyName, + Object oldValue, + Object newValue) { } @Override - protected void onRowModified(GearShootingRowModel row, String propertyName, Object oldValue, Object newValue) { + protected void onRowValidStateChanged(GearShootingRowModel row, + Boolean oldValue, + Boolean newValue) { } @Override - protected void onRowValidStateChanged(GearShootingRowModel row, Boolean oldValue, Boolean newValue) { + protected void onRowModifyStateChanged(GearShootingRowModel row, + Boolean oldValue, + Boolean newValue) { } @Override - protected void onRowModifyStateChanged(GearShootingRowModel row, Boolean oldValue, Boolean newValue) { + protected boolean isRowValid(GearShootingRowModel row) { + //TODO + return true; } @Override @@ -121,61 +103,56 @@ @Override public void afterInitUI() { initUI(ui); - + JXTable table = getTable(); // create table column model - TableColumnModel columnModel = createTableColumnModel(table.getDefaultRenderer(Object.class)); + DefaultTableColumnModelExt columnModel = + new DefaultTableColumnModelExt(); + { + + addColumnToModel(columnModel, + null, + newTableCellRender(Caracteristic.class), + GearShootingTableModel.KEY); + } + + { + + addColumnToModel(columnModel, + new CaracteristicValueEditor(context), + new CaracteristicValueRenderer(context), + GearShootingTableModel.VALUE); + } + // create table model GearShootingTableModel tableModel = new GearShootingTableModel(columnModel); table.setModel(tableModel); table.setColumnModel(columnModel); - - final JComboBox keyCombo = ui.getNewRowKey(); - keyCombo.setModel(new DefaultComboBoxModel()); - - keyCombo.getModel().addListDataListener(new ListDataListener() { - public void intervalAdded(ListDataEvent e) { - keyCombo.setEnabled(true); - ui.getAddRow().setEnabled(true); - } + initBeanComboBox(ui.getNewRowKey(), + Lists.<CaracteristicRow>newArrayList(), null); - public void intervalRemoved(ListDataEvent e) { - if (keyCombo.getItemCount() == 0) { - keyCombo.setEnabled(false); - ui.getAddRow().setEnabled(false); - } - } - - public void contentsChanged(ListDataEvent e) { - keyCombo.setEnabled(true); - ui.getAddRow().setEnabled(true); - } - }); - // modify the model when the user enters a value ListSelectionListener listener = new TableRowModificationListener<GearShootingRowModel>( tableModel, getRowMonitor()) { - + @Override protected void saveSelectedRow() { TuttiBeanMonitor<GearShootingRowModel> monitor = getRowMonitor(); GearShootingRowModel row = monitor.getBean(); if (row != null) { - ui.getModel().setCaracteristic(row.getKey(), row.getValue()); + getModel().setCaracteristic(row.getKey(), row.getValue()); } } }; table.getSelectionModel().addListSelectionListener(listener); - table.getTableHeader().setReorderingAllowed(false); - } - + @Override public void onCloseUI() { } @@ -184,52 +161,53 @@ protected GearShootingTabUIModel getModel() { return ui.getModel(); } - - /** - * Adds a row with the parameter selected in the combo box - */ + + /** Adds a row with the parameter selected in the combo box */ public void addRow() { - JComboBox keyCombo = ui.getNewRowKey(); + BeanComboBox<CaracteristicRow> keyCombo = ui.getNewRowKey(); CaracteristicRow selectedItem = (CaracteristicRow) keyCombo.getSelectedItem(); Caracteristic caracteristic = selectedItem.getCaracteristics()[0]; - GearShootingRowModel row = new GearShootingRowModel(caracteristic); - getTableModel().addNewRow(getTable().getRowCount(), row); - ui.getModel().setCaracteristic(caracteristic, null); - + GearShootingRowModel row = getTableModel().createNewRow(); + row.setKey(caracteristic); + getTableModel().addNewRow(row); + getModel().setCaracteristic(caracteristic, null); + keyCombo.removeItem(selectedItem); + selectFirstInCombo(keyCombo); } - - /** - * Resets the table with the data from the database - */ + + /** Resets the table with the data from the database */ public void reset() { - CaracteristicMap gearShootingCaracteristics = ui.getModel().getGearShootingCaracteristics(); + GearShootingTableModel tableModel = getTableModel(); + GearShootingTabUIModel model = getModel(); + + CaracteristicMap gearShootingCaracteristics = model.getGearShootingCaracteristics(); if (gearShootingCaracteristics == null) { gearShootingCaracteristics = new CaracteristicMap(); } - + List<GearShootingRowModel> rows = Lists.newArrayList(); Collection<Caracteristic> caracteristics = gearShootingCaracteristics.keySet(); for (Caracteristic key : gearShootingCaracteristics.keySet()) { - rows.add(new GearShootingRowModel(key, gearShootingCaracteristics.get(key))); + GearShootingRowModel newRow = tableModel.createNewRow(); + newRow.setKey(key); + newRow.setValue(gearShootingCaracteristics.get(key)); + rows.add(newRow); } - - AbstractTuttiTableModel<GearShootingRowModel> tableModel = getTableModel(); + tableModel.setRows(rows, false); - - JComboBox keyCombo = ui.getNewRowKey(); - DefaultComboBoxModel keyComboModel = (DefaultComboBoxModel) keyCombo.getModel(); - keyComboModel.removeAllElements(); - - List<Caracteristic> availableCaracteristics = ui.getModel().getAvailableCaracteristics(); - log.info(availableCaracteristics); - for (Caracteristic caracteristic : availableCaracteristics) { + + List<CaracteristicRow> caracteristicList = Lists.newArrayList(); + + for (Caracteristic caracteristic : model.getAvailableCaracteristics()) { if (!caracteristics.contains(caracteristic)) { CaracteristicRow row = new CaracteristicRow(caracteristic.getName(), caracteristic); - keyComboModel.addElement(row); + caracteristicList.add(row); } } - keyCombo.setEnabled(keyCombo.getItemCount() > 0); + + ui.getNewRowKey().setData(caracteristicList); + selectFirstInCombo(ui.getNewRowKey()); } - + } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUIModel.java 2012-12-29 15:32:03 UTC (rev 128) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUIModel.java 2012-12-29 20:50:48 UTC (rev 129) @@ -24,28 +24,32 @@ * #L% */ -import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import com.google.common.collect.Maps; import fr.ifremer.tutti.persistence.entities.CaracteristicMap; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.ui.swing.content.operation.EditFishingOperationUIModel; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIModel; -import java.util.List; +import fr.ifremer.tutti.ui.swing.util.table.CaracteristicRow; import org.nuiton.util.beans.Binder; import org.nuiton.util.beans.BinderModelBuilder; +import java.io.Serializable; +import java.util.List; + /** - * * @author kmorin * @since 0.3 */ public class GearShootingTabUIModel extends AbstractTuttiTableUIModel<FishingOperation, GearShootingRowModel, GearShootingTabUIModel> { - + + private static final long serialVersionUID = 1L; + protected CaracteristicMap gearShootingCaracteristics = new CaracteristicMap(); - + protected List<Caracteristic> availableCaracteristics; - + protected static final Binder<FishingOperation, GearShootingTabUIModel> fromBeanBinder = BinderModelBuilder.newEmptyBuilder(FishingOperation.class, GearShootingTabUIModel.class) .toBinder(); @@ -66,8 +70,8 @@ } this.gearShootingCaracteristics = gearShootingCaracteristics; } - - public void setCaracteristic(Caracteristic caracteristic, Object value) { + + public void setCaracteristic(Caracteristic caracteristic, Serializable value) { Object oldValue = Maps.newLinkedHashMap(gearShootingCaracteristics); gearShootingCaracteristics.put(caracteristic, value); firePropertyChange(EditFishingOperationUIModel.PROPERTY_GEAR_SHOOTING_CARACTERISTICS, oldValue, gearShootingCaracteristics); @@ -80,5 +84,10 @@ public void setAvailableCaracteristics(List<Caracteristic> availableCaracteristics) { this.availableCaracteristics = availableCaracteristics; } - + + //>>>--- Warning Added only to be able to use a BeanComboBox editor! ---// + + public void setSelectedCaracteristic(CaracteristicRow selectedCaracteristic) { + } + //<<<--- Warning Added only to be able to use a BeanComboBox editor! ---// } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTableModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTableModel.java 2012-12-29 15:32:03 UTC (rev 128) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTableModel.java 2012-12-29 20:50:48 UTC (rev 129) @@ -26,37 +26,38 @@ import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableModel; import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier; + import javax.swing.table.TableColumnModel; import static org.nuiton.i18n.I18n.n_; /** - * * @author kmorin - * since 0.3 + * @since 0.3 */ public class GearShootingTableModel extends AbstractTuttiTableModel<GearShootingRowModel> { + private static final long serialVersionUID = 1L; + public static final ColumnIdentifier<GearShootingRowModel> KEY = ColumnIdentifier.newId( GearShootingRowModel.PROPERTY_KEY, n_("tutti.table.fishing.gearShooting.header.key"), n_("tutti.table.fishing.gearShooting.header.key")); - + public static final ColumnIdentifier<GearShootingRowModel> VALUE = ColumnIdentifier.newId( GearShootingRowModel.PROPERTY_VALUE, n_("tutti.table.fishing.gearShooting.header.value"), n_("tutti.table.fishing.gearShooting.header.value")); - + public GearShootingTableModel(TableColumnModel columnModel) { super(columnModel); - setNoneEditableCols(KEY); } - + @Override protected GearShootingRowModel createNewRow() { GearShootingRowModel result = new GearShootingRowModel(); return result; } - + } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyRowModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyRowModel.java 2012-12-29 15:32:03 UTC (rev 128) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyRowModel.java 2012-12-29 20:50:48 UTC (rev 129) @@ -26,26 +26,27 @@ import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; -import fr.ifremer.tutti.ui.swing.util.table.CaracteristicRow; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import org.nuiton.util.beans.Binder; import org.nuiton.util.beans.BinderFactory; +import java.io.Serializable; + /** - * * @author kmorin * @since 0.3 */ public class HydrologyRowModel extends AbstractTuttiBeanUIModel<Caracteristic, HydrologyRowModel> { - - private static final Log log = LogFactory.getLog(HydrologyRowModel.class); - + + private static final long serialVersionUID = 1L; + public static final String PROPERTY_KEY = "key"; + public static final String PROPERTY_GEAR_SHOOTING_START_VALUE = "gearShootingStartValue"; + public static final String PROPERTY_GEAR_SHOOTING_END_VALUE = "gearShootingEndValue"; + public static final String PROPERTY_AVERAGE_VALUE = "averageValue"; - + protected static final Binder<Caracteristic, HydrologyRowModel> fromBeanBinder = BinderFactory.newBinder(Caracteristic.class, HydrologyRowModel.class); @@ -53,25 +54,25 @@ protected static final Binder<HydrologyRowModel, Caracteristic> toBeanBinder = BinderFactory.newBinder(HydrologyRowModel.class, Caracteristic.class); - + protected Caracteristic key; - - protected Object gearShootingStartValue; - - protected Object gearShootingEndValue; - - protected Object averageValue; + protected Serializable gearShootingStartValue; + + protected Serializable gearShootingEndValue; + + protected Serializable averageValue; + public HydrologyRowModel() { super(Caracteristic.class, fromBeanBinder, toBeanBinder); } - + public HydrologyRowModel(Caracteristic key) { this(key, null, null, null); } - - public HydrologyRowModel(Caracteristic key, Object gearShootingStartValue, - Object gearShootingEndValue, Object averageValue) { + + public HydrologyRowModel(Caracteristic key, Serializable gearShootingStartValue, + Serializable gearShootingEndValue, Serializable averageValue) { this(); this.key = key; this.gearShootingStartValue = gearShootingStartValue; @@ -89,34 +90,34 @@ firePropertyChange(PROPERTY_KEY, oldValue, key); } - public Object getGearShootingStartValue() { + public Serializable getGearShootingStartValue() { return gearShootingStartValue; } - public void setGearShootingStartValue(Object gearShootingStartValue) { + public void setGearShootingStartValue(Serializable gearShootingStartValue) { Object oldValue = getGearShootingStartValue(); this.gearShootingStartValue = gearShootingStartValue; firePropertyChange(PROPERTY_GEAR_SHOOTING_START_VALUE, oldValue, gearShootingStartValue); } - - public Object getGearShootingEndValue() { + + public Serializable getGearShootingEndValue() { return gearShootingEndValue; } - public void setGearShootingEndValue(Object gearShootingEndValue) { + public void setGearShootingEndValue(Serializable gearShootingEndValue) { Object oldValue = getGearShootingEndValue(); this.gearShootingEndValue = gearShootingEndValue; firePropertyChange(PROPERTY_GEAR_SHOOTING_END_VALUE, oldValue, gearShootingEndValue); } - - public Object getAverageValue() { + + public Serializable getAverageValue() { return averageValue; } - public void setAverageValue(Object averageValue) { + public void setAverageValue(Serializable averageValue) { Object oldValue = getAverageValue(); this.averageValue = averageValue; firePropertyChange(PROPERTY_AVERAGE_VALUE, oldValue, averageValue); } - + } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUI.css 2012-12-29 15:32:03 UTC (rev 128) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUI.css 2012-12-29 20:50:48 UTC (rev 129) @@ -21,6 +21,23 @@ * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ + +BeanComboBox { + i18nPrefix: "tutti.property."; + bean: {model}; +} + +#newRowKey { + showReset: false; + property: selectedCaracteristic; + enabled: {!newRowKey.isEmpty()}; +} + +#addRow { + actionIcon: "add"; + enabled: {!newRowKey.isEmpty() && newRowKey.getSelectedItem() != null}; +} + #hydrologyTable { selectionMode: {ListSelectionModel.SINGLE_SELECTION}; selectionBackground: {null}; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUI.jaxx 2012-12-29 15:32:03 UTC (rev 128) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUI.jaxx 2012-12-29 20:50:48 UTC (rev 129) @@ -24,8 +24,14 @@ <Table implements='fr.ifremer.tutti.ui.swing.TuttiUI<HydrologyTabUIModel, HydrologyTabUIHandler>'> <import> + fr.ifremer.tutti.persistence.entities.referential.Caracteristic + + fr.ifremer.tutti.ui.swing.content.operation.EditFishingOperationUI + + jaxx.runtime.swing.editor.bean.BeanComboBox + org.jdesktop.swingx.JXTable - fr.ifremer.tutti.ui.swing.content.operation.EditFishingOperationUI + javax.swing.ListSelectionModel java.awt.Color </import> @@ -38,11 +44,11 @@ <row fill='both'> <cell fill='both' weightx='1'> - <JComboBox id='newRowKey'/> + <BeanComboBox id='newRowKey' constructorParams='this' + genericType='Caracteristic'/> </cell> <cell fill='both'> - <JButton id='addRow' actionIcon='add' - onActionPerformed='handler.addRow()'/> + <JButton id='addRow' onActionPerformed='handler.addRow()'/> </cell> </row> <row fill='both' weighty='1'> @@ -63,7 +69,5 @@ protected void $afterCompleteSetup() { handler.afterInitUI(); } - ]]></script> - </Table> \ No newline at end of file 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 2012-12-29 15:32:03 UTC (rev 128) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUIHandler.java 2012-12-29 20:50:48 UTC (rev 129) @@ -34,118 +34,86 @@ import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor; import fr.ifremer.tutti.ui.swing.util.editor.CaracteristicValueEditor; import fr.ifremer.tutti.ui.swing.util.editor.CaracteristicValueRenderer; -import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableModel; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIHandler; import fr.ifremer.tutti.ui.swing.util.table.CaracteristicRow; import fr.ifremer.tutti.ui.swing.util.table.TableRowModificationListener; +import jaxx.runtime.swing.editor.bean.BeanComboBox; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.jdesktop.swingx.JXTable; +import org.jdesktop.swingx.table.DefaultTableColumnModelExt; + +import javax.swing.event.ListSelectionListener; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; +import java.io.Serializable; import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Set; -import javax.swing.DefaultComboBoxModel; -import javax.swing.JComboBox; -import javax.swing.event.ListDataEvent; -import javax.swing.event.ListDataListener; -import javax.swing.event.ListSelectionListener; -import javax.swing.table.TableCellRenderer; -import javax.swing.table.TableColumnModel; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.jdesktop.swingx.JXTable; -import org.jdesktop.swingx.table.DefaultTableColumnModelExt; /** - * * @author kmorin * @since 0.3 */ public class HydrologyTabUIHandler extends AbstractTuttiTableUIHandler<HydrologyRowModel, HydrologyTabUIModel> { private final static Log log = LogFactory.getLog(HydrologyTabUIHandler.class); - - protected HydrologyTabUI ui; - + + protected final HydrologyTabUI ui; + protected Map<Caracteristic, Map<Type, Caracteristic>> availableCaracteristics; - - public HydrologyTabUIHandler(EditFishingOperationUI parentUi, HydrologyTabUI ui) { - super(parentUi.getHandler().getContext(), - HydrologyRowModel.PROPERTY_GEAR_SHOOTING_START_VALUE, - HydrologyRowModel.PROPERTY_AVERAGE_VALUE, - HydrologyRowModel.PROPERTY_GEAR_SHOOTING_END_VALUE - ); + + public HydrologyTabUIHandler(EditFishingOperationUI parentUi, + HydrologyTabUI ui) { + super(parentUi.getHandler().getContext(), + HydrologyRowModel.PROPERTY_GEAR_SHOOTING_START_VALUE, + HydrologyRowModel.PROPERTY_AVERAGE_VALUE, + HydrologyRowModel.PROPERTY_GEAR_SHOOTING_END_VALUE + ); this.ui = ui; } - + @Override protected JXTable getTable() { return ui.getHydrologyTable(); } @Override - protected AbstractTuttiTableModel<HydrologyRowModel> getTableModel() { + protected HydrologyTableModel getTableModel() { return (HydrologyTableModel) getTable().getModel(); } @Override - protected TableColumnModel createTableColumnModel(TableCellRenderer defaultRenderer) { - DefaultTableColumnModelExt columnModel = - new DefaultTableColumnModelExt(); - - { - - addColumnToModel(columnModel, - null, - newTableCellRender(Caracteristic.class), - HydrologyTableModel.KEY); - } - - { - - addColumnToModel(columnModel, - new CaracteristicValueEditor(context), - new CaracteristicValueRenderer(context), - HydrologyTableModel.GEAR_SHOOTING_START_VALUE); - } - - { - - addColumnToModel(columnModel, - new CaracteristicValueEditor(context), - new CaracteristicValueRenderer(context), - HydrologyTableModel.GEAR_SHOOTING_END_VALUE); - } - - { - - addColumnToModel(columnModel, - new CaracteristicValueEditor(context), - new CaracteristicValueRenderer(context), - HydrologyTableModel.AVERAGE_VALUE); - } - - - return columnModel; + protected void onRowModified(HydrologyRowModel row, + String propertyName, + Object oldValue, + Object newValue) { } @Override - protected void onRowModified(HydrologyRowModel row, String propertyName, Object oldValue, Object newValue) { + protected void onRowValidStateChanged(HydrologyRowModel row, + Boolean oldValue, + Boolean newValue) { } @Override - protected void onRowValidStateChanged(HydrologyRowModel row, Boolean oldValue, Boolean newValue) { + protected void onRowModifyStateChanged(HydrologyRowModel row, + Boolean oldValue, + Boolean newValue) { } @Override - protected void onRowModifyStateChanged(HydrologyRowModel row, Boolean oldValue, Boolean newValue) { + protected boolean isRowValid(HydrologyRowModel row) { + //TODO + return true; } @Override public void beforeInitUI() { HydrologyTabUIModel model = new HydrologyTabUIModel(); ui.setContextValue(model); - + model.addPropertyChangeListener(HydrologyTabUIModel.PROPERTY_AVAILABLE_CARACTERISTICS, new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent evt) { @@ -171,46 +139,59 @@ @Override public void afterInitUI() { initUI(ui); - + JXTable table = getTable(); // create table column model - TableColumnModel columnModel = createTableColumnModel(table.getDefaultRenderer(Object.class)); + DefaultTableColumnModelExt columnModel = + new DefaultTableColumnModelExt(); + { + + addColumnToModel(columnModel, + null, + newTableCellRender(Caracteristic.class), + HydrologyTableModel.KEY); + } + + { + + addColumnToModel(columnModel, + new CaracteristicValueEditor(context), + new CaracteristicValueRenderer(context), + HydrologyTableModel.GEAR_SHOOTING_START_VALUE); + } + + { + + addColumnToModel(columnModel, + new CaracteristicValueEditor(context), + new CaracteristicValueRenderer(context), + HydrologyTableModel.GEAR_SHOOTING_END_VALUE); + } + + { + + addColumnToModel(columnModel, + new CaracteristicValueEditor(context), + new CaracteristicValueRenderer(context), + HydrologyTableModel.AVERAGE_VALUE); + } + // create table model HydrologyTableModel tableModel = new HydrologyTableModel(columnModel); table.setModel(tableModel); table.setColumnModel(columnModel); - - final JComboBox keyCombo = ui.getNewRowKey(); - keyCombo.setModel(new DefaultComboBoxModel()); - keyCombo.setRenderer(newListCellRender(Caracteristic.class)); - keyCombo.getModel().addListDataListener(new ListDataListener() { - public void intervalAdded(ListDataEvent e) { - keyCombo.setEnabled(true); - ui.getAddRow().setEnabled(true); - } + initBeanComboBox(ui.getNewRowKey(), + Lists.<Caracteristic>newArrayList(), null); - public void intervalRemoved(ListDataEvent e) { - if (keyCombo.getItemCount() == 0) { - keyCombo.setEnabled(false); - ui.getAddRow().setEnabled(false); - } - } - - public void contentsChanged(ListDataEvent e) { - keyCombo.setEnabled(true); - ui.getAddRow().setEnabled(true); - } - }); - // modify the model when the user enters a value ListSelectionListener listener = new TableRowModificationListener<HydrologyRowModel>( tableModel, getRowMonitor()) { - + @Override protected void saveSelectedRow() { TuttiBeanMonitor<HydrologyRowModel> monitor = getRowMonitor(); @@ -219,7 +200,7 @@ Map<Type, Caracteristic> caracteristics = availableCaracteristics.get(row.getKey()); CaracteristicMap map = new CaracteristicMap(); for (Type type : caracteristics.keySet()) { - Object value = null; + Serializable value = null; switch (type) { case START: value = row.getGearShootingStartValue(); @@ -232,16 +213,15 @@ } map.put(caracteristics.get(type), value); } - ui.getModel().addCaracteristics(map); + getModel().addCaracteristics(map); } } }; table.getSelectionModel().addListSelectionListener(listener); - table.getTableHeader().setReorderingAllowed(false); - + } - + @Override public void onCloseUI() { } @@ -250,67 +230,64 @@ protected HydrologyTabUIModel getModel() { return ui.getModel(); } - - /** - * Adds a row with the parameter selected in the combo box - */ + + /** Adds a row with the parameter selected in the combo box */ public void addRow() { - JComboBox keyCombo = ui.getNewRowKey(); + BeanComboBox<Caracteristic> keyCombo = ui.getNewRowKey(); Caracteristic key = (Caracteristic) keyCombo.getSelectedItem(); - HydrologyRowModel row = new HydrologyRowModel(key); - getTableModel().addNewRow(getTable().getRowCount(), row); - + HydrologyRowModel row = getTableModel().createNewRow(); + row.setKey(key); + getTableModel().addNewRow(row); + Map<Type, Caracteristic> caracteristics = availableCaracteristics.get(key); CaracteristicMap map = new CaracteristicMap(); for (Caracteristic caracteristic : caracteristics.values()) { map.put(caracteristic, null); } - ui.getModel().addCaracteristics(map); - + getModel().addCaracteristics(map); + keyCombo.removeItem(key); + selectFirstInCombo(keyCombo); } - - /** - * Resets the table with the data from the database - */ + + /** Resets the table with the data from the database */ public void reset() { - CaracteristicMap hydrologyCaracteristics = ui.getModel().getHydrologyCaracteristics(); - JComboBox keyCombo = ui.getNewRowKey(); - DefaultComboBoxModel keyComboModel = (DefaultComboBoxModel) keyCombo.getModel(); - keyComboModel.removeAllElements(); - + + HydrologyTableModel tableModel = getTableModel(); + + CaracteristicMap hydrologyCaracteristics = getModel().getHydrologyCaracteristics(); + List<HydrologyRowModel> rows = Lists.newArrayList(); + List<Caracteristic> caracteristicList = Lists.newArrayList(); + Collection<Caracteristic> selectedCaracteristics = hydrologyCaracteristics.keySet(); Set<Caracteristic> globalCaracteristics = availableCaracteristics.keySet(); - + for (Caracteristic availableCaracteristic : globalCaracteristics) { Map<Type, Caracteristic> caracteristics = availableCaracteristics.get(availableCaracteristic); - + //should add the global caracteristic to the combo or to the table? boolean selectedCaracteristic = false; - Caracteristic sample = null; for (Caracteristic caracteristic : caracteristics.values()) { - selectedCaracteristic = selectedCaracteristic || selectedCaracteristics.contains(caracteristic); - sample = caracteristic; + selectedCaracteristic |= selectedCaracteristics.contains(caracteristic); } - + if (selectedCaracteristic) { - HydrologyRowModel row = new HydrologyRowModel(availableCaracteristic, - hydrologyCaracteristics.get(caracteristics.get(Type.START)), - hydrologyCaracteristics.get(caracteristics.get(Type.END)), - hydrologyCaracteristics.get(caracteristics.get(Type.AVERAGE))); + HydrologyRowModel row = tableModel.createNewRow(); + row.setKey(availableCaracteristic); + row.setGearShootingStartValue(hydrologyCaracteristics.get(caracteristics.get(Type.START))); + row.setGearShootingEndValue(hydrologyCaracteristics.get(caracteristics.get(Type.END))); + row.setAverageValue(hydrologyCaracteristics.get(caracteristics.get(Type.AVERAGE))); rows.add(row); - + } else { - keyComboModel.addElement(availableCaracteristic); + caracteristicList.add(availableCaracteristic); } } - - keyCombo.setEnabled(keyCombo.getItemCount() > 0); - - AbstractTuttiTableModel<HydrologyRowModel> tableModel = getTableModel(); + tableModel.setRows(rows, false); - + ui.getNewRowKey().setData(caracteristicList); + selectFirstInCombo(ui.getNewRowKey()); } - + } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUIModel.java 2012-12-29 15:32:03 UTC (rev 128) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUIModel.java 2012-12-29 20:50:48 UTC (rev 129) @@ -30,24 +30,26 @@ import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.ui.swing.content.operation.EditFishingOperationUIModel; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIModel; -import java.util.List; import org.nuiton.util.beans.Binder; import org.nuiton.util.beans.BinderModelBuilder; +import java.util.List; + /** - * * @author kmorin * @since 0.3 */ public class HydrologyTabUIModel extends AbstractTuttiTableUIModel<FishingOperation, HydrologyRowModel, HydrologyTabUIModel> { - + + private static final long serialVersionUID = 1L; + public static final String PROPERTY_AVAILABLE_CARACTERISTICS = "availableCaracteristics"; - + protected CaracteristicMap hydrologyCaracteristics = new CaracteristicMap(); - + protected List<Caracteristic> availableCaracteristics; - + protected static final Binder<FishingOperation, HydrologyTabUIModel> fromBeanBinder = BinderModelBuilder.newEmptyBuilder(FishingOperation.class, HydrologyTabUIModel.class) .toBinder(); @@ -68,7 +70,7 @@ } this.hydrologyCaracteristics = hydrologyCaracteristics; } - + public void addCaracteristics(CaracteristicMap caracteristics) { Object oldValue = Maps.newLinkedHashMap(hydrologyCaracteristics); hydrologyCaracteristics.putAll(caracteristics); @@ -84,5 +86,10 @@ this.availableCaracteristics = availableCaracteristics; firePropertyChange(PROPERTY_AVAILABLE_CARACTERISTICS, oldValue, availableCaracteristics); } - + + //>>>--- Warning Added only to be able to use a BeanComboBox editor! ---// + + public void setSelectedCaracteristic(Caracteristic selectedCaracteristic) { + } + //<<<--- Warning Added only to be able to use a BeanComboBox editor! ---// } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTableModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTableModel.java 2012-12-29 15:32:03 UTC (rev 128) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTableModel.java 2012-12-29 20:50:48 UTC (rev 129) @@ -26,47 +26,48 @@ import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableModel; import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier; + import javax.swing.table.TableColumnModel; import static org.nuiton.i18n.I18n.n_; /** - * * @author kmorin - * since 0.3 + * @since 0.3 */ public class HydrologyTableModel extends AbstractTuttiTableModel<HydrologyRowModel> { + private static final long serialVersionUID = 1L; + public static final ColumnIdentifier<HydrologyRowModel> KEY = ColumnIdentifier.newId( HydrologyRowModel.PROPERTY_KEY, n_("tutti.table.fishing.hydrology.header.key"), n_("tutti.table.fishing.hydrology.header.key")); - + public static final ColumnIdentifier<HydrologyRowModel> GEAR_SHOOTING_START_VALUE = ColumnIdentifier.newId( HydrologyRowModel.PROPERTY_GEAR_SHOOTING_START_VALUE, n_("tutti.table.fishing.hydrology.header.gearShootingStartValue"), n_("tutti.table.fishing.hydrology.header.gearShootingStartValue")); - + public static final ColumnIdentifier<HydrologyRowModel> GEAR_SHOOTING_END_VALUE = ColumnIdentifier.newId( HydrologyRowModel.PROPERTY_GEAR_SHOOTING_END_VALUE, n_("tutti.table.fishing.hydrology.header.gearShootingEndValue"), n_("tutti.table.fishing.hydrology.header.gearShootingEndValue")); - + public static final ColumnIdentifier<HydrologyRowModel> AVERAGE_VALUE = ColumnIdentifier.newId( HydrologyRowModel.PROPERTY_AVERAGE_VALUE, n_("tutti.table.fishing.hydrology.header.averageValue"), n_("tutti.table.fishing.hydrology.header.averageValue")); - + public HydrologyTableModel(TableColumnModel columnModel) { super(columnModel); - setNoneEditableCols(KEY); } - + @Override protected HydrologyRowModel createNewRow() { HydrologyRowModel result = new HydrologyRowModel(); return result; } - + } 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 2012-12-29 15:32:03 UTC (rev 128) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIHandler.java 2012-12-29 20:50:48 UTC (rev 129) @@ -97,7 +97,7 @@ @Override public void afterInitUI() { - EditProgramUIModel model = ui.getModel(); + EditProgramUIModel model = getModel(); initBeanComboBox(ui.getZoneComboBox(), persistenceService.getAllZone(), model.getZone()); @@ -127,7 +127,7 @@ public void save() { - EditProgramUIModel model = ui.getModel(); + EditProgramUIModel model = getModel(); Program bean = model.toBean(); 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 2012-12-29 15:32:03 UTC (rev 128) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java 2012-12-29 20:50:48 UTC (rev 129) @@ -48,7 +48,6 @@ import jaxx.runtime.swing.editor.bean.BeanDoubleList; import jaxx.runtime.validator.swing.SwingValidatorMessageTableRenderer; import jaxx.runtime.validator.swing.SwingValidatorUtil; -import org.apache.commons.collections.CollectionUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jdesktop.swingx.JXTable; @@ -302,7 +301,7 @@ // init species combo box initBeanComboBox(ui.getSpeciesComboBox(), speciesList, null); - selectFirstSpecies(speciesList); + selectFirstInCombo(ui.getSpeciesComboBox()); // // Species // final JComboBox speciesCombo = ui.getNewSpeciesRowCombo(); // speciesCombo.setRenderer(newListCellRender(Species.class)); @@ -402,7 +401,7 @@ public void save() { - EditProtocolUIModel model = ui.getModel(); + EditProtocolUIModel model = getModel(); TuttiProtocol bean = model.toBean(); @@ -457,13 +456,7 @@ protocol.setSpecies(species); getTableModel().addNewRow(protocol); ui.getSpeciesComboBox().removeItem(species); - selectFirstSpecies(ui.getSpeciesComboBox().getData()); + selectFirstInCombo(ui.getSpeciesComboBox()); // getModel().setModify(true); } - - protected void selectFirstSpecies(List<Species> data) { - if (CollectionUtils.isNotEmpty(data)) { - ui.getSpeciesComboBox().setSelectedItem(data.get(0)); - } - } } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java 2012-12-29 15:32:03 UTC (rev 128) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java 2012-12-29 20:50:48 UTC (rev 129) @@ -185,10 +185,6 @@ //>>>--- Warning Added only to be able to use a BeanComboBox editor! ---// - public Species getSelectedSpecies() { - return null; - } - public void setSelectedSpecies(Species selectedSpecies) { } //<<<--- Warning Added only to be able to use a BeanComboBox editor! ---// Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/AttachmentEditorUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/AttachmentEditorUIHandler.java 2012-12-29 15:32:03 UTC (rev 128) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/AttachmentEditorUIHandler.java 2012-12-29 20:50:48 UTC (rev 129) @@ -152,7 +152,7 @@ // public void chooseFile() { // if (fileChooser.showOpenDialog(ui) == JFileChooser.APPROVE_OPTION) { // File file = fileChooser.getSelectedFile(); -// ui.getModel().setFile(file); +// getModel().setFile(file); // ui.getFile().setText(file.getAbsolutePath()); // } // } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/CaracteristicValueEditor.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/CaracteristicValueEditor.java 2012-12-29 15:32:03 UTC (rev 128) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/CaracteristicValueEditor.java 2012-12-29 20:50:48 UTC (rev 129) @@ -1,6 +1,30 @@ package fr.ifremer.tutti.ui.swing.util.editor; +/* + * #%L + * Tutti :: UI + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; import fr.ifremer.tutti.service.DecoratorService; Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/CaracteristicValueEditor.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/CaracteristicValueRenderer.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/CaracteristicValueRenderer.java 2012-12-29 15:32:03 UTC (rev 128) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/CaracteristicValueRenderer.java 2012-12-29 20:50:48 UTC (rev 129) @@ -1,6 +1,30 @@ package fr.ifremer.tutti.ui.swing.util.editor; +/* + * #%L + * Tutti :: UI + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; import fr.ifremer.tutti.service.DecoratorService; Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/CaracteristicValueRenderer.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableModel.java 2012-12-29 15:32:03 UTC (rev 128) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableModel.java 2012-12-29 20:50:48 UTC (rev 129) @@ -99,7 +99,7 @@ public final void setRows(List<R> data) { setRows(data, true); } - + public final void setRows(List<R> data, boolean checkEmpty) { // can't accept a empty data list @@ -120,6 +120,11 @@ public final void addNewRow() { R newValue = createNewRow(); + addNewRow(newValue); + } + + public final void addNewRow(R newValue) { + addNewRow(getRowCount(), newValue); } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java 2012-12-29 15:32:03 UTC (rev 128) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java 2012-12-29 20:50:48 UTC (rev 129) @@ -86,8 +86,6 @@ protected abstract AbstractTuttiTableModel<R> getTableModel(); - protected abstract TableColumnModel createTableColumnModel(TableCellRenderer defaultRenderer); - protected abstract void onRowModified(R row, String propertyName, Object oldValue, @@ -101,6 +99,7 @@ Boolean oldValue, Boolean newValue); + protected abstract boolean isRowValid(R row); protected String[] getRowPropertiesToIgnore() { return ArrayUtils.EMPTY_STRING_ARRAY; @@ -114,7 +113,7 @@ // listen when bean is changed rowMonitor.addPropertyChangeListener(TuttiBeanMonitor.PROPERTY_BEAN, new PropertyChangeListener() { - + final Set<String> propertiesToSkip = Sets.newHashSet(getRowPropertiesToIgnore()); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/CaracteristicRow.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/CaracteristicRow.java 2012-12-29 15:32:03 UTC (rev 128) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/CaracteristicRow.java 2012-12-29 20:50:48 UTC (rev 129) @@ -25,16 +25,18 @@ */ import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import fr.ifremer.tutti.service.DecoratorService; /** - * * @author kmorin <kmorin@codelutin.com> * @since 0.3 */ -public class CaracteristicRow { - +public class CaracteristicRow implements DecoratorService.LabelAware { + + private static final long serialVersionUID = 1L; + protected Caracteristic[] caracteristics; - + protected String name; public CaracteristicRow(String name, Caracteristic... caracteristics) { @@ -46,7 +48,7 @@ return caracteristics; } - public void setCaracteristics(Caracteristic[] caracteristics) { + public void setCaracteristics(Caracteristic... caracteristics) { this.caracteristics = caracteristics; } @@ -59,8 +61,7 @@ } @Override - public String toString() { + public String getLabel() { return name; } - } Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties =================================================================== --- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2012-12-29 15:32:03 UTC (rev 128) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2012-12-29 20:50:48 UTC (rev 129) @@ -110,6 +110,7 @@ tutti.label.program.name=Nom tutti.label.program.zone=Zone tutti.label.protocol=Protocol de saisie +tutti.label.sampleCategoryConfiguration.sample=Echantillon ? tutti.label.tab.accidentel=Captures accidentelles tutti.label.tab.benthos=Benthos tutti.label.tab.catches=Captures @@ -132,6 +133,7 @@ tutti.legend.catch.species=Espèces tutti.legend.catch.total=Capture tutti.legend.frequencyConfiguration=Configuration +tutti.legend.sampleCategoryConfiguration=Configuration tutti.menu.actions=Actions tutti.menu.actions.tip=Actions tutti.menu.file=Fichier @@ -146,6 +148,11 @@ tutti.menu.synchronisationImport.tip=Effectuer des imports tutti.menu.synchronisations=Synchronisation tutti.menu.synchronisations.tip=Import/Export +tutti.sampleCategoryType.age=Age +tutti.sampleCategoryType.maturity=Maturité +tutti.sampleCategoryType.sex=Sexe +tutti.sampleCategoryType.size=Class Tri. +tutti.sampleCategoryType.sortedUnsorted=V/HV tutti.table.accidental.batch.header.comment=Commentaire tutti.table.accidental.batch.header.file=Pièces-jointes tutti.table.accidental.batch.header.speciesByCode=Espèce @@ -180,10 +187,11 @@ tutti.table.plankton.batch.header.speciesByGenusCode=Espèce tutti.table.plankton.batch.header.toConfirm=A Confirmer tutti.table.plankton.batch.header.weight=Poids +tutti.table.protocol.species.header.age=Age +tutti.table.protocol.species.header.lengthStep=Classe de Taille tutti.table.protocol.species.header.maturity=Maturité tutti.table.protocol.species.header.sex=Sexe -tutti.table.protocol.species.header.sizeCategory=Catégorie Taille -tutti.table.protocol.species.header.sizeFrequency=Fréquence Taile +tutti.table.protocol.species.header.size=Catégorie Tri tutti.table.protocol.species.header.sortedUnsorted=Vrac / Hors Vrac tutti.table.protocol.species.header.speciesId=Espèce tutti.table.species.batch.header.age=Age @@ -205,6 +213,8 @@ 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.sampleCategory.header.category=Catégorie +tutti.table.species.sampleCategory.header.weight=Poids tutti.timeeditor.H=H tutti.title.about=À propos de Tutti tutti.title.create.cruise=Créer une nouvelle campagne
participants (1)
-
tchemit@users.forge.codelutin.com