001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.gui.dialogs.relation;
003
004import java.util.Collections;
005import java.util.List;
006import java.util.concurrent.CopyOnWriteArrayList;
007
008import org.openstreetmap.josm.gui.dialogs.relation.actions.IRelationEditorActionGroup;
009
010/**
011 * This class allows to hook into the relation editor. It can be used to overwrite specific behavior.
012 *
013 * @author Michael Zangl
014 * @since 14027
015 */
016public final class RelationEditorHooks {
017
018    private static final CopyOnWriteArrayList<IRelationEditorActionGroup> memberActions = new CopyOnWriteArrayList<>();
019    private static final CopyOnWriteArrayList<IRelationEditorActionGroup> selectionActions = new CopyOnWriteArrayList<>();
020
021    private RelationEditorHooks() {
022        // only static methods.
023    }
024
025    /**
026     * Adds actions to the members action toolbar
027     * @param group The group to add
028     */
029    public static void addActionsToMembers(IRelationEditorActionGroup group) {
030        memberActions.add(group);
031    }
032
033    /**
034     * Adds actions to the selection action toolbar
035     * @param group The group to add
036     */
037    public static void addActionsToSelection(IRelationEditorActionGroup group) {
038        selectionActions.add(group);
039    }
040
041    /* package */ static List<IRelationEditorActionGroup> getMemberActions() {
042        return Collections.unmodifiableList(memberActions);
043    }
044
045    /* package */ static List<IRelationEditorActionGroup> getSelectActions() {
046        return Collections.unmodifiableList(selectionActions);
047    }
048
049}