// 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.core.actions;
import graphtea.graph.graph.Edge;
import graphtea.graph.graph.Vertex;
import graphtea.platform.core.BlackBoard;
import graphtea.plugins.main.core.actions.edge.EdgeSelectData;
import graphtea.plugins.main.core.actions.vertex.VertexSelectData;
import graphtea.ui.components.GComponentInterface;
import graphtea.ui.components.gpropertyeditor.utils.ObjectViewer;
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
/**
* Author: azin azadi
*/
public class LastSelectedStatusAction extends graphtea.platform.core.AbstractAction implements
GComponentInterface {
/**
* @param bb the blackboard of the action
*/
public LastSelectedStatusAction(BlackBoard bb) {
super(bb);
listen4Event(VertexSelectData.EVENT_KEY);
listen4Event(EdgeSelectData.EVENT_KEY);
}
JLabel l;
boolean labelHandled = false;
private void handleMouseListener() {
if (l == null)
return;
if (!labelHandled) {
l.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
ObjectViewer.showObject(last);
}
});
labelHandled = true;
}
}
Object last;
/**
* like Action
*
* @param eventName The event name
* @param value The value
*/
public void performAction(String eventName, Object value) {
l = label();
handleMouseListener();
if (eventName == VertexSelectData.EVENT_KEY) {
VertexSelectData last = blackboard.getData(VertexSelectData.EVENT_KEY);
Vertex v = last.v;
l.setText("Vertex :: " + (v.getLabel()));
this.last = v;
}
if (eventName == EdgeSelectData.EVENT_KEY) {
Edge e = ((EdgeSelectData) blackboard.getData(EdgeSelectData.EVENT_KEY)).edge;
l.setText("Edge :: " + (e.source.getLabel()) + "-->"
+ (e.target.getLabel()));
last = e;
}
}
private JLabel label() {
return lab;
}
JLabel lab = new JLabel("last select");
public Component getComponent(BlackBoard b) {
return lab;
}
}