Ignore:
Timestamp:
2013-04-02T00:55:56+02:00 (11 years ago)
Author:
Don-vip
Message:

see #7846 - Large code refactorization in management of popup menus to simplify interactions with plugins (needed at least for imagery-xml-bounds and tag2link plugins)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java

    r5800 r5821  
    3232
    3333import javax.swing.AbstractAction;
    34 import javax.swing.Action;
    3534import javax.swing.JComponent;
    3635import javax.swing.JLabel;
    37 import javax.swing.JMenuItem;
    3836import javax.swing.JPanel;
    3937import javax.swing.JPopupMenu;
     
    4442import javax.swing.event.ListSelectionEvent;
    4543import javax.swing.event.ListSelectionListener;
    46 import javax.swing.event.PopupMenuListener;
    4744import javax.swing.table.DefaultTableCellRenderer;
    4845import javax.swing.table.DefaultTableModel;
     
    7774import org.openstreetmap.josm.gui.MapFrame;
    7875import org.openstreetmap.josm.gui.MapView;
     76import org.openstreetmap.josm.gui.PopupMenuHandler;
    7977import org.openstreetmap.josm.gui.SideButton;
    8078import org.openstreetmap.josm.gui.dialogs.ToggleDialog;
     
    111109 */
    112110public class PropertiesDialog extends ToggleDialog implements SelectionChangedListener, MapView.EditLayerChangeListener, DataSetListenerAdapter.Listener {
    113     // hook for roadsigns plugin to display a small
    114     // button in the upper right corner of this dialog
     111
     112    /**
     113     * hook for roadsigns plugin to display a small button in the upper right corner of this dialog
     114     */
    115115    public static final JPanel pluginHook = new JPanel();
    116116
     
    134134    private final JTable membershipTable = new JTable(membershipData);
    135135
    136     private JPopupMenu propertyMenu;
    137     private JPopupMenu membershipMenu;
     136    // Popup menus
     137    private final JPopupMenu propertyMenu = new JPopupMenu();
     138    private final JPopupMenu membershipMenu = new JPopupMenu();
     139
     140    // Popup menu handlers
     141    private final PopupMenuHandler propertyMenuHandler = new PopupMenuHandler(propertyMenu);
     142    private final PopupMenuHandler membershipMenuHandler = new PopupMenuHandler(membershipMenu);
    138143
    139144    private final Map<String, Map<String, Integer>> valueCount = new TreeMap<String, Map<String, Integer>>();
     
    202207    /**
    203208     * Create a new PropertiesDialog
     209     * @param mapFrame The parent map fram
    204210     */
    205211    public PropertiesDialog(MapFrame mapFrame) {
     
    370376    private void setupMembershipMenu() {
    371377        // setting up the membership table
    372         membershipMenu = new JPopupMenu();
    373         membershipMenu.add(addRelationToSelectionAction);
    374         membershipMenu.add(selectRelationAction);
    375         membershipMenu.add(addMembersToSelectionAction);
    376         membershipMenu.add(downloadSelectedIncompleteMembersAction);
     378        membershipMenuHandler.addAction(addRelationToSelectionAction);
     379        membershipMenuHandler.addAction(selectRelationAction);
     380        membershipMenuHandler.addAction(addMembersToSelectionAction);
     381        membershipMenuHandler.addAction(downloadSelectedIncompleteMembersAction);
    377382        membershipMenu.addSeparator();
    378383        membershipMenu.add(helpAction);
     
    389394                    idx = new int[]{row};
    390395                }
    391                 List<Relation> rels =  new ArrayList<Relation>(10);
     396                List<Relation> rels = new ArrayList<Relation>();
    392397                for (int i: idx) {
    393398                    Relation r = (Relation) (membershipData.getValueAt(i, 0));
    394399                    rels.add(r);
    395400                }
    396                 selectRelationAction.setRelations(rels);
    397                 addRelationToSelectionAction.setRelations(rels);
    398                 addMembersToSelectionAction.setRelations(rels);
    399                 downloadSelectedIncompleteMembersAction.setRelations(rels);
     401                membershipMenuHandler.setPrimitives(rels);
    400402                membershipMenu.show(membershipTable, p.x, p.y-3);
    401403            }
     
    407409     */
    408410    private void setupPropertiesMenu() {
    409         propertyMenu = new JPopupMenu();
    410411        propertyMenu.add(pasteValueAction);
    411412        propertyMenu.add(copyValueAction);
     
    695696
    696697    // <editor-fold defaultstate="collapsed" desc="Methods that are called by plugins to extend fuctionalty ">
    697     public void addPropertyPopupMenuSeparator() {
    698         propertyMenu.addSeparator();
    699     }
    700 
    701     public JMenuItem addPropertyPopupMenuAction(Action a) {
    702         return propertyMenu.add(a);
    703     }
    704 
    705     public void addPropertyPopupMenuListener(PopupMenuListener l) {
    706         propertyMenu.addPopupMenuListener(l);
    707     }
    708 
    709     public void removePropertyPopupMenuListener(PopupMenuListener l) {
    710         propertyMenu.addPopupMenuListener(l);
     698   
     699    /**
     700     * Replies the property popup menu handler.
     701     * @return The property popup menu handler
     702     */
     703    public PopupMenuHandler getPropertyPopupMenuHandler() {
     704        return propertyMenuHandler;
    711705    }
    712706
     
    721715    }
    722716
    723     public void addMembershipPopupMenuSeparator() {
    724         membershipMenu.addSeparator();
    725     }
    726 
    727     public JMenuItem addMembershipPopupMenuAction(Action a) {
    728         return membershipMenu.add(a);
    729     }
    730 
    731     public void addMembershipPopupMenuListener(PopupMenuListener l) {
    732         membershipMenu.addPopupMenuListener(l);
    733     }
    734 
    735     public void removeMembershipPopupMenuListener(PopupMenuListener l) {
    736         membershipMenu.addPopupMenuListener(l);
     717    /**
     718     * Replies the membership popup menu handler.
     719     * @return The membership popup menu handler
     720     */
     721    public PopupMenuHandler getMembershipPopupMenuHandler() {
     722        return membershipMenuHandler;
    737723    }
    738724
Note: See TracChangeset for help on using the changeset viewer.