r1275 - in trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti: . ui/swing/content/operation ui/swing/content/operation/catches ui/swing/content/operation/catches/accidental ui/swing/content/operation/catches/benthos ui/swing/content/operation/catches/benthos/create ui/swing/content/operation/catches/benthos/frequency ui/swing/content/operation/catches/benthos/split ui/swing/content/operation/catches/individualobservation ui/swing/content/operation/catches/marinelitter ui/swing/content/opera
Author: tchemit Date: 2013-10-04 14:42:44 +0200 (Fri, 04 Oct 2013) New Revision: 1275 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/1275 Log: fixes #3326: [ERGO] Alignement des cellules contenant les chiffres Removed: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/service/ 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/catches/EditCatchesUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SampleCategoryComponent.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/benthos/create/CreateBenthosBatchUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIHandler.java 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/create/CreateSpeciesBatchUIHandler.java 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/SplitSpeciesBatchUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapEditorUIHandler.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/editor/TuttiComputedOrNotDataTableCell.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-10-04 07:14:17 UTC (rev 1274) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-10-04 12:42:44 UTC (rev 1275) @@ -63,8 +63,6 @@ import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; -import java.awt.GridBagConstraints; -import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; @@ -420,12 +418,14 @@ ui.getGearUseFeatureTabContent().getModel(); gearUseFeatureModel.setAvailableCaracteristics(getDataContext().getCaracteristics()); setCustomTab(1, gearUseFeatureModel); + listenModelModifiy(gearUseFeatureModel); //init vessel use features VesselUseFeatureTabUIModel vesselUseFeatureModel = ui.getVesselUseFeatureTabContent().getModel(); vesselUseFeatureModel.setAvailableCaracteristics(getDataContext().getCaracteristics()); + listenModelModifiy(vesselUseFeatureModel); setCustomTab(2, vesselUseFeatureModel); // listen when id becones empty or not toupdate cancel action and button 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-10-04 07:14:17 UTC (rev 1274) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.css 2013-10-04 12:42:44 UTC (rev 1275) @@ -343,7 +343,6 @@ _help: {"tutti.editCatchBatch.action.exportFishingOperationReportForSumatra.help"}; } - #saveButton { actionIcon: save; text: "tutti.editCatchBatch.action.saveCatchBatch"; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SampleCategoryComponent.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SampleCategoryComponent.java 2013-10-04 07:14:17 UTC (rev 1274) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SampleCategoryComponent.java 2013-10-04 12:42:44 UTC (rev 1275) @@ -33,7 +33,6 @@ import org.nuiton.decorator.Decorator; import javax.swing.AbstractCellEditor; -import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTable; @@ -63,7 +62,9 @@ TableCellRenderer renderer, Decorator<C> decorator, Color computedDataColor) { - return new SampleCategoryRenderer<C>(renderer, decorator, computedDataColor); + return new SampleCategoryRenderer<C>(renderer, + decorator, + computedDataColor); } public static <C extends Serializable> TableCellEditor newEditor(Decorator<C> decorator, @@ -224,12 +225,26 @@ protected final Color computedWeightColor; + JPanel editor; + + JLabel editorLabel; + + JLabel editorValue; + public SampleCategoryRenderer(TableCellRenderer delegate, Decorator<C> categoryDecorator, Color computedWeightColor) { this.delegate = delegate; this.categoryDecorator = categoryDecorator; this.computedWeightColor = computedWeightColor; + + editor = new JPanel(); + editor.setOpaque(true); + editorLabel = new JLabel(); + editorValue = new JLabel(); + editor.setLayout(new BorderLayout()); + editor.add(editorLabel, BorderLayout.CENTER); + editor.add(editorValue, BorderLayout.EAST); } @Override @@ -242,20 +257,63 @@ SampleCategory<C> sampleCategory = (SampleCategory<C>) value; + String prefixText = getPrefixText(sampleCategory); + editorLabel.setText(prefixText); + + String valueText = getValueText(sampleCategory); + + String valueTextHtml = valueText; + + if (isSelected) { + valueTextHtml = String.format("<strong>%s</strong>", valueTextHtml); + editorLabel.setFont(table.getFont().deriveFont(Font.BOLD)); + } else { + editorLabel.setFont(table.getFont()); + } + valueTextHtml = String.format("<html>%s</html>", valueTextHtml); + + editorValue.setText(valueTextHtml); + + String tip = null; + + if (prefixText != null) { + tip = String.format("<span style='white-space: nowrap;'>%s</span>%s", prefixText, valueText); + + if (isSelected) { + tip = String.format("<strong>%s</strong>", tip); + } + tip = String.format("<html>%s</html>", tip); + } + + editor.setToolTipText(tip); + + return editor; + } + + protected String getPrefixText(SampleCategory<C> sampleCategory) { String text = null; if (sampleCategory != null) { C categoryValue = sampleCategory.getCategoryValue(); if (categoryValue != null) { - Float number = sampleCategory.getCategoryWeight(); - Float computedNumber = sampleCategory.getComputedWeight(); - text = "<span style='white-space: nowrap;'>" + categoryDecorator.toString(categoryValue) + " /"; + text = categoryDecorator.toString(categoryValue) + " /"; if (sampleCategory.isSubSample()) { text += "/"; } - text += " "; + } + } + return text == null ? "" : text; + } + protected String getValueText(SampleCategory<C> sampleCategory) { + String text = ""; + if (sampleCategory != null) { + C categoryValue = sampleCategory.getCategoryValue(); + if (categoryValue != null) { + Float number = sampleCategory.getCategoryWeight(); + Float computedNumber = sampleCategory.getComputedWeight(); + if (number != null) { text += JAXXUtil.getStringValue(number); @@ -271,27 +329,9 @@ } else { text += "-"; } - - text += "</span>"; - - if (isSelected) { - text = "<strong>" + text + "</strong>"; - } - - text = "<html>" + text + "</html>"; } } - - JComponent result = - (JComponent) delegate.getTableCellRendererComponent(table, - text, - isSelected, - hasFocus, - row, - column); - result.setToolTipText(text); - - return result; + return text; } } } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java 2013-10-04 07:14:17 UTC (rev 1274) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java 2013-10-04 12:42:44 UTC (rev 1275) @@ -281,14 +281,16 @@ addFloatColumnToModel(columnModel, AccidentalBatchTableModel.WEIGHT, - weightUnit); + weightUnit, + table); } { // Size column addFloatColumnToModel(columnModel, AccidentalBatchTableModel.SIZE, - TuttiUI.DECIMAL3_PATTERN); + TuttiUI.DECIMAL3_PATTERN, + table); } { // Length step caracteristic column Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java 2013-10-04 07:14:17 UTC (rev 1274) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java 2013-10-04 12:42:44 UTC (rev 1275) @@ -411,20 +411,17 @@ getTable().clearSelection(); } -// @Override -// protected void onAfterSelectedRowChanged(int oldRowIndex, BenthosBatchRowModel oldRow, int newRowIndex, BenthosBatchRowModel newRow) { -// super.onAfterSelectedRowChanged(oldRowIndex, oldRow, newRowIndex, newRow); -// -// if (log.isInfoEnabled()) { -// log.info("After select row: " + newRowIndex); -// } -// -// saveSelectedRowIfNeeded(); -// } - @Override protected void addHighlighters(JXTable table) { + // use white color for not editable even row (to make sure white color is apply at least one) + Highlighter evenHighlighter = TuttiUIUtil.newBackgroundColorHighlighter( + new HighlightPredicate.AndHighlightPredicate( + HighlightPredicate.EVEN, + new HighlightPredicate.NotHighlightPredicate(HighlightPredicate.READ_ONLY)), + Color.WHITE); + table.addHighlighter(evenHighlighter); + super.addHighlighters(table); Color toConfirmColor = getConfig().getColorRowToConfirm(); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIHandler.java 2013-10-04 07:14:17 UTC (rev 1274) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIHandler.java 2013-10-04 12:42:44 UTC (rev 1275) @@ -493,6 +493,8 @@ Caracteristic data = null; + JXTable table = getTable(); + DefaultTableColumnModelExt columnModel = new DefaultTableColumnModelExt(); @@ -500,7 +502,7 @@ addBooleanColumnToModel(columnModel, SplitBenthosBatchTableModel.SELECTED, - getTable()); + table); } boolean editableCategoryValue = false; @@ -514,7 +516,8 @@ editableCategoryValue = true; addFloatColumnToModel(columnModel, SplitBenthosBatchTableModel.EDITABLE_CATEGORY_VALUE, - TuttiUI.DECIMAL1_PATTERN); + TuttiUI.DECIMAL1_PATTERN, + table); } if (data != null) { @@ -531,7 +534,8 @@ addFloatColumnToModel(columnModel, SplitBenthosBatchTableModel.WEIGHT, - weightUnit); + weightUnit, + table); } } @@ -542,8 +546,6 @@ editableCategoryValue, false); - JXTable table = getTable(); - // remove all listener on tables we could add before uninstallTableSaveOnRowChangedSelectionListener(); uninstallTableKeyListener(); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIHandler.java 2013-10-04 07:14:17 UTC (rev 1274) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIHandler.java 2013-10-04 12:42:44 UTC (rev 1275) @@ -287,6 +287,8 @@ } }); + JXTable table = getTable(); + // create table column model DefaultTableColumnModelExt columnModel = new DefaultTableColumnModelExt(); @@ -294,21 +296,24 @@ addFloatColumnToModel(columnModel, BenthosFrequencyTableModel.LENGTH_STEP, - TuttiUI.DECIMAL1_PATTERN); + TuttiUI.DECIMAL1_PATTERN, + table); } { // Number addIntegerColumnToModel(columnModel, BenthosFrequencyTableModel.NUMBER, - TuttiUI.INT_6_DIGITS_PATTERN); + TuttiUI.INT_6_DIGITS_PATTERN, + table); } { // Weight addFloatColumnToModel(columnModel, BenthosFrequencyTableModel.WEIGHT, - weightUnit); + weightUnit, + table); } // create table model @@ -318,8 +323,8 @@ columnModel, model); - JXTable table = getTable(); + table.setModel(tableModel); table.setColumnModel(columnModel); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUIHandler.java 2013-10-04 07:14:17 UTC (rev 1274) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUIHandler.java 2013-10-04 12:42:44 UTC (rev 1275) @@ -421,12 +421,16 @@ Caracteristic data = null; + JXTable table = getTable(); + DefaultTableColumnModelExt columnModel = new DefaultTableColumnModelExt(); { // Selection - addBooleanColumnToModel(columnModel, SplitBenthosBatchTableModel.SELECTED, getTable()); + addBooleanColumnToModel(columnModel, + SplitBenthosBatchTableModel.SELECTED, + table); } boolean editableCategoryValue = false; @@ -440,7 +444,8 @@ editableCategoryValue = true; addFloatColumnToModel(columnModel, SplitBenthosBatchTableModel.EDITABLE_CATEGORY_VALUE, - TuttiUI.DECIMAL1_PATTERN); + TuttiUI.DECIMAL1_PATTERN, + table); } if (data != null) { @@ -457,7 +462,8 @@ addFloatColumnToModel(columnModel, SplitBenthosBatchTableModel.WEIGHT, - getConfig().getBenthosWeightUnit()); + getConfig().getBenthosWeightUnit(), + table); } } @@ -468,8 +474,6 @@ editableCategoryValue, getModel().isSplitMode()); - JXTable table = getTable(); - // remove all listener on tables we could add before uninstallTableSaveOnRowChangedSelectionListener(); uninstallTableKeyListener(); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIHandler.java 2013-10-04 07:14:17 UTC (rev 1274) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIHandler.java 2013-10-04 12:42:44 UTC (rev 1275) @@ -299,14 +299,16 @@ addFloatColumnToModel(columnModel, IndividualObservationBatchTableModel.WEIGHT, - weightUnit); + weightUnit, + table); } { // Size column addFloatColumnToModel(columnModel, IndividualObservationBatchTableModel.SIZE, - TuttiUI.DECIMAL3_PATTERN); + TuttiUI.DECIMAL3_PATTERN, + table); } { // Length step caracteristic column @@ -339,7 +341,8 @@ addFloatColumnToModel(columnModel, id, - TuttiUI.DECIMAL3_PATTERN); + TuttiUI.DECIMAL3_PATTERN, + table); break; case QUALITATIVE: Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIHandler.java 2013-10-04 07:14:17 UTC (rev 1274) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIHandler.java 2013-10-04 12:42:44 UTC (rev 1275) @@ -159,17 +159,6 @@ return result; } -// @Override -// protected void onRowModified(int rowIndex, -// MarineLitterBatchRowModel row, -// String propertyName, -// Object oldValue, -// Object newValue) { -// recomputeRowValidState(row); -// -// saveSelectedRowIfNeeded(); -// } - @Override protected void saveSelectedRowIfRequired(TuttiBeanMonitor<MarineLitterBatchRowModel> rowMonitor, MarineLitterBatchRowModel row) { @@ -274,14 +263,16 @@ addIntegerColumnToModel(columnModel, MarineLitterBatchTableModel.NUMBER, - TuttiUI.INT_3_DIGITS_PATTERN); + TuttiUI.INT_3_DIGITS_PATTERN, + table); } { // Weight column addFloatColumnToModel(columnModel, MarineLitterBatchTableModel.WEIGHT, - weightUnit); + weightUnit, + table); } { // Comment column 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-10-04 07:14:17 UTC (rev 1274) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-10-04 12:42:44 UTC (rev 1275) @@ -419,20 +419,17 @@ getTable().clearSelection(); } -// @Override -// protected void onAfterSelectedRowChanged(int oldRowIndex, SpeciesBatchRowModel oldRow, int newRowIndex, SpeciesBatchRowModel newRow) { -// super.onAfterSelectedRowChanged(oldRowIndex, oldRow, newRowIndex, newRow); -// -// if (log.isInfoEnabled()) { -// log.info("After select row: " + newRowIndex); -// } -// -// saveSelectedRowIfNeeded(); -// } - @Override protected void addHighlighters(JXTable table) { + // use white color for not editable even row (to make sure white color is apply at least one) + Highlighter evenHighlighter = TuttiUIUtil.newBackgroundColorHighlighter( + new HighlightPredicate.AndHighlightPredicate( + HighlightPredicate.EVEN, + new HighlightPredicate.NotHighlightPredicate(HighlightPredicate.READ_ONLY)), + Color.WHITE); + table.addHighlighter(evenHighlighter); + super.addHighlighters(table); Color toConfirmColor = getConfig().getColorRowToConfirm(); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIHandler.java 2013-10-04 07:14:17 UTC (rev 1274) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIHandler.java 2013-10-04 12:42:44 UTC (rev 1275) @@ -501,6 +501,8 @@ Caracteristic data = null; + JXTable table = getTable(); + DefaultTableColumnModelExt columnModel = new DefaultTableColumnModelExt(); @@ -508,7 +510,7 @@ addBooleanColumnToModel(columnModel, SplitSpeciesBatchTableModel.SELECTED, - getTable()); + table); } boolean editableCategoryValue = false; @@ -522,7 +524,8 @@ editableCategoryValue = true; addFloatColumnToModel(columnModel, SplitSpeciesBatchTableModel.EDITABLE_CATEGORY_VALUE, - TuttiUI.DECIMAL1_PATTERN); + TuttiUI.DECIMAL1_PATTERN, + table); } if (data != null) { @@ -539,7 +542,8 @@ addFloatColumnToModel(columnModel, SplitSpeciesBatchTableModel.WEIGHT, - weightUnit); + weightUnit, + table); } } @@ -550,8 +554,6 @@ editableCategoryValue, false); - JXTable table = getTable(); - // remove all listener on tables we could add before uninstallTableSaveOnRowChangedSelectionListener(); uninstallTableKeyListener(); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java 2013-10-04 07:14:17 UTC (rev 1274) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java 2013-10-04 12:42:44 UTC (rev 1275) @@ -286,6 +286,8 @@ } }); + JXTable table = getTable(); + // create table column model DefaultTableColumnModelExt columnModel = new DefaultTableColumnModelExt(); @@ -293,21 +295,24 @@ addFloatColumnToModel(columnModel, SpeciesFrequencyTableModel.LENGTH_STEP, - TuttiUI.DECIMAL1_PATTERN); + TuttiUI.DECIMAL1_PATTERN, + table); } { // Number addIntegerColumnToModel(columnModel, SpeciesFrequencyTableModel.NUMBER, - TuttiUI.INT_6_DIGITS_PATTERN); + TuttiUI.INT_6_DIGITS_PATTERN, + table); } { // Weight addFloatColumnToModel(columnModel, SpeciesFrequencyTableModel.WEIGHT, - weightUnit); + weightUnit, + table); } // create table model @@ -317,8 +322,6 @@ columnModel, model); - JXTable table = getTable(); - table.setModel(tableModel); table.setColumnModel(columnModel); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java 2013-10-04 07:14:17 UTC (rev 1274) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java 2013-10-04 12:42:44 UTC (rev 1275) @@ -422,6 +422,8 @@ Caracteristic data = null; + JXTable table = getTable(); + DefaultTableColumnModelExt columnModel = new DefaultTableColumnModelExt(); @@ -429,7 +431,7 @@ addBooleanColumnToModel(columnModel, SplitSpeciesBatchTableModel.SELECTED, - getTable()); + table); } boolean editableCategoryValue = false; @@ -443,7 +445,8 @@ editableCategoryValue = true; addFloatColumnToModel(columnModel, SplitSpeciesBatchTableModel.EDITABLE_CATEGORY_VALUE, - TuttiUI.DECIMAL1_PATTERN); + TuttiUI.DECIMAL1_PATTERN, + table); } if (data != null) { @@ -460,7 +463,8 @@ addFloatColumnToModel(columnModel, SplitSpeciesBatchTableModel.WEIGHT, - getConfig().getSpeciesWeightUnit()); + getConfig().getSpeciesWeightUnit(), + table); } } @@ -471,8 +475,6 @@ editableCategoryValue, getModel().isSplitMode()); - JXTable table = getTable(); - // remove all listener on tables we could add before uninstallTableSaveOnRowChangedSelectionListener(); uninstallTableKeyListener(); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java 2013-10-04 07:14:17 UTC (rev 1274) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java 2013-10-04 12:42:44 UTC (rev 1275) @@ -94,6 +94,7 @@ import javax.swing.ListCellRenderer; import javax.swing.ListSelectionModel; import javax.swing.ScrollPaneConstants; +import javax.swing.SwingConstants; import javax.swing.SwingUtilities; import javax.swing.UIManager; import javax.swing.border.LineBorder; @@ -464,7 +465,7 @@ protected void addHighlighters(final JXTable table) { HighlightPredicate notSelectedPredicate = new HighlightPredicate.NotHighlightPredicate(HighlightPredicate.IS_SELECTED); - HighlightPredicate rowIsValidPredicate = new HighlightPredicate() { + HighlightPredicate rowIsInvalidPredicate = new HighlightPredicate() { @Override public boolean isHighlighted(Component renderer, ComponentAdapter adapter) { @@ -477,7 +478,8 @@ return result; } }; - + HighlightPredicate rowIsValidPredicate = + new HighlightPredicate.NotHighlightPredicate(rowIsInvalidPredicate); Highlighter selectedHighlighter = TuttiUIUtil.newBackgroundColorHighlighter( HighlightPredicate.IS_SELECTED, getConfig().getColorSelectedRow()); @@ -499,22 +501,12 @@ getConfig().getColorRowReadOnly().darker()); table.addHighlighter(readOnlySelectedHighlighter); -// Highlighter readOnlySelectedEvenHighlighter = TuttiUIUtil.newBackgroundColorHighlighter( -// new HighlightPredicate.AndHighlightPredicate( -// HighlightPredicate.READ_ONLY, -// HighlightPredicate.ODD, -// HighlightPredicate.IS_SELECTED), -// getConfig().getColorSelectedRow().darker()); -// table.addHighlighter(readOnlySelectedEvenHighlighter); - - // paint in a special color inValid rows (not selected) - Highlighter validHighlighter = TuttiUIUtil.newBackgroundColorHighlighter( new HighlightPredicate.AndHighlightPredicate( HighlightPredicate.EDITABLE, notSelectedPredicate, - rowIsValidPredicate), + rowIsInvalidPredicate), getConfig().getColorRowInvalid()); table.addHighlighter(validHighlighter); @@ -523,16 +515,16 @@ new HighlightPredicate.AndHighlightPredicate( HighlightPredicate.EDITABLE, HighlightPredicate.IS_SELECTED, - rowIsValidPredicate), + rowIsInvalidPredicate), getConfig().getColorRowInvalid().darker()); table.addHighlighter(validSelectedHighlighter); - // use configured color odd row (not for selected) Highlighter evenHighlighter = TuttiUIUtil.newBackgroundColorHighlighter( new HighlightPredicate.AndHighlightPredicate( HighlightPredicate.ODD, notSelectedPredicate, + rowIsValidPredicate, HighlightPredicate.READ_ONLY), getConfig().getColorAlternateRow().darker()); table.addHighlighter(evenHighlighter); @@ -541,6 +533,7 @@ new HighlightPredicate.AndHighlightPredicate( HighlightPredicate.ODD, notSelectedPredicate, + rowIsValidPredicate, new HighlightPredicate.NotHighlightPredicate(HighlightPredicate.READ_ONLY)), getConfig().getColorAlternateRow()); table.addHighlighter(evenNotReadOnlyHighlighter); @@ -550,6 +543,7 @@ new HighlightPredicate.AndHighlightPredicate( HighlightPredicate.ODD, HighlightPredicate.IS_SELECTED, + rowIsValidPredicate, new HighlightPredicate.NotHighlightPredicate(HighlightPredicate.READ_ONLY)), getConfig().getColorSelectedRow()); table.addHighlighter(evenSelectedHighlighter); @@ -561,6 +555,18 @@ table.addHighlighter(selectHighlighter); } + protected void listenModelModifiy(AbstractTuttiBeanUIModel model) { + model.addPropertyChangeListener(AbstractTuttiBeanUIModel.PROPERTY_MODIFY, new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + Boolean modify = (Boolean) evt.getNewValue(); + if (modify != null && modify) { + ((AbstractTuttiBeanUIModel) getModel()).setModify(true); + } + } + }); + } + public void openRowMenu(KeyEvent e, JPopupMenu popup) { if (e.getKeyCode() == KeyEvent.VK_CONTEXT_MENU) { @@ -662,8 +668,8 @@ if (computed != null && computed) { Font font = jTextField.getFont().deriveFont(Font.ITALIC); jTextField.setFont(font); - jTextField.setEditable(!computed); - jTextField.setEnabled(!computed); + jTextField.setEditable(false); + jTextField.setEnabled(false); jTextField.setDisabledTextColor(getConfig().getColorComputedWeights()); } if (isAutoSelectOnFocus(jTextField)) { @@ -1118,23 +1124,9 @@ addColumnToModel(model, null, null, identifier, null); } - protected <R extends AbstractTuttiBeanUIModel> void addFloatColumnToModel(TableColumnModel model, - ColumnIdentifier<R> identifier, - String numberPattern) { - - NumberCellEditor<Float> editor = - JAXXWidgetUtil.newNumberTableCellEditor(Float.class, false); - editor.getNumberEditor().setSelectAllTextOnError(true); - editor.getNumberEditor().getTextField().setBorder(new LineBorder(Color.GRAY, 2)); - editor.getNumberEditor().setNumberPattern(numberPattern); - - addColumnToModel(model, editor, null, identifier, null); - } - // protected <R extends AbstractTuttiBeanUIModel> void addFloatColumnToModel(TableColumnModel model, // ColumnIdentifier<R> identifier, -// String numberPattern, -// WeightUnit weightUnit) { +// String numberPattern) { // // NumberCellEditor<Float> editor = // JAXXWidgetUtil.newNumberTableCellEditor(Float.class, false); @@ -1142,13 +1134,31 @@ // editor.getNumberEditor().getTextField().setBorder(new LineBorder(Color.GRAY, 2)); // editor.getNumberEditor().setNumberPattern(numberPattern); // -// addColumnToModel(model, editor, null, identifier, weightUnit); +// addColumnToModel(model, editor, null, identifier, null); // } protected <R extends AbstractTuttiBeanUIModel> void addFloatColumnToModel(TableColumnModel model, ColumnIdentifier<R> identifier, - WeightUnit weightUnit) { + String numberPattern, + JTable table) { + NumberCellEditor<Float> editor = + JAXXWidgetUtil.newNumberTableCellEditor(Float.class, false); + editor.getNumberEditor().setSelectAllTextOnError(true); + editor.getNumberEditor().getTextField().setBorder(new LineBorder(Color.GRAY, 2)); + editor.getNumberEditor().setNumberPattern(numberPattern); + + TableCellRenderer renderer = + newNumberCellRenderer(table.getDefaultRenderer(Number.class)); + + addColumnToModel(model, editor, renderer, identifier, null); + } + + protected <R extends AbstractTuttiBeanUIModel> void addFloatColumnToModel(TableColumnModel model, + ColumnIdentifier<R> identifier, + WeightUnit weightUnit, + JTable table) { + Preconditions.checkNotNull(weightUnit); NumberCellEditor<Float> editor = JAXXWidgetUtil.newNumberTableCellEditor(Float.class, false); @@ -1156,12 +1166,16 @@ editor.getNumberEditor().getTextField().setBorder(new LineBorder(Color.GRAY, 2)); editor.getNumberEditor().setNumberPattern(weightUnit.getNumberEditorPattern()); - addColumnToModel(model, editor, null, identifier, weightUnit); + TableCellRenderer renderer = + newNumberCellRenderer(table.getDefaultRenderer(Number.class)); + + addColumnToModel(model, editor, renderer, identifier, weightUnit); } protected <R extends AbstractTuttiBeanUIModel> void addIntegerColumnToModel(TableColumnModel model, ColumnIdentifier<R> identifier, - String numberPattern) { + String numberPattern, + JTable table) { NumberCellEditor<Integer> editor = JAXXWidgetUtil.newNumberTableCellEditor(Integer.class, false); @@ -1169,9 +1183,28 @@ editor.getNumberEditor().getTextField().setBorder(new LineBorder(Color.GRAY, 2)); editor.getNumberEditor().setNumberPattern(numberPattern); - addColumnToModel(model, editor, null, identifier, null); + TableCellRenderer renderer = newNumberCellRenderer(table.getDefaultRenderer(Number.class)); + addColumnToModel(model, editor, renderer, identifier, null); } + + TableCellRenderer newNumberCellRenderer(final TableCellRenderer defaultRenderer) { + TableCellRenderer result = new TableCellRenderer() { + @Override + public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { + Component result = defaultRenderer.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); + if (result instanceof JLabel) { + JLabel jLabel = (JLabel) result; + jLabel.setHorizontalTextPosition(SwingConstants.RIGHT); + + } + return result; + } + }; + return result; + } + + protected <R extends AbstractTuttiBeanUIModel> void addBooleanColumnToModel(TableColumnModel model, ColumnIdentifier<R> identifier, JTable table) { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapEditorUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapEditorUIHandler.java 2013-10-04 07:14:17 UTC (rev 1274) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapEditorUIHandler.java 2013-10-04 12:42:44 UTC (rev 1275) @@ -68,6 +68,10 @@ super(parentUi.getHandler().getContext(), ui, CaracteristicMapEditorRowModel.PROPERTY_VALUE); } + //------------------------------------------------------------------------// + //-- AbstractTuttiTableUIHandler methods --// + //------------------------------------------------------------------------// + @Override public CaracteristicMapEditorTableModel getTableModel() { return (CaracteristicMapEditorTableModel) getTable().getModel(); @@ -92,12 +96,6 @@ } @Override - protected void onAfterSelectedRowChanged(int oldRowIndex, CaracteristicMapEditorRowModel oldRow, int newRowIndex, CaracteristicMapEditorRowModel newRow) { - super.onAfterSelectedRowChanged(oldRowIndex, oldRow, newRowIndex, newRow); - getModel().setRemoveCaracteristicEnabled(newRowIndex >= 0); - } - - @Override protected void saveSelectedRowIfRequired(TuttiBeanMonitor<CaracteristicMapEditorRowModel> rowMonitor, CaracteristicMapEditorRowModel row) { if (row.isValid()) { @@ -117,6 +115,17 @@ } @Override + protected void beforeOpenPopup(int rowIndex, int columnIndex) { + super.beforeOpenPopup(rowIndex, columnIndex); + + getModel().setRemoveCaracteristicEnabled(rowIndex >= 0); + } + + //------------------------------------------------------------------------// + //-- AbstractTuttiUIHandler methods --// + //------------------------------------------------------------------------// + + @Override public void beforeInitUI() { CaracteristicMapEditorUIModel model = new CaracteristicMapEditorUIModel(); getUI().setContextValue(model); @@ -180,6 +189,10 @@ return null; } + //------------------------------------------------------------------------// + //-- Cancelable methods --// + //------------------------------------------------------------------------// + @Override public void cancel() { @@ -191,20 +204,6 @@ closeUI(ui); } - protected BeanFilterableComboBox<Caracteristic> getKeyCombo() { - return ui.getNewRowKey(); - } - - protected void saveRow(CaracteristicMapEditorRowModel row) { - - if (row.isValid()) { - CaracteristicMap caracteristics = getModel().getCaracteristicMap(); - Preconditions.checkNotNull(caracteristics); - - caracteristics.put(row.getKey(), row.getValue()); - } - } - //------------------------------------------------------------------------// //-- Public methods --// //------------------------------------------------------------------------// @@ -217,7 +216,6 @@ CaracteristicMapEditorRowModel row = tableModel.createNewRow(); row.setKey(selectedItem); -// tableModel.addNewRow(row); getModel().getRows().add(row); int rowIndex = tableModel.getRowCount() - 1; @@ -281,7 +279,6 @@ BeanFilterableComboBox<Caracteristic> keyCombo = getKeyCombo(); keyCombo.setData(caracteristicList); -// selectFirstInCombo(keyCombo); keyCombo.getHandler().reset(); model.setModify(false); } @@ -303,7 +300,6 @@ //add the row in the combo BeanFilterableComboBox keyCombo = getKeyCombo(); keyCombo.addItem(row.getKey()); -// selectFirstInCombo(keyCombo); keyCombo.getHandler().reset(); // remove the row from the model @@ -325,4 +321,22 @@ closeUI(ui); } + + //------------------------------------------------------------------------// + //-- Internal methods --// + //------------------------------------------------------------------------// + + protected BeanFilterableComboBox<Caracteristic> getKeyCombo() { + return ui.getNewRowKey(); + } + + protected void saveRow(CaracteristicMapEditorRowModel row) { + + if (row.isValid()) { + CaracteristicMap caracteristics = getModel().getCaracteristicMap(); + Preconditions.checkNotNull(caracteristics); + + caracteristics.put(row.getKey(), row.getValue()); + } + } } 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 2013-10-04 07:14:17 UTC (rev 1274) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/CaracteristicValueRenderer.java 2013-10-04 12:42:44 UTC (rev 1275) @@ -32,7 +32,9 @@ import jaxx.runtime.swing.renderer.DecoratorTableCellRenderer; import org.nuiton.decorator.Decorator; +import javax.swing.JLabel; import javax.swing.JTable; +import javax.swing.SwingConstants; import javax.swing.table.TableCellRenderer; import java.awt.Component; @@ -70,6 +72,8 @@ Caracteristic caracteristic = (Caracteristic) table.getModel().getValueAt(row, caracteristicColumn); + + boolean numericType = false; if (caracteristic == null) { // should be render a null value ? @@ -81,16 +85,37 @@ case QUALITATIVE: renderer = new DecoratorTableCellRenderer(decorator); break; - case TEXT: + case NUMBER: + + // use default text renderer with align at east + renderer = table.getDefaultRenderer(Object.class); + numericType = true; + break; default: - + case TEXT: // use default text renderer renderer = table.getDefaultRenderer(Object.class); } } + Component result = renderer.getTableCellRendererComponent( table, value, isSelected, hasFocus, row, column); + + if (numericType) { + + if (result instanceof JLabel) { + JLabel jLabel = (JLabel) result; + jLabel.setHorizontalAlignment(SwingConstants.RIGHT); + + } + } else { + if (result instanceof JLabel) { + JLabel jLabel = (JLabel) result; + jLabel.setHorizontalAlignment(SwingConstants.LEFT); + } + } + return result; } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/TuttiComputedOrNotDataTableCell.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/TuttiComputedOrNotDataTableCell.java 2013-10-04 07:14:17 UTC (rev 1274) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/TuttiComputedOrNotDataTableCell.java 2013-10-04 12:42:44 UTC (rev 1275) @@ -31,6 +31,7 @@ import jaxx.runtime.JAXXUtil; import javax.swing.AbstractCellEditor; +import javax.swing.JLabel; import javax.swing.JTable; import javax.swing.SwingConstants; import javax.swing.SwingUtilities; @@ -247,6 +248,10 @@ } component.setFont(font); component.setForeground(foreground); + if (component instanceof JLabel) { + JLabel jLabel = (JLabel) component; + jLabel.setHorizontalAlignment(RIGHT); + } return component; } 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-10-04 07:14:17 UTC (rev 1274) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java 2013-10-04 12:42:44 UTC (rev 1275) @@ -343,8 +343,8 @@ newRow = getTableModel().getEntry(newRowIndex); } - if (log.isInfoEnabled()) { - log.info("Will monitor entry: " + newRowIndex); + if (log.isDebugEnabled()) { + log.debug("Will monitor entry: " + newRowIndex); } rowMonitor.setBean(newRow);
participants (1)
-
tchemit@users.forge.codelutin.com