package org.jmeld.ui.action; import java.util.HashMap; import java.util.Map; public class ActionHandler { private Map<Actions.Action, MeldAction> actions = new HashMap<Actions.Action, MeldAction>(); public ActionHandler() { } public MeldAction get(Actions.Action a) { return actions.get(a); } public MeldAction createAction(Object object, Actions.Action a) { MeldAction action; action = new MeldAction(this, object, a.getName()); actions.put(a, action); checkActions(); return action; } public void checkActions() { boolean actionEnabled; boolean someActionChanged; do { someActionChanged = false; for (MeldAction action : actions.values()) { actionEnabled = action.isActionEnabled(); if (actionEnabled != action.isEnabled()) { action.setEnabled(actionEnabled); // Some actions depend on other actions! someActionChanged = true; } } } while (someActionChanged); } }