Author: tchemit Date: 2012-12-29 15:58:26 +0100 (Sat, 29 Dec 2012) New Revision: 127 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/127 Log: refs #1810: [PROTOCOLE] Ecran de saisie (improve code, add missing age property, use beanComboBox, ...) Removed: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesColumnIdentifier.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/protocol/ Modified: trunk/tutti-persistence/src/main/xmi/tutti-persistence.zargo trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesRowModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesTableModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java Modified: trunk/tutti-persistence/src/main/xmi/tutti-persistence.zargo =================================================================== (Binary files differ) Deleted: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesColumnIdentifier.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesColumnIdentifier.java 2012-12-29 14:56:58 UTC (rev 126) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesColumnIdentifier.java 2012-12-29 14:58:26 UTC (rev 127) @@ -1,35 +0,0 @@ - -package fr.ifremer.tutti.ui.swing.content.protocol; - -import fr.ifremer.tutti.persistence.entities.protocol.SampleCategoryEnum; -import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier; - -/** - * Column identifier containing the SampleCategoryEnum associated to the column - * - * @author kmorin <kmorin@codelutin.com> - * @since 0.3 - */ -public class EditProtocolSpeciesColumnIdentifier extends ColumnIdentifier<EditProtocolSpeciesRowModel> { - - /** SampleCategoryEnum associated to the column. It is used to retain order of the columns */ - protected SampleCategoryEnum sampleCategory; - - protected EditProtocolSpeciesColumnIdentifier(String propertyName, String headerI18nKey, String headerTipI18nKey, SampleCategoryEnum sampleCategory) { - super(propertyName, headerI18nKey, headerTipI18nKey); - this.sampleCategory = sampleCategory; - } - - public static EditProtocolSpeciesColumnIdentifier newId(String propertyName, String headerI18nKey, String headerTipI18nKey, SampleCategoryEnum sampleCategory) { - return new EditProtocolSpeciesColumnIdentifier(propertyName, headerI18nKey, headerTipI18nKey, sampleCategory); - } - - public SampleCategoryEnum getSampleCategory() { - return sampleCategory; - } - - public void setSampleCategory(SampleCategoryEnum sampleCategory) { - this.sampleCategory = sampleCategory; - } - -} Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesRowModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesRowModel.java 2012-12-29 14:56:58 UTC (rev 126) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesRowModel.java 2012-12-29 14:58:26 UTC (rev 127) @@ -28,45 +28,45 @@ import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; -import java.util.List; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import org.nuiton.util.beans.Binder; import org.nuiton.util.beans.BinderFactory; /** - * * @author kmorin * @since 0.3 */ public class EditProtocolSpeciesRowModel extends AbstractTuttiBeanUIModel<SpeciesProtocol, EditProtocolSpeciesRowModel> { - - private static final Log log = LogFactory.getLog(EditProtocolSpeciesRowModel.class); - + + private static final long serialVersionUID = 1L; + public static final String PROPERTY_SPECIES = "species"; public static final String PROPERTY_SORTED_UNSORTED_ENABLED = "sortedUnsortedEnabled"; - public static final String PROPERTY_SIZE_CATEGORY_ENABLED = "sizeCategoryEnabled"; + public static final String PROPERTY_SIZE_ENABLED = "sizeEnabled"; public static final String PROPERTY_SEX_ENABLED = "sexEnabled"; public static final String PROPERTY_MATURITY_ENABLED = "maturityEnabled"; - public static final String PROPERTY_SIZE_FRENQUENCY_PMFM = "sizeFrenquencyPmfm"; + public static final String PROPERTY_AGE_ENABLED = "ageEnabled"; + public static final String PROPERTY_LENGTH_STEP_PMFM = "lengthStepPmfm"; + protected Species species; - + protected boolean sortedUnsortedEnabled; - protected boolean sizeCategoryEnabled; + protected boolean sizeEnabled; protected boolean sexEnabled; protected boolean maturityEnabled; - protected Caracteristic sizeFrenquencyPmfm; - + protected boolean ageEnabled; + + protected Caracteristic lengthStepPmfm; + protected static final Binder<SpeciesProtocol, EditProtocolSpeciesRowModel> fromBeanBinder = BinderFactory.newBinder(SpeciesProtocol.class, EditProtocolSpeciesRowModel.class); @@ -74,13 +74,11 @@ protected static final Binder<EditProtocolSpeciesRowModel, SpeciesProtocol> toBeanBinder = BinderFactory.newBinder(EditProtocolSpeciesRowModel.class, SpeciesProtocol.class); - - public EditProtocolSpeciesRowModel(Species species, Caracteristic sizeFrenquencyPmfm) { + + public EditProtocolSpeciesRowModel() { super(SpeciesProtocol.class, fromBeanBinder, toBeanBinder); - this.species = species; - this.sizeFrenquencyPmfm = sizeFrenquencyPmfm; } - + public String getSpeciesId() { return species.getId(); } @@ -88,7 +86,7 @@ public Species getSpecies() { return species; } - + public void setSpecies(Species species) { Object oldValue = getSpecies(); this.species = species; @@ -105,14 +103,14 @@ firePropertyChange(PROPERTY_SORTED_UNSORTED_ENABLED, oldValue, sortedUnsortedEnabled); } - public boolean isSizeCategoryEnabled() { - return sizeCategoryEnabled; + public boolean isSizeEnabled() { + return sizeEnabled; } - public void setSizeCategoryEnabled(boolean sizeCategoryEnabled) { - Object oldValue = isSizeCategoryEnabled(); - this.sizeCategoryEnabled = sizeCategoryEnabled; - firePropertyChange(PROPERTY_SIZE_CATEGORY_ENABLED, oldValue, sizeCategoryEnabled); + public void setSizeEnabled(boolean sizeEnabled) { + Object oldValue = isSizeEnabled(); + this.sizeEnabled = sizeEnabled; + firePropertyChange(PROPERTY_SIZE_ENABLED, oldValue, sizeEnabled); } public boolean isSexEnabled() { @@ -135,18 +133,27 @@ firePropertyChange(PROPERTY_MATURITY_ENABLED, oldValue, maturityEnabled); } - public String getSizeFrenquencyPmfmId() { - return sizeFrenquencyPmfm != null ? sizeFrenquencyPmfm.getId() : null; + public boolean isAgeEnabled() { + return ageEnabled; } - public Caracteristic getSizeFrenquencyPmfm() { - return sizeFrenquencyPmfm; + public void setAgeEnabled(boolean ageEnabled) { + Object oldValue = isAgeEnabled(); + this.ageEnabled = ageEnabled; + firePropertyChange(PROPERTY_AGE_ENABLED, oldValue, ageEnabled); } - - public void setSizeFrenquencyPmfm(Caracteristic sizeFrenquencyPmfm) { - Object oldValue = getSizeFrenquencyPmfm(); - this.sizeFrenquencyPmfm = sizeFrenquencyPmfm; - firePropertyChange(PROPERTY_SIZE_FRENQUENCY_PMFM, oldValue, sizeFrenquencyPmfm); + + public String getLengthStepPmfmId() { + return lengthStepPmfm != null ? lengthStepPmfm.getId() : null; } - + + public Caracteristic getLengthStepPmfm() { + return lengthStepPmfm; + } + + public void setLengthStepPmfm(Caracteristic lengthStepPmfm) { + Object oldValue = getLengthStepPmfm(); + this.lengthStepPmfm = lengthStepPmfm; + firePropertyChange(PROPERTY_LENGTH_STEP_PMFM, oldValue, lengthStepPmfm); + } } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesTableModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesTableModel.java 2012-12-29 14:56:58 UTC (rev 126) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesTableModel.java 2012-12-29 14:58:26 UTC (rev 127) @@ -24,56 +24,54 @@ * #L% */ -import fr.ifremer.tutti.persistence.entities.protocol.SampleCategoryEnum; 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 EditProtocolSpeciesTableModel extends AbstractTuttiTableModel<EditProtocolSpeciesRowModel> { - public static final ColumnIdentifier<EditProtocolSpeciesRowModel> SPECIES_ID = EditProtocolSpeciesColumnIdentifier.newId( + public static final ColumnIdentifier<EditProtocolSpeciesRowModel> SPECIES_ID = ColumnIdentifier.newId( EditProtocolSpeciesRowModel.PROPERTY_SPECIES, n_("tutti.table.protocol.species.header.speciesId"), - n_("tutti.table.protocol.species.header.speciesId"), - SampleCategoryEnum.speciesId); + n_("tutti.table.protocol.species.header.speciesId")); - public static final ColumnIdentifier<EditProtocolSpeciesRowModel> SORTED_UNSORTED_ENABLED = EditProtocolSpeciesColumnIdentifier.newId( + public static final ColumnIdentifier<EditProtocolSpeciesRowModel> SORTED_UNSORTED_ENABLED = ColumnIdentifier.newId( EditProtocolSpeciesRowModel.PROPERTY_SORTED_UNSORTED_ENABLED, n_("tutti.table.protocol.species.header.sortedUnsorted"), - n_("tutti.table.protocol.species.header.sortedUnsorted"), - SampleCategoryEnum.sortedUnsorted); + n_("tutti.table.protocol.species.header.sortedUnsorted")); - public static final ColumnIdentifier<EditProtocolSpeciesRowModel> SIZE_CATEGORY_ENABLED = EditProtocolSpeciesColumnIdentifier.newId( - EditProtocolSpeciesRowModel.PROPERTY_SIZE_CATEGORY_ENABLED, - n_("tutti.table.protocol.species.header.sizeCategory"), - n_("tutti.table.protocol.species.header.sizeCategory"), - SampleCategoryEnum.size); + public static final ColumnIdentifier<EditProtocolSpeciesRowModel> SIZE_ENABLED = ColumnIdentifier.newId( + EditProtocolSpeciesRowModel.PROPERTY_SIZE_ENABLED, + n_("tutti.table.protocol.species.header.size"), + n_("tutti.table.protocol.species.header.size")); - public static final ColumnIdentifier<EditProtocolSpeciesRowModel> SEX_ENABLED = EditProtocolSpeciesColumnIdentifier.newId( + public static final ColumnIdentifier<EditProtocolSpeciesRowModel> SEX_ENABLED = ColumnIdentifier.newId( EditProtocolSpeciesRowModel.PROPERTY_SEX_ENABLED, n_("tutti.table.protocol.species.header.sex"), - n_("tutti.table.protocol.species.header.sex"), - SampleCategoryEnum.sex); + n_("tutti.table.protocol.species.header.sex")); - public static final ColumnIdentifier<EditProtocolSpeciesRowModel> MATURITY_ENABLED = EditProtocolSpeciesColumnIdentifier.newId( + public static final ColumnIdentifier<EditProtocolSpeciesRowModel> MATURITY_ENABLED = ColumnIdentifier.newId( EditProtocolSpeciesRowModel.PROPERTY_MATURITY_ENABLED, n_("tutti.table.protocol.species.header.maturity"), - n_("tutti.table.protocol.species.header.maturity"), - SampleCategoryEnum.maturity); + n_("tutti.table.protocol.species.header.maturity")); - public static final ColumnIdentifier<EditProtocolSpeciesRowModel> SIZE_FRENQUENCY_PMFM_ID = EditProtocolSpeciesColumnIdentifier.newId( - EditProtocolSpeciesRowModel.PROPERTY_SIZE_FRENQUENCY_PMFM, - n_("tutti.table.protocol.species.header.sizeFrequency"), - n_("tutti.table.protocol.species.header.sizeFrequency"), - SampleCategoryEnum.age); + public static final ColumnIdentifier<EditProtocolSpeciesRowModel> AGE_ENABLED = ColumnIdentifier.newId( + EditProtocolSpeciesRowModel.PROPERTY_AGE_ENABLED, + n_("tutti.table.protocol.species.header.age"), + n_("tutti.table.protocol.species.header.age")); + public static final ColumnIdentifier<EditProtocolSpeciesRowModel> SIZE_FRENQUENCY_PMFM_ID = ColumnIdentifier.newId( + EditProtocolSpeciesRowModel.PROPERTY_LENGTH_STEP_PMFM, + n_("tutti.table.protocol.species.header.lengthStep"), + n_("tutti.table.protocol.species.header.lengthStep")); + private static final long serialVersionUID = 1L; public EditProtocolSpeciesTableModel(TableColumnModel columnModel) { @@ -81,11 +79,17 @@ setNoneEditableCols(SPECIES_ID); } - + @Override protected EditProtocolSpeciesRowModel createNewRow() { - EditProtocolSpeciesRowModel result = new EditProtocolSpeciesRowModel(null, null); + EditProtocolSpeciesRowModel result = new EditProtocolSpeciesRowModel(); + result.setMaturityEnabled(true); + result.setSizeEnabled(true); + result.setSexEnabled(true); + result.setAgeEnabled(true); + result.setSortedUnsortedEnabled(true); + result.setValid(false); return result; } - + } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.css 2012-12-29 14:56:58 UTC (rev 126) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.css 2012-12-29 14:58:26 UTC (rev 127) @@ -21,12 +21,16 @@ * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ + BeanComboBox { - showReset: true; i18nPrefix: "tutti.property."; bean: {model}; } +BeanDoubleList { + bean: {model}; +} + #splitPane { orientation: {JSplitPane.VERTICAL_SPLIT}; resizeWeight: 0.3; @@ -82,6 +86,17 @@ model: {errorTableModel}; } +#speciesComboBox { + showReset: false; + property: selectedSpecies; + enabled: {!speciesComboBox.isEmpty()}; +} + +#addRow { + actionIcon: "add"; + enabled: {!speciesComboBox.isEmpty() && speciesComboBox.getSelectedItem() != null}; +} + #speciesTable { selectionMode: {ListSelectionModel.SINGLE_SELECTION}; selectionBackground: {null}; @@ -90,19 +105,19 @@ } #gearList { - bean: {model}; property: gearPmfm; + beanType: {Caracteristic.class}; border: {BorderFactory.createTitledBorder(_("tutti.label.tab.fishingOperation.gearShooting"))}; } #environmentList { - bean: {model}; property: environmentPmfm; + beanType: {Caracteristic.class}; border: {BorderFactory.createTitledBorder(_("tutti.label.tab.fishingOperation.environment"))}; } #hydrologyList { - bean: {model}; property: hydrologyPmfm; + beanType: {Caracteristic.class}; border: {BorderFactory.createTitledBorder(_("tutti.label.tab.fishingOperation.hydrology"))}; } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx 2012-12-29 14:56:58 UTC (rev 126) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx 2012-12-29 14:58:26 UTC (rev 127) @@ -26,7 +26,7 @@ <import> fr.ifremer.tutti.persistence.entities.referential.Caracteristic - fr.ifremer.tutti.persistence.entities.referential.Zone + fr.ifremer.tutti.persistence.entities.referential.Species fr.ifremer.tutti.ui.swing.TuttiUIContext jaxx.runtime.swing.editor.bean.BeanComboBox @@ -108,11 +108,11 @@ <Table fill='both'> <row fill='both'> <cell fill='both' weightx='1'> - <JComboBox id='newSpeciesRowCombo'/> + <BeanComboBox id='speciesComboBox' constructorParams='this' + genericType='Species'/> </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'> 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 14:56:58 UTC (rev 126) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java 2012-12-29 14:58:26 UTC (rev 127) @@ -24,52 +24,48 @@ * #L% */ +import com.google.common.collect.BiMap; +import com.google.common.collect.HashBiMap; import com.google.common.collect.HashMultimap; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Multimap; import fr.ifremer.tutti.persistence.entities.TuttiEntities; -import fr.ifremer.tutti.persistence.entities.protocol.SampleCategoryEnum; +import fr.ifremer.tutti.persistence.entities.data.SampleCategoryEnum; import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.ui.swing.TuttiScreen; import fr.ifremer.tutti.ui.swing.TuttiUIContext; -import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolSpeciesColumnIdentifier; import fr.ifremer.tutti.ui.swing.util.HydrologicCaracteristicUtil; import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor; 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.ColumnIdentifier; import fr.ifremer.tutti.ui.swing.util.table.TableRowModificationListener; -import java.util.Collection; -import java.util.List; -import java.util.Map; -import javax.swing.DefaultComboBoxModel; -import javax.swing.JComboBox; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ListDataEvent; -import javax.swing.event.ListDataListener; -import javax.swing.event.ListSelectionEvent; -import javax.swing.event.ListSelectionListener; -import javax.swing.event.TableColumnModelEvent; -import javax.swing.event.TableColumnModelListener; -import javax.swing.table.TableCellRenderer; -import javax.swing.table.TableColumn; -import javax.swing.table.TableColumnModel; 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; import org.jdesktop.swingx.table.DefaultTableColumnModelExt; -import org.nuiton.util.decorator.JXPathDecorator; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; +import javax.swing.event.TableColumnModelEvent; +import javax.swing.event.TableColumnModelListener; +import javax.swing.table.TableColumn; +import javax.swing.table.TableColumnModel; +import java.util.Collection; +import java.util.List; +import java.util.Map; + /** * TODO * @@ -95,17 +91,31 @@ * @since 0.3 */ private final PersistenceService persistenceService; - + protected Map<String, Species> allSpecies; - + protected Map<String, Caracteristic> allLengthStepPmfm; - + protected Multimap<String, String> hydroCaracteristics; + /** + * Mapping between columns and sample category + * (used to define the {@link TuttiProtocol#sampleCategoryOrder}). + * + * @since 0.3 + */ + private final BiMap<ColumnIdentifier<EditProtocolSpeciesRowModel>, SampleCategoryEnum> columToSampleCategory; + public EditProtocolUIHandler(TuttiUIContext context, EditProtocolUI ui) { super(context); this.ui = ui; persistenceService = context.getService(PersistenceService.class); + columToSampleCategory = HashBiMap.create(SampleCategoryEnum.values().length); + columToSampleCategory.put(EditProtocolSpeciesTableModel.SORTED_UNSORTED_ENABLED, SampleCategoryEnum.sortedUnsorted); + columToSampleCategory.put(EditProtocolSpeciesTableModel.SIZE_ENABLED, SampleCategoryEnum.size); + columToSampleCategory.put(EditProtocolSpeciesTableModel.SEX_ENABLED, SampleCategoryEnum.sex); + columToSampleCategory.put(EditProtocolSpeciesTableModel.MATURITY_ENABLED, SampleCategoryEnum.maturity); + columToSampleCategory.put(EditProtocolSpeciesTableModel.AGE_ENABLED, SampleCategoryEnum.age); } @Override @@ -119,81 +129,48 @@ } @Override - protected AbstractTuttiTableModel<EditProtocolSpeciesRowModel> getTableModel() { - return (AbstractTuttiTableModel) getTable().getModel(); + protected EditProtocolSpeciesTableModel getTableModel() { + return (EditProtocolSpeciesTableModel) getTable().getModel(); } @Override - protected void onRowModified(EditProtocolSpeciesRowModel row, String propertyName, Object oldValue, Object newValue) { - log.info("onRowModified"); - ui.getModel().setModify(true); + protected void onRowModified(EditProtocolSpeciesRowModel row, + String propertyName, + Object oldValue, + Object newValue) { + if (log.isInfoEnabled()) { + log.info("onRowModified property: " + propertyName + + ", newvalue: " + newValue); + } + boolean rowIsValid = isRowValid(row); + row.setValid(rowIsValid); + getModel().setModify(true); } @Override - protected void onRowValidStateChanged(EditProtocolSpeciesRowModel row, Boolean oldValue, Boolean newValue) { - log.info("onRowValidStateChanged"); + protected void onRowValidStateChanged(EditProtocolSpeciesRowModel row, + Boolean oldValue, + Boolean newValue) { + if (log.isInfoEnabled()) { + log.info("onRowValidStateChanged, newValidstate: " + newValue); + } } @Override - protected void onRowModifyStateChanged(EditProtocolSpeciesRowModel row, Boolean oldValue, Boolean newValue) { - log.info("onRowModifyStateChanged"); + protected void onRowModifyStateChanged(EditProtocolSpeciesRowModel row, + Boolean oldValue, + Boolean newValue) { + if (log.isInfoEnabled()) { + log.info("onRowModifyStateChanged, newModifiedState: " + newValue); + } } - + @Override - protected TableColumnModel createTableColumnModel(TableCellRenderer renderer) { - JXTable table = ui.getSpeciesTable(); - DecoratorService decoratorService = context.getService(DecoratorService.class); - JXPathDecorator<Caracteristic> decorator = - (JXPathDecorator<Caracteristic>) decoratorService.getDecoratorByType(Caracteristic.class); - DefaultTableColumnModelExt columnModel = new DefaultTableColumnModelExt(); - - EditProtocolUIModel model = ui.getModel(); - List<SampleCategoryEnum> sampleOrders = model.getSampleCategoryOrder(); - for (SampleCategoryEnum sampleOrder : sampleOrders) { - switch (sampleOrder) { - case speciesId: - addColumnToModel(columnModel, - null, - newTableCellRender(Species.class), - EditProtocolSpeciesTableModel.SPECIES_ID); - break; - - case sortedUnsorted: - addBooleanColumnToModel(columnModel, - EditProtocolSpeciesTableModel.SORTED_UNSORTED_ENABLED, - table); - break; - - case size: - addBooleanColumnToModel(columnModel, - EditProtocolSpeciesTableModel.SIZE_CATEGORY_ENABLED, - table); - break; + protected boolean isRowValid(EditProtocolSpeciesRowModel row) { + boolean result = row.getLengthStepPmfm() != null; + return result; + } - case sex: - addBooleanColumnToModel(columnModel, - EditProtocolSpeciesTableModel.SEX_ENABLED, - table); - break; - - case maturity: - addBooleanColumnToModel(columnModel, - EditProtocolSpeciesTableModel.MATURITY_ENABLED, - table); - break; - - case age: - addComboDataColumnToModel(columnModel, - EditProtocolSpeciesTableModel.SIZE_FRENQUENCY_PMFM_ID, - decorator, - Lists.newArrayList(allLengthStepPmfm.values())); - - } - } - - return columnModel; - } - @Override public void beforeInitUI() { @@ -203,7 +180,7 @@ if (protocolId == null) { // create new protocol - + if (log.isDebugEnabled()) { log.debug("Will create a new protocol"); } @@ -218,23 +195,23 @@ log.debug("Will edit protocol: " + protocolId); } } - + listModelIsModify(model); ui.setContextValue(model); - + List<Species> species = persistenceService.getAllSpecies(); allSpecies = Maps.newHashMap(); for (Species s : species) { allSpecies.put(s.getId(), s); } - - List<Caracteristic> lengthStepCaracteristics = + + List<Caracteristic> lengthStepCaracteristics = persistenceService.getAllSpeciesLengthStepCaracteristic(); allLengthStepPmfm = Maps.newHashMap(); for (Caracteristic c : lengthStepCaracteristics) { allLengthStepPmfm.put(c.getId(), c); } - + List<Caracteristic> hydrologyPmfm = persistenceService.getAllFishingOperationHydrologicCaracteristic(); hydroCaracteristics = HashMultimap.create(); for (Caracteristic caracteristic : hydrologyPmfm) { @@ -248,43 +225,39 @@ initUI(ui); - EditProtocolUIModel model = ui.getModel(); + EditProtocolUIModel model = getModel(); SwingValidatorUtil.installUI(ui.getErrorTable(), new SwingValidatorMessageTableRenderer()); listenValidatorValid(ui.getValidator(), model); - - // Species - final JComboBox speciesCombo = ui.getNewSpeciesRowCombo(); - speciesCombo.setRenderer(newListCellRender(Species.class)); - speciesCombo.setModel(new DefaultComboBoxModel()); - for (Species species : allSpecies.values()) { - speciesCombo.addItem(species); - } - speciesCombo.getModel().addListDataListener(new ListDataListener() { - public void intervalAdded(ListDataEvent e) { - speciesCombo.setEnabled(true); - ui.getAddRow().setEnabled(true); - } + List<Species> speciesList = Lists.newArrayList(allSpecies.values()); - public void intervalRemoved(ListDataEvent e) { - if (speciesCombo.getItemCount() == 0) { - speciesCombo.setEnabled(false); - ui.getAddRow().setEnabled(false); - } - } + // create table model - public void contentsChanged(ListDataEvent e) { - speciesCombo.setEnabled(true); - ui.getAddRow().setEnabled(true); - } - }); - - JXTable table = ui.getSpeciesTable(); - final TableColumnModel columnModel = createTableColumnModel( - table.getDefaultRenderer(Object.class)); + JXTable table = getTable(); + + DefaultTableColumnModelExt columnModel = new DefaultTableColumnModelExt(); + + addColumnToModel(columnModel, + null, + newTableCellRender(Species.class), + EditProtocolSpeciesTableModel.SPECIES_ID); + + addComboDataColumnToModel(columnModel, + EditProtocolSpeciesTableModel.SIZE_FRENQUENCY_PMFM_ID, + getDecorator(Caracteristic.class, null), + Lists.newArrayList(allLengthStepPmfm.values())); + + Map<SampleCategoryEnum, ColumnIdentifier<EditProtocolSpeciesRowModel>> sampleCategoryToColumn = columToSampleCategory.inverse(); + + for (SampleCategoryEnum sampleOrder : model.getSampleCategoryOrder()) { + + ColumnIdentifier<EditProtocolSpeciesRowModel> columnIdentifier = sampleCategoryToColumn.get(sampleOrder); + addBooleanColumnToModel(columnModel, columnIdentifier, table); + } + columnModel.addColumnModelListener(new TableColumnModelListener() { public void columnAdded(TableColumnModelEvent e) { @@ -294,11 +267,7 @@ } public void columnMoved(TableColumnModelEvent e) { - if (e.getFromIndex() != e.getToIndex()) { - List<SampleCategoryEnum> sampleOrders = getModel().getSampleCategoryOrder(); - SampleCategoryEnum sampleOrder = sampleOrders.remove(e.getFromIndex()); - sampleOrders.add(e.getToIndex(), sampleOrder); - } + getModel().setModify(true); } public void columnMarginChanged(ChangeEvent e) { @@ -307,10 +276,12 @@ public void columnSelectionChanged(ListSelectionEvent e) { } }); - + EditProtocolSpeciesTableModel tableModel = new EditProtocolSpeciesTableModel(columnModel); - + + // fill table model + List<SpeciesProtocol> speciesProtocol = model.getSpecies(); if (speciesProtocol == null) { speciesProtocol = Lists.newArrayList(); @@ -318,25 +289,56 @@ List<EditProtocolSpeciesRowModel> rows = Lists.newArrayList(); for (SpeciesProtocol protocol : speciesProtocol) { Species species = allSpecies.get(protocol.getSpeciesId()); - speciesCombo.removeItem(species); - EditProtocolSpeciesRowModel row = new EditProtocolSpeciesRowModel( - species, - allLengthStepPmfm.get(protocol.getSizeFrenquencyPmfmId())); + speciesList.remove(species); + EditProtocolSpeciesRowModel row = tableModel.createNewRow(); + row.setSpecies(species); + row.setLengthStepPmfm(allLengthStepPmfm.get(protocol.getLengthStepPmfmId())); row.fromBean(protocol); rows.add(row); } tableModel.setRows(rows, false); table.setModel(tableModel); table.setColumnModel(columnModel); + + // init species combo box + initBeanComboBox(ui.getSpeciesComboBox(), speciesList, null); + selectFirstSpecies(speciesList); +// // Species +// final JComboBox speciesCombo = ui.getNewSpeciesRowCombo(); +// speciesCombo.setRenderer(newListCellRender(Species.class)); +// speciesCombo.setModel(new DefaultComboBoxModel()); +// for (Species species : allSpecies.values()) { +// speciesCombo.addItem(species); +// } +// speciesCombo.getModel().addListDataListener(new ListDataListener() { +// +// public void intervalAdded(ListDataEvent e) { +// speciesCombo.setEnabled(true); +// ui.getAddRow().setEnabled(true); +// } +// +// public void intervalRemoved(ListDataEvent e) { +// if (speciesCombo.getItemCount() == 0) { +// speciesCombo.setEnabled(false); +// ui.getAddRow().setEnabled(false); +// } +// } +// +// public void contentsChanged(ListDataEvent e) { +// speciesCombo.setEnabled(true); +// ui.getAddRow().setEnabled(true); +// } +// }); + ListSelectionListener listener = new TableRowModificationListener<EditProtocolSpeciesRowModel>( tableModel, getRowMonitor()) { - + @Override protected void saveSelectedRow() { TuttiBeanMonitor<EditProtocolSpeciesRowModel> monitor = getRowMonitor(); EditProtocolSpeciesRowModel row = monitor.getBean(); if (row != null && monitor.wasModified()) { - ui.getModel().setModify(true); + getModel().setModify(true); } } }; @@ -366,21 +368,16 @@ break; } } - } + } } - DecoratorService decoratorService = - context.getService(DecoratorService.class); - JXPathDecorator<Caracteristic> decorator = - (JXPathDecorator<Caracteristic>) decoratorService.getDecoratorByType(Caracteristic.class); - ui.getHydrologyList().init(decorator, availableCaracteristics, selection); - + + initBeanList(ui.getHydrologyList(), availableCaracteristics, selection); + // if new protocol can already cancel his creation model.setModify(model.isCreate()); - - table.getTableHeader().setReorderingAllowed(true); } - - protected void initDoubleList(BeanDoubleList<Caracteristic> widget, + + protected void initDoubleList(BeanDoubleList<Caracteristic> widget, List<Caracteristic> availableCaracteristics, List<String> selectedCaracteristics) { List<Caracteristic> selection = Lists.newArrayList(); @@ -389,13 +386,9 @@ if (selectedCaracteristics.contains(caracteristic.getId())) { selection.add(caracteristic); } - } + } } - DecoratorService decoratorService = - context.getService(DecoratorService.class); - JXPathDecorator<Caracteristic> decorator = - (JXPathDecorator<Caracteristic>) decoratorService.getDecoratorByType(Caracteristic.class); - widget.init(decorator, availableCaracteristics, selection); + initBeanList(widget, availableCaracteristics, selection); } @Override @@ -412,17 +405,17 @@ EditProtocolUIModel model = ui.getModel(); TuttiProtocol bean = model.toBean(); - + // get the species protocols from the table List<SpeciesProtocol> protocols = Lists.newArrayList(); - List<EditProtocolSpeciesRowModel> rows = - ((AbstractTuttiTableModel<EditProtocolSpeciesRowModel>)ui.getSpeciesTable().getModel()).getRows(); + List<EditProtocolSpeciesRowModel> rows = + ((AbstractTuttiTableModel<EditProtocolSpeciesRowModel>) ui.getSpeciesTable().getModel()).getRows(); for (EditProtocolSpeciesRowModel row : rows) { SpeciesProtocol protocol = row.toBean(); protocols.add(protocol); } bean.setSpecies(protocols); - + // split the hydro grouped pmfm List<String> hydroPmfm = bean.getHydrologyPmfmId(); List<String> allIds = Lists.newArrayList(); @@ -432,7 +425,19 @@ } } bean.setHydrologyPmfmId(allIds); - + + List<SampleCategoryEnum> sampleOrder = Lists.newArrayList(); + TableColumnModel columnModel = getTable().getColumnModel(); + for (int i = 0; i < columnModel.getColumnCount(); i++) { + TableColumn column = columnModel.getColumn(i); + ColumnIdentifier identifier = (ColumnIdentifier) column.getIdentifier(); + SampleCategoryEnum sampleCategory = columToSampleCategory.get(identifier); + if (sampleCategory != null) { + sampleOrder.add(sampleCategory); + } + } + bean.setSampleCategoryOrder(sampleOrder); + TuttiProtocol saved; if (TuttiEntities.isNew(bean)) { @@ -445,18 +450,20 @@ context.setScreen(TuttiScreen.SELECT_CRUISE); } - + public void addRow() { - JComboBox<Species> speciesCombo = ui.getNewSpeciesRowCombo(); - Species species = (Species) speciesCombo.getSelectedItem(); - EditProtocolSpeciesRowModel protocol = new EditProtocolSpeciesRowModel(species, null); - protocol.setMaturityEnabled(true); - protocol.setSizeCategoryEnabled(true); - protocol.setSexEnabled(true); - protocol.setSortedUnsortedEnabled(true); - - getTableModel().addNewRow(getTable().getRowCount(), protocol); - speciesCombo.removeItem(species); - ui.getModel().setModify(true); + Species species = (Species) ui.getSpeciesComboBox().getSelectedItem(); + EditProtocolSpeciesRowModel protocol = getTableModel().createNewRow(); + protocol.setSpecies(species); + getTableModel().addNewRow(protocol); + ui.getSpeciesComboBox().removeItem(species); + selectFirstSpecies(ui.getSpeciesComboBox().getData()); +// 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 14:56:58 UTC (rev 126) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java 2012-12-29 14:58:26 UTC (rev 127) @@ -25,15 +25,17 @@ */ import com.google.common.collect.Lists; -import fr.ifremer.tutti.persistence.entities.protocol.SampleCategoryEnum; +import fr.ifremer.tutti.persistence.entities.data.SampleCategoryEnum; import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIModel; -import java.util.List; import org.nuiton.util.beans.Binder; import org.nuiton.util.beans.BinderFactory; +import java.util.List; + /** * @author tchemit <chemit@codelutin.com> * @since 0.3 @@ -45,21 +47,21 @@ public static final String PROPERTY_COMMENT = "comment"; public static final String PROPERTY_NAME = "name"; - + public static final String PROPERTY_GEAR_PMFM_ID = "gearPmfmId"; public static final String PROPERTY_ENVIRONMENT_PMFM_ID = "environmentPmfmId"; public static final String PROPERTY_HYDROLOGY_PMFM_ID = "hydrologyPmfmId"; - + public static final String PROPERTY_SPECIES = "species"; - + public static final String PROPERTY_SAMPLE_CATEGORY_ORDER = "sampleCategoryOrder"; protected String name; protected String comment; - + protected List<String> gearPmfmId; protected List<String> environmentPmfmId; @@ -67,15 +69,14 @@ protected List<String> hydrologyPmfmId; protected List<SpeciesProtocol> species; - + protected List<SampleCategoryEnum> sampleCategoryOrder = Lists.newArrayList( - SampleCategoryEnum.speciesId, - SampleCategoryEnum.sortedUnsorted, - SampleCategoryEnum.size, - SampleCategoryEnum.sex, - SampleCategoryEnum.maturity, - SampleCategoryEnum.age); - + SampleCategoryEnum.sortedUnsorted, + SampleCategoryEnum.size, + SampleCategoryEnum.sex, + SampleCategoryEnum.maturity, + SampleCategoryEnum.age); + protected static Binder<EditProtocolUIModel, TuttiProtocol> toBeanBinder = BinderFactory.newBinder(EditProtocolUIModel.class, TuttiProtocol.class); @@ -83,7 +84,6 @@ protected static Binder<TuttiProtocol, EditProtocolUIModel> fromBeanBinder = BinderFactory.newBinder(TuttiProtocol.class, EditProtocolUIModel.class); - public EditProtocolUIModel() { super(TuttiProtocol.class, fromBeanBinder, toBeanBinder); } @@ -117,13 +117,13 @@ this.gearPmfmId = gearPmfmId; firePropertyChange(PROPERTY_GEAR_PMFM_ID, oldValue, gearPmfmId); } - + public void setGearPmfm(List<Caracteristic> gearPmfm) { - List<String> gearPmfmId = Lists.newArrayList(); + List<String> ids = Lists.newArrayList(); for (Caracteristic caracteristic : gearPmfm) { - gearPmfmId.add(caracteristic.getId()); + ids.add(caracteristic.getId()); } - setGearPmfmId(gearPmfmId); + setGearPmfmId(ids); } public List<String> getEnvironmentPmfmId() { @@ -135,13 +135,13 @@ this.environmentPmfmId = environmentPmfmId; firePropertyChange(PROPERTY_ENVIRONMENT_PMFM_ID, oldValue, environmentPmfmId); } - + public void setEnvironmentPmfm(List<Caracteristic> environmentPmfm) { - List<String> environmentPmfmId = Lists.newArrayList(); + List<String> ids = Lists.newArrayList(); for (Caracteristic caracteristic : environmentPmfm) { - environmentPmfmId.add(caracteristic.getId()); + ids.add(caracteristic.getId()); } - setEnvironmentPmfmId(environmentPmfmId); + setEnvironmentPmfmId(ids); } public List<String> getHydrologyPmfmId() { @@ -155,13 +155,13 @@ } public void setHydrologyPmfm(List<Caracteristic> hydrologyPmfm) { - List<String> hydrologyPmfmId = Lists.newArrayList(); + List<String> ids = Lists.newArrayList(); for (Caracteristic caracteristic : hydrologyPmfm) { - hydrologyPmfmId.add(caracteristic.getId()); + ids.add(caracteristic.getId()); } - setHydrologyPmfmId(hydrologyPmfmId); + setHydrologyPmfmId(ids); } - + public List<SpeciesProtocol> getSpecies() { return species; } @@ -171,7 +171,7 @@ this.species = species; firePropertyChange(PROPERTY_SPECIES, oldValue, species); } - + public List<SampleCategoryEnum> getSampleCategoryOrder() { return sampleCategoryOrder; } @@ -181,4 +181,15 @@ this.sampleCategoryOrder = sampleCategoryOrder; firePropertyChange(PROPERTY_SAMPLE_CATEGORY_ORDER, oldValue, sampleCategoryOrder); } + + + //>>>--- 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! ---// } \ No newline at end of file
participants (1)
-
tchemit@users.forge.codelutin.com