// 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.G6; import graphtea.extensions.G6Format; import graphtea.graph.graph.GraphModel; import graphtea.graph.graph.Vertex; import graphtea.platform.parameter.Parameter; import graphtea.platform.parameter.Parametrizable; import graphtea.plugins.graphgenerator.core.PositionGenerators; import graphtea.plugins.main.GraphData; import graphtea.plugins.main.extension.GraphActionExtension; import javax.swing.*; import java.awt.*; import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; /** * @author Azin Azadi */ public class G6CSVStringLoader implements GraphActionExtension, Parametrizable { @Parameter(name = "Graph indices from CSV") public String indices = ""; public String getName() { return "G6 CSV Loader "; } public String getDescription() { return "Load graphs from G6 strings of a csv file associated with the given indices"; } public void action(GraphData graphData) { JFileChooser fileChooser = new JFileChooser(); fileChooser.setDialogTitle("Choose a file"); fileChooser.showOpenDialog(new JDialog()); File curFile = fileChooser.getSelectedFile(); Scanner sc = new Scanner(indices.trim()); sc.useDelimiter(","); while (sc.hasNext()) { Scanner file_scan = null; String g6=""; try { file_scan = new Scanner(curFile); } catch (FileNotFoundException e) { e.printStackTrace(); } int given_id = sc.nextInt(); while(file_scan.hasNextLine()) { String line = file_scan.nextLine(); int id = Integer.parseInt(line.substring(0, line.indexOf(",")).trim()); if (id == given_id) g6 = line.substring(line.lastIndexOf(",") + 1).trim(); } if(!g6.equals("")) { GraphModel g = G6Format.stringToGraphModel(g6); Point pp[] = PositionGenerators.circle(200, 400, 250, g.numOfVertices()); int tmpcnt = 0; for (Vertex v : g) { v.setLocation(pp[tmpcnt]); tmpcnt++; } graphData.core.showGraph(g); } } } public String checkParameters() { return null; } @Override public String getCategory() { return "Other Actions"; } }