📄 wfactivity.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 Smart Business Solution. The Initial
* Developer of the Original Code is Jorg Janke. Portions created by Jorg Janke
* are Copyright (C) 1999-2005 Jorg Janke.
* All parts are Copyright (C) 1999-2005 ComPiere, Inc. All Rights Reserved.
* Contributor(s): ______________________________________.
*****************************************************************************/
package org.compiere.apps.wf;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import java.util.*;
import java.util.logging.*;
import javax.swing.*;
import org.compiere.apps.*;
import org.compiere.apps.form.*;
import org.compiere.grid.ed.*;
import org.compiere.model.*;
import org.compiere.swing.*;
import org.compiere.util.*;
import org.compiere.wf.*;
/**
* WorkFlow Activities Panel
*
* @author Jorg Janke
* @version $Id: WFActivity.java,v 1.22 2005/11/21 23:48:04 jjanke Exp $
*/
public class WFActivity extends CPanel
implements FormPanel, ActionListener
{
/**
* WF Activity
*/
public WFActivity()
{
super ();
// needs to call init
} // WFActivity
/**
* WF Activity
* @param menu AMenu
*/
public WFActivity (AMenu menu)
{
super ();
log.config("");
try
{
dynInit(0);
jbInit();
}
catch(Exception e)
{
log.log(Level.SEVERE, "", e);
}
m_menu = menu;
} // WFActivity
/** Window No */
private int m_WindowNo = 0;
/** FormFrame */
private FormFrame m_frame = null;
/** Menu */
private AMenu m_menu = null;
/** Open Activities */
private MWFActivity[] m_activities = null;
/** Current Activity */
private MWFActivity m_activity = null;
/** Current Activity */
private int m_index = 0;
/** Set Column */
private M_Column m_column = null;
/** Logger */
private static CLogger log = CLogger.getCLogger(WFActivity.class);
//
private CPanel centerPanel = new CPanel();
private GridBagLayout centerLayout = new GridBagLayout();
private CLabel lNode = new CLabel(Msg.translate(Env.getCtx(), "AD_WF_Node_ID"));
private CTextField fNode = new CTextField();
private CLabel lDesctiption = new CLabel(Msg.translate(Env.getCtx(), "Description"));
private CTextArea fDescription = new CTextArea();
private CLabel lHelp = new CLabel(Msg.translate(Env.getCtx(), "Help"));
private CTextArea fHelp = new CTextArea();
private CLabel lHistory = new CLabel(Msg.translate(Env.getCtx(), "History"));
private CTextPane fHistory = new CTextPane();
private CLabel lAnswer = new CLabel(Msg.getMsg(Env.getCtx(), "Answer"));
private CPanel answers = new CPanel(new FlowLayout(FlowLayout.LEADING));
private CTextField fAnswerText = new CTextField();
private CComboBox fAnswerList = new CComboBox();
private CButton fAnswerButton = new CButton();
private CButton bPrevious = AEnv.getButton("Previous");
private CButton bNext = AEnv.getButton("Next");
private CButton bZoom = AEnv.getButton("Zoom");
private CLabel lTextMsg = new CLabel(Msg.getMsg(Env.getCtx(), "Messages"));
private CTextArea fTextMsg = new CTextArea();
private CButton bOK = ConfirmPanel.createOKButton(true);
private VLookup fForward = null; // dynInit
private CLabel lForward = new CLabel(Msg.getMsg(Env.getCtx(), "Forward"));
private CLabel lOptional = new CLabel("(" + Msg.translate(Env.getCtx(), "Optional") + ")");
private StatusBar statusBar = new StatusBar();
/**
* Dynamic Init.
* Called before Static Init
* @param WindowNo window
*/
private void dynInit(int WindowNo)
{
loadActivities();
// Forward
fForward = VLookup.createUser(WindowNo);
} // dynInit
/**
* Static Init.
* Called after Dynamic Init
* @throws Exception
*/
private void jbInit () throws Exception
{
centerPanel.setLayout (centerLayout);
fNode.setReadWrite (false);
fDescription.setReadWrite (false);
fDescription.setPreferredSize(new Dimension (130,40));
fHelp.setReadWrite (false);
fHelp.setPreferredSize(new Dimension (150,80));
fHistory.setReadWrite (false);
fHistory.setPreferredSize(new Dimension (150,60));
fTextMsg.setPreferredSize(new Dimension (150,40));
//
bPrevious.addActionListener(this);
bNext.addActionListener(this);
bZoom.addActionListener(this);
bOK.addActionListener(this);
//
this.setLayout(new BorderLayout());
this.add (centerPanel, BorderLayout.CENTER);
this.add (statusBar, BorderLayout.SOUTH);
//
// answers.setOpaque(false);
answers.add(fAnswerText);
answers.add(fAnswerList);
answers.add(fAnswerButton);
fAnswerButton.addActionListener(this);
//
centerPanel.add (lNode, new GridBagConstraints (0, 0, 1, 1, 0.0, 0.0,
GridBagConstraints.NORTHEAST, GridBagConstraints.NONE,
new Insets (5, 10, 5, 5), 0, 0));
centerPanel.add (fNode, new GridBagConstraints (1, 0, 2, 1, 0.5, 0.0,
GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL,
new Insets (5, 0, 5, 5), 0, 0));
centerPanel.add (bPrevious, new GridBagConstraints (3, 0, 1, 1, 0.0, 0.0,
GridBagConstraints.NORTHEAST, GridBagConstraints.NONE,
new Insets (5, 5, 5, 10), 0, 0));
centerPanel.add (lDesctiption, new GridBagConstraints (0, 1, 1, 1, 0.0, 0.0,
GridBagConstraints.NORTHEAST, GridBagConstraints.NONE,
new Insets (5, 10, 5, 5), 0, 0));
centerPanel.add (fDescription, new GridBagConstraints (1, 1, 2, 1, 0.0, 0.1,
GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL,
new Insets (5, 0, 5, 5), 0, 0));
centerPanel.add (bNext, new GridBagConstraints (3, 1, 1, 1, 0.0, 0.0,
GridBagConstraints.NORTHEAST, GridBagConstraints.NONE,
new Insets (5, 5, 5, 10), 0, 0));
centerPanel.add (lHelp, new GridBagConstraints (0, 2, 1, 1, 0.0, 0.0,
GridBagConstraints.NORTHEAST, GridBagConstraints.NONE,
new Insets (5, 10, 5, 5), 0, 0));
centerPanel.add (fHelp, new GridBagConstraints (1, 2, 3, 1, 0.0, 0.1,
GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL,
new Insets (5, 0, 5, 10), 0, 0));
centerPanel.add (lHistory, new GridBagConstraints (0, 3, 1, 1, 0.0, 0.0,
GridBagConstraints.NORTHEAST, GridBagConstraints.NONE,
new Insets (5, 10, 5, 5), 0, 0));
centerPanel.add (fHistory, new GridBagConstraints (1, 3, 3, 1, 0.5, 0.5,
GridBagConstraints.NORTHWEST, GridBagConstraints.BOTH,
new Insets (5, 0, 5, 10), 0, 0));
centerPanel.add (lAnswer, new GridBagConstraints (0, 4, 1, 1, 0.0, 0.0,
GridBagConstraints.EAST, GridBagConstraints.NONE,
new Insets (10, 10, 5, 5), 0, 0));
centerPanel.add (answers, new GridBagConstraints (1, 4, 2, 1, 0.0, 0.0,
GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL,
new Insets (10, 0, 5, 5), 0, 0));
centerPanel.add (bZoom, new GridBagConstraints (3, 4, 1, 1, 0.0, 0.0,
GridBagConstraints.EAST, GridBagConstraints.NONE,
new Insets (10, 0, 10, 10), 0, 0));
centerPanel.add (lTextMsg, new GridBagConstraints (0, 5, 1, 1, 0.0, 0.0,
GridBagConstraints.NORTHEAST, GridBagConstraints.NONE,
new Insets (5, 10, 5, 5), 0, 0));
centerPanel.add (fTextMsg, new GridBagConstraints (1, 5, 3, 1, 0.5, 0.0,
GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL,
new Insets (5, 0, 5, 10), 0, 0));
centerPanel.add (lForward, new GridBagConstraints (0, 6, 1, 1, 0.0, 0.0,
GridBagConstraints.EAST, GridBagConstraints.NONE,
new Insets (10, 10, 5, 5), 0, 0));
centerPanel.add (fForward, new GridBagConstraints (1, 6, 1, 1, 0.0, 0.0,
GridBagConstraints.WEST, GridBagConstraints.NONE,
new Insets (10, 0, 5, 0), 0, 0));
centerPanel.add (lOptional, new GridBagConstraints (2, 6, 1, 1, 0.0, 0.0,
GridBagConstraints.WEST, GridBagConstraints.NONE,
new Insets (10, 5, 5, 5), 0, 0));
centerPanel.add (bOK, new GridBagConstraints (3, 6, 1, 1, 0.0, 0.0,
GridBagConstraints.EAST, GridBagConstraints.NONE,
new Insets (10, 5, 5, 10), 0, 0));
} // jbInit
/**
* Initialize Panel for FormPanel
* @param WindowNo window
* @param frame frame
* @see org.compiere.apps.form.FormPanel#init(int, FormFrame)
*/
public void init (int WindowNo, FormFrame frame)
{
m_WindowNo = WindowNo;
m_frame = frame;
//
log.info("");
try
{
dynInit(WindowNo);
jbInit();
//
// this.setPreferredSize(new Dimension (400,400));
frame.getContentPane().add(this, BorderLayout.CENTER);
display();
}
catch(Exception e)
{
log.log(Level.SEVERE, "", e);
}
} // init
/**
* Dispose
* @see org.compiere.apps.form.FormPanel#dispose()
*/
public void dispose()
{
if (m_frame != null)
m_frame.dispose();
m_frame = null;
} // dispose
/**
* Load Activities
* @return int
*/
public int loadActivities()
{
long start = System.currentTimeMillis();
ArrayList<MWFActivity> list = new ArrayList<MWFActivity>();
String sql = "SELECT * FROM AD_WF_Activity a "
+ "WHERE a.Processed='N' AND a.WFState='OS' AND ("
// Owner of Activity
+ " a.AD_User_ID=?" // #1
// Invoker (if no invoker = all)
+ " OR EXISTS (SELECT * FROM AD_WF_Responsible r WHERE a.AD_WF_Responsible_ID=r.AD_WF_Responsible_ID"
+ " AND COALESCE(r.AD_User_ID,0)=0 AND (a.AD_User_ID=? OR a.AD_User_ID IS NULL))" // #2
// Responsible User
+ " OR EXISTS (SELECT * FROM AD_WF_Responsible r WHERE a.AD_WF_Responsible_ID=r.AD_WF_Responsible_ID"
+ " AND r.AD_User_ID=?)" // #3
// Responsible Role
+ " OR EXISTS (SELECT * FROM AD_WF_Responsible r INNER JOIN AD_User_Roles ur ON (r.AD_Role_ID=ur.AD_Role_ID)"
+ " WHERE a.AD_WF_Responsible_ID=r.AD_WF_Responsible_ID AND ur.AD_User_ID=?)" // #4
//
+ ") ORDER BY a.Priority DESC, Created";
int AD_User_ID = Env.getAD_User_ID(Env.getCtx());
PreparedStatement pstmt = null;
try
{
pstmt = DB.prepareStatement (sql, null);
pstmt.setInt (1, AD_User_ID);
pstmt.setInt (2, AD_User_ID);
pstmt.setInt (3, AD_User_ID);
pstmt.setInt (4, AD_User_ID);
ResultSet rs = pstmt.executeQuery ();
while (rs.next ())
{
list.add (new MWFActivity(Env.getCtx(), rs, null));
if (list.size() > 200) // HARDCODED
{
log.warning("More then 200 Activities - ignored");
break;
}
}
rs.close ();
pstmt.close ();
pstmt = null;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -