/******************************************************************************* * Copyright (c) 2012 VMware, 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 * * Contributors: * VMware, Inc. - initial API and implementation *******************************************************************************/ package org.springframework.ide.eclipse.config.graph.model; import java.util.ArrayList; import java.util.List; import org.eclipse.wst.xml.core.internal.provisional.document.IDOMElement; /** * @author Leo Dos Santos * @author Christian Dupuis */ @SuppressWarnings("restriction") public abstract class Activity extends AbstractConfigGraphModelElement { static final long serialVersionUID = 1; protected List<Transition> incomings = new ArrayList<Transition>(); protected List<Transition> outgoings = new ArrayList<Transition>(); private int sortIndex; public Activity() { super(); } public Activity(IDOMElement input, AbstractConfigGraphDiagram diagram) { super(input, diagram); } public void addIncoming(Transition transition) { if (!incomings.contains(transition)) { incomings.add(transition); } fireStructureChange(INCOMINGS, transition); } public void addOutgoing(Transition transition) { if (!outgoings.contains(transition)) { outgoings.add(transition); } fireStructureChange(OUTGOINGS, transition); } public List<Transition> getIncomingTransitions() { return incomings; } protected List<Transition> getIncomingTransitionsFromXml() { List<Transition> list = new ArrayList<Transition>(); List<Activity> registry = getDiagram().getModelRegistry(); for (Activity activity : registry) { if (!(activity instanceof ParallelActivity)) { getDiagram().getTransitionsFromXml(this, activity, list, getPrimaryIncomingAttributes(), true, true); getDiagram().getTransitionsFromXml(this, activity, list, getSecondaryIncomingAttributes(), true, false); } } return list; } public List<Transition> getOutgoingTransitions() { return outgoings; } protected List<Transition> getOutgoingTransitionsFromXml() { List<Transition> list = new ArrayList<Transition>(); List<Activity> registry = getDiagram().getModelRegistry(); for (Activity activity : registry) { if (!(activity instanceof ParallelActivity)) { getDiagram().getTransitionsFromXml(this, activity, list, getPrimaryOutgoingAttributes(), false, true); getDiagram() .getTransitionsFromXml(this, activity, list, getSecondaryOutgoingAttributes(), false, false); } } return list; } /** * Implementers should override to return a list of attributes that will be * displayed as solid-lined incoming connections. * * @return list of attribute names */ public List<String> getPrimaryIncomingAttributes() { return new ArrayList<String>(); } /** * Implementers should override to return a list of attributes that will be * displayed as solid-lined outgoing connections. * * @return list of attribute names */ public List<String> getPrimaryOutgoingAttributes() { return new ArrayList<String>(); } /** * Implementers should override to return a list of attributes that will be * displayed as dash-lined incoming connections. * * @return list of attribute names */ public List<String> getSecondaryIncomingAttributes() { return new ArrayList<String>(); } /** * Implementers should override to return a list of attributes that will be * displayed as dash-lined outgoing connections. * * @return list of attribute names */ public List<String> getSecondaryOutgoingAttributes() { return new ArrayList<String>(); } public int getSortIndex() { if (getInput() != null) { return getInput().getStartOffset(); } return -1; } public void removeIncoming(Transition transition) { incomings.remove(transition); fireStructureChange(INCOMINGS, transition); } public void removeOutgoing(Transition transition) { outgoings.remove(transition); fireStructureChange(OUTGOINGS, transition); } public void setSortIndex(int i) { sortIndex = i; } protected void updateTransitionsFromXml() { getIncomingTransitionsFromXml(); getOutgoingTransitionsFromXml(); } }