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);