/******************************************************************************* * Copyright (c) 2008, 2012 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.bpel.ui.details.providers; import java.util.List; import org.eclipse.bpel.model.Activity; import org.eclipse.bpel.model.Flow; import org.eclipse.bpel.model.Links; import org.eclipse.bpel.model.Source; import org.eclipse.bpel.model.Sources; import org.eclipse.bpel.model.Targets; import org.eclipse.bpel.model.Target; /** * Content provider for links. * * Provides all the links visible in a given context. */ public class LinkContentProvider extends AbstractContentProvider { /** * All incoming links to the activity in question */ public static final int INCOMING = 0; /** * All outgoing links to the activity in question */ public static final int OUTGOING = 1; /** * All declared links in the nearest flow */ public static final int DECLARED = 2; int fMode = INCOMING; /** * @param mode */ public LinkContentProvider (int mode) { fMode = mode; } /** * @see org.eclipse.bpel.ui.details.providers.AbstractContentProvider#collectElements(java.lang.Object, java.util.List) */ @Override public void collectElements (Object input, List<Object> list) { if (input == null) { return; } if (fMode == INCOMING) { collectIncoming( input, list) ; return ; } if (fMode == OUTGOING) { collectOutgoing(input,list); return ; } collectDeclaredLinks ( input, list ); } void collectDeclaredLinks ( Object input, List<Object> list) { if (input == null) { return; } if (input instanceof Flow) { Flow flow = (Flow)input; Links links = flow.getLinks(); if (links == null) { return ; } list.addAll( links.getChildren() ); return ; } if (input instanceof Activity) { Activity activty = (Activity) input; collectDeclaredLinks(activty.eContainer(), list); } } void collectIncoming (Object input, List<Object> list) { if (input instanceof Activity) { Activity activity = (Activity) input; Targets targets = activity.getTargets(); if (targets == null) { return ; } for(Object next : targets.getChildren()) { Target aTarget = (Target) next; list.add(aTarget.getLink()); } } } void collectOutgoing (Object input, List<Object> list) { if (input instanceof Activity) { Activity activity = (Activity) input; Sources sources = activity.getSources(); if (sources == null) { return ; } for(Object next : sources.getChildren()) { Source aSource = (Source) next; list.add(aSource.getLink()); } } } }