/* $Id: IsGraphCommandExecutor.java,v 1.9 2002/05/23 22:41:22 jantos Exp $
*
* Copyright (c) 2001 - 2002 Cycorp, Inc. All rights reserved.
*
* This software is the proprietary information of Cycorp, Inc.
* Use is subject to license terms.
*
*/
package com.cyc.blue.command;
import java.util.*;
import com.cyc.blue.graph.*;
import com.cyc.blue.gui.*;
/**
* Implement to obtain the ability to execute graph commands. This interface
* adds some general graph manipulating methods that graph commands can use
* instead of modifying the graph directly to allow extra work to be done, such
* as keeping track of why nodes exist in a graph.
* @see GraphCommand
*
* @author John Jantos
* @date 2001/09/24
* @version $Id: IsGraphCommandExecutor.java,v 1.9 2002/05/23 22:41:22 jantos Exp $
*/
public interface IsGraphCommandExecutor extends IsCommandExecutor {
/** sets the graph this command executor is executing commands for
* @param _graph
*/
public void setGraph(IsGraph _graph);
/** gets the graph this command executor is executing commands for
* @return the graph
*/
public IsGraph getGraph();
/** adds the specified node to the graph for the specified command.
* @param _command
* @param _node
*/
public void addNode(IsCommand _command, IsNode _node);
/** removes the specified node from the graph for the specified command.
* @param _command
* @param _node
* @return true iff the node was in the graph (and removed).
*/
public boolean removeNode(IsCommand _command, IsNode _node);
//public IsEdge addEdge(IsCommand _command, IsNode _tailNode, IsNode _HeadNode, Object _relation);
/** adds the specified edge to the graph for the specified command.
* @param _command
* @param _edge
*/
public void addEdge(IsCommand _command, IsEdge _edge);
/** removes the specified edge from the graph for the specified command.
* @param _command
* @param _edge
* @return true iff the edge was in the graph (and removed).
*/
public boolean removeEdge(IsCommand _command, IsEdge _edge);
//public boolean isNodeFocus(IsNode _node);
/** gets whether a node in the graph is directly justified by a command that added it
* @param _node
* @return true iff the node has a justifying command.
*/
public boolean isNodeJustified(IsNode _node);
/** gets an iterator over the commands that justify a node in the graph.
* @param _node
* return and iterator over commands
*/
public Iterator getNodeJustificationsIterator(IsNode _node);
/** gets whether an edge in the graph is directly justified by a command that added it
* @param _edge
* @return true iff the node has a justifying command.
*/
public boolean isEdgeJustified(IsEdge _edge);
/** gets an iterator over the commands that justify an edge in the graph.
* @param _edge
* return and iterator over commands
*/
public Iterator getEdgeJustificationsIterator(IsEdge _edge);
}