📄 highlightingmanipulator.java
字号:
package net.sourceforge.jpowergraph.manipulator.selection;
import java.beans.PropertyChangeSupport;
import net.sourceforge.jpowergraph.Edge;
import net.sourceforge.jpowergraph.Node;
import net.sourceforge.jpowergraph.manipulator.AbstractManipulator;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.graphics.Point;
/**
* A manipulator that tracks the currently higlighted element.
*/
public class HighlightingManipulator extends AbstractManipulator {
/** The name of this manipulator. */
public static final String NAME="HighlightingManipulator";
/** The support for property changes. */
protected PropertyChangeSupport m_propertyChangeSupport;
/** The node that is highlighted. */
protected Node m_highlightedNode;
/** The edge that is highlighted. */
protected Edge m_highlightedEdge;
private boolean disposed = false;
/**
* Creates an instance of this class.
*/
public HighlightingManipulator() {
m_propertyChangeSupport=new PropertyChangeSupport(this);
}
public String getName() {
return NAME;
}
public Node getHighlightedNode() {
return m_highlightedNode;
}
public void setHighlightedNode(Node highlightedNode) {
if (highlightedNode!=m_highlightedNode) {
Node oldHighlightedNode=m_highlightedNode;
if (oldHighlightedNode!=null)
m_graphPane.repaintNode(oldHighlightedNode);
m_highlightedNode=highlightedNode;
if (m_highlightedNode!=null)
m_graphPane.repaintNode(m_highlightedNode);
m_propertyChangeSupport.firePropertyChange("highlightedNode",oldHighlightedNode,m_highlightedNode);
}
}
public Edge getHighlightedEdge() {
return m_highlightedEdge;
}
public void setHighlightedEdge(Edge highlightedEdge) {
if (highlightedEdge!=m_highlightedEdge) {
Edge oldHighlightedEdge=m_highlightedEdge;
if (oldHighlightedEdge!=null)
m_graphPane.repaintEdge(oldHighlightedEdge);
m_highlightedEdge=highlightedEdge;
if (m_highlightedEdge!=null)
m_graphPane.repaintEdge(m_highlightedEdge);
m_propertyChangeSupport.firePropertyChange("highlightedEdge",oldHighlightedEdge,m_highlightedEdge);
}
}
public void mouseEnter(MouseEvent e) {
updateHighlight(e);
}
public void mouseExit(MouseEvent e) {
setHighlightedNode(null);
setHighlightedEdge(null);
}
public void mouseMove(MouseEvent e) {
updateHighlight(e);
}
protected void updateHighlight(MouseEvent e) {
if (m_graphPane.isEnabled()) {
Point point = new Point(e.x, e.y);
Node nodeAtPoint=m_graphPane.getNodeAtPoint(point);
if (nodeAtPoint!=null) {
setHighlightedNode(nodeAtPoint);
setHighlightedEdge(null);
}
else {
setHighlightedNode(null);
Edge edgeAtPoint=m_graphPane.getNearestEdge(point);
setHighlightedEdge(edgeAtPoint);
}
}
else {
setHighlightedNode(null);
setHighlightedEdge(null);
}
}
public void dispose(){
disposed = true;
}
public boolean isDisposed(){
return disposed ;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -