/* $Id: TransformerManager.java 18634 2010-08-09 07:56:08Z mvw $ ******************************************************************************* * Copyright (c) 2010 Contributors - see below * 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 * * Contributors: * Michiel van der Wulp ******************************************************************************* */ package org.argouml.transformer; import java.util.HashSet; import java.util.List; import org.argouml.i18n.Translator; import org.argouml.kernel.ActionList; import org.argouml.kernel.Project; import org.argouml.kernel.ProjectManager; import org.argouml.ui.ContextActionFactory; /** * This is a singleton. * * @author Michiel van der Wulp */ final class TransformerManager implements ContextActionFactory { private HashSet<Transformer> transformers; /** * The singleton instance. */ private static TransformerManager instance = new TransformerManager(); /** * Singleton constructor should remain private. */ private TransformerManager() { } /** * Singleton retrieval method. * @return the transformermanager */ public static TransformerManager getInstance() { return instance; } private HashSet<Transformer> getTransformers() { if (transformers == null) { transformers = new HashSet<Transformer>(); } return transformers; } void addTransformer(Transformer t) { getTransformers().add(t); } public List createContextPopupActions(Object element) { final Project p = ProjectManager.getManager().getCurrentProject(); final ActionList result = new ActionList( Translator.localize("transform.menu.popup.transform")); for (Transformer t : getTransformers()) { if (t.canTransform(element)) { result.addAll(t.actions(p, element)); } } return result.size() > 0 ? result : null; } }