// 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.main.saveload.matrix;
import graphtea.graph.atributeset.GraphAttrSet;
import graphtea.graph.graph.GraphModel;
import graphtea.graph.graph.SubGraph;
import graphtea.platform.core.AbstractAction;
import graphtea.platform.core.BlackBoard;
import graphtea.plugins.main.select.Select;
import graphtea.ui.UIUtils;
import java.awt.*;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.StringSelection;
/**
* @author Hooman Mohajeri Moghaddam added weighted save&load support
* @author Azin Azadi
*/
public class CopyAsMatrix extends AbstractAction {
String event = UIUtils.getUIEventKey("copy as matrix");
/**
* constructor
*
* @param bb the blackboard of the action
*/
public CopyAsMatrix(BlackBoard bb) {
super(bb);
listen4Event(event);
}
public void performAction(String eventName, Object value) {
SubGraph sd = Select.getSelection(blackboard);
copyAsMatrix(blackboard.getData(GraphAttrSet.name), sd);
}
/**
* sd should be a subset of g
*/
public static void copyAsMatrix(GraphModel gg, SubGraph sd) {
GraphModel g = new GraphModel(gg.isDirected());
moveToGraph(sd, g);
Object[][] m = Matrix.graph2Matrix(g);
Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard();
String data = Matrix.Matrix2String(m);
StringSelection string = new StringSelection(data);
cb.setContents(string, string);
// moveToGraph(sd, gg);
}
private static void moveToGraph(SubGraph sd, GraphModel g) {
g.insertVertices(sd.vertices);
g.insertEdges(sd.edges);
}
}