// 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 Lesser General Public License (LGPL): http://www.gnu.org/licenses/
package graphtea.extensions.actions;
import graphtea.graph.graph.Edge;
import graphtea.graph.graph.GraphModel;
import graphtea.graph.graph.SubGraph;
import graphtea.graph.graph.Vertex;
import graphtea.plugins.main.GraphData;
import graphtea.plugins.main.extension.GraphActionExtension;
import graphtea.plugins.main.ui.SubGraphRenderer;
import java.util.HashMap;
/**
* Creates a line graph from the current graph and shows it in a new tab
*
* @author Mohammad Ali Rostami
* @author Azin Azadi
*/
public class ExtractSubGraph implements GraphActionExtension {
public void action(GraphData graphData) {
GraphModel g1 = graphData.getGraph();
GraphModel g2 = new GraphModel(false);
SubGraph sg = SubGraphRenderer.sgbck;
HashMap<Integer,Integer> idid= new HashMap<>();
if(sg.vertices.size()!=0) {
for(Vertex v : sg.vertices) {
Vertex tmp = new Vertex();
tmp.setLabel(v.getLabel());
tmp.setLocation(v.getLocation());
g2.addVertex(tmp);
idid.put(v.getId(),tmp.getId());
}
for(Edge e : sg.edges) {
Vertex vt1 = g2.getVertex(idid.get(e.source.getId()));
Vertex vt2 = g2.getVertex(idid.get(e.target.getId()));
g2.addEdge(new Edge(vt1,vt2));
}
}
graphData.core.showGraph(g2);
}
public String getName() {
return "Extract SubGraph";
}
public String getDescription() {
return "";
}
@Override
public String getCategory() {
return "Basic Operations";
}
}