| /******************************************************************************* |
| * Copyright (c) 2010 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: |
| * Research Group Software Construction, |
| * RWTH Aachen University, Germany - initial API and implementation |
| */ |
| package org.eclipse.gef.util; |
| |
| import java.util.HashSet; |
| import java.util.Iterator; |
| import java.util.LinkedHashSet; |
| import java.util.List; |
| |
| import org.eclipse.gef.EditPart; |
| import org.eclipse.gef.GraphicalEditPart; |
| |
| /** |
| * Utility class comprising functions related to {@link EditPart}s |
| * |
| * @author Alexander Nyssen |
| * @author Philip Ritzkopf |
| * |
| * @since 3.6 |
| * |
| */ |
| public final class EditPartUtilities { |
| |
| private EditPartUtilities() { |
| // provides only static utility functions and should not be accessed in |
| // any other way than static. |
| } |
| |
| /** |
| * Returns the transitive child edit part set of the given parent |
| * <code>GraphicalEditPart</code>. |
| * |
| * @param parentEditPart |
| * the parent graphical edit part for which to retrieve the |
| * transitive child edit part set. |
| * |
| * @return the transitive child edit part set |
| */ |
| public static LinkedHashSet getAllChildren(GraphicalEditPart parentEditPart) { |
| LinkedHashSet transitiveChildren = new LinkedHashSet(); |
| List children = parentEditPart.getChildren(); |
| transitiveChildren.addAll(children); |
| for (Iterator iterator = children.iterator(); iterator.hasNext();) { |
| GraphicalEditPart child = (GraphicalEditPart) iterator.next(); |
| transitiveChildren.addAll(getAllChildren(child)); |
| } |
| return transitiveChildren; |
| } |
| |
| /** |
| * Returns the transitive nested connection edit parts. |
| * |
| * @param graphicalEditPart |
| * the graphical edit part |
| * |
| * @return the transitive nested connection edit parts |
| */ |
| public static HashSet getAllNestedConnectionEditParts( |
| GraphicalEditPart graphicalEditPart) { |
| HashSet transitiveConnections = new HashSet(); |
| HashSet transitiveChildren = getAllChildren(graphicalEditPart); |
| for (Iterator iterator = transitiveChildren.iterator(); iterator |
| .hasNext();) { |
| GraphicalEditPart child = (GraphicalEditPart) iterator.next(); |
| transitiveConnections.addAll(child.getSourceConnections()); |
| transitiveConnections.addAll(child.getTargetConnections()); |
| } |
| return transitiveConnections; |
| } |
| |
| /** |
| * Returns the set of <code>ConnectionEditPart</code>s that are linked to |
| * the child edit parts of the given <code>GraphicalEditPart</code>. |
| * |
| * @param graphicalEditPart |
| * the graphical edit part |
| * |
| * @return the set of child <code>ConnectionEditPart</code>s for the given |
| * <code>GraphicalEditPart</code> |
| */ |
| public static HashSet getNestedConnectionEditParts( |
| GraphicalEditPart graphicalEditPart) { |
| HashSet edges = new HashSet(); |
| List children = graphicalEditPart.getChildren(); |
| for (Iterator iterator = children.iterator(); iterator.hasNext();) { |
| Object child = iterator.next(); |
| if (child instanceof GraphicalEditPart) { |
| GraphicalEditPart childEditPart = (GraphicalEditPart) child; |
| edges.addAll(childEditPart.getSourceConnections()); |
| edges.addAll(childEditPart.getTargetConnections()); |
| } |
| } |
| return edges; |
| } |
| } |