Ignore:
Timestamp:
2019-01-12T21:19:22+01:00 (7 years ago)
Author:
simon04
Message:

fix #14462 - Harmonize relation actions provided in popup menus

File:
1 edited

Legend:

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

    r14475 r14685  
    3434
    3535import org.openstreetmap.josm.actions.ExpertToggleAction;
    36 import org.openstreetmap.josm.actions.IPrimitiveAction;
    3736import org.openstreetmap.josm.actions.relation.AddSelectionToRelations;
    3837import org.openstreetmap.josm.actions.relation.DeleteRelationsAction;
    39 import org.openstreetmap.josm.actions.relation.DownloadMembersAction;
    40 import org.openstreetmap.josm.actions.relation.DownloadSelectedIncompleteMembersAction;
    4138import org.openstreetmap.josm.actions.relation.DuplicateRelationAction;
    4239import org.openstreetmap.josm.actions.relation.EditRelationAction;
     
    4441import org.openstreetmap.josm.actions.relation.ExportRelationToGpxAction.Mode;
    4542import org.openstreetmap.josm.actions.relation.RecentRelationsAction;
    46 import org.openstreetmap.josm.actions.relation.SelectMembersAction;
     43import org.openstreetmap.josm.actions.relation.SelectInRelationListAction;
    4744import org.openstreetmap.josm.actions.relation.SelectRelationAction;
    4845import org.openstreetmap.josm.data.osm.DataSet;
     
    7370import org.openstreetmap.josm.gui.SideButton;
    7471import org.openstreetmap.josm.gui.dialogs.relation.RelationEditor;
     72import org.openstreetmap.josm.gui.dialogs.relation.RelationPopupMenus;
    7573import org.openstreetmap.josm.gui.layer.LayerManager.LayerAddEvent;
    7674import org.openstreetmap.josm.gui.layer.LayerManager.LayerChangeListener;
     
    9997 */
    10098public class RelationListDialog extends ToggleDialog
    101         implements DataSetListener, NavigatableComponent.ZoomChangeListener, ExpertToggleAction.ExpertModeChangeListener {
     99        implements DataSetListener, NavigatableComponent.ZoomChangeListener {
    102100    /** The display list. */
    103101    private final JList<IRelation<?>> displaylist;
     
    120118    /** the duplicate action */
    121119    private final DuplicateRelationAction duplicateAction = new DuplicateRelationAction();
    122     private final DownloadMembersAction downloadMembersAction = new DownloadMembersAction();
    123     private final DownloadSelectedIncompleteMembersAction downloadSelectedIncompleteMembersAction =
    124             new DownloadSelectedIncompleteMembersAction();
    125     private final SelectMembersAction selectMembersAction = new SelectMembersAction(false);
    126     private final SelectMembersAction addMembersToSelectionAction = new SelectMembersAction(true);
     120    /** the select relation action */
    127121    private final SelectRelationAction selectRelationAction = new SelectRelationAction(false);
    128     private final SelectRelationAction addRelationToSelectionAction = new SelectRelationAction(true);
    129122    /** add all selected primitives to the given relations */
    130123    private final AddSelectionToRelations addSelectionToRelations = new AddSelectionToRelations();
    131     private transient JMenuItem addSelectionToRelationMenuItem;
    132124
    133125    /** export relation to GPX track action */
     
    245237        SelectionEventManager.getInstance().addSelectionListener(addSelectionToRelations);
    246238        dataChanged(null);
    247         ExpertToggleAction.addExpertModeChangeListener(this);
    248         expertChanged(ExpertToggleAction.isExpert());
    249239    }
    250240
     
    256246        DatasetEventManager.getInstance().removeDatasetListener(this);
    257247        SelectionEventManager.getInstance().removeSelectionListener(addSelectionToRelations);
    258         ExpertToggleAction.removeExpertModeChangeListener(this);
    259248    }
    260249
     
    632621        List<JMenuItem> checkDisabled = new ArrayList<>();
    633622
    634         // -- select action
    635         popupMenuHandler.addAction(selectRelationAction);
    636         popupMenuHandler.addAction(addRelationToSelectionAction);
    637 
    638         // -- select members action
    639         popupMenuHandler.addAction(selectMembersAction);
    640         popupMenuHandler.addAction(addMembersToSelectionAction);
    641 
    642         // -- download members action
    643         popupMenuHandler.addSeparator();
    644         popupMenuHandler.addAction(downloadMembersAction);
    645         popupMenuHandler.addAction(downloadSelectedIncompleteMembersAction);
     623        RelationPopupMenus.setupHandler(popupMenuHandler, SelectInRelationListAction.class);
    646624
    647625        // -- export relation to gpx action
     
    658636        popupMenuHandler.addAction(deleteRelationsAction).setVisible(false);
    659637
    660         addSelectionToRelationMenuItem = popupMenuHandler.addAction(addSelectionToRelations);
     638        ExpertToggleAction.addVisibilitySwitcher(popupMenuHandler.addAction(addSelectionToRelations));
    661639
    662640        popupMenuHandler.addListener(new PopupMenuListener() {
     
    664642            public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
    665643                for (JMenuItem mi: checkDisabled) {
    666                     mi.setVisible(((IPrimitiveAction) mi.getAction()).isEnabled());
    667 
    668                     Component sep = popupMenu.getComponent(
    669                             Math.max(0, popupMenu.getComponentIndex(mi)-1));
     644                    mi.setVisible(mi.getAction().isEnabled());
     645                    Component sep = popupMenu.getComponent(Math.max(0, popupMenu.getComponentIndex(mi) - 1));
    670646                    if (!(sep instanceof JMenuItem)) {
    671647                        sep.setVisible(mi.isVisible());
     
    770746        }
    771747    }
    772 
    773     @Override
    774     public void expertChanged(boolean isExpert) {
    775         addSelectionToRelationMenuItem.setVisible(isExpert);
    776     }
    777748}
Note: See TracChangeset for help on using the changeset viewer.