changeset 1629:4552784dedb6

Add legend back to timelines review-thread: http://icedtea.classpath.org/pipermail/thermostat/2014-December/012167.html reviewed-by: omajid
author Mario Torre <neugens.limasoftware@gmail.com>
date Thu, 11 Dec 2014 11:45:08 +0100
parents 421d652d113d
children 65101ac36963
files thread/client-common/src/main/java/com/redhat/thermostat/thread/client/common/chart/ChartColors.java thread/client-common/src/main/java/com/redhat/thermostat/thread/client/common/model/timeline/TimelineFactory.java thread/client-swing/src/main/java/com/redhat/thermostat/thread/client/swing/impl/ThreadTimelineLegendPanel.java thread/client-swing/src/main/java/com/redhat/thermostat/thread/client/swing/impl/timeline/TimelineViewComponent.java thread/client-swing/src/main/java/com/redhat/thermostat/thread/client/swing/impl/timeline/model/LegendPanel.java
diffstat 5 files changed, 118 insertions(+), 153 deletions(-) [+]
line wrap: on
line diff
--- a/thread/client-common/src/main/java/com/redhat/thermostat/thread/client/common/chart/ChartColors.java	Thu Dec 11 11:45:07 2014 +0100
+++ b/thread/client-common/src/main/java/com/redhat/thermostat/thread/client/common/chart/ChartColors.java	Thu Dec 11 11:45:08 2014 +0100
@@ -55,15 +55,15 @@
         
         switch (state) {
         case TIMED_WAITING:
-            result = Palette.PALE_RED;
+            result = Palette.GRANITA_ORANGE;
             break;
             
         case NEW:
-            result = Palette.POMP_AND_POWER_VIOLET;
+            result = Palette.GREEN;
             break;
 
         case RUNNABLE:
-            result = Palette.PRUSSIAN_BLUE;
+            result = Palette.ADWAITA_BLU;
             break;
 
         case TERMINATED:
@@ -75,11 +75,11 @@
             break;
 
         case WAITING:
-            result = Palette.GRANITA_ORANGE;            
+            result = Palette.PALE_RED;
             break;
 
         default:
-            result = Palette.BLACK;            
+            result = Palette.LIGHT_GRAY;
             break;
         }
         return result;
--- a/thread/client-common/src/main/java/com/redhat/thermostat/thread/client/common/model/timeline/TimelineFactory.java	Thu Dec 11 11:45:07 2014 +0100
+++ b/thread/client-common/src/main/java/com/redhat/thermostat/thread/client/common/model/timeline/TimelineFactory.java	Thu Dec 11 11:45:08 2014 +0100
@@ -37,6 +37,7 @@
 package com.redhat.thermostat.thread.client.common.model.timeline;
 
 import com.redhat.thermostat.client.ui.Palette;
+import com.redhat.thermostat.thread.client.common.chart.ChartColors;
 import com.redhat.thermostat.thread.model.ThreadState;
 
 /**
@@ -46,34 +47,8 @@
 
     public static TimelineProbe createTimelineProbe(ThreadState state)
     {
-        Palette color = null;
-
         Thread.State threadState = Thread.State.valueOf(state.getState());
-        switch (threadState) {
-        case NEW:
-            color = Palette.GREEN;
-            break;
-
-        case RUNNABLE:
-            color = Palette.ADWAITA_BLU;
-            break;
-
-        case BLOCKED:
-            color = Palette.VIOLET;
-            break;
-
-        case WAITING:
-            color = Palette.GRANITA_ORANGE;
-            break;
-
-        case TIMED_WAITING:
-            color = Palette.ADWAITA_BLU;
-            break;
-
-        case TERMINATED:
-            color = Palette.LIGHT_GRAY;
-            break;
-        }
+        Palette color = ChartColors.getPaletteColor(threadState);
         return new TimelineProbe(color, state.getState(), state.getTimeStamp());
     }
 }
--- a/thread/client-swing/src/main/java/com/redhat/thermostat/thread/client/swing/impl/ThreadTimelineLegendPanel.java	Thu Dec 11 11:45:07 2014 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,119 +0,0 @@
-/*
- * 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.thread.client.swing.impl;
-
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Dimension;
-import java.awt.FlowLayout;
-import java.awt.Graphics;
-import java.awt.Graphics2D;
-
-import javax.swing.Icon;
-import javax.swing.JFrame;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.SwingConstants;
-import javax.swing.SwingUtilities;
-
-import com.redhat.thermostat.client.swing.GraphicsUtils;
-import com.redhat.thermostat.thread.client.common.chart.ChartColors;
-
-@SuppressWarnings("serial")
-public class ThreadTimelineLegendPanel extends JPanel {
-    
-    public ThreadTimelineLegendPanel() {
-        setLayout(new FlowLayout(FlowLayout.RIGHT, 10, 10));
-        setPreferredSize(new Dimension(getWidth(), 40));
-        
-        for (Thread.State state : Thread.State.values()) {
-            
-            Color color = ChartColors.getColor(state);
-            // no chart is black, it's just the default colour
-            if (!color.equals(Color.BLACK)) {
-                JLabel label =  new JLabel(new ColorIcon(color), SwingConstants.LEFT);
-                label.setText(state.toString());
-                add(label);
-            }
-        }
-    }
-    
-    private class ColorIcon implements Icon {
-        
-        private Color color;
-        private ColorIcon(Color color) {
-            this.color = color;
-        }
-        
-        @Override
-        public int getIconHeight() {
-            return 16;
-        }
-        
-        @Override
-        public int getIconWidth() {
-            return 16;
-        }
-        
-        @Override
-        public void paintIcon(Component c, Graphics g, int x, int y) {
-            Graphics2D graphics = GraphicsUtils.getInstance().createAAGraphics(g);
-            graphics.setColor(color);
-            graphics.fillRect(x, y, getIconWidth(), getIconHeight());
-            graphics.dispose();
-        }
-    }
-
-    public static void main(String[] args) {
-        SwingUtilities.invokeLater(new Runnable() {
-            
-            @Override
-            public void run() {
-                JFrame frame = new JFrame();
-                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
-               
-                ThreadTimelineLegendPanel panel = new ThreadTimelineLegendPanel();
-                
-                frame.add(panel);
-                frame.setSize(800, 150);
-                
-                frame.setVisible(true);
-            }
-        });
-    }
-}
-
--- a/thread/client-swing/src/main/java/com/redhat/thermostat/thread/client/swing/impl/timeline/TimelineViewComponent.java	Thu Dec 11 11:45:07 2014 +0100
+++ b/thread/client-swing/src/main/java/com/redhat/thermostat/thread/client/swing/impl/timeline/TimelineViewComponent.java	Thu Dec 11 11:45:08 2014 +0100
@@ -41,6 +41,7 @@
 import com.redhat.thermostat.client.swing.components.ThermostatScrollPane;
 import com.redhat.thermostat.common.model.Range;
 import com.redhat.thermostat.thread.client.swing.experimental.components.ContentPane;
+import com.redhat.thermostat.thread.client.swing.impl.timeline.model.LegendPanel;
 import com.redhat.thermostat.thread.client.swing.impl.timeline.model.RangeChangeEvent;
 import com.redhat.thermostat.thread.client.swing.impl.timeline.model.RangeChangeListener;
 import com.redhat.thermostat.thread.client.swing.impl.timeline.model.RatioChangeEvent;
@@ -68,6 +69,8 @@
 
     public void initComponents() {
 
+        ContentPane contentPane = new ContentPane();
+
         this.model = new TimelineModel();
 
         viewport = new TimelineViewport();
@@ -80,19 +83,24 @@
         header.initComponents();
         scrollPane.setColumnHeaderView(header);
 
-        add(scrollPane, BorderLayout.CENTER);
+        contentPane.add(scrollPane, BorderLayout.CENTER);
 
         scrollBar = new ThermostatScrollBar(ThermostatScrollBar.HORIZONTAL);
         model.setScrollBarModel(scrollBar.getModel());
 
         scrollBar.addAdjustmentListener(new TimelineAdjustmentListener(model));
 
-        add(scrollBar, BorderLayout.SOUTH);
+        contentPane.add(scrollBar, BorderLayout.SOUTH);
         scrollBar.setEnabled(false);
         scrollBar.setVisible(false);
 
         header.setControlsEnabled(false);
 
+        add(contentPane, BorderLayout.CENTER);
+
+        LegendPanel legend = new LegendPanel(uiDefaults);
+        add(legend, BorderLayout.SOUTH);
+
         model.addRatioChangeListener(new RatioChangeListener() {
             @Override
             public void ratioChanged(RatioChangeEvent event) {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/thread/client-swing/src/main/java/com/redhat/thermostat/thread/client/swing/impl/timeline/model/LegendPanel.java	Thu Dec 11 11:45:08 2014 +0100
@@ -0,0 +1,101 @@
+/*
+ * 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.thread.client.swing.impl.timeline.model;
+
+import com.redhat.thermostat.client.swing.GraphicsUtils;
+import com.redhat.thermostat.client.swing.UIDefaults;
+import com.redhat.thermostat.thread.client.common.chart.ChartColors;
+import com.redhat.thermostat.thread.client.swing.experimental.components.DataPane;
+import com.redhat.thermostat.thread.client.swing.experimental.components.Separator;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import javax.swing.Icon;
+import javax.swing.JLabel;
+import javax.swing.SwingConstants;
+
+/**
+ *
+ */
+public class LegendPanel extends DataPane {
+
+    public LegendPanel(UIDefaults defaults) {
+        setBorder(new Separator(defaults, Separator.Side.TOP.TOP, Separator.Type.SOLID));
+        setLayout(new FlowLayout(FlowLayout.RIGHT, 10, 6));
+        setPreferredSize(new Dimension(getWidth(), 30));
+
+        for (Thread.State state : Thread.State.values()) {
+
+            Color color = ChartColors.getColor(state);
+            // no chart is black, it's just the default colour
+            if (!color.equals(Color.BLACK)) {
+                JLabel label =  new JLabel(new ColorIcon(color), SwingConstants.LEFT);
+                label.setText(state.toString());
+                add(label);
+            }
+        }
+    }
+
+    private class ColorIcon implements Icon {
+
+        private Color color;
+        private ColorIcon(Color color) {
+            this.color = color;
+        }
+
+        @Override
+        public int getIconHeight() {
+            return 12;
+        }
+
+        @Override
+        public int getIconWidth() {
+            return 12;
+        }
+
+        @Override
+        public void paintIcon(Component c, Graphics g, int x, int y) {
+            Graphics2D graphics = GraphicsUtils.getInstance().createAAGraphics(g);
+            graphics.setColor(color);
+            graphics.fillRect(x, y, getIconWidth(), getIconHeight());
+            graphics.dispose();
+        }
+    }
+}