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

📄 transition.java

📁 Petri网分析工具PIPE is open-source
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
//###################################################################################### package pipe.dataLayer;//###################################################################################### import java.awt.BasicStroke;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.RenderingHints;import java.awt.Shape;import java.awt.geom.AffineTransform;import java.awt.geom.GeneralPath;import java.awt.geom.Point2D;import java.awt.geom.Rectangle2D;import java.util.ArrayList;import java.util.Collections;import java.util.Iterator;import pipe.gui.Constants;import pipe.gui.CreateGui;//###################################################################################### /** * <b>Transition</b> - Petri-Net Transition Class * * @see <p><a href="..\PNMLSchema\index.html">PNML  -  Petri-Net XMLSchema (stNet.xsd)</a> * @see </p><p><a href="..\..\..\UML\dataLayer.html">UML  -  PNML Package </a></p> * @version 1.0 * @author James D Bloom *///###################################################################################### public class Transition extends PlaceTransitionObject implements Constants {//###################################################################################### 	public final static String type = "Transition";	/** Transition is of Rectangle2D.Double*/	private GeneralPath transition;	private Shape proximityTransition;	/** Place Width */	public static final int TRANSITION_HEIGHT = PLACE_TRANSITION_HEIGHT;	/** Place Width */	public static final int TRANSITION_WIDTH = TRANSITION_HEIGHT/3;		private int angle;	private boolean enabled = false;	private boolean enabledBackwards = false;	public boolean highlighted = false;			/** The transition rate */	private double rate = 1;		/** Is this a timed transition or not?*/	private boolean timed = false;		private static final double rootThreeOverTwo = 0.5 * Math.sqrt(3); 		/** The transform *///	private AffineTransform transform;		private ArrayList arcAngleList = new ArrayList();	/** Counter for the Objects  */	// private static int count = 0;		/** Used for a unique id */	//private static int idCount = 0;//###################################################################################### 	/**	 * Create Petri-Net Transition object	 *	 * @param positionXInput X-axis Position	 * @param positionYInput Y-axis Position	 * @param idInput Transition id	 * @param nameInput Name	 * @param nameOffsetXInput Name X-axis Position	 * @param nameOffsetYInput Name Y-axis Position	 * @param color Color	 */	public Transition(double positionXInput, double positionYInput, String idInput, String nameInput, double nameOffsetXInput, double nameOffsetYInput, double aRate ,boolean timedTransition, int angleInput){		super(positionXInput, positionYInput, idInput, nameInput, nameOffsetXInput, nameOffsetYInput);		componentWidth = TRANSITION_HEIGHT; //sets width		componentHeight = TRANSITION_HEIGHT;//sets height		rate = aRate;		timed = timedTransition;		constructTransition();		angle = 0;		setCentre((int)positionX, (int)positionY);		rotate(angleInput);		updateBounds();		//rotate(0);	}			//  /**	//   * Create Petri-Net Transition object	//   *	//   * @param positionXInput X-axis Position	//   * @param positionYInput Y-axis Position	//   * @param idInput Transition id	//   * @param color Color	//   */	//  public Transition(double positionXInput, double positionYInput, String idInput){	//    super(positionXInput, positionYInput, idInput);	//    	//    width = WIDTH; //sets width	//    height = HEIGHT;//sets height	//	//    transition = new Rectangle2D.Double(0, 0, width, height);	//    // enabled = true; //this is for testing purposes only	//	//	//    //transition = new Rectangle2D.Double(0, 0, width, height);	//    transition = new Rectangle2D.Double( (boundsWidth()-width)/2, (boundsHeight()-height)/2, width, height);	//	//  }	//###################################################################################### 	/**	 * Create Petri-Net Transition object	 *	 * @param positionXInput X-axis Position	 * @param positionYInput Y-axis Position	 * @param color Color	 */	public Transition(double positionXInput, double positionYInput) {		super(positionXInput, positionYInput);		componentWidth = TRANSITION_HEIGHT; //sets width		componentHeight = TRANSITION_HEIGHT;//sets height				constructTransition();		setCentre((int)positionX, (int)positionY);		updateBounds();	}//###################################################################################### 	/**	 * Create Petri-Net Transition object	 *	 */	public Transition(){	}//###################################################################################### 	public void paintComponent(Graphics g) {		super.paintComponent(g);		Graphics2D g2 = (Graphics2D)g;				g2.translate(COMPONENT_DRAW_OFFSET, COMPONENT_DRAW_OFFSET);		g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);		    if(selected && !ignoreSelection)      g2.setColor(SELECTION_FILL_COLOUR);    else		  g2.setColor(ELEMENT_FILL_COLOUR);		if (timed) g2.fill(transition);				if (highlighted)			g2.setPaint(ENABLED_TRANSITION_COLOUR);		else if (selected && !ignoreSelection)			g2.setPaint(SELECTION_LINE_COLOUR);		else			g2.setPaint(ELEMENT_LINE_COLOUR);				g2.draw(transition);		if (!timed)			g2.fill(transition);	}//###################################################################################### 	/** Rotates the Transition through the specified angle around the midpoint */	public void rotate(int angleInc) {		angle = (angle + angleInc) % 360;		transition.transform(AffineTransform.getRotateInstance(Math.toRadians(angleInc),				componentWidth/2,componentHeight/2));		outlineTransition();		Iterator arcIterator = arcAngleList.iterator();		while (arcIterator.hasNext()) ((ArcAngleCompare)arcIterator.next()).calcAngle();		Collections.sort(arcAngleList);		updateEndPoints();		repaint();	}//###################################################################################### 	private void outlineTransition()	{		proximityTransition =			(new BasicStroke(PLACE_TRANSITION_PROXIMITY_RADIUS)).createStrokedShape(transition);	}//###################################################################################### 	/**	 * Determines whether Transition is enabled	 * @param animationStatus Anamation status	 * @return True if enabled	 */	public boolean isEnabled(boolean animationStatus){		if(animationStatus==true){						// System.out.println("is Enabled called within Transition");			if(enabled==true){				highlighted = true;				return true;			}			else {				highlighted = false;				return false;			}		}		else return false;	}//###################################################################################### 	/**	 * Determines whether Transition is enabled backwards	 * @return True if enabled	 */	public boolean isEnabledBackwards(){		return enabledBackwards;	}//###################################################################################### 	/**	 * Determines whether Transition is enabled	 * @return True if enabled	 */	public boolean isEnabled(){		return enabled;	}//###################################################################################### 	/**	 * Sets whether Transition is enabled	 * @return enabled if True	 */	public void setEnabled(boolean status){		enabled = status;	}//###################################################################################### 	/**	 * Sets whether Transition is enabled	 * @return enabled if True	 */	public void setEnabledBackwards(boolean status){		enabledBackwards = status;	}//###################################################################################### 	/* called at the end of animation to reset Transitions to false*/	public void setEnabledFalse(){		enabled = false;		highlighted = false;	}//###################################################################################### 	/** Returns the width bounds we want to use when initially creating the place on the gui */	public int boundsWidth() {		return WIDTH+25;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -