// GraphTea Project: http://github.com/graphtheorysoftware/GraphTea
// Copyright (C) 2012 Graph Theory Software Foundation: http://GraphTheorySoftware.com
// Copyright (C) 2008 Mathematical Science Department of Sharif University of Technology
// Distributed under the terms of the GNU General Public License (GPL): http://www.gnu.org/licenses/
package graphtea.plugins.commandline.commands;
import graphtea.graph.atributeset.GraphAttrSet;
import graphtea.graph.graph.GraphModel;
import graphtea.graph.graph.GPoint;
import graphtea.graph.graph.Vertex;
import graphtea.platform.core.BlackBoard;
import graphtea.platform.core.exception.ExceptionHandler;
import graphtea.platform.lang.CommandAttitude;
import graphtea.platform.parameter.Parameter;
import graphtea.plugins.main.GraphData;
import graphtea.plugins.main.core.actions.vertex.AddVertex;
import java.util.Iterator;
import java.util.Vector;
/**
* @author amir khosrowshahi , Mohammad Ali Rostami
* @email rostamiev@gmail.com
*/
public class VertexCommands {
BlackBoard bb;
private GraphData datas;
public VertexCommands(BlackBoard bb) {
this.bb = bb;
datas = new GraphData(bb);
}
@CommandAttitude(name = "set_label", abbreviation = "_sl"
, description = "Changes the label of a vertex")
public void setLabel(@Parameter(name = "vertex label:")String label
, @Parameter(name = "new vertex label:")String newlabel) {
Vertex v = getVertexByLabel(label);
v.setLabel(newlabel);
}
@CommandAttitude(name = "vertex_iterator", abbreviation = "_v_i"
, description = "get a iterator on verteices of graph")
public Iterator<Vertex> getVertexIterator() {
return datas.getGraph().iterator();
}
@CommandAttitude(name = "is_selected", abbreviation = "_is"
, description = "shows the vertex is selected or not")
public Boolean isSelected(@Parameter(name = "vertex label:")String label) {
Vertex v = getVertexByLabel(label);
// //Init.run.ext_console.println(v.isSelected(), Init.run.ext_console.getResultColor());
return v.isSelected();
}
@CommandAttitude(name = "replace", abbreviation = "_r"
, description = "Replaces the given vertex by a new position")
public void replace(@Parameter(name = "vertex label:")String label
, @Parameter(name = "new X position:")int x,
@Parameter(name = "new Y position:")int y) {
Vertex v = getVertexByLabel(label);
if (x == 0) {
x = (int) v.getLocation().x;
}
if (y == 0) {
y = (int) v.getLocation().y;
}
v.setLocation(new GPoint(x, y));
}
@CommandAttitude(name = "add_vertex", abbreviation = "_av", description = "adds a vertex")
public void addVertex(@Parameter(name = "x positon")int x
, @Parameter(name = "y positon")int y) {
try {
AddVertex.doJob((GraphModel) bb.getData(GraphAttrSet.name), x, y);
}
catch (Exception e) {
ExceptionHandler.catchException(e);
}
}
@CommandAttitude(name = "select_vertex", abbreviation = "_sv")
public void selectVertex(@Parameter(name = "vertex label :")String label) throws ShellCommandException {
Vertex v = getVertexByLabel(label);
Vector<Vertex> vertices = new Vector<>();
vertices.add(v);
if (v != null) datas.select.setSelectedVertices(vertices);
else throw new ShellCommandException("your entered vertex label doesnt exist!");
}
@CommandAttitude(name = "remove_vertex", abbreviation = "_rv"
, description = "Removes a Vertex")
public void removeVertex(@Parameter(name = "vertex label :")String label) {
datas.getGraph().removeVertex(getVertexByLabel(label));
}
Vertex getVertexByID(String id) {
int ID = Integer.parseInt(id);
for (Vertex v : datas.getGraph()) {
//Init.run.ext_console.printlnResult(v.getId());
if (v.getId() == ID)
return v;
}
return null;
}
Vertex getVertexByLabel(String label) {
for (Vertex v : datas.getGraph()) {
if (v.getLabel().equals(label))
return v;
}
return null;
}
}