⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 grapheventdispatcher.java

📁 用Java开发的、实现类似Visio功能的应用程序源码
💻 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 + -