/**
* Copyright 2010 JBoss Inc
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.drools.eclipse.editors.rete.model;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.drools.reteoo.BaseVertex;
/**
* Rete graph containing a set of vertices that form the graph itself.
*/
public class ReteGraph extends ModelElement {
/** Property ID to use when a child is added to this diagram. */
public static final String PROP_CHILD_ADDED = "ReteGraph.ChildAdded";
/** Property ID to use when a child is removed from this diagram. */
public static final String PROP_CHILD_REMOVED = "ReteGraph.ChildRemoved";
private List vertices = new ArrayList();
/**
* Add new BaseVertex to the graph
*
* @param vertex
*
* @return true, if vertex was added, false otherwise
*/
public boolean addChild(BaseVertex vertex) {
if ( vertex != null && vertices.add( vertex ) ) {
firePropertyChange( PROP_CHILD_ADDED,
null,
vertex );
return true;
}
return false;
}
/**
* Return all Vertices in this graph
*/
public List getChildren() {
return vertices;
}
/**
* Remove a vertex from this graph
*
* @param vertex vertex to be removed
* @return true, if the vertex removal succeeded, false otherwise
*/
public boolean removeChild(BaseVertex vertex) {
if ( vertex != null && vertices.remove( vertex ) ) {
firePropertyChange( PROP_CHILD_REMOVED,
null,
vertex );
return true;
}
return false;
}
/**
* Removes all vertices from graph.
*/
public void removeAll() {
while ( vertices.size() > 0 ) {
removeChild( ((BaseVertex) vertices.get( 0 )) );
}
}
public void addAll(List children) {
final Iterator iter = children.iterator();
while ( iter.hasNext() ) {
BaseVertex vertex = (BaseVertex) iter.next();
addChild( vertex );
}
}
}