/** * Action Listener * * @param e event */ public void actionPerformed(ActionEvent e) { log.info(e.toString()); // Add new Node if (e.getSource() == m_NewMenuNode) { log.info("Create New Node"); String nameLabel = Util.cleanAmp(Msg.getMsg(Env.getCtx(), "Name")); String name = JOptionPane.showInputDialog( this, nameLabel, // message Msg.getMsg(Env.getCtx(), "CreateNewNode"), // title JOptionPane.QUESTION_MESSAGE); if (name != null && name.length() > 0) { int AD_Client_ID = Env.getAD_Client_ID(Env.getCtx()); MWFNode node = new MWFNode(m_wf, name, name); node.setClientOrg(AD_Client_ID, 0); node.save(); m_parent.load(m_wf.getAD_Workflow_ID(), true); } } // Add/Delete Line else if (e.getSource() instanceof WFPopupItem) { WFPopupItem item = (WFPopupItem) e.getSource(); item.execute(); } } // actionPerformed
/** Answer Button */ private void cmd_button() { log.config("Activity=" + m_activity); if (m_activity == null) return; // MWFNode node = m_activity.getNode(); if (MWFNode.ACTION_UserWindow.equals(node.getAction())) { int AD_Window_ID = node.getAD_Window_ID(); // Explicit Window String ColumnName = m_activity.getPO().get_TableName() + "_ID"; int Record_ID = m_activity.getRecord_ID(); MQuery query = MQuery.getEqualQuery(ColumnName, Record_ID); boolean IsSOTrx = m_activity.isSOTrx(); // log.info( "Zoom to AD_Window_ID=" + AD_Window_ID + " - " + query + " (IsSOTrx=" + IsSOTrx + ")"); AEnv.zoom(AD_Window_ID, query); } else if (MWFNode.ACTION_UserForm.equals(node.getAction())) { int AD_Form_ID = node.getAD_Form_ID(); Window form = ADForm.openForm(AD_Form_ID); AEnv.showWindow(form); } else if (MWFNode.ACTION_SmartBrowse.equals(node.getAction())) { int AD_Browse_ID = node.getAD_Browse_ID(); Window browse = WBrowser.openBrowse(AD_Browse_ID); AEnv.showWindow(browse); } else log.log(Level.SEVERE, "No User Action:" + node.getAction()); } // cmd_button
/** Display. Fill Editors */ public void display(int index) { log.fine("Index=" + index); // m_activity = resetDisplay(index); // Nothing to show if (m_activity == null) { return; } // Display Activity fNode.setText(m_activity.getNodeName()); fDescription.setValue(m_activity.getNodeDescription()); fHelp.setValue(m_activity.getNodeHelp()); // fHistory.setContent(HISTORY_DIV_START_TAG + m_activity.getHistoryHTML() + "</div>"); // User Actions MWFNode node = m_activity.getNode(); if (MWFNode.ACTION_UserChoice.equals(node.getAction())) { if (m_column == null) m_column = node.getColumn(); if (m_column != null && m_column.get_ID() != 0) { fAnswerList.removeAllItems(); int dt = m_column.getAD_Reference_ID(); if (dt == DisplayType.YesNo) { ValueNamePair[] values = MRefList.getList(Env.getCtx(), 319, false); // _YesNo for (int i = 0; i < values.length; i++) { fAnswerList.appendItem(values[i].getName(), values[i].getValue()); } fAnswerList.setVisible(true); } else if (dt == DisplayType.List) { ValueNamePair[] values = MRefList.getList(Env.getCtx(), m_column.getAD_Reference_Value_ID(), false); for (int i = 0; i < values.length; i++) { fAnswerList.appendItem(values[i].getName(), values[i].getValue()); } fAnswerList.setVisible(true); } else // other display types come here { fAnswerText.setText(""); fAnswerText.setVisible(true); } } } // -- else if (MWFNode.ACTION_UserWindow.equals(node.getAction()) || MWFNode.ACTION_UserForm.equals(node.getAction())) { fAnswerButton.setLabel(node.getName()); fAnswerButton.setTooltiptext(node.getDescription()); fAnswerButton.setVisible(true); } else log.log(Level.SEVERE, "Unknown Node Action: " + node.getAction()); statusBar.setStatusDB((m_index + 1) + "/" + m_activities.length); statusBar.setStatusLine(Msg.getMsg(Env.getCtx(), "WFActivities")); } // display
/** * Load workflw and initialize the session attributes. * * @param ctx * @param AD_Workflow_ID * @param sess */ private void loadWorkflow(Properties ctx, int AD_Workflow_ID, HttpSession sess) { MWorkflow wf = new MWorkflow(ctx, AD_Workflow_ID, null); // get the MWFNode in order MWFNode[] nodes = wf.getNodes(true, Env.getContextAsInt(ctx, "#AD_Client_ID")); MWFNode wfn = null; ArrayList nodes_ID = new ArrayList(); for (int i = 0; i < nodes.length; i++) { wfn = nodes[i]; nodes_ID.add(new Integer(wfn.getAD_WF_Node_ID())); } // for int imageMap[][] = generateImageMap(nodes_ID); // printMap(imageMap); // set session attribtes sess.setAttribute(WORKFLOW, wf); sess.setAttribute(NODES, nodes); sess.setAttribute(NODES_ID, nodes_ID); sess.setAttribute(IMAGE_MAP, imageMap); sess.setAttribute(ACTIVE_NODE, new Integer(-999)); } // loadWorkflow
/** Execute */ public void execute() { // Add Line if (m_node != null && m_AD_WF_NodeTo_ID > 0) { int AD_Client_ID = Env.getAD_Client_ID(Env.getCtx()); MWFNodeNext newLine = new MWFNodeNext(m_node, m_AD_WF_NodeTo_ID); newLine.setClientOrg(AD_Client_ID, 0); newLine.save(); log.info("Add Line to " + m_node + " -> " + newLine); m_parent.load(m_wf.getAD_Workflow_ID(), true); } // Delete Node else if (m_node != null && m_AD_WF_NodeTo_ID == -1) { log.info("Delete Node: " + m_node); m_node.delete(false); m_parent.load(m_wf.getAD_Workflow_ID(), true); } // Delete Line else if (m_line != null) { log.info("Delete Line: " + m_line); m_line.delete(false); m_parent.load(m_wf.getAD_Workflow_ID(), true); } else log.severe("No Action??"); } // execute
/** Save */ public void onOK() { log.config("Activity=" + m_activity); if (m_activity == null) { Clients.showBusy(null, false); return; } int AD_User_ID = Env.getAD_User_ID(Env.getCtx()); String textMsg = fTextMsg.getValue(); // MWFNode node = m_activity.getNode(); Object forward = null; // fForward.getValue(); // ensure activity is ran within a transaction - [ 1953628 ] Trx trx = null; try { trx = Trx.get(Trx.createTrxName("FWFA"), true); m_activity.set_TrxName(trx.getTrxName()); if (forward != null) { log.config("Forward to " + forward); int fw = ((Integer) forward).intValue(); if (fw == AD_User_ID || fw == 0) { log.log(Level.SEVERE, "Forward User="******"CannotForward"); trx.rollback(); trx.close(); return; } } // User Choice - Answer else if (MWFNode.ACTION_UserChoice.equals(node.getAction())) { if (m_column == null) m_column = node.getColumn(); // Do we have an answer? int dt = m_column.getAD_Reference_ID(); String value = fAnswerText.getText(); if (dt == DisplayType.YesNo || dt == DisplayType.List) { ListItem li = fAnswerList.getSelectedItem(); if (li != null) value = li.getValue().toString(); } if (value == null || value.length() == 0) { FDialog.error(m_WindowNo, this, "FillMandatory", Msg.getMsg(Env.getCtx(), "Answer")); trx.rollback(); trx.close(); return; } // log.config("Answer=" + value + " - " + textMsg); try { m_activity.setUserChoice(AD_User_ID, value, dt, textMsg); } catch (Exception e) { log.log(Level.SEVERE, node.getName(), e); FDialog.error(m_WindowNo, this, "Error", e.toString()); trx.rollback(); trx.close(); return; } } // User Action else { log.config("Action=" + node.getAction() + " - " + textMsg); try { // ensure activity is ran within a transaction m_activity.setUserConfirmation(AD_User_ID, textMsg); } catch (Exception e) { log.log(Level.SEVERE, node.getName(), e); FDialog.error(m_WindowNo, this, "Error", e.toString()); trx.rollback(); trx.close(); return; } } trx.commit(); } finally { Clients.showBusy(null, false); if (trx != null) trx.close(); } // Next loadActivities(); display(-1); } // onOK
/** * ************************************************************************ Mouse Clicked. Pressed * - Released - Clicked. * * @param e event */ public void mouseClicked(MouseEvent e) { if (m_readWrite && SwingUtilities.isRightMouseButton(e)) { int AD_Client_ID = Env.getAD_Client_ID(Env.getCtx()); if (e.getSource() == this && m_wf != null) { m_NewPopupMenu.show(this, e.getX(), e.getY()); } else if (e.getSource() instanceof WFNode) { MWFNode node = ((WFNode) e.getSource()).getModel(); m_LinePopupMenu = new JPopupMenu(node.getName()); if (node.getAD_Client_ID() == AD_Client_ID) { String title = Msg.getMsg(Env.getCtx(), "DeleteNode") + ": " + node.getName(); addMenuItem(m_LinePopupMenu, title, node, -1); m_LinePopupMenu.addSeparator(); } MWFNode[] nodes = m_wf.getNodes(true, AD_Client_ID); MWFNodeNext[] lines = node.getTransitions(AD_Client_ID); // Add New Line for (int n = 0; n < nodes.length; n++) { MWFNode nn = nodes[n]; if (nn.getAD_WF_Node_ID() == node.getAD_WF_Node_ID()) continue; // same boolean found = false; for (int i = 0; i < lines.length; i++) { MWFNodeNext line = lines[i]; if (nn.getAD_WF_Node_ID() == line.getAD_WF_Next_ID()) { found = true; break; } } if (!found) { String title = Msg.getMsg(Env.getCtx(), "AddLine") + ": " + node.getName() + " -> " + nn.getName(); addMenuItem(m_LinePopupMenu, title, node, nn.getAD_WF_Node_ID()); } } m_LinePopupMenu.addSeparator(); // Delete Lines for (int i = 0; i < lines.length; i++) { MWFNodeNext line = lines[i]; if (line.getAD_Client_ID() != AD_Client_ID) continue; MWFNode next = MWFNode.get(Env.getCtx(), line.getAD_WF_Next_ID()); String title = Msg.getMsg(Env.getCtx(), "DeleteLine") + ": " + node.getName() + " -> " + next.getName(); addMenuItem(m_LinePopupMenu, title, line); } m_LinePopupMenu.show(this, e.getX(), e.getY()); } } // Selection else if (e.getSource() instanceof WFNode) { WFNode selected = (WFNode) e.getSource(); log.fine(selected.toString()); for (int i = 0; i < m_nodes.size(); i++) { WFNode node = (WFNode) m_nodes.get(i); if (selected.getAD_WF_Node_ID() == node.getAD_WF_Node_ID()) node.setSelected(true); else node.setSelected(false); } } m_dragged = false; } // mouseClicked