changeset 1271:c43421c64478

More small fixlets review-thread: http://icedtea.classpath.org/pipermail/thermostat/2013-October/008363.html reviewed-by: vanaltj
author Mario Torre <neugens.limasoftware@gmail.com>
date Mon, 07 Oct 2013 13:04:52 +0200
parents 11bb959f9814
children 8689faefe49d
files client/swing/src/main/java/com/redhat/thermostat/client/swing/components/FontAwesomeIcon.java client/swing/src/main/java/com/redhat/thermostat/client/swing/internal/accordion/TitledPane.java client/swing/src/main/java/com/redhat/thermostat/client/swing/internal/vmlist/ReferenceComponent.java client/swing/src/main/java/com/redhat/thermostat/client/swing/internal/vmlist/ReferenceTitle.java client/swing/src/main/java/com/redhat/thermostat/client/swing/internal/vmlist/controller/DecoratorManager.java
diffstat 5 files changed, 48 insertions(+), 22 deletions(-) [+]
line wrap: on
line diff
--- a/client/swing/src/main/java/com/redhat/thermostat/client/swing/components/FontAwesomeIcon.java	Mon Sep 30 17:12:26 2013 +0200
+++ b/client/swing/src/main/java/com/redhat/thermostat/client/swing/components/FontAwesomeIcon.java	Mon Oct 07 13:04:52 2013 +0200
@@ -40,6 +40,7 @@
 import java.awt.Component;
 import java.awt.Font;
 import java.awt.FontFormatException;
+import java.awt.FontMetrics;
 import java.awt.Graphics;
 import java.awt.Graphics2D;
 import java.awt.RenderingHints;
@@ -119,7 +120,7 @@
         if (buffer == null) {
             buffer = new BufferedImage(getIconWidth(), getIconHeight(),
                                        BufferedImage.TYPE_INT_ARGB);
-            
+                        
             Graphics2D graphics = (Graphics2D) buffer.getGraphics();
             graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                                       RenderingHints.VALUE_ANTIALIAS_ON);
@@ -129,9 +130,12 @@
             graphics.setFont(font);
             graphics.setColor(color);
             
+            FontMetrics metrics = graphics.getFontMetrics(font);
+            int width = metrics.charWidth(iconID);
+
+            int stringX = (int) (getIconWidth()/2 - width/2 + .5);
             int stringY = getIconHeight() - (getIconHeight()/4) + 1;
-            graphics.drawString(String.valueOf(iconID), 0, stringY);
-            
+            graphics.drawString(String.valueOf(iconID), stringX, stringY);            
             graphics.dispose();
         }
         
--- a/client/swing/src/main/java/com/redhat/thermostat/client/swing/internal/accordion/TitledPane.java	Mon Sep 30 17:12:26 2013 +0200
+++ b/client/swing/src/main/java/com/redhat/thermostat/client/swing/internal/accordion/TitledPane.java	Mon Oct 07 13:04:52 2013 +0200
@@ -68,7 +68,10 @@
  */
 @SuppressWarnings("serial")
 public class TitledPane extends JPanel implements AccordionComponent {
-
+    
+    // TODO: move in UIDefault or something class
+    protected static final int EXPANDER_ICON_SIZE = 12;
+    
     public static final Color SELECTED_FG = Palette.EARL_GRAY.getColor();
     public static final Color UNSELECTED_FG = Palette.DARK_GRAY.getColor();
     
@@ -161,12 +164,11 @@
 
         expanded = false;
         
-        // TODO: move in UIDefault or something class
-        int iconSize = 24;
+        int iconSize = EXPANDER_ICON_SIZE;
         
         emptyIcon = new EmptyIcon(iconSize, iconSize);
 
-        // TODO: move in UIDefault too, especially the constants
+        // TODO: move in UIDefault, especially the constants
         expandedIcon = new FontAwesomeIcon('\uf107', iconSize, unselectedColor);
         expandedSelectedIcon = new FontAwesomeIcon('\uf107', iconSize, selectedColor);
         
@@ -174,7 +176,6 @@
         collapsedIconSelectedIcon = new FontAwesomeIcon('\uf105', iconSize, selectedColor);
 
         iconLabel = new JLabel(emptyIcon);
-        iconLabel.setText(" ");
         iconLabel.setHorizontalTextPosition(SwingConstants.LEFT);
         
         iconLabel.setName(title + "_ExpanderIcon");
@@ -184,7 +185,6 @@
                 setExpanded(!isExpanded());
             }
         });
-
         titlePane.add(iconLabel, BorderLayout.WEST);
         titlePane.add(this.titleComponent.getUiComponent(), BorderLayout.CENTER);
         
--- a/client/swing/src/main/java/com/redhat/thermostat/client/swing/internal/vmlist/ReferenceComponent.java	Mon Sep 30 17:12:26 2013 +0200
+++ b/client/swing/src/main/java/com/redhat/thermostat/client/swing/internal/vmlist/ReferenceComponent.java	Mon Oct 07 13:04:52 2013 +0200
@@ -37,16 +37,15 @@
 package com.redhat.thermostat.client.swing.internal.vmlist;
 
 import java.awt.BorderLayout;
-import java.awt.Color;
 import java.awt.Component;
+import java.awt.Dimension;
 import java.awt.Graphics;
 import java.awt.Graphics2D;
-import java.awt.Rectangle;
 
+import javax.swing.Box;
 import javax.swing.JLabel;
 import javax.swing.JPanel;
 
-import com.redhat.thermostat.client.swing.GraphicsUtils;
 import com.redhat.thermostat.client.swing.components.CompositeIcon;
 import com.redhat.thermostat.client.swing.components.Icon;
 import com.redhat.thermostat.client.swing.components.ShadowLabel;
@@ -58,7 +57,6 @@
 public class ReferenceComponent extends JPanel implements AccordionComponent, ReferenceProvider {
 
     private ShadowLabel mainLabel;
-    private JLabel iconLabel;
     
     private boolean highlight;
     
@@ -72,6 +70,10 @@
     private Ref vm;
     
     public ReferenceComponent(Ref vm) {
+        this(vm, true);
+    }
+    
+    public ReferenceComponent(Ref vm, boolean addGap) {
         
         this.vm = vm;
         this.painter = new ReferenceComponentPainter();
@@ -80,12 +82,14 @@
 
         mainLabel = new ShadowLabel();
         mainLabel.setForeground(Palette.DROID_GRAY.getColor());
-
         mainLabel.setText(vm.getName());
         add(mainLabel, BorderLayout.CENTER);
-        iconLabel = new JLabel();
-        iconLabel.setText(" ");
-        add(iconLabel, BorderLayout.WEST);
+
+        if (addGap) {
+            int gapSize = ReferenceTitle.ICON_GAP;
+            Component gap = Box.createRigidArea(new Dimension(gapSize, gapSize));
+            add(gap, BorderLayout.WEST);
+        }
     }
 
     @Override
--- a/client/swing/src/main/java/com/redhat/thermostat/client/swing/internal/vmlist/ReferenceTitle.java	Mon Sep 30 17:12:26 2013 +0200
+++ b/client/swing/src/main/java/com/redhat/thermostat/client/swing/internal/vmlist/ReferenceTitle.java	Mon Oct 07 13:04:52 2013 +0200
@@ -44,10 +44,12 @@
 @SuppressWarnings("serial")
 public class ReferenceTitle extends TitledPane implements ReferenceProvider {
     
+    public static final int ICON_GAP = EXPANDER_ICON_SIZE;
+    
     private HostRef ref;
     
     public ReferenceTitle(HostRef ref) {
-        super(ref.getHostName(), new ReferenceComponentPainter(), new ReferenceComponent(ref));
+        super(ref.getHostName(), new ReferenceComponentPainter(), new ReferenceComponent(ref, false));
         this.ref = ref;
     }
 
--- a/client/swing/src/main/java/com/redhat/thermostat/client/swing/internal/vmlist/controller/DecoratorManager.java	Mon Sep 30 17:12:26 2013 +0200
+++ b/client/swing/src/main/java/com/redhat/thermostat/client/swing/internal/vmlist/controller/DecoratorManager.java	Mon Oct 07 13:04:52 2013 +0200
@@ -108,13 +108,16 @@
             
             switch (decorator.getQuadrant()) {
             case MAIN:
+                canvas = createCustomIcon(canvas, icon);
+                break;
+                
             case TOP_LEFT:
-                canvas = createCustomIcon(canvas, icon, 0);
+                canvas = createCustomIcon(canvas, icon, 0, 0);
                 break;
 
             case BOTTOM_LEFT:
                 int y = canvas.getIconHeight() - icon.getIconHeight();
-                canvas = createCustomIcon(canvas, icon, y);
+                canvas = createCustomIcon(canvas, icon, 0, y);
                 break;
                 
             default:
@@ -138,14 +141,27 @@
         }
         return icon;
     }
+  
+    private Icon createCustomIcon(Icon source, Icon newIcon) {
+        float v1 = source.getIconWidth() / 2;
+        float v2 = newIcon.getIconWidth() / 2; 
+        
+        int x = (int) (v1 - v2 + 0.5);;
+        
+        v1 = source.getIconHeight() / 2;
+        v2 = newIcon.getIconHeight() / 2; 
+        
+        int y = (int) (v1 - v2 + 0.5);
+        return createCustomIcon(source, newIcon, x, y);
+    }
     
-    private Icon createCustomIcon(Icon source, Icon newIcon, int y) {
+    private Icon createCustomIcon(Icon source, Icon newIcon, int x, int y) {
         BufferedImage image = new BufferedImage(source.getIconWidth(),
                                                 source.getIconHeight(),
                                                 BufferedImage.TYPE_INT_ARGB);
         Graphics2D graphics = (Graphics2D) image.getGraphics();
         source.paintIcon(null, graphics, 0, 0);
-        graphics.drawImage(newIcon.getImage(), 0, y, null);
+        graphics.drawImage(newIcon.getImage(), x, y, null);
         
         return new Icon(image);
     }