Author: bobtarling
Date: 2010-04-10 03:17:55-0700
New Revision: 18236

Added:
   
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UmlControl.java
Modified:
   
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/RowSelector.java
   
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLComboBoxNavigator.java

Log:
Issue 6059: Make dropdown buttons with just a single item into standard 
toolbuttons instead.

Modified: 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/RowSelector.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/RowSelector.java?view=diff&pathrev=18236&r1=18235&r2=18236
==============================================================================
--- 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/RowSelector.java
    (original)
+++ 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/RowSelector.java
    2010-04-10 03:17:55-0700
@@ -89,6 +89,7 @@
 import org.tigris.toolbar.ToolBar;
 import org.tigris.toolbar.ToolBarFactory;
 import org.tigris.toolbar.toolbutton.PopupToolBoxButton;
+import org.tigris.toolbar.toolbutton.ToolButton;
 
 /**
  * A control for displaying the contents of a list model elements in a panel
@@ -98,7 +99,7 @@
  * @author Bob Tarling
  * @since 0.29.2
  */
-class RowSelector extends JPanel
+class RowSelector extends UmlControl
         implements MouseListener, ListDataListener, ListSelectionListener {
 
     /**
@@ -358,13 +359,25 @@
                 }
                 
                 if (!actions.isEmpty()) {
-                    PopupToolBoxButton tb = new 
PopupToolBoxButton(actions.get(0), actions.size(), 1, true);
-                    for (Action action : actions) {
-                        tb.add(action);
-                    }
-                    JPanel buttonPanel =
-                        new JPanel(new FlexiGridLayout(2, 1, 
FlexiGridLayout.ROWCOLPREFERRED));
-                    buttonPanel.add(tb);
+                    final JPanel buttonPanel =
+                       createSingleButtonPanel(actions);
+                       
+//                        new JPanel(new FlexiGridLayout(2, 1, 
FlexiGridLayout.ROWCOLPREFERRED));
+//                     final ToolButton tb;
+//                     if (actions.size() == 1) {
+//                             tb = new ToolButton(actions.get(0));
+//                     } else {
+//                        PopupToolBoxButton ptb = new 
PopupToolBoxButton(actions.get(0), actions.size(), 1, true);
+//                        for (Action action : actions) {
+//                            ptb.add(action);
+//                        }
+//                        tb = ptb;
+//                     }
+//                    final ToolBarFactory tbf = new ToolBarFactory(new 
Object[] {});
+//                    JToolBar toolbar = tbf.createToolBar();
+//                    toolbar.setRollover(true);
+//                     toolbar.add(tb);
+//                    buttonPanel.add(toolbar);
                     add(buttonPanel, BorderLayout.WEST);
                 }
             }

Modified: 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLComboBoxNavigator.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLComboBoxNavigator.java?view=diff&pathrev=18236&r1=18235&r2=18236
==============================================================================
--- 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLComboBoxNavigator.java
   (original)
+++ 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLComboBoxNavigator.java
   2010-04-10 03:17:55-0700
@@ -52,11 +52,14 @@
 import javax.swing.JButton;
 import javax.swing.JComboBox;
 import javax.swing.JPanel;
+import javax.swing.JToolBar;
 
 import org.argouml.application.helpers.ResourceLoaderWrapper;
 import org.argouml.ui.targetmanager.TargetManager;
 import org.tigris.swidgets.FlexiGridLayout;
+import org.tigris.toolbar.ToolBarFactory;
 import org.tigris.toolbar.toolbutton.PopupToolBoxButton;
+import org.tigris.toolbar.toolbutton.ToolButton;
 
 /**
  * This class implements a panel that adds a navigation button to the right of
@@ -65,7 +68,7 @@
  * @author Curt Arnold
  * @since 0.9
  */
-public class UMLComboBoxNavigator extends JPanel implements ActionListener,
+public class UMLComboBoxNavigator extends UmlControl implements ActionListener,
         ItemListener {
 
     private static ImageIcon icon = ResourceLoaderWrapper
@@ -101,14 +104,26 @@
         if (model instanceof UMLComboBoxModel) {
             final List<Action> actions = ((UMLComboBoxModel) 
model).getActions();
             if (!actions.isEmpty()) {
-                PopupToolBoxButton tb = new PopupToolBoxButton(actions.get(0), 
actions.size(), 1, true);
-                for (Action action : actions) {
-                    tb.add(action);
-                }
-                JPanel buttonPanel =
-                    new JPanel(new FlexiGridLayout(2, 1, 
FlexiGridLayout.ROWCOLPREFERRED));
-                buttonPanel.add(tb);
+                final JPanel buttonPanel =
+                       createSingleButtonPanel(actions);
+//                    new JPanel(new FlexiGridLayout(2, 1, 
FlexiGridLayout.ROWCOLPREFERRED));
+//                     final ToolButton tb;
+//             if (actions.size() == 1) {
+//                     tb = new ToolButton(actions.get(0));
+//             } else {
+//                    PopupToolBoxButton ptb = new 
PopupToolBoxButton(actions.get(0), actions.size(), 1, true);
+//                    for (Action action : actions) {
+//                        ptb.add(action);
+//                    }
+//                    tb = ptb;
+//             }
+//                final ToolBarFactory tbf = new ToolBarFactory(new Object[] 
{});
+//                JToolBar toolbar = tbf.createToolBar();
+//                toolbar.setRollover(true);
+//                     toolbar.add(tb);
+//                buttonPanel.add(toolbar);
                 add(buttonPanel, BorderLayout.WEST);
+                
             }
         }
         Object item = theComboBox.getSelectedItem();

Added: 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UmlControl.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UmlControl.java?view=markup&pathrev=18236
==============================================================================
--- (empty file)
+++ 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UmlControl.java
     2010-04-10 03:17:55-0700
@@ -0,0 +1,73 @@
+/* $Id$
+ 
*******************************************************************************
+ * Copyright (c) 2010 Contributors - see below
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Bob Tarling
+ 
*******************************************************************************
+ */
+
+package org.argouml.core.propertypanels.ui;
+
+import java.awt.LayoutManager;
+import java.util.List;
+
+import javax.swing.Action;
+import javax.swing.JPanel;
+import javax.swing.JToolBar;
+
+import org.tigris.swidgets.FlexiGridLayout;
+import org.tigris.toolbar.ToolBarFactory;
+import org.tigris.toolbar.toolbutton.PopupToolBoxButton;
+import org.tigris.toolbar.toolbutton.ToolButton;
+
+/**
+ * The base class for controls on a panel.
+ *
+ * @author Bob Tarling
+ */
+class UmlControl extends JPanel {
+       
+       /**
+        * The uid
+        */
+       private static final long serialVersionUID = -826243573886719300L;
+
+       public UmlControl(LayoutManager layout) {
+               super(layout);
+       }
+       
+       /**
+        * Create a JPanel containing a single button to access the given 
actions.
+        * If there if more than one button then a drop down button is created
+        * with the actions otherwise there is a simple button for the single
+        * action.
+        * @param actions the actions from which to generate the panel
+        * @return the panel containing the actions required.
+        */
+       protected JPanel createSingleButtonPanel(List<Action> actions) {
+        JPanel buttonPanel =
+            new JPanel(new FlexiGridLayout(2, 1, 
FlexiGridLayout.ROWCOLPREFERRED));
+               final ToolButton tb;
+       if (actions.size() == 1) {
+               tb = new ToolButton(actions.get(0));
+               tb.setHideActionText(true);
+       } else {
+            PopupToolBoxButton ptb = new PopupToolBoxButton(actions.get(0), 
actions.size(), 1, true);
+            for (Action action : actions) {
+                ptb.add(action);
+            }
+            tb = ptb;
+       }
+        final ToolBarFactory tbf = new ToolBarFactory(new Object[] {});
+        JToolBar toolbar = tbf.createToolBar();
+        toolbar.setRollover(true);
+               toolbar.add(tb);
+               buttonPanel.add(toolbar);
+        return buttonPanel;
+       }
+}

------------------------------------------------------
http://argouml.tigris.org/ds/viewMessage.do?dsForumId=5905&dsMessageId=2544351

To unsubscribe from this discussion, e-mail: 
[[email protected]].

Reply via email to