# HG changeset patch # User Mario Torre # Date 1381143892 -7200 # Node ID c43421c64478836a8b502b9a227a66022e719dd1 # Parent 11bb959f9814f3e7f5df1eccd68d5910a1986b83 More small fixlets review-thread: http://icedtea.classpath.org/pipermail/thermostat/2013-October/008363.html reviewed-by: vanaltj diff -r 11bb959f9814 -r c43421c64478 client/swing/src/main/java/com/redhat/thermostat/client/swing/components/FontAwesomeIcon.java --- 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(); } diff -r 11bb959f9814 -r c43421c64478 client/swing/src/main/java/com/redhat/thermostat/client/swing/internal/accordion/TitledPane.java --- 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); diff -r 11bb959f9814 -r c43421c64478 client/swing/src/main/java/com/redhat/thermostat/client/swing/internal/vmlist/ReferenceComponent.java --- 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 diff -r 11bb959f9814 -r c43421c64478 client/swing/src/main/java/com/redhat/thermostat/client/swing/internal/vmlist/ReferenceTitle.java --- 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; } diff -r 11bb959f9814 -r c43421c64478 client/swing/src/main/java/com/redhat/thermostat/client/swing/internal/vmlist/controller/DecoratorManager.java --- 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); }