Package org.fusesource.ide.camel.editor.views.diagram

Source Code of org.fusesource.ide.camel.editor.views.diagram.NodeGraphContentProvider

  /*******************************************************************************
* Copyright (c) 2013 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is 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:
*     Red Hat, Inc. - initial API and implementation
******************************************************************************/

package org.fusesource.ide.camel.editor.views.diagram;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.zest.core.viewers.IGraphEntityContentProvider;
import org.fusesource.ide.camel.model.AbstractNode;
import org.fusesource.ide.camel.model.RouteContainer;
import org.fusesource.ide.camel.model.RouteSupport;
import org.fusesource.ide.commons.tree.ConnectedNode;
import org.fusesource.ide.commons.tree.GraphableNode;
import org.fusesource.ide.commons.tree.GraphableNodeConnected;
import org.jboss.tools.jmx.core.tree.Node;

public class NodeGraphContentProvider implements  IStructuredContentProvider, IGraphEntityContentProvider {

  private static final Object[] EMPTY = {};

  /*
   * (non-Javadoc)
   * @see org.eclipse.jface.viewers.IContentProvider#dispose()
   */
  @Override
  public void dispose() {
  }

  /*
   * (non-Javadoc)
   * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
   */
  @Override
  public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
  }
 
  /*
   * (non-Javadoc)
   * @see org.eclipse.zest.core.viewers.IGraphContentProvider#getElements(java.lang.Object)
   */
  @Override
  public Object[] getElements(Object input) {
    if (input instanceof AbstractNode) {
      AbstractNode node = (AbstractNode) input;

      Set<AbstractNode> set = new HashSet<AbstractNode>();
      RouteContainer parent;
      if (node instanceof RouteContainer) {
        parent = (RouteContainer) node;
      } else {
        parent = node.getParent();
        set.add(node);
      }
      if (parent == null) {
        set.addAll(node.getOutputs());
      } else {
        set.addAll(parent.getDescendents());
      }
      return set.toArray();
    } else {
      List<Object> answer = new ArrayList<Object>();
      if (input instanceof GraphableNode) {
        GraphableNode node = (GraphableNode) input;
        answer.addAll(node.getChildrenGraph());
      } else if (input != null) {
        answer.add(input);
        if (input instanceof Node) {
          Node aNode = (Node) input;
          answer.addAll(aNode.getChildrenList());
        }
      } else {
        // will prevent the grayish box in the diagram view
        return null;
      }
      return answer.toArray();
    }
  }


  @Override
  public Object[] getConnectedTo(Object entity) {
    if (entity instanceof GraphableNodeConnected) {
      GraphableNodeConnected gn = (GraphableNodeConnected) entity;
      return gn.getGraphConnectedTo().toArray();
    } else if (entity instanceof RouteSupport) {
      RouteSupport route = (RouteSupport) entity;
      return route.getRootNodes().toArray();
    } else if (entity instanceof AbstractNode) {
      AbstractNode node = (AbstractNode) entity;
      node.getOutputs().toArray();
    }
    else if (entity instanceof ConnectedNode) {
      ConnectedNode node = (ConnectedNode) entity;
      return node.getConnectedTo().toArray();
    } else if (entity instanceof Node) {
      Node aNode = (Node) entity;
      return aNode.getChildren();
    }
    return EMPTY;
  }
}
TOP

Related Classes of org.fusesource.ide.camel.editor.views.diagram.NodeGraphContentProvider

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.