📄 grapheventdispatcher.java
字号:
/**
* $Id:EventDispatcher.java $
*
* Copyright 2004 ~ 2005 JingFei International Cooperation LTD. All rights reserved. *
*/
package com.jfimagine.jfdraw.draw;
import java.util.ArrayList;
import com.jfimagine.jfgraph.event.*;
import com.jfimagine.jfdraw.gui.DrawAdapter;
import com.jfimagine.jfgraph.shape.base.AbstractShape;
import com.jfimagine.jfgraph.shape.base.Label;
import com.jfimagine.jfgraph.shape.base.Node;
/**
* Graph event dispatcher is used to generate and dispatcher customized graph event to developers.
*
* @author CookieMaker
*
* @version $Revision: 1.3.1 $
*/
public class GraphEventDispatcher {
/** A DrawAdapter pane reference to dispatch events */
private DrawAdapter m_pane;
/** Customized event objects **/
private GraphEvent m_shapeEvent;
private GraphEvent m_nodeEvent;
private GraphEvent m_labelEvent;
/** graph changed objects*/
private ShapeChange m_shapeChange;
private NodeChange m_nodeChange;
private LabelChange m_labelChange;
/** Constructor */
public GraphEventDispatcher(DrawAdapter drawAdapter){
m_pane =drawAdapter;
}
private Object getEventSource(){
Object obj =m_pane.getDrawCanvas();
if (obj!=null)
return obj;
else
return m_pane;
}
/** get shape changed object */
public ShapeChange getShapeChange(){
return m_shapeChange;
}
/** get node changed object */
public NodeChange getNodeChange(){
return m_nodeChange;
}
/** get label changed object */
public LabelChange getLabelChange(){
return m_labelChange;
}
//****************************************************************
// fire share events
//****************************************************************
/**
* fire shape event
*/
private void fireShapeEvent(int changeType,Object obj,double lastMouseX,double lastMouseY,double mouseX,double mouseY){
if (m_shapeChange==null)
m_shapeChange =new ShapeChange();
if (m_shapeEvent==null)
m_shapeEvent =new GraphEvent(getEventSource(),m_shapeChange);
m_shapeChange.setChangeType(changeType);
m_shapeChange.setShape(obj);
m_shapeChange.setLastMousePosition((int)lastMouseX,(int)lastMouseY);
m_shapeChange.setMousePosition((int)mouseX,(int)mouseY);
m_pane.fireGraphEvent(m_shapeEvent);
}
/** fire shape selected event
* @param obj A list or abstractShape object contains shapes that are selected.
* @param mouseX,mouseY current mouse position
*/
public void fireShapeSelected(Object obj,double mouseX,double mouseY){
fireShapeEvent(EventConst.SHAPE_SELECTED,obj,mouseX,mouseY,mouseX,mouseY);
}
/** fire shape moving event
* @param obj A list or abstractShape object contains shapes that are moving.
* @param lastMouseX,lastMouseY Last Mouse position
* @param mouseX,mouseY current mouse position
*/
public void fireShapeMoving(Object obj,double lastMouseX,double lastMouseY,double mouseX,double mouseY){
fireShapeEvent(EventConst.SHAPE_MOVING,obj,lastMouseX,lastMouseY,mouseX,mouseY);
}
/** fire shape moved event
* @param obj A list or abstractShape object contains shapes that were moved.
* @param lastMouseX,lastMouseY Last Mouse position
* @param mouseX,mouseY current mouse position
*/
public void fireShapeMoved(Object obj,double lastMouseX,double lastMouseY,double mouseX,double mouseY){
fireShapeEvent(EventConst.SHAPE_MOVED,obj,lastMouseX,lastMouseY,mouseX,mouseY);
}
/** fire shape rotating event
* @param obj A list or abstractShape object contains shapes that are rotating.
* @param lastMouseX,lastMouseY Last Mouse position
* @param mouseX,mouseY current mouse position
*/
public void fireShapeRotating(Object obj,double lastMouseX,double lastMouseY,double mouseX,double mouseY){
fireShapeEvent(EventConst.SHAPE_ROTATING,obj,lastMouseX,lastMouseY,mouseX,mouseY);
}
/** fire shape rotated event
* @param obj A list or abstractShape object contains shapes that were rotated.
* @param lastMouseX,lastMouseY Last Mouse position
* @param mouseX,mouseY current mouse position
*/
public void fireShapeRotated(Object obj,double lastMouseX,double lastMouseY,double mouseX,double mouseY){
fireShapeEvent(EventConst.SHAPE_ROTATED,obj,lastMouseX,lastMouseY,mouseX,mouseY);
}
/** fire shape mirrored event
* @param obj A list or abstractShape object contains shapes that were mirrored.
*/
public void fireShapeMirrored(Object obj){
fireShapeEvent(EventConst.SHAPE_MIRRORED,obj,0,0,0,0);
}
/** fire shape flipped event
* @param obj A list or abstractShape object contains shapes that were flipped.
*/
public void fireShapeFlipped(Object obj){
fireShapeEvent(EventConst.SHAPE_FLIPPED,obj,0,0,0,0);
}
/** fire shape properties changed event
* @param obj A list or abstractShape object contains shapes that were changed properties.
*/
public void fireShapePropertyChanged(Object obj){
fireShapeEvent(EventConst.SHAPE_PROPERTYCHANGED,obj,0,0,0,0);
}
/** fire shape alignment event
* @param obj A list or abstractShape object contains shapes that are aligned.
* @param alignmentType A new alignment type.
*/
public void fireShapeAlignment(Object obj,int alignmentType){
AlignmentChange m_alignmentChange =new AlignmentChange();
m_alignmentChange.setChangeType(EventConst.SHAPE_ALIGNMENT);
m_alignmentChange.setAlignmentType(alignmentType);
m_alignmentChange.setShape(obj);
GraphEvent m_alignmentEvent =new GraphEvent(getEventSource(),m_alignmentChange);
m_pane.fireGraphEvent(m_alignmentEvent);
}
//****************************************************************
// fire node events
//****************************************************************
/**
* fire node event
*/
private void fireNodeEvent(int changeType,Node node,double lastMouseX,double lastMouseY,double mouseX,double mouseY){
if (m_nodeChange==null)
m_nodeChange =new NodeChange();
if (m_nodeEvent==null)
m_nodeEvent =new GraphEvent(getEventSource(),m_nodeChange);
m_nodeChange.setChangeType(changeType);
m_nodeChange.setNode(node);
if (node!=null)
m_nodeChange.setShape((AbstractShape)node.getParent());
else
m_nodeChange.setShape(new ArrayList());
m_nodeChange.setLastMousePosition((int)lastMouseX,(int)lastMouseY);
m_nodeChange.setMousePosition((int)mouseX,(int)mouseY);
m_pane.fireGraphEvent(m_nodeEvent);
}
/** fire node selected event
* @param node A node selected.
* @param mouseX,mouseY current mouse position
*/
public void fireNodeSelected(Node node,double mouseX,double mouseY){
fireNodeEvent(EventConst.NODE_SELECTED,node,mouseX,mouseY,mouseX,mouseY);
}
/** fire node moving event
* @param node A node moving
* @param lastMouseX,lastMouseY Last Mouse position
* @param mouseX,mouseY current mouse position
*/
public void fireNodeMoving(Node node,double lastMouseX,double lastMouseY,double mouseX,double mouseY){
fireNodeEvent(EventConst.NODE_MOVING,node,lastMouseX,lastMouseY,mouseX,mouseY);
}
/** fire node moved event
* @param node A node moved
* @param lastMouseX,lastMouseY Last Mouse position
* @param mouseX,mouseY current mouse position
*/
public void fireNodeMoved(Node node,double lastMouseX,double lastMouseY,double mouseX,double mouseY){
fireNodeEvent(EventConst.NODE_MOVED,node,lastMouseX,lastMouseY,mouseX,mouseY);
}
//****************************************************************
// fire label events
//****************************************************************
/**
* fire label event
*/
private void fireLabelEvent(int changeType,Label label,double lastMouseX,double lastMouseY,double mouseX,double mouseY){
if (m_labelChange==null)
m_labelChange =new LabelChange();
if (m_labelEvent==null)
m_labelEvent =new GraphEvent(getEventSource(),m_labelChange);
m_labelChange.setChangeType(changeType);
m_labelChange.setLabel(label);
if (label!=null)
m_labelChange.setShape((AbstractShape)label.getParent());
else
m_labelChange.setShape(new ArrayList());
m_labelChange.setLastMousePosition((int)lastMouseX,(int)lastMouseY);
m_labelChange.setMousePosition((int)mouseX,(int)mouseY);
m_pane.fireGraphEvent(m_labelEvent);
}
/** fire label selected event
* @param label A label selected.
* @param mouseX,mouseY current mouse position
*/
public void fireLabelSelected(Label label,double mouseX,double mouseY){
fireLabelEvent(EventConst.LABEL_SELECTED,label,mouseX,mouseY,mouseX,mouseY);
}
/** fire label moving event
* @param label A label moving
* @param lastMouseX,lastMouseY Last Mouse position
* @param mouseX,mouseY current mouse position
*/
public void fireLabelMoving(Label label,double lastMouseX,double lastMouseY,double mouseX,double mouseY){
fireLabelEvent(EventConst.LABEL_MOVING,label,lastMouseX,lastMouseY,mouseX,mouseY);
}
/** fire label moved event
* @param label A label moved
* @param lastMouseX,lastMouseY Last Mouse position
* @param mouseX,mouseY current mouse position
*/
public void fireLabelMoved(Label label,double lastMouseX,double lastMouseY,double mouseX,double mouseY){
fireLabelEvent(EventConst.LABEL_MOVED,label,lastMouseX,lastMouseY,mouseX,mouseY);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -