📄 wfnode.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 + -