Author: tchemit Date: 2013-01-15 12:21:48 +0100 (Tue, 15 Jan 2013) New Revision: 202 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/202 Log: fixes #1806: [Onglet Poisson] Pr?\195?\169filtrage du tableau refs #1804: [CAPTURE] - Mise en place de l'onglet Captures improve how to decorate a label (using clientProperties strongstyle or italicStyle) 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/operation/catches/EditCatchesUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUI.css 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 2013-01-15 11:07:25 UTC (rev 201) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiUIHandler.java 2013-01-15 11:21:48 UTC (rev 202) @@ -34,6 +34,32 @@ import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; import fr.ifremer.tutti.ui.swing.util.UIMessageNotifier; import fr.ifremer.tutti.ui.swing.util.editor.SimpleTimeEditor; +import jaxx.runtime.JAXXUtil; +import jaxx.runtime.SwingUtil; +import jaxx.runtime.swing.editor.NumberEditor; +import jaxx.runtime.swing.editor.bean.BeanComboBox; +import jaxx.runtime.swing.editor.bean.BeanDoubleList; +import jaxx.runtime.swing.renderer.DecoratorListCellRenderer; +import jaxx.runtime.validator.swing.SwingValidator; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.jdesktop.swingx.JXDatePicker; +import org.nuiton.util.decorator.Decorator; +import org.nuiton.util.decorator.JXPathDecorator; +import org.nuiton.validator.bean.simple.SimpleBeanValidator; + +import javax.swing.AbstractAction; +import javax.swing.JComponent; +import javax.swing.JDialog; +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.JRootPane; +import javax.swing.KeyStroke; +import javax.swing.ListCellRenderer; +import javax.swing.ListSelectionModel; +import javax.swing.event.ListSelectionEvent; +import javax.swing.text.JTextComponent; import java.awt.Component; import java.awt.Dimension; import java.awt.Frame; @@ -49,30 +75,6 @@ import java.util.List; import java.util.Map; import java.util.Set; -import javax.swing.AbstractAction; -import javax.swing.JComponent; -import javax.swing.JDialog; -import javax.swing.JList; -import javax.swing.JRootPane; -import javax.swing.KeyStroke; -import javax.swing.ListCellRenderer; -import javax.swing.ListSelectionModel; -import javax.swing.event.ListSelectionEvent; -import javax.swing.text.JTextComponent; -import jaxx.runtime.JAXXUtil; -import jaxx.runtime.SwingUtil; -import jaxx.runtime.swing.editor.NumberEditor; -import jaxx.runtime.swing.editor.bean.BeanComboBox; -import jaxx.runtime.swing.editor.bean.BeanDoubleList; -import jaxx.runtime.swing.renderer.DecoratorListCellRenderer; -import jaxx.runtime.validator.swing.SwingValidator; -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.jdesktop.swingx.JXDatePicker; -import org.nuiton.util.decorator.Decorator; -import org.nuiton.util.decorator.JXPathDecorator; -import org.nuiton.validator.bean.simple.SimpleBeanValidator; /** * Contract of any UI handler. @@ -91,7 +93,7 @@ public abstract void afterInitUI(); public abstract void onCloseUI(); - + protected abstract M getModel(); protected final TuttiUIContext context; @@ -220,6 +222,23 @@ initDatePicker((JXDatePicker) component); } else if (component instanceof SimpleTimeEditor) { initTimeEditor((SimpleTimeEditor) component); + } else if (component instanceof JLabel) { + JLabel jLabel = (JLabel) component; + Boolean strongStyle = (Boolean) jLabel.getClientProperty("strongStyle"); + Boolean italicStyle = (Boolean) jLabel.getClientProperty("italicStyle"); + boolean addHtml = strongStyle != null && strongStyle || italicStyle != null && italicStyle; + if (addHtml) { + String text = jLabel.getText(); + if (strongStyle != null && strongStyle) { + text = "<strong>" + text + "</strong>"; + } + if (italicStyle != null && italicStyle) { + text = "<em>" + text + "</em>"; + } + jLabel.setText("<html>" + text + "</strong>"); + } + + } } } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.css 2013-01-15 11:07:25 UTC (rev 201) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.css 2013-01-15 11:21:48 UTC (rev 202) @@ -34,8 +34,9 @@ } #catchTotalWeightLabel { - text: { "<html><strong>" + _("tutti.label.catches.catchTotalWeight") + "</strong></html>" }; + text: "tutti.label.catches.catchTotalWeight"; labelFor: {catchTotalWeightField}; + _strongStyle: true; } #catchTotalWeightField { @@ -50,7 +51,7 @@ } #catchTotalSortedTremisWeightLabel { - text: { _("tutti.label.catches.catchTotalSortedTremisWeight") + "*" }; + text: "tutti.label.catches.catchTotalSortedTremisWeight"; labelFor: {catchTotalSortedTremisWeightField}; } @@ -62,7 +63,7 @@ } #catchTotalSortedCarousselWeightLabel { - text: { _("tutti.label.catches.catchTotalSortedCarousselWeight") + "*" }; + text: "tutti.label.catches.catchTotalSortedCarousselWeight"; labelFor: {catchTotalSortedCarousselWeightField}; } @@ -92,11 +93,13 @@ #catchTotalUnsortedWeightField { editable: false; + enabled: false; text: {getStringValue(model.getCatchTotalUnsortedWeight())}; } #catchThalassaLabel { - text: { "* " + _("tutti.label.catches.catchThalassa")}; + actionIcon: information; + text: "tutti.label.catches.catchThalassa"; } #speciesTable { @@ -104,8 +107,9 @@ } #speciesTotalWeightLabel { - text: { "<html><strong>" + _("tutti.label.catches.speciesTotalWeight") + "</strong></html>" }; + text: "tutti.label.catches.speciesTotalWeight"; labelFor: {speciesTotalWeightField}; + _strongStyle: true; } #speciesTotalWeightField { @@ -128,8 +132,9 @@ } #speciesTotalSampleSortedWeightLabel { - text: { "<html><em>" + _("tutti.label.catches.speciesTotalSampleSortedWeight") + "</em></html>" }; + text: "tutti.label.catches.speciesTotalSampleSortedWeight"; labelFor: {speciesTotalSampleSortedWeightField}; + _italicStyle: true; } #speciesTotalSampleSortedWeightField { @@ -147,6 +152,7 @@ #speciesTotalUnsortedWeightField { text: {getStringValue(model.getSpeciesTotalUnsortedWeight())}; editable: false; + enabled: false; } #benthosTable { @@ -154,8 +160,9 @@ } #benthosTotalWeightLabel { - text: { "<html><strong>" + _("tutti.label.catches.benthosTotalWeight") + "</strong></html>" }; + text: "tutti.label.catches.benthosTotalWeight"; labelFor: {benthosTotalWeightField}; + _strongStyle: true; } #benthosTotalWeightField { @@ -178,8 +185,9 @@ } #benthosTotalSampleSortedWeightLabel { - text: { "<html><em>" + _("tutti.label.catches.benthosTotalSampleSortedWeight") + "</em></html>" }; + text: "tutti.label.catches.benthosTotalSampleSortedWeight"; labelFor: {benthosTotalSampleSortedWeightField}; + _italicStyle: true; } #benthosTotalSampleSortedWeightField { @@ -197,6 +205,7 @@ #benthosTotalUnsortedWeightField { text: {getStringValue(model.getBenthosTotalUnsortedWeight())}; editable: false; + enabled: false; } #macroWasteTable { @@ -204,8 +213,9 @@ } #macroWasteTotalWeightLabel { - text: { "<html><strong>" + _("tutti.label.catches.macroWasteTotalWeight") + "</strong></html>" }; + text: "tutti.label.catches.macroWasteTotalWeight"; labelFor: {macroWasteTotalWeightField}; + _strongStyle: true; } #macroWasteTotalWeightField { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx 2013-01-15 11:07:25 UTC (rev 201) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx 2013-01-15 11:21:48 UTC (rev 202) @@ -152,15 +152,15 @@ constructorParams='this'/> </cell> </row> + <row> + <cell columns='4'> + <JLabel id='catchThalassaLabel'/> + </cell> + </row> </Table> </cell> </row> <row> - <cell anchor='west' insets='0, 20, 3, 0'> - <JLabel id='catchThalassaLabel'/> - </cell> - </row> - <row> <cell> <Table id='speciesTable' fill='both'> Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUI.css 2013-01-15 11:07:25 UTC (rev 201) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUI.css 2013-01-15 11:21:48 UTC (rev 202) @@ -73,6 +73,7 @@ #benthosTotalUnsortedWeightField { text: {getStringValue(model.getBenthosTotalUnsortedWeight())}; editable: false; + enabled: false; } #table { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.css 2013-01-15 11:07:25 UTC (rev 201) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.css 2013-01-15 11:21:48 UTC (rev 202) @@ -73,6 +73,7 @@ #speciesTotalUnsortedWeightField { text: {getStringValue(model.getSpeciesTotalUnsortedWeight())}; editable: false; + enabled: false; } #tablePopup { @@ -118,32 +119,35 @@ } #filterTablePane { - border: {new TitledBorder(null, _("tutti.legend.filterSpeciesBatchMode"))}; + border: {new TitledBorder(null, "")}; } +#filterSpeciesBatchLabel { + text: "tutti.label.filterSpeciesBatchMode.label"; + toolTipText: "tutti.label.filterSpeciesBatchMode.label.tip"; + _strongStyle: true; +} + #filterSpeciesBatchAllButton { text: "tutti.label.filterSpeciesBatchMode.mode.all"; - toolTipText: "tutti.label.filterSpeciesBatchMode.mode.all"; + toolTipText: "tutti.label.filterSpeciesBatchMode.mode.all.tip"; value: "all"; selected: {model.isTableViewModeAll()}; buttonGroup: "filterSpeciesBatchMode"; - enabled: false; } #filterSpeciesBatchLeafButton { text: "tutti.label.filterSpeciesBatchMode.mode.leaf"; - toolTipText: "tutti.label.filterSpeciesBatchMode.mode.leaf"; + toolTipText: "tutti.label.filterSpeciesBatchMode.mode.leaf.tip"; value: "leaf"; selected: {model.isTableViewModeLeaf()}; buttonGroup: "filterSpeciesBatchMode"; - enabled: false; } #filterSpeciesBatchRootButton { text: "tutti.label.filterSpeciesBatchMode.mode.root"; - toolTipText: "tutti.label.filterSpeciesBatchMode.mode.root"; + toolTipText: "tutti.label.filterSpeciesBatchMode.mode.root.tip"; value: "root"; selected: {model.isTableViewModeRoot()}; buttonGroup: "filterSpeciesBatchMode"; - enabled: false; } 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-15 11:07:25 UTC (rev 201) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.jaxx 2013-01-15 11:21:48 UTC (rev 202) @@ -132,6 +132,7 @@ <JButton id='createSpeciesBatchButton' constraints='BorderLayout.WEST' onActionPerformed='handler.createSpeciesBatch()'/> <JPanel id='filterTablePane' constraints='BorderLayout.CENTER'> + <JLabel id='filterSpeciesBatchLabel'/> <JRadioButton id='filterSpeciesBatchAllButton' onActionPerformed='model.setTableViewMode(TableViewMode.ALL)'/> <JRadioButton id='filterSpeciesBatchLeafButton' 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-15 11:07:25 UTC (rev 201) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-01-15 11:21:48 UTC (rev 202) @@ -67,9 +67,13 @@ import org.jdesktop.swingx.table.DefaultTableColumnModelExt; import org.nuiton.util.decorator.Decorator; +import javax.swing.RowFilter; import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumnModel; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; import java.io.Serializable; +import java.util.EnumMap; import java.util.List; import java.util.Set; @@ -116,6 +120,8 @@ private SpeciesFrequencyUI speciesFrequencyEditor; + private final EnumMap<TableViewMode, RowFilter<SpeciesBatchTableModel, Integer>> tableFilters; + public SpeciesBatchUIHandler(TuttiUI<?, ?> parentUi, SpeciesBatchUI ui) { super(parentUi, @@ -137,6 +143,42 @@ SpeciesBatchRowModel.PROPERTY_ATTACHMENTS, SpeciesBatchRowModel.PROPERTY_FREQUENCY); this.ui = ui; + tableFilters = new EnumMap<TableViewMode, RowFilter<SpeciesBatchTableModel, Integer>>(TableViewMode.class); + + tableFilters.put(TableViewMode.ALL, new RowFilter<SpeciesBatchTableModel, Integer>() { + @Override + public boolean include(Entry<? extends SpeciesBatchTableModel, ? extends Integer> entry) { + return true; + } + }); + + tableFilters.put(TableViewMode.ROOT, new RowFilter<SpeciesBatchTableModel, Integer>() { + @Override + public boolean include(Entry<? extends SpeciesBatchTableModel, ? extends Integer> entry) { + boolean result = false; + Integer rowIndex = entry.getIdentifier(); + if (rowIndex != null) { + SpeciesBatchTableModel model = entry.getModel(); + SpeciesBatchRowModel row = model.getEntry(rowIndex); + result = row != null && row.isBatchRoot(); + } + return result; + } + }); + + tableFilters.put(TableViewMode.LEAF, new RowFilter<SpeciesBatchTableModel, Integer>() { + @Override + public boolean include(Entry<? extends SpeciesBatchTableModel, ? extends Integer> entry) { + boolean result = false; + Integer rowIndex = entry.getIdentifier(); + if (rowIndex != null) { + SpeciesBatchTableModel model = entry.getModel(); + SpeciesBatchRowModel row = model.getEntry(rowIndex); + result = row != null && row.isBatchLeaf(); + } + return result; + } + }); } //------------------------------------------------------------------------// @@ -550,8 +592,26 @@ table.setColumnModel(columnModel); initBatchTable(table, columnModel, tableModel); + + getModel().addPropertyChangeListener(SpeciesBatchUIModel.PROPERTY_TABLE_VIEW_MODE, new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + TableViewMode tableViewMode = (TableViewMode) evt.getNewValue(); + + if (tableViewMode == null) { + tableViewMode = TableViewMode.ALL; + } + + if (log.isInfoEnabled()) { + log.info("Will use rowfilter for viewMode: " + tableViewMode); + } + RowFilter<SpeciesBatchTableModel, Integer> filter = tableFilters.get(tableViewMode); + getTable().setRowFilter(filter); + } + }); } + @Override public void onCloseUI() { if (log.isInfoEnabled()) { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUI.css 2013-01-15 11:07:25 UTC (rev 201) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUI.css 2013-01-15 11:21:48 UTC (rev 202) @@ -61,6 +61,7 @@ #speciesField { editable: false; + enabled: false; text: {handler.decorateSpecies(model.getSpecies())}; } @@ -71,6 +72,7 @@ #batchWeightField { editable: false; + enabled: false; text: {getStringValue(model.getBatchWeight())}; } @@ -81,6 +83,7 @@ #sampleWeightField { editable: false; + enabled: false; text: {getStringValue(model.getSampleWeight())}; } 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-15 11:07:25 UTC (rev 201) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-15 11:21:48 UTC (rev 202) @@ -65,10 +65,10 @@ tutti.label.catches.benthosTotalSortedWeight=Poids total VRAC (kg) tutti.label.catches.benthosTotalUnsortedWeight=Poids total HORS VRAC (kg) tutti.label.catches.benthosTotalWeight=Poids TOTAL (kg) -tutti.label.catches.catchThalassa=sur Thalassa +tutti.label.catches.catchThalassa=(*) uniquement sur Thalassa tutti.label.catches.catchTotalRejectedWeight=Poids total REJETÉ (kg) -tutti.label.catches.catchTotalSortedCarousselWeight=Caroussel Observé -tutti.label.catches.catchTotalSortedTremisWeight=Tremis +tutti.label.catches.catchTotalSortedCarousselWeight=Caroussel Observé (*) +tutti.label.catches.catchTotalSortedTremisWeight=Tremis (*) tutti.label.catches.catchTotalSortedWeight=Poids total VRAC (kg) tutti.label.catches.catchTotalUnsortedWeight=Poids total HORS VRAC (kg) tutti.label.catches.catchTotalWeight=Poids TOTAL (kg) @@ -92,9 +92,14 @@ tutti.label.cruise.program=Série tutti.label.cruise.surveyPart=Série partielle tutti.label.cruise.year=Année -tutti.label.filterSpeciesBatchMode.mode.all=Tout voir -tutti.label.filterSpeciesBatchMode.mode.leaf=Voir les feuilles -tutti.label.filterSpeciesBatchMode.mode.root=Voir les parents +tutti.label.filterSpeciesBatchMode.label=Filtre +tutti.label.filterSpeciesBatchMode.label.tip=Pour filtrer les lots +tutti.label.filterSpeciesBatchMode.mode.all=Aucun +tutti.label.filterSpeciesBatchMode.mode.all.tip=Pas de filtre (tous les lots sont visibles) +tutti.label.filterSpeciesBatchMode.mode.leaf=Feuilles +tutti.label.filterSpeciesBatchMode.mode.leaf.tip=Voir uniquement les lots *feuilles* +tutti.label.filterSpeciesBatchMode.mode.root=Parents +tutti.label.filterSpeciesBatchMode.mode.root.tip=Voir uniquement les lots *parents* tutti.label.filterVesselType=Filtre \: tutti.label.filterVesselType.all=Tout tutti.label.filterVesselType.all.tip=Tout les navires