r143 - in trunk/tutti-ui-swing/src/main: java/fr/ifremer/tutti/ui/swing/content/operation/catches/species java/fr/ifremer/tutti/ui/swing/content/protocol java/fr/ifremer/tutti/ui/swing/util/table resources/i18n
Author: kmorin Date: 2013-01-02 14:44:15 +0100 (Wed, 02 Jan 2013) New Revision: 143 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/143 Log: refs #1810: [PROTOCOLE] Ecran de saisie possibilit?\195?\169 de supprimer des lignes dans la table d'especes 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/SpeciesBatchUIHandler.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 trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.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/content/operation/catches/species/SpeciesBatchUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.jaxx 2013-01-02 13:35:50 UTC (rev 142) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.jaxx 2013-01-02 13:44:15 UTC (rev 143) @@ -145,7 +145,7 @@ <JScrollPane id='tableScrollPane' constraints='BorderLayout.CENTER'> <JXTable id='table' onFocusLost='handler.saveSelectedRowIfRequired(event)' - onMouseClicked='handler.autoSelectRowInTable(event)'/> + onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'/> </JScrollPane> </JPanel> Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-01-02 13:35:50 UTC (rev 142) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-01-02 13:44:15 UTC (rev 143) @@ -541,39 +541,6 @@ //-- Public methods --// //------------------------------------------------------------------------// - public void autoSelectRowInTable(MouseEvent e) { - - boolean rightClick = SwingUtilities.isRightMouseButton(e); - - if (rightClick || SwingUtilities.isLeftMouseButton(e)) { - - // get the coordinates of the mouse click - Point p = e.getPoint(); - - JXTable source = (JXTable) e.getSource(); - - // get the row index at this point - int rowIndex = source.rowAtPoint(p); - - if (log.isDebugEnabled()) { - log.debug("At point [" + p + "] found Row " + rowIndex); - } - - // select row (could empty selection) - if (rowIndex == -1) { - source.clearSelection(); - } else { - source.setRowSelectionInterval(rowIndex, rowIndex); - } - - if (rightClick) { - - // on right click show popup - ui.getTablePopup().show(source, e.getX(), e.getY()); - } - } - } - public void createSpeciesBatch() { CreateSpeciesBatchUI createBatchEditor = 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 2013-01-02 13:35:50 UTC (rev 142) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.css 2013-01-02 13:44:15 UTC (rev 143) @@ -95,6 +95,17 @@ enabled: {speciesComboBox.getSelectedItem() != null}; } +#tablePopup { + label: "tutti.title.batchActions"; +} + +#removeSpeciesMenu { + text: "tutti.action.removeSpecies"; + mnemonic: R; + actionIcon: batch-delete; + enabled: {model.isRemoveSpeciesEnabled()}; +} + #speciesTable { selectionMode: {ListSelectionModel.SINGLE_SELECTION}; selectionBackground: {null}; 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 2013-01-02 13:35:50 UTC (rev 142) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx 2013-01-02 13:44:15 UTC (rev 143) @@ -73,6 +73,11 @@ <field name='comment' component='commentField'/> </BeanValidator> + <JPopupMenu id='tablePopup'> + <JMenuItem id='removeSpeciesMenu' + onActionPerformed='handler.removeSpecies()'/> + </JPopupMenu> + <JSplitPane id='splitPane' constraints='BorderLayout.CENTER'> <JPanel layout='{new BorderLayout()}'> @@ -118,7 +123,7 @@ <row fill='both' weighty='1'> <cell fill='both' columns='2'> <JScrollPane> - <JXTable id='speciesTable'/> + <JXTable id='speciesTable' onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'/> </JScrollPane> </cell> </row> Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java 2013-01-02 13:35:50 UTC (rev 142) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java 2013-01-02 13:44:15 UTC (rev 143) @@ -24,11 +24,13 @@ * #L% */ +import com.google.common.base.Preconditions; import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.BiMap; import com.google.common.collect.HashBiMap; import com.google.common.collect.Lists; import com.google.common.collect.Multimap; +import com.google.common.collect.Sets; import fr.ifremer.tutti.persistence.entities.TuttiEntities; import fr.ifremer.tutti.persistence.entities.data.SampleCategoryEnum; import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol; @@ -44,6 +46,7 @@ import java.util.Collection; import java.util.List; import java.util.Map; +import java.util.Set; import javax.swing.event.ChangeEvent; import javax.swing.event.ListSelectionEvent; import javax.swing.event.TableColumnModelEvent; @@ -351,6 +354,16 @@ log.info("closing: " + ui); } } + + @Override + protected void onAfterSelectedRowChanged(int oldRowIndex, + EditProtocolSpeciesRowModel oldRow, + int newRowIndex, + EditProtocolSpeciesRowModel newRow) { + + super.onAfterSelectedRowChanged(oldRowIndex, oldRow, newRowIndex, newRow); + getModel().setRemoveSpeciesEnabled(newRow != null); + } //------------------------------------------------------------------------// //-- Public methods --// @@ -422,7 +435,21 @@ selectFirstInCombo(ui.getSpeciesComboBox()); // getModel().setModify(true); } + + public void removeSpecies() { + //TODO + int rowIndex = getTable().getSelectedRow(); + Preconditions.checkState(rowIndex != -1, + "Cant remove sub batch if no batch selected"); + + // remove the row from the model + getModel().getRows().remove(rowIndex); + + // refresh all the table + getTableModel().fireTableRowsDeleted(rowIndex, rowIndex); + } + //------------------------------------------------------------------------// //-- Internal methods --// //------------------------------------------------------------------------// 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 2013-01-02 13:35:50 UTC (rev 142) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java 2013-01-02 13:44:15 UTC (rev 143) @@ -56,6 +56,8 @@ public static final String PROPERTY_SPECIES = "species"; public static final String PROPERTY_SAMPLE_CATEGORY_ORDER = "sampleCategoryOrder"; + + public static final String PROPERTY_REMOVE_SPECIES_ENABLED = "removeSpeciesEnabled"; protected String name; @@ -75,6 +77,13 @@ SampleCategoryEnum.sex, SampleCategoryEnum.maturity, SampleCategoryEnum.age); + + /** + * Can user remove a selected species? + * + * @since 0.3 + */ + protected boolean removeSpeciesEnabled; protected static Binder<EditProtocolUIModel, TuttiProtocol> toBeanBinder = BinderFactory.newBinder(EditProtocolUIModel.class, @@ -161,16 +170,6 @@ setHydrologyPmfmId(ids); } -// public List<SpeciesProtocol> getSpecies() { -// return species; -// } -// -// public void setSpecies(List<SpeciesProtocol> species) { -// Object oldValue = getSpecies(); -// this.species = species; -// firePropertyChange(PROPERTY_SPECIES, oldValue, species); -// } - public List<SampleCategoryEnum> getSampleCategoryOrder() { return sampleCategoryOrder; } @@ -180,4 +179,14 @@ this.sampleCategoryOrder = sampleCategoryOrder; firePropertyChange(PROPERTY_SAMPLE_CATEGORY_ORDER, oldValue, sampleCategoryOrder); } + + public boolean isRemoveSpeciesEnabled() { + return removeSpeciesEnabled; + } + + public void setRemoveSpeciesEnabled(boolean removeSpeciesEnabled) { + Object oldValue = isRemoveSpeciesEnabled(); + this.removeSpeciesEnabled = removeSpeciesEnabled; + firePropertyChange(PROPERTY_REMOVE_SPECIES_ENABLED, oldValue, removeSpeciesEnabled); + } } \ No newline at end of file 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 2013-01-02 13:35:50 UTC (rev 142) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java 2013-01-02 13:44:15 UTC (rev 143) @@ -63,13 +63,17 @@ import javax.swing.table.TableColumnModel; import java.awt.Color; import java.awt.Component; +import java.awt.Point; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; +import java.awt.event.MouseEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.Enumeration; import java.util.List; import java.util.Set; +import javax.swing.JPopupMenu; +import javax.swing.SwingUtilities; import static org.nuiton.i18n.I18n._; @@ -614,4 +618,41 @@ // apply it to row row.setValid(valid); } + + //------------------------------------------------------------------------// + //-- Public methods --// + //------------------------------------------------------------------------// + + public void autoSelectRowInTable(MouseEvent e, JPopupMenu popup) { + + boolean rightClick = SwingUtilities.isRightMouseButton(e); + + if (rightClick || SwingUtilities.isLeftMouseButton(e)) { + + // get the coordinates of the mouse click + Point p = e.getPoint(); + + JXTable source = (JXTable) e.getSource(); + + // get the row index at this point + int rowIndex = source.rowAtPoint(p); + + if (log.isDebugEnabled()) { + log.debug("At point [" + p + "] found Row " + rowIndex); + } + + // select row (could empty selection) + if (rowIndex == -1) { + source.clearSelection(); + } else { + source.setRowSelectionInterval(rowIndex, rowIndex); + } + + if (rightClick) { + + // on right click show popup + popup.show(source, e.getX(), e.getY()); + } + } + } } Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties =================================================================== --- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-02 13:35:50 UTC (rev 142) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-02 13:44:15 UTC (rev 143) @@ -24,6 +24,7 @@ tutti.action.reload.application=Recharger l'application tutti.action.reload.home=Reload home screen tutti.action.reload.ui=Recharger l'interface graphique +tutti.action.removeSpecies=Supprimer l'espèce tutti.action.removeSpeciesSubBatch=Supprimer les lots tutti.action.reset.fishingOperationValidState=Réinitialiser tutti.action.save=Enregistrer
participants (1)
-
kmorin@users.forge.codelutin.com