Package org.gvt.action

Source Code of org.gvt.action.AbstractLocalQueryAction

package org.gvt.action;

import org.eclipse.gef.EditPart;
import org.eclipse.gef.ui.parts.ScrollingGraphicalViewer;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.gvt.ChisioMain;
import org.gvt.model.BioPAXGraph;
import org.gvt.model.biopaxl2.ComplexMember;
import org.patika.mada.graph.GraphObject;
import org.patika.mada.graph.Node;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

/**
* This class is an abstract class for Local Query Actions.
*
* @author Shatlyk Ashyralyev
*
* Copyright: I-Vis Research Group, Bilkent University, 2007
*/
public abstract class AbstractLocalQueryAction extends Action
{
  ChisioMain main;
 
  /**
   * Constructor
   */
  public AbstractLocalQueryAction(ChisioMain main, String arg)
  {
    super(arg);
    this.main = main;
  }
 
  /**
   * Method that finds selected Nodes in graph
   */
  protected Set<Node> getSelectedNodes()
  {
    Set<Node> selectedNodes = new HashSet<Node>();
   
    //Get Viewer and find Selection
    ScrollingGraphicalViewer viewer = main.getViewer();
    Iterator selectedObjectsIterator =
      ((IStructuredSelection) viewer.getSelection()).iterator();

    //Find selected objects and add nodes
    Set<GraphObject> selectedObjects = new HashSet<GraphObject>();
   
    //Store selected Nodes
    while (selectedObjectsIterator.hasNext())
    {
      Object model = ((EditPart)selectedObjectsIterator.next()).getModel();

      if (model instanceof Node)
      {
        Node node = (Node) model;

        //if node is CompexMember, then get its parent
        if (node instanceof ComplexMember)
        {
          node = node.getParents().iterator().next();
        }

        selectedObjects.add(node);
      }
    }

    //Get corresponding originals of selected nodes
    Set<GraphObject> sourceSet =
      main.getPathwayGraph().getCorrespOrig(selectedObjects);

    //Get sourceNodes
    for (GraphObject go : sourceSet)
    {
      if (go instanceof Node)
      {
        selectedNodes.add((Node) go);
      }
    }
   
    //Return all selected Nodes in graph
    return selectedNodes;
  }
 
  /**
   * Views result of Query in current view or new view
   * Highlights resultant objects
   */
  protected void viewAndHighlightResult(Set<GraphObject> result,
    boolean isCurrentView,
    String query)
  {
      //if result should be viewed in Current View
    if (isCurrentView)
    {
      Set<GraphObject> content = new HashSet<GraphObject>();
      content.addAll(main.getPathwayGraph().getNodes());
      content.addAll(result);

      //Update Pathway
      UpdatePathwayAction upa = new UpdatePathwayAction(main, content);
      upa.run();

      result = main.getPathwayGraph().getCorrespMember(result);
    }
    //if result should be viewed in New View
    else
    {
      BioPAXGraph pathwayGraph = main.getRootGraph().excise(result);
      pathwayGraph.setName(query);
      main.createNewTab(pathwayGraph);
      new CoSELayoutAction(main).run();

      result = pathwayGraph.getCorrespMember(result);
    }

    //highlight result GraphObjects
    for (GraphObject go : result)
    {
      go.setHighlight(true);
    }  
  }
}
TOP

Related Classes of org.gvt.action.AbstractLocalQueryAction

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.