/******************************************************************************* * Copyright (c) 2003, 2005 IBM Corporation and others. * 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: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.draw2d.graph; /** * A base class for visitors which operate on the graphs spanning tree used to induce rank * assignments. * @author Randy Hudson * @since 2.1.2 */ abstract class SpanningTreeVisitor extends GraphVisitor { Edge getParentEdge(Node node) { return (Edge)node.workingData[1]; } EdgeList getSpanningTreeChildren(Node node) { return (EdgeList)node.workingData[0]; } protected Node getTreeHead(Edge edge) { if (getParentEdge(edge.source) == edge) return edge.target; return edge.source; } Node getTreeParent(Node node) { Edge e = getParentEdge(node); if (e == null) return null; return e.opposite(node); } protected Node getTreeTail(Edge edge) { if (getParentEdge(edge.source) == edge) return edge.source; return edge.target; } void setParentEdge(Node node, Edge edge) { node.workingData[1] = edge; } }