From: <de...@us...> - 2012-08-28 21:42:46
|
Revision: 7586 http://fudaa.svn.sourceforge.net/fudaa/?rev=7586&view=rev Author: deniger Date: 2012-08-28 21:42:39 +0000 (Tue, 28 Aug 2012) Log Message: ----------- Modified Paths: -------------- trunk/soft/fudaa-crue/ui-report/src/main/java/org/fudaa/fudaa/crue/report/time/ReportTimeStepSliderPanel.java trunk/soft/fudaa-crue/ui-report/src/main/java/org/fudaa/fudaa/crue/report/time/ReportTimeStepTopPanel.java trunk/soft/fudaa-crue/ui-report/src/main/resources/org/fudaa/fudaa/crue/report/icons/fullExtent.png trunk/soft/fudaa-crue/ui-report/src/main/resources/org/fudaa/fudaa/crue/report/icons/last.png trunk/soft/fudaa-crue/ui-report/src/main/resources/org/fudaa/fudaa/crue/report/icons/shrink.png trunk/soft/fudaa-crue/ui-study/src/main/java/org/fudaa/fudaa/crue/study/actions/RunOptionPanelBuilder.java Added Paths: ----------- trunk/soft/fudaa-crue/ui-common/src/main/java/org/fudaa/fudaa/crue/common/helper/ToStringTransfomerCellRenderer.java trunk/soft/fudaa-crue/ui-report/src/main/java/org/fudaa/fudaa/crue/report/time/ReportTimeReduceRangePanel.java trunk/soft/fudaa-crue/ui-report/src/main/resources/org/fudaa/fudaa/crue/report/time/ trunk/soft/fudaa-crue/ui-report/src/main/resources/org/fudaa/fudaa/crue/report/time/Bundle.properties Removed Paths: ------------- trunk/soft/fudaa-crue/ui-common/src/main/java/org/fudaa/fudaa/crue/common/helper/ToStringTransfomerRunCellRenderer.java Copied: trunk/soft/fudaa-crue/ui-common/src/main/java/org/fudaa/fudaa/crue/common/helper/ToStringTransfomerCellRenderer.java (from rev 7523, trunk/soft/fudaa-crue/ui-common/src/main/java/org/fudaa/fudaa/crue/common/helper/ToStringTransfomerRunCellRenderer.java) =================================================================== --- trunk/soft/fudaa-crue/ui-common/src/main/java/org/fudaa/fudaa/crue/common/helper/ToStringTransfomerCellRenderer.java (rev 0) +++ trunk/soft/fudaa-crue/ui-common/src/main/java/org/fudaa/fudaa/crue/common/helper/ToStringTransfomerCellRenderer.java 2012-08-28 21:42:39 UTC (rev 7586) @@ -0,0 +1,20 @@ +package org.fudaa.fudaa.crue.common.helper; + +import javax.swing.ListCellRenderer; +import org.fudaa.ctulu.gui.CtuluCellTextRenderer; +import org.fudaa.dodico.crue.metier.transformer.ToStringTransformer; + +@SuppressWarnings("serial") +public class ToStringTransfomerCellRenderer extends CtuluCellTextRenderer implements ListCellRenderer{ + + private final ToStringTransformer transfomer; + + public ToStringTransfomerCellRenderer(ToStringTransformer transfomer) { + this.transfomer = transfomer; + } + + @Override + protected void setValue(Object value) { + super.setValue(transfomer.transform(value)); + } +} Deleted: trunk/soft/fudaa-crue/ui-common/src/main/java/org/fudaa/fudaa/crue/common/helper/ToStringTransfomerRunCellRenderer.java =================================================================== --- trunk/soft/fudaa-crue/ui-common/src/main/java/org/fudaa/fudaa/crue/common/helper/ToStringTransfomerRunCellRenderer.java 2012-08-28 15:48:48 UTC (rev 7585) +++ trunk/soft/fudaa-crue/ui-common/src/main/java/org/fudaa/fudaa/crue/common/helper/ToStringTransfomerRunCellRenderer.java 2012-08-28 21:42:39 UTC (rev 7586) @@ -1,20 +0,0 @@ -package org.fudaa.fudaa.crue.common.helper; - -import javax.swing.ListCellRenderer; -import org.fudaa.ctulu.gui.CtuluCellTextRenderer; -import org.fudaa.dodico.crue.metier.transformer.ToStringTransformer; - -@SuppressWarnings("serial") -public class ToStringTransfomerRunCellRenderer extends CtuluCellTextRenderer implements ListCellRenderer{ - - private final ToStringTransformer transfomer; - - public ToStringTransfomerRunCellRenderer(ToStringTransformer transfomer) { - this.transfomer = transfomer; - } - - @Override - protected void setValue(Object value) { - super.setValue(transfomer.transform(value)); - } -} Added: trunk/soft/fudaa-crue/ui-report/src/main/java/org/fudaa/fudaa/crue/report/time/ReportTimeReduceRangePanel.java =================================================================== --- trunk/soft/fudaa-crue/ui-report/src/main/java/org/fudaa/fudaa/crue/report/time/ReportTimeReduceRangePanel.java (rev 0) +++ trunk/soft/fudaa-crue/ui-report/src/main/java/org/fudaa/fudaa/crue/report/time/ReportTimeReduceRangePanel.java 2012-08-28 21:42:39 UTC (rev 7586) @@ -0,0 +1,138 @@ +/* + GPL 2 + */ +package org.fudaa.fudaa.crue.report.time; + +import com.jidesoft.swing.RangeSlider; +import com.memoire.bu.BuGridLayout; +import com.memoire.bu.BuLib; +import java.awt.BorderLayout; +import java.awt.FlowLayout; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; +import java.util.List; +import javax.swing.BorderFactory; +import javax.swing.JComboBox; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import org.apache.commons.lang.math.IntRange; +import org.fudaa.dodico.crue.metier.transformer.ToStringTransformer; +import org.fudaa.fudaa.crue.common.helper.ComboBoxHelper; +import org.fudaa.fudaa.crue.common.helper.ToStringTransfomerCellRenderer; + +/** + * + * @author Frederic Deniger + */ +public class ReportTimeReduceRangePanel { + + RangeSlider rangeSlider; + private final List values; + private final ToStringTransformer toStringTransformer; + IntRange range; + JComboBox cbMin; + JComboBox cbMax; + + public ReportTimeReduceRangePanel(List values, ToStringTransformer toStringTransformer, IntRange initRange) { + this.values = values; + this.toStringTransformer = toStringTransformer; + this.range = initRange; + if (range == null) { + if (values.isEmpty()) { + range = new IntRange(0, 0); + } else { + range = new IntRange(0, values.size() - 1); + } + } + } + JPanel panel; + + public JPanel getPanel() { + if (panel == null) { + createPanel(); + } + return panel; + } + + private JPanel createMinMaxLabels() { + JLabel lbMin = new JLabel(); + lbMin.setFont(BuLib.deriveFont(lbMin.getFont(), -1)); + + JLabel lbMax = new JLabel(); + lbMax.setFont(BuLib.deriveFont(lbMax.getFont(), -1)); + JPanel pnMinMax = new JPanel(new BorderLayout()); + pnMinMax.setBorder(BorderFactory.createEmptyBorder(0, 1, 0, 3)); + pnMinMax.add(lbMin, BorderLayout.WEST); + pnMinMax.add(lbMax, BorderLayout.EAST); + if (!values.isEmpty()) { + lbMin.setText(toStringTransformer.transform(values.get(0))); + lbMin.setToolTipText(lbMin.getText()); + lbMax.setText(toStringTransformer.transform(values.get(values.size() - 1))); + lbMax.setToolTipText(lbMax.getText()); + } + return pnMinMax; + } + + void createPanel() { + panel = new JPanel(new BuGridLayout(1, 2, 2, true, false)); + if (values.isEmpty()) { + return; + } + panel.add(createComboxesPanel()); + rangeSlider = new RangeSlider(0, values.size() - 1, range.getMinimumInteger(), range.getMaximumInteger()); + JPanel pnSlider = new JPanel(new BuGridLayout(1, 2, 2, true, false)); + pnSlider.add(rangeSlider); + rangeSlider.addChangeListener(new ChangeListener() { + @Override + public void stateChanged(ChangeEvent e) { + int min = rangeSlider.getLowValue(); + final int max = rangeSlider.getHighValue(); + cbMin.setSelectedIndex(min); + cbMax.setSelectedIndex(max); + } + }); + JPanel pnMinMax = createMinMaxLabels(); + pnSlider.add(pnMinMax, BorderLayout.SOUTH); + panel.add(pnSlider); + + } + + private JPanel createComboxesPanel() { + final ToStringTransfomerCellRenderer cellRenderer = new ToStringTransfomerCellRenderer(toStringTransformer); + cbMin = new JComboBox(); + ComboBoxHelper.setDefaultModel(cbMin, values); + cbMin.setSelectedIndex(range.getMinimumInteger()); + cbMin.setRenderer(cellRenderer); + cbMax = new JComboBox(); + ComboBoxHelper.setDefaultModel(cbMax, values); + cbMax.setSelectedIndex(range.getMaximumInteger()); + cbMax.setRenderer(cellRenderer); + JPanel cbPanel = new JPanel(new FlowLayout(FlowLayout.CENTER)); + cbPanel.add(new JLabel(org.openide.util.NbBundle.getMessage(ReportTimeReduceRangePanel.class, "MinRange.Label"))); + cbPanel.add(cbMin); + cbPanel.add(new JLabel(org.openide.util.NbBundle.getMessage(ReportTimeReduceRangePanel.class, "MaxRange.Label"))); + cbPanel.add(cbMax); + cbMax.addItemListener(new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + rangeSlider.setHighValue(cbMax.getSelectedIndex()); + } + }); + cbMin.addItemListener(new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + rangeSlider.setLowValue(cbMin.getSelectedIndex()); + } + }); + return cbPanel; + + } + + IntRange getRange() { + int min = rangeSlider.getLowValue(); + int max = rangeSlider.getHighValue(); + return new IntRange(min, max); + } +} Modified: trunk/soft/fudaa-crue/ui-report/src/main/java/org/fudaa/fudaa/crue/report/time/ReportTimeStepSliderPanel.java =================================================================== --- trunk/soft/fudaa-crue/ui-report/src/main/java/org/fudaa/fudaa/crue/report/time/ReportTimeStepSliderPanel.java 2012-08-28 15:48:48 UTC (rev 7585) +++ trunk/soft/fudaa-crue/ui-report/src/main/java/org/fudaa/fudaa/crue/report/time/ReportTimeStepSliderPanel.java 2012-08-28 21:42:39 UTC (rev 7586) @@ -14,6 +14,7 @@ import java.util.List; import java.util.Observable; import javax.swing.AbstractButton; +import javax.swing.BorderFactory; import javax.swing.DefaultBoundedRangeModel; import javax.swing.JButton; import javax.swing.JLabel; @@ -33,7 +34,7 @@ * @author Frederic Deniger */ public class ReportTimeStepSliderPanel extends Observable { - + JSlider slider; List values = Collections.emptyList(); JPanel panel; @@ -45,21 +46,21 @@ JButton btPrevious; JToggleButton btPlay; ToStringTransformer toStringTransformer = ToStringTransformerDefault.TO_STRING; - + JPanel getPanel() { if (panel == null) { buildPanel(); } return panel; } - + public void setToStringTransformer(ToStringTransformer toStringTransformer) { this.toStringTransformer = toStringTransformer; updateLabels(); } - + private void buildPanel() { - panel = new JPanel(new BorderLayout(1, 1)); + panel = new JPanel(new BorderLayout(2, 0)); slider = new JSlider(0, values.size()); slider.addChangeListener(new ChangeListener() { @Override @@ -70,41 +71,42 @@ slider.setPaintTicks(true); slider.setPaintLabels(false); JPanel pnMinMax = createMinMaxLabels(); - JPanel pnSlider = new JPanel(new BuGridLayout(1, 2, 2, true, false)); + JPanel pnSlider = new JPanel(new BuGridLayout(1, 2, 0, true, false)); + pnSlider.setBorder(BorderFactory.createEmptyBorder(3, 0, 0, 0)); pnSlider.add(slider); - pnSlider.add(pnMinMax, BorderLayout.SOUTH); + pnSlider.add(pnMinMax); panel.add(pnSlider); panel.add(createFirst(), BorderLayout.WEST); panel.add(createLast(), BorderLayout.EAST); updateComponents(); } - + protected static JButton create(String iconName) { JButton bt = new JButton(); bt.setMargin(BuInsets.INSETS1111); setIcon(bt, iconName); return bt; } - + private JToggleButton createToggle(String iconName) { JToggleButton bt = new JToggleButton(); bt.setMargin(BuInsets.INSETS1111); setIcon(bt, iconName); return bt; } - + protected void previous() { setValue(slider.getValue() - 1); } - + protected void setValue(int idx) { if (idx >= 0 && idx < values.size()) { slider.setValue(idx); } - + } Timer playTimer; - + private void createTimer() { playTimer = new Timer(0, new ActionListener() { @Override @@ -113,7 +115,7 @@ } }); } - + protected void playNext() { boolean ok = next(); if (!ok) { @@ -122,12 +124,9 @@ } } protected int playDelay = 1000; - + protected void play() { - if (playTimer != null) { - playTimer.stop(); - playTimer = null; - } + stopPlay(); if (btPlay.isSelected()) { createTimer(); playTimer.setRepeats(true); @@ -135,11 +134,11 @@ playTimer.start(); } } - + protected void first() { setValue(0); } - + protected boolean next() { if (isNextAvailable()) { setValue(slider.getValue() + 1); @@ -147,19 +146,31 @@ } return false; } - + protected void last() { setValue(values.size() - 1); } - - public void setValues(List values) { + + public void setValues(List values, boolean reselectLastSelection) { + stopPlay(); + updating = true; + Object current = getSelectedItem(); this.values = new ArrayList(values); if (panel != null) { updateComponents(); } + if (!values.isEmpty()) { + int idx = 0; + if (current != null) { + idx = values.indexOf(current); + } + slider.setValue(idx); + } + updating = false; + sliderChanged(); } boolean updating; - + protected void sliderChanged() { if (updating) { return; @@ -168,18 +179,18 @@ notifyObservers(getSelectedItem()); updateButtonState(); } - + public int getSelectedValue() { return slider.getValue(); } - + public Object getSelectedItem() { if (values.isEmpty()) { return null; } return values.get(slider.getValue()); } - + protected void updateButtonState() { int value = slider.getValue(); btFirst.setEnabled(value > 0); @@ -189,39 +200,37 @@ btLast.setEnabled(enable); btPlay.setEnabled(enable); } - + protected boolean isNextAvailable() { int value = slider.getValue(); return value < values.size() - 1; - + } - + protected Object getMinObject() { return values.isEmpty() ? null : values.get(0); } - + protected Object getMaxObject() { return values.isEmpty() ? null : values.get(values.size() - 1); } - + protected String toString(Object o) { if (o == null) { return StringUtils.EMPTY; } return toStringTransformer.transform(o); } - + private void updateComponents() { - updating = true; slider.setModel(new DefaultBoundedRangeModel(0, 0, 0, Math.max(0, values.size() - 1))); - updating = false; updateLabels(); updateButtonState(); - + } - + private JPanel createFirst() { - JPanel pnFirst = new JPanel(new BuGridLayout(1, 2, 2, false, false)); + JPanel pnFirst = new JPanel(new BuGridLayout(1, 1, 2, false, false, false, false)); btPrevious = create("previous.png"); btPrevious.addActionListener(new ActionListener() { @Override @@ -240,7 +249,7 @@ pnFirst.add(btFirst); return pnFirst; } - + private JPanel createLast() { JPanel pnLast = new JPanel(new BuGridLayout(2, 2, 2, false, false)); btNext = create("next.png"); @@ -269,26 +278,34 @@ pnLast.add(btLast); return pnLast; } - + private JPanel createMinMaxLabels() { lbMin = new JLabel(); lbMin.setFont(BuLib.deriveFont(lbMin.getFont(), -1)); lbMax = new JLabel(); lbMax.setFont(BuLib.deriveFont(lbMax.getFont(), -1)); JPanel pnMinMax = new JPanel(new BorderLayout()); + pnMinMax.setBorder(BorderFactory.createEmptyBorder(0, 1, 0, 3)); pnMinMax.add(lbMin, BorderLayout.WEST); pnMinMax.add(lbMax, BorderLayout.EAST); return pnMinMax; } - + protected static void setIcon(AbstractButton bt, String iconName) { bt.setIcon(ImageUtilities.loadImageIcon("org/fudaa/fudaa/crue/report/icons/" + iconName, false)); } - + private void updateLabels() { lbMax.setText(toString(getMaxObject())); lbMax.setToolTipText(lbMax.getToolTipText()); lbMin.setText(toString(getMinObject())); lbMin.setToolTipText(lbMin.getToolTipText()); } + + private void stopPlay() { + if (playTimer != null) { + playTimer.stop(); + playTimer = null; + } + } } Modified: trunk/soft/fudaa-crue/ui-report/src/main/java/org/fudaa/fudaa/crue/report/time/ReportTimeStepTopPanel.java =================================================================== --- trunk/soft/fudaa-crue/ui-report/src/main/java/org/fudaa/fudaa/crue/report/time/ReportTimeStepTopPanel.java 2012-08-28 15:48:48 UTC (rev 7585) +++ trunk/soft/fudaa-crue/ui-report/src/main/java/org/fudaa/fudaa/crue/report/time/ReportTimeStepTopPanel.java 2012-08-28 21:42:39 UTC (rev 7586) @@ -7,6 +7,7 @@ import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Observable; @@ -14,9 +15,13 @@ import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JPanel; +import javax.swing.SwingConstants; import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang.math.IntRange; import org.fudaa.dodico.crue.metier.transformer.ToStringTransformer; import org.fudaa.dodico.crue.metier.transformer.ToStringTransformerDefault; +import org.fudaa.fudaa.crue.common.helper.DialogHelper; +import org.openide.util.NbBundle; /** * @@ -42,7 +47,7 @@ } return panel; } - boolean reduced; + IntRange reducedRange; @Override public void update(Observable o, Object arg) { @@ -53,6 +58,8 @@ panel = new JPanel(new BorderLayout()); mainLabel = new JLabel(); + mainLabel.setHorizontalTextPosition(SwingConstants.CENTER); + mainLabel.setHorizontalAlignment(SwingConstants.CENTER); btFullExtent = ReportTimeStepSliderPanel.create("fullExtent.png"); btFullExtent.addActionListener(new ActionListener() { @@ -61,8 +68,10 @@ fullExtent(); } }); + btFullExtent.setToolTipText(NbBundle.getMessage(ReportTimeStepTopPanel.class, "FullTimeExtent.Tooltip")); btReduceTime = ReportTimeStepSliderPanel.create("shrink.png"); - btFullExtent.addActionListener(new ActionListener() { + btReduceTime.setToolTipText(NbBundle.getMessage(ReportTimeStepTopPanel.class, "ReduceTimeExtent.Tooltip")); + btReduceTime.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { shrink(); @@ -81,10 +90,23 @@ } protected void fullExtent() { + slider.setValues(values, true); + reducedRange = null; + updateButtons(); } protected void shrink() { - + ReportTimeReduceRangePanel reducePanel = new ReportTimeReduceRangePanel(values, toStringTransformer, reducedRange); + boolean ok = DialogHelper.showQuestionOkCancel(NbBundle.getMessage(ReportTimeStepTopPanel.class, "ReduceTime.DialogTitle"), reducePanel.getPanel()); + if (ok) { + reducedRange = reducePanel.getRange(); + List reduceValue = new ArrayList(); + for (int i = reducedRange.getMinimumInteger(); i <= reducedRange.getMaximumInteger(); i++) { + reduceValue.add(values.get(i)); + } + slider.setValues(reduceValue, true); + updateButtons(); + } } protected String toString(Object o) { @@ -104,13 +126,14 @@ } protected void updateButtons() { - btFullExtent.setEnabled(reduced); + btFullExtent.setEnabled(reducedRange != null); btReduceTime.setEnabled(!values.isEmpty()); } public void setValues(List values) { - reduced = false; + reducedRange = null; this.values = values; - slider.setValues(values); + slider.setValues(values, false); + updateButtons(); } } Modified: trunk/soft/fudaa-crue/ui-report/src/main/resources/org/fudaa/fudaa/crue/report/icons/fullExtent.png =================================================================== (Binary files differ) Modified: trunk/soft/fudaa-crue/ui-report/src/main/resources/org/fudaa/fudaa/crue/report/icons/last.png =================================================================== (Binary files differ) Modified: trunk/soft/fudaa-crue/ui-report/src/main/resources/org/fudaa/fudaa/crue/report/icons/shrink.png =================================================================== (Binary files differ) Copied: trunk/soft/fudaa-crue/ui-report/src/main/resources/org/fudaa/fudaa/crue/report/time/Bundle.properties (from rev 7585, trunk/soft/fudaa-crue/ui-report/src/main/resources/org/fudaa/fudaa/crue/report/Bundle.properties) =================================================================== --- trunk/soft/fudaa-crue/ui-report/src/main/resources/org/fudaa/fudaa/crue/report/time/Bundle.properties (rev 0) +++ trunk/soft/fudaa-crue/ui-report/src/main/resources/org/fudaa/fudaa/crue/report/time/Bundle.properties 2012-08-28 21:42:39 UTC (rev 7586) @@ -0,0 +1,5 @@ +MinRange.Label=Min: +MaxRange.Label=Max: +ReduceTime.DialogTitle=R\u00e9duction intervalle de temps +ReduceTimeExtent.Tooltip=R\u00e9duire l'intervalle de temps +FullTimeExtent.Tooltip=Utiliser tout l'intervalle de temps Modified: trunk/soft/fudaa-crue/ui-study/src/main/java/org/fudaa/fudaa/crue/study/actions/RunOptionPanelBuilder.java =================================================================== --- trunk/soft/fudaa-crue/ui-study/src/main/java/org/fudaa/fudaa/crue/study/actions/RunOptionPanelBuilder.java 2012-08-28 15:48:48 UTC (rev 7585) +++ trunk/soft/fudaa-crue/ui-study/src/main/java/org/fudaa/fudaa/crue/study/actions/RunOptionPanelBuilder.java 2012-08-28 21:42:39 UTC (rev 7586) @@ -18,7 +18,7 @@ import org.fudaa.dodico.crue.metier.transformer.ToStringTransformer; import org.fudaa.dodico.crue.projet.create.RunCalculOption; import org.fudaa.dodico.crue.projet.create.RunCreatorOptions; -import org.fudaa.fudaa.crue.common.helper.ToStringTransfomerRunCellRenderer; +import org.fudaa.fudaa.crue.common.helper.ToStringTransfomerCellRenderer; import org.openide.DialogDisplayer; import org.openide.NotifyDescriptor; import org.openide.util.NbBundle; @@ -77,7 +77,7 @@ OptionToStringTransformer toString = new OptionToStringTransformer(); for (CrueFileType crueFileType : runFileType) { JComboBox cb = new JComboBox(runOptions); - cb.setRenderer(new ToStringTransfomerRunCellRenderer(toString)); + cb.setRenderer(new ToStringTransfomerCellRenderer(toString)); cb.setSelectedItem(defaultOptions.get(crueFileType)); options.put(crueFileType, cb); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |