/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.gui.workflow; import java.io.Serializable; import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.Viewer; import de.rcenvironment.core.component.model.endpoint.api.EndpointDescription; import de.rcenvironment.core.component.workflow.model.api.WorkflowDescription; import de.rcenvironment.core.component.workflow.model.api.WorkflowNode; import de.rcenvironment.core.datamodel.api.EndpointType; /** * Content Provider taking a WorkflowDescription as root and displaying all componets with either * their inputs or outputs. * * @author Heinrich Wendel * @author Doreen Seider * @author Sascha Zur */ public class EndpointContentProvider implements ITreeContentProvider { private EndpointType type; /** * @param type Display input or output endpoints? */ public EndpointContentProvider(EndpointType type) { this.type = type; } @Override public Object[] getChildren(Object element) { if (element instanceof WorkflowDescription) { List<WorkflowNode> items = ((WorkflowDescription) element).getWorkflowNodes(); Collections.sort(items); return items.toArray(); } else if (element instanceof WorkflowNode) { List<EndpointItem> items = new ArrayList<EndpointItem>(); items.addAll(EndpointHandlingHelper.getEndpoints((WorkflowNode) element, type)); Collections.sort(items); return items.toArray(); } else { List<EndpointItem> items = new ArrayList<EndpointItem>(); Collections.sort(items); return items.toArray(); } } @Override public Object getParent(Object element) { return null; } @Override public boolean hasChildren(Object element) { return (getChildren(element) != null && getChildren(element).length > 0); } @Override public Object[] getElements(Object element) { return getChildren(element); } @Override public void dispose() {} @Override public void inputChanged(Viewer view, Object object1, Object object2) { } /** * Class representing one item in the endpoint tree. * * @author Doreen Seider */ public static class EndpointItem implements Serializable, Comparable<EndpointItem> { private static final long serialVersionUID = 777733457712592306L; private String name; private EndpointDescription endpointDesc; public EndpointItem(EndpointDescription endpointDesc) { this.endpointDesc = endpointDesc; name = endpointDesc.getName(); } public String getName() { return name; } public EndpointDescription getEndpointDescription() { return endpointDesc; } public String getShortName() { return name; } @Override public int compareTo(EndpointItem o) { return name.compareTo(o.getName()); } } /** * Class representing one endpoint. * * @author Heinrich Wendel */ public static class Endpoint extends EndpointItem { private static final long serialVersionUID = 1633769598091968303L; private WorkflowNode parent; public Endpoint(WorkflowNode parent, EndpointDescription endpointDesc) { super(endpointDesc); this.parent = parent; } public WorkflowNode getWorkflowNode() { return parent; } } }