blob: 0da70fbe1b787502bc2cee121e293d0e007b84cf [file] [log] [blame]
/*******************************************************************************
* 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());
}
}
}
}