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

📄 wfnode.java

📁 Java写的ERP系统
💻 JAVA
字号:
/******************************************************************************
 * The contents of this file are subject to the   Compiere License  Version 1.1
 * ("License"); You may not use this file except in compliance with the License
 * You may obtain a copy of the License at http://www.compiere.org/license.html
 * Software distributed under the License is distributed on an  "AS IS"  basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
 * the specific language governing rights and limitations under the License.
 * The Original Code is                  Compiere  ERP & CRM  Business Solution
 * The Initial Developer of the Original Code is Jorg Janke  and ComPiere, Inc.
 * Portions created by Jorg Janke are Copyright (C) 1999-2002 Jorg Janke, parts
 * created by ComPiere are Copyright (C) ComPiere, Inc.;   All Rights Reserved.
 * Contributor(s): ______________________________________.
 *****************************************************************************/
package org.compiere.apps.wf;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

import org.compiere.apps.*;
import org.compiere.model.*;
import org.compiere.util.*;

/**
 *	Work Flow Node.
 *  Listen to PropertyChange for selection
 *
 * 	@author 	Jorg Janke
 * 	@version 	$Id: WFNode.java,v 1.4 2002/12/05 05:42:03 jjanke Exp $
 */
public class WFNode extends JLabel
	implements MouseListener, MouseMotionListener
{
	/**
	 * 	Create WF Node
	 * 	@param node model
	 */
	public WFNode (MWFNode node)
	{
		super (node.getName(true), new WFIcon(node.getAction()), JLabel.CENTER);
		m_node = node;
		//
		setVerticalAlignment(JLabel.CENTER);
		setVerticalTextPosition(JLabel.BOTTOM);
		setHorizontalTextPosition(JLabel.CENTER);
		//
		String description = node.getDescription(true);
		if (description != null && description.length() > 0)
			setToolTipText(description);
		//
		setLocation(node.getXposition(), node.getYposition());
		Log.trace(Log.l4_Data, "WFNode " + node.getAD_WF_Node_ID(), getLocation());
		//
		this.addMouseListener(this);
		this.addMouseMotionListener(this);
	}	//	WFNode

	/**	ID								*/
	private MWFNode 		m_node = null;

	/**	Selected Property value			*/
	public static String	PROPERTY_SELECTED = "selected";
	/**	Selected Value					*/
	private boolean			m_selected = false;
	/**	Was node moved					*/
	private boolean			m_moved = false;

	/**	ReadWrite Mode (see WFPanel)		*/
	private boolean		m_readWrite = "Y".equals(Env.getContext(Env.getCtx(), "#CompiereSys"));

	/*************************************************************************/

	/**	Mouse Point for dragging		*/
	private Point m_mousePoint = null;

	/**
	 * 	Mouse Clicked.
	 *  Start Action.
	 *  Sequence: pressed - clicked - released
	 * 	@param e event
	 */
	public void mouseClicked(MouseEvent e)
	{
		if (e.getClickCount() > 1)
		{
			firePropertyChange(PROPERTY_SELECTED, false, true);
			setSelected (true);
		}
	}	//	mouseClicked

	/**
	 * 	Mouse Pressed.
	 *  Save position
	 *  Sequence: pressed - dragged/clicked - released
	 * 	@param e event
	 */
	public void mousePressed(MouseEvent e)
	{
		m_mousePoint = e.getPoint();
	}	//	mousePressed

	/**
	 * 	Mouse Released.
	 *  After drag - repaint
	 * 	@param e event
	 */
	public void mouseReleased(MouseEvent e)
	{
	//	System.out.println("mouseReleased - x=" + getX() + ", y=" + getY());
		getParent().doLayout();
		getParent().repaint();
		//
		if (m_moved)
			m_node.setPosition(getLocation());
		m_moved = false;
	}	//	mouseReleased

	/**
	 * 	Mouse entered. NOP
	 * 	@param e event
	 */
	public void mouseEntered(MouseEvent e) {}

	/**
	 * 	Mouse exited. NOP
	 * 	@param e event
	 */
	public void mouseExited(MouseEvent e) {}

	/**
	 * 	Mouse moved. NOP
	 * 	@param e event
	 */
	public void mouseMoved(MouseEvent e) {}

	/**
	 * 	Mouse dragged.
	 * 	@param e event
	 */
	public void mouseDragged (MouseEvent e)
	{
		if (!m_readWrite)
			return;
		//	Convert from Node to Panel coordinates
		Point p = SwingUtilities.convertPoint(this, e.getPoint(), this.getParent());
		//	Subtract Pressed (start point)
		p.x -= m_mousePoint.x;
		p.y -= m_mousePoint.y;
		//	Position in panel
		setLocation(p);
		m_moved = true;
	}	//	mouseDragged

	/*************************************************************************/

	/**
	 * 	Set Selected
	 * 	@param selected selected
	 */
	public void setSelected (boolean selected)
	{
		m_selected = selected;
		((WFIcon)getIcon()).setSelected (m_selected);
		setForeground(m_selected ? Color.blue : Color.black);
	}	//	setSelected

	/**
	 * 	Get Selected
	 * 	@return selected
	 */
	public boolean isSelected()
	{
		return m_selected;
	}	//	isSelected

	/**
	 * 	Get Node ID
	 * 	@return Node ID
	 */
	public int getAD_WF_Node_ID()
	{
		return m_node.getAD_WF_Node_ID();
	}	//	getAD_WF_Node_ID

	/**
	 * 	Get Node Model
	 * 	@return Node Model
	 */
	public MWFNode getModel()
	{
		return m_node;
	}	//	getModel

	/**
	 * 	Get Bounds of Icon
	 * 	@return Bounds
	 */
	public Rectangle getIconBounds()
	{
		Icon icon = getIcon();
		Rectangle bounds = getBounds();
		bounds.x += (bounds.width-icon.getIconWidth()) / 2;
		//
		bounds.width = icon.getIconWidth();
		bounds.height = icon.getIconHeight();
		//
		return bounds;
	}	//	getIconBounds

	/**
	 * 	String Representation
	 * 	@return info
	 */
	public String toString()
	{
		StringBuffer sb = new StringBuffer("WFNode[");
		sb.append(getAD_WF_Node_ID())
			.append(",").append(getBounds())
			.append("]");
		return sb.toString();
	}	//	toString

}	//	WFNode

⌨️ 快捷键说明

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