Changeset 2208 in josm


Ignore:
Timestamp:
Sep 28, 2009 12:50:05 PM (4 years ago)
Author:
jttt
Message:

Fix #3589 - Preset on toolbar gives error when nothing selected.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPresetMenu.java

    r2140 r2208  
    2929        super.setIcon(iconName); 
    3030    } 
     31 
     32    private Component copyMenuComponent(Component menuComponent) { 
     33        if (menuComponent instanceof JMenu) { 
     34            JMenu menu = (JMenu)menuComponent; 
     35            JMenu result = new JMenu(menu.getAction()); 
     36            for (Component item:menu.getMenuComponents()) { 
     37                result.add(copyMenuComponent(item)); 
     38            } 
     39            result.setText(menu.getText()); 
     40            return result; 
     41        } else if (menuComponent instanceof JMenuItem) { 
     42            JMenuItem menuItem = (JMenuItem)menuComponent; 
     43            JMenuItem result = new JMenuItem(menuItem.getAction()); 
     44            result.setText(menuItem.getText()); 
     45            return result; 
     46        } else if(menuComponent instanceof JSeparator) { 
     47            return new JSeparator(); 
     48        } else { 
     49            return menuComponent; 
     50        } 
     51    } 
     52 
    3153    public void actionPerformed(ActionEvent e) { 
    3254        Object s = e.getSource(); 
     
    3658            JPopupMenu pm = new JPopupMenu(getName()); 
    3759            for(Component c : menu.getMenuComponents()) 
     60                pm.add(copyMenuComponent(c)); 
    3861            { 
    39                 if(c instanceof JMenuItem) 
    40                 { 
    41                     JMenuItem j = new JMenuItem(((JMenuItem)c).getAction()); 
    42                     j.setText(((JMenuItem)c).getText()); 
    43                     pm.add(j); 
    44                 } 
    45                 else if(c instanceof JSeparator) 
    46                     pm.addSeparator(); 
    4762            } 
    4863            pm.show(co, co.getWidth()/2, co.getHeight()/2); 
Note: See TracChangeset for help on using the changeset viewer.