OSDN Git Service

update layout
authortama3 <tama3@acee48c3-7b26-0410-bdac-b3d0e5314bbc>
Sat, 7 Jul 2007 06:18:07 +0000 (06:18 +0000)
committertama3 <tama3@acee48c3-7b26-0410-bdac-b3d0e5314bbc>
Sat, 7 Jul 2007 06:18:07 +0000 (06:18 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/stigmata/trunk@152 acee48c3-7b26-0410-bdac-b3d0e5314bbc

src/main/java/jp/naist/se/stigmata/ui/swing/PopupButton.java

index 4ee9e0b..bb76a67 100644 (file)
@@ -4,9 +4,9 @@ package jp.naist.se.stigmata.ui.swing;
  * $Id$\r
  */\r
 \r
+import java.awt.BorderLayout;\r
 import java.awt.Color;\r
 import java.awt.Dimension;\r
-import java.awt.FlowLayout;\r
 import java.awt.Graphics2D;\r
 import java.awt.Point;\r
 import java.awt.Polygon;\r
@@ -14,6 +14,7 @@ import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;\r
 import java.awt.image.BufferedImage;\r
 \r
+import javax.swing.Box;\r
 import javax.swing.Icon;\r
 import javax.swing.ImageIcon;\r
 import javax.swing.JButton;\r
@@ -33,40 +34,25 @@ public class PopupButton extends JPanel{
     private JButton button;\r
     private JPopupMenu popup;\r
     private JButton arrowButton;\r
+    private Icon icon;\r
 \r
     public PopupButton(JButton initButton){\r
-        setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0));\r
+        setLayout(new BorderLayout());\r
 \r
-        this.button = initButton;\r
-\r
-        Icon icon = createIcon();\r
+        button = initButton;\r
+        icon = createIcon();\r
         arrowButton = new JButton(icon);\r
         popup = new JPopupMenu();\r
-        add(button);\r
-        add(arrowButton);\r
-\r
-        Dimension prefferedSize = button.getPreferredSize();\r
-\r
-        arrowButton.setPreferredSize(new Dimension(icon.getIconWidth() + 4, prefferedSize.height));\r
-        setPreferredSize(new Dimension(prefferedSize.width + icon.getIconWidth() + 4, prefferedSize.height));\r
-\r
-        Dimension maxSize = button.getMaximumSize();\r
-        arrowButton.setMaximumSize(new Dimension(icon.getIconWidth() + 4, maxSize.height));\r
-        setMaximumSize(new Dimension(maxSize.width + icon.getIconWidth() + 4, maxSize.height));\r
-\r
-        Dimension minSize = button.getMinimumSize();\r
-        arrowButton.setMaximumSize(new Dimension(icon.getIconWidth() + 4, minSize.height));\r
-        setMinimumSize(new Dimension(minSize.width + icon.getIconWidth() + 4, minSize.height));\r
+        add(button, BorderLayout.CENTER);\r
+        add(arrowButton, BorderLayout.EAST);\r
 \r
-        arrowButton.setSize(arrowButton.getPreferredSize());\r
-        setSize(getPreferredSize());\r
-        \r
         arrowButton.addActionListener(new ActionListener(){\r
             public void actionPerformed(ActionEvent e){\r
                 Point p = button.getLocation();\r
                 popup.show(PopupButton.this, p.x, button.getHeight());\r
             }\r
         });\r
+        updateUI();\r
     }\r
 \r
     @Override\r
@@ -80,6 +66,31 @@ public class PopupButton extends JPanel{
         return button;\r
     }\r
 \r
+    public JMenuItem addMenuItem(JMenuItem menuItem){\r
+        return popup.add(menuItem);\r
+    }\r
+\r
+    public void updateUI(){\r
+        super.updateUI();\r
+        if(button != null){\r
+            Dimension prefferedSize = button.getPreferredSize();\r
+\r
+            arrowButton.setPreferredSize(new Dimension(icon.getIconWidth() + 4, prefferedSize.height));\r
+            setPreferredSize(new Dimension(prefferedSize.width + icon.getIconWidth() + 4, prefferedSize.height));\r
+\r
+            Dimension maxSize = button.getMaximumSize();\r
+            arrowButton.setMaximumSize(new Dimension(icon.getIconWidth() + 4, maxSize.height));\r
+            setMaximumSize(new Dimension(maxSize.width + icon.getIconWidth() + 4, maxSize.height));\r
+\r
+            Dimension minSize = button.getMinimumSize();\r
+            arrowButton.setMaximumSize(new Dimension(icon.getIconWidth() + 4, minSize.height));\r
+            setMinimumSize(new Dimension(minSize.width + icon.getIconWidth() + 4, minSize.height));\r
+\r
+            arrowButton.setSize(arrowButton.getPreferredSize());\r
+            setSize(getPreferredSize());\r
+        }\r
+    }\r
+\r
     private Icon createIcon(){\r
         BufferedImage image = new BufferedImage(10, 10, BufferedImage.TYPE_INT_ARGB);\r
         Graphics2D g = image.createGraphics();\r
@@ -91,8 +102,4 @@ public class PopupButton extends JPanel{
 \r
         return new ImageIcon(image);\r
     }\r
-\r
-    public JMenuItem addMenuItem(JMenuItem menuItem){\r
-        return popup.add(menuItem);\r
-    }\r
 }\r