Mercurial > hg > thermostat
changeset 1590:88778816058c
Recent Time Control Panel refactor
Reviewed-by: jkang, omajid
Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2014-December/011870.html
author | Lukasz Dracz <ldracz@redhat.com> |
---|---|
date | Wed, 03 Dec 2014 15:59:31 -0500 |
parents | 47d60e398499 |
children | cce1d8d2d561 |
files | client/swing/src/main/java/com/redhat/thermostat/client/swing/components/RecentTimeSeriesChartPanel.java client/swing/src/main/java/com/redhat/thermostat/client/swing/components/experimental/RecentTimeControlPanel.java client/swing/src/main/java/com/redhat/thermostat/client/swing/components/experimental/SingleValueChartPanel.java |
diffstat | 3 files changed, 131 insertions(+), 136 deletions(-) [+] |
line wrap: on
line diff
--- a/client/swing/src/main/java/com/redhat/thermostat/client/swing/components/RecentTimeSeriesChartPanel.java Wed Dec 03 12:46:24 2014 -0500 +++ b/client/swing/src/main/java/com/redhat/thermostat/client/swing/components/RecentTimeSeriesChartPanel.java Wed Dec 03 15:59:31 2014 -0500 @@ -37,41 +37,26 @@ package com.redhat.thermostat.client.swing.components; import java.awt.BorderLayout; -import java.awt.Component; -import java.awt.GridBagConstraints; -import java.awt.GridBagLayout; -import java.util.concurrent.TimeUnit; -import javax.swing.DefaultComboBoxModel; -import javax.swing.JComboBox; -import javax.swing.JLabel; import javax.swing.JPanel; -import javax.swing.JTextField; import javax.swing.SwingUtilities; import javax.swing.text.JTextComponent; import com.redhat.thermostat.client.core.experimental.Duration; -import com.redhat.thermostat.client.swing.components.experimental.TimeUnitChangeListener; +import com.redhat.thermostat.client.swing.components.experimental.RecentTimeControlPanel; import org.jfree.chart.ChartPanel; -import com.redhat.thermostat.client.locale.LocaleResources; import com.redhat.thermostat.client.ui.RecentTimeSeriesChartController; -import com.redhat.thermostat.shared.locale.Translate; public class RecentTimeSeriesChartPanel extends JPanel { - private static final Translate<LocaleResources> translator = LocaleResources.createLocalizer(); - private static final long serialVersionUID = -1733906800911900456L; private static final int MINIMUM_DRAW_SIZE = 100; - private final RecentTimeSeriesChartController controller; - - private JPanel labelContainer; + private RecentTimeControlPanel recentTimeControlPanel; private JTextComponent label; public RecentTimeSeriesChartPanel(RecentTimeSeriesChartController controller) { - this.controller = controller; this.setLayout(new BorderLayout()); @@ -92,75 +77,20 @@ cp.setMaximumDrawHeight(Integer.MAX_VALUE); cp.setMinimumDrawWidth(MINIMUM_DRAW_SIZE); cp.setMaximumDrawWidth(Integer.MAX_VALUE); - - add(getControlsAndAdditionalDisplay(), BorderLayout.SOUTH); + Duration duration = new Duration(controller.getTimeValue(), controller.getTimeUnit()); + recentTimeControlPanel = new RecentTimeControlPanel(duration); + add(recentTimeControlPanel, BorderLayout.SOUTH); add(cp, BorderLayout.CENTER); } - private Component getControlsAndAdditionalDisplay() { - JPanel container = new JPanel(); - container.setOpaque(false); - - container.setLayout(new BorderLayout()); - - container.add(getChartControls(), BorderLayout.LINE_START); - container.add(getAdditionalDataDisplay(), BorderLayout.LINE_END); - - return container; - } - - private Component getChartControls() { - JPanel container = new JPanel(); - container.setOpaque(false); - - final JTextField durationSelector = new JTextField(5); - final JComboBox<TimeUnit> unitSelector = new JComboBox<>(); - unitSelector.setModel(new DefaultComboBoxModel<>(controller.getTimeUnits())); - - int defaultValue = controller.getTimeValue(); - TimeUnit defaultUnit = controller.getTimeUnit(); - - TimeUnitChangeListener timeUnitChangeListener = new TimeUnitChangeListener(new com.redhat.thermostat.common.ActionListener() { - @Override - public void actionPerformed(final com.redhat.thermostat.common.ActionEvent actionEvent) { - Duration d = (Duration) actionEvent.getPayload(); - controller.setTime(d.value, d.unit); - } - }, defaultValue, defaultUnit); - - durationSelector.getDocument().addDocumentListener(timeUnitChangeListener); - unitSelector.addActionListener(timeUnitChangeListener); - - durationSelector.setText(String.valueOf(defaultValue)); - unitSelector.setSelectedItem(defaultUnit); - - container.add(new JLabel(translator.localize(LocaleResources.CHART_DURATION_SELECTOR_LABEL).getContents())); - container.add(durationSelector); - container.add(unitSelector); - - return container; - } - - private Component getAdditionalDataDisplay() { - JPanel panel = new JPanel(new GridBagLayout()); - panel.setOpaque(false); - labelContainer = new JPanel(); - labelContainer.setOpaque(false); - GridBagConstraints constraints = new GridBagConstraints(); - constraints.fill = GridBagConstraints.BOTH; - constraints.anchor = GridBagConstraints.CENTER; - panel.add(labelContainer, constraints); - return panel; - } - public void setDataInformationLabel(final String text) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { if (label == null) { label = new ValueField(text); - labelContainer.add(label); + recentTimeControlPanel.addTextComponent(label); } label.setText(text);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/client/swing/src/main/java/com/redhat/thermostat/client/swing/components/experimental/RecentTimeControlPanel.java Wed Dec 03 15:59:31 2014 -0500 @@ -0,0 +1,121 @@ +/* + * Copyright 2012-2014 Red Hat, Inc. + * + * This file is part of Thermostat. + * + * Thermostat is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published + * by the Free Software Foundation; either version 2, or (at your + * option) any later version. + * + * Thermostat is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Thermostat; see the file COPYING. If not see + * <http://www.gnu.org/licenses/>. + * + * Linking this code with other modules is making a combined work + * based on this code. Thus, the terms and conditions of the GNU + * General Public License cover the whole combination. + * + * As a special exception, the copyright holders of this code give + * you permission to link this code with independent modules to + * produce an executable, regardless of the license terms of these + * independent modules, and to copy and distribute the resulting + * executable under terms of your choice, provided that you also + * meet, for each linked independent module, the terms and conditions + * of the license of that module. An independent module is a module + * which is not derived from or based on this code. If you modify + * this code, you may extend this exception to your version of the + * library, but you are not obligated to do so. If you do not wish + * to do so, delete this exception statement from your version. + */ + +package com.redhat.thermostat.client.swing.components.experimental; + +import java.awt.Component; +import java.awt.BorderLayout; +import java.awt.GridBagLayout; +import java.awt.GridBagConstraints; +import java.util.concurrent.TimeUnit; + +import javax.swing.JPanel; +import javax.swing.JTextField; +import javax.swing.JComboBox; +import javax.swing.JLabel; +import javax.swing.DefaultComboBoxModel; +import javax.swing.text.JTextComponent; + +import com.redhat.thermostat.client.core.experimental.Duration; +import com.redhat.thermostat.client.locale.LocaleResources; +import com.redhat.thermostat.common.ActionListener; +import com.redhat.thermostat.shared.locale.Translate; + +public class RecentTimeControlPanel extends JPanel { + + static final TimeUnit[] DEFAULT_TIMEUNITS = new TimeUnit[] { TimeUnit.DAYS, TimeUnit.HOURS, TimeUnit.MINUTES }; + + public static final String PROPERTY_VISIBLE_TIME_RANGE = "visibleTimeRange"; + + private static final Translate<LocaleResources> translator = LocaleResources.createLocalizer(); + + private JPanel labelContainer; + + public RecentTimeControlPanel(Duration duration) { + this.setOpaque(false); + + this.setLayout(new BorderLayout()); + + this.add(getChartControls(duration), BorderLayout.LINE_START); + this.add(getAdditionalDataDisplay(), BorderLayout.LINE_END); + + } + + public void addTextComponent(JTextComponent textComponent) { + labelContainer.add(textComponent); + } + + private Component getChartControls(Duration duration) { + JPanel container = new JPanel(); + container.setOpaque(false); + + final JTextField durationSelector = new JTextField(5); + final JComboBox<TimeUnit> unitSelector = new JComboBox<>(); + unitSelector.setModel(new DefaultComboBoxModel<>(DEFAULT_TIMEUNITS)); + + TimeUnitChangeListener timeUnitChangeListener = new TimeUnitChangeListener(new ActionListener() { + @Override + public void actionPerformed(final com.redhat.thermostat.common.ActionEvent actionEvent) { + Duration d = (Duration) actionEvent.getPayload(); + RecentTimeControlPanel.this.firePropertyChange(PROPERTY_VISIBLE_TIME_RANGE, null, d); + } + }, duration.value, duration.unit); + + durationSelector.getDocument().addDocumentListener(timeUnitChangeListener); + unitSelector.addActionListener(timeUnitChangeListener); + + durationSelector.setText(String.valueOf(duration.value)); + unitSelector.setSelectedItem(duration.unit); + + container.add(new JLabel(translator.localize(LocaleResources.CHART_DURATION_SELECTOR_LABEL).getContents())); + container.add(durationSelector); + container.add(unitSelector); + + return container; + } + + private Component getAdditionalDataDisplay() { + JPanel panel = new JPanel(new GridBagLayout()); + panel.setOpaque(false); + labelContainer = new JPanel(); + labelContainer.setOpaque(false); + GridBagConstraints constraints = new GridBagConstraints(); + constraints.fill = GridBagConstraints.BOTH; + constraints.anchor = GridBagConstraints.CENTER; + panel.add(labelContainer, constraints); + return panel; + } +}
--- a/client/swing/src/main/java/com/redhat/thermostat/client/swing/components/experimental/SingleValueChartPanel.java Wed Dec 03 12:46:24 2014 -0500 +++ b/client/swing/src/main/java/com/redhat/thermostat/client/swing/components/experimental/SingleValueChartPanel.java Wed Dec 03 15:59:31 2014 -0500 @@ -63,17 +63,13 @@ public class SingleValueChartPanel extends JPanel { - static final TimeUnit[] DEFAULT_TIMEUNITS = new TimeUnit[] { TimeUnit.DAYS, TimeUnit.HOURS, TimeUnit.MINUTES }; - public static final String PROPERTY_VISIBLE_TIME_RANGE = "visibleTimeRange"; - private static final Translate<LocaleResources> translator = LocaleResources.createLocalizer(); - private static final int MINIMUM_DRAW_SIZE = 100; private ChartPanel chartPanel; - private JPanel labelContainer; + private RecentTimeControlPanel recentTimeControlPanel; private JTextComponent label; public SingleValueChartPanel(JFreeChart chart, Duration duration) { @@ -108,62 +104,10 @@ chartPanel.setMinimumDrawWidth(MINIMUM_DRAW_SIZE); chartPanel.setMaximumDrawWidth(Integer.MAX_VALUE); + recentTimeControlPanel = new RecentTimeControlPanel(duration); add(chartPanel, BorderLayout.CENTER); - add(getControlsAndAdditionalDisplay(duration), BorderLayout.SOUTH); - - } - - private Component getControlsAndAdditionalDisplay(Duration duration) { - JPanel container = new JPanel(); - container.setOpaque(false); - - container.setLayout(new BorderLayout()); - - container.add(getChartControls(duration), BorderLayout.LINE_START); - container.add(getAdditionalDataDisplay(), BorderLayout.LINE_END); - - return container; - } - - private Component getChartControls(Duration duration) { - JPanel container = new JPanel(); - container.setOpaque(false); - - final JTextField durationSelector = new JTextField(5); - final JComboBox<TimeUnit> unitSelector = new JComboBox<>(); - unitSelector.setModel(new DefaultComboBoxModel<>(DEFAULT_TIMEUNITS)); + add(recentTimeControlPanel, BorderLayout.SOUTH); - TimeUnitChangeListener timeUnitChangeListener = new TimeUnitChangeListener(new ActionListener() { - @Override - public void actionPerformed(final com.redhat.thermostat.common.ActionEvent actionEvent) { - Duration d = (Duration) actionEvent.getPayload(); - SingleValueChartPanel.this.firePropertyChange(PROPERTY_VISIBLE_TIME_RANGE, null, d); - } - }, duration.value, duration.unit); - - durationSelector.getDocument().addDocumentListener(timeUnitChangeListener); - unitSelector.addActionListener(timeUnitChangeListener); - - durationSelector.setText(String.valueOf(duration.value)); - unitSelector.setSelectedItem(duration.unit); - - container.add(new JLabel(translator.localize(LocaleResources.CHART_DURATION_SELECTOR_LABEL).getContents())); - container.add(durationSelector); - container.add(unitSelector); - - return container; - } - - private Component getAdditionalDataDisplay() { - JPanel panel = new JPanel(new GridBagLayout()); - panel.setOpaque(false); - labelContainer = new JPanel(); - labelContainer.setOpaque(false); - GridBagConstraints constraints = new GridBagConstraints(); - constraints.fill = GridBagConstraints.BOTH; - constraints.anchor = GridBagConstraints.CENTER; - panel.add(labelContainer, constraints); - return panel; } public void setTimeRangeToShow(int timeValue, TimeUnit timeUnit) { @@ -180,7 +124,7 @@ public void run() { if (label == null) { label = new ValueField(text); - labelContainer.add(label); + recentTimeControlPanel.addTextComponent(label); } label.setText(text);