/** * Copyright (c) 2005-2006 Aptana, Inc. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html. If redistributing this code, * this entire header must remain intact. */ package org.eclipse.eclipsemonkey.views.scriptsView; import java.util.ArrayList; import java.util.HashMap; import org.eclipse.eclipsemonkey.StoredScript; /** * @author Paul Colton */ public class ScriptActionsManager { /** * instance */ public static ScriptActionsManager instance = null; /* * Fields */ private ArrayList _listeners = new ArrayList(); private ArrayList _scriptActions = new ArrayList(); private HashMap _scriptActionSets = new HashMap(); /** * Constructor */ protected ScriptActionsManager() { } /* * Properties */ /** * getInstance * * @return ScriptActionsManager */ public static ScriptActionsManager getInstance() { if (instance == null) { instance = new ScriptActionsManager(); } return instance; } /** * getScriptActionSet * * @param name * @return ScriptActionSet */ public ScriptActionSet getScriptActionSet(String name) { return (ScriptActionSet) this._scriptActionSets.get(name); } /** * getAll * * @return IScriptAction[] */ public IScriptAction[] getAll() { ScriptAction[] actions = getScriptActions(); ScriptActionSet[] sets = getScriptActionSets(); IScriptAction[] results = new IScriptAction[actions.length + sets.length]; int index = 0; for (int i = 0; i < actions.length; i++) { results[index++] = actions[i]; } for (int i = 0; i < sets.length; i++) { results[index++] = sets[i]; } return results; } /* * Methods */ /** * fireScriptActionsChangeEvent * * @param a */ public void fireScriptActionsChangeEvent(IScriptAction a) { for (int i = 0; i < this._listeners.size(); i++) { IScriptActionChangeListener listener = (IScriptActionChangeListener) this._listeners .get(i); listener.onScriptActionChanged(a); } } /** * addScriptActionsChangeListener * * @param l */ public void addScriptActionsChangeListener(IScriptActionChangeListener l) { this._listeners.add(l); } /** * removeScriptActionsChangeListener * * @param l */ public void removeScriptActionsChangeListener(IScriptActionChangeListener l) { this._listeners.remove(l); } /** * addScriptAction * * @param name * @param script * @return Action */ public ScriptAction addScriptAction(String name, StoredScript script) { ScriptAction a = findScriptAction(name); if (a != null) { return a; } a = new ScriptAction(name, script); this._scriptActions.add(a); fireScriptActionsChangeEvent(a); return a; } /** * removeScriptActionSet * @param a ScriptAction */ public void removeScriptAction(ScriptAction a) { if (this._scriptActions.contains(a)) { this._scriptActions.remove(a); fireScriptActionsChangeEvent(a); } } /** * findScriptAction * * @param name * @return ScriptAction */ public ScriptAction findScriptAction(String name) { for (int i = 0; i < this._scriptActions.size(); i++) { ScriptAction a = (ScriptAction) this._scriptActions.get(i); if (a.getName().equals(name)) { return a; } } return null; } /** * createActionSet * * @param name * @return ScriptActionSet */ public ScriptActionSet createScriptActionSet(String name) { ScriptActionSet a; if (this._scriptActionSets.containsKey(name)) { a = (ScriptActionSet) this._scriptActionSets.get(name); } else { a = new ScriptActionSet(name); this._scriptActionSets.put(name, a); fireScriptActionsChangeEvent(a); } return a; } /** * removeScriptActionSet * * @param name */ public void removeScriptActionSet(String name) { ScriptActionSet a; if (this._scriptActionSets.containsKey(name)) { a = (ScriptActionSet) this._scriptActionSets.remove(name); fireScriptActionsChangeEvent(a); } } /** * getScriptActions * * @return ScriptAction[] */ public ScriptAction[] getScriptActions() { return (ScriptAction[]) this._scriptActions.toArray(new ScriptAction[0]); } /** * getScriptActionSets * * @return ScriptActionSet[] */ public ScriptActionSet[] getScriptActionSets() { return (ScriptActionSet[]) this._scriptActionSets.values() .toArray(new ScriptActionSet[0]); } /** * clearAll */ public void clearAll() { this._scriptActions = new ArrayList(); this._scriptActionSets = new HashMap(); } }