001// License: GPL. For details, see LICENSE file. 002package org.openstreetmap.josm.gui.dialogs.relation; 003 004import java.util.Arrays; 005import java.util.Collection; 006 007import javax.swing.Action; 008 009import org.openstreetmap.josm.actions.relation.DeleteRelationsAction; 010import org.openstreetmap.josm.actions.relation.DownloadMembersAction; 011import org.openstreetmap.josm.actions.relation.DownloadRelationAction; 012import org.openstreetmap.josm.actions.relation.DownloadSelectedIncompleteMembersAction; 013import org.openstreetmap.josm.actions.relation.DuplicateRelationAction; 014import org.openstreetmap.josm.actions.relation.EditRelationAction; 015import org.openstreetmap.josm.actions.relation.SelectInRelationListAction; 016import org.openstreetmap.josm.actions.relation.SelectMembersAction; 017import org.openstreetmap.josm.actions.relation.SelectRelationAction; 018import org.openstreetmap.josm.gui.PopupMenuHandler; 019 020/** 021 * Utility class to setup a {@link PopupMenuHandler} with a consistent set of relation actions. 022 * @since 14685 023 */ 024public final class RelationPopupMenus { 025 private RelationPopupMenus() { 026 // Hide default constructor for utils classes 027 } 028 029 /** 030 * Adds relation actions to the given {@link PopupMenuHandler} 031 * @param menu handler to add actions to 032 * @param excludeActions 0 or more action classes to exclude, i.e., not add 033 * @return {@code menu} 034 */ 035 @SafeVarargs 036 public static PopupMenuHandler setupHandler(PopupMenuHandler menu, Class<? extends Action>... excludeActions) { 037 final Collection<Class<? extends Action>> exclude = Arrays.asList(excludeActions); 038 if (!exclude.contains(EditRelationAction.class)) { 039 menu.addAction(new EditRelationAction()); 040 } 041 042 if (!exclude.contains(DuplicateRelationAction.class)) { 043 menu.addAction(new DuplicateRelationAction()); 044 } 045 046 if (!exclude.contains(DeleteRelationsAction.class)) { 047 menu.addAction(new DeleteRelationsAction()); 048 menu.addSeparator(); 049 } 050 051 if (!exclude.contains(SelectInRelationListAction.class)) { 052 menu.addAction(new SelectInRelationListAction()); 053 } 054 055 menu.addAction(new SelectRelationAction(false)); 056 menu.addAction(new SelectRelationAction(true)); 057 menu.addAction(new SelectMembersAction(false)); 058 menu.addAction(new SelectMembersAction(true)); 059 menu.addSeparator(); 060 061 menu.addAction(new DownloadRelationAction()); 062 menu.addAction(new DownloadMembersAction()); 063 menu.addAction(new DownloadSelectedIncompleteMembersAction()); 064 065 return menu; 066 } 067}