added support to allow re-run of process and report.
This commit is contained in:
parent
ffcbd20aaa
commit
07d342ec1d
|
@ -173,7 +173,6 @@ public class ProcessDialog extends Window implements EventListener//, ASyncProce
|
||||||
private int m_AD_Process_ID;
|
private int m_AD_Process_ID;
|
||||||
private String m_Name = null;
|
private String m_Name = null;
|
||||||
|
|
||||||
private boolean m_IsReport = false;
|
|
||||||
private int[] m_ids = null;
|
private int[] m_ids = null;
|
||||||
private StringBuffer m_messageText = new StringBuffer();
|
private StringBuffer m_messageText = new StringBuffer();
|
||||||
private String m_ShowHelp = null; // Determine if a Help Process Window is shown
|
private String m_ShowHelp = null; // Determine if a Help Process Window is shown
|
||||||
|
@ -191,6 +190,7 @@ public class ProcessDialog extends Window implements EventListener//, ASyncProce
|
||||||
|
|
||||||
private ProcessInfo m_pi = null;
|
private ProcessInfo m_pi = null;
|
||||||
private boolean m_isLocked = false;
|
private boolean m_isLocked = false;
|
||||||
|
private boolean isParameterPage = true;
|
||||||
private String initialMessage;
|
private String initialMessage;
|
||||||
private BusyDialog progressWindow;
|
private BusyDialog progressWindow;
|
||||||
|
|
||||||
|
@ -244,7 +244,6 @@ public class ProcessDialog extends Window implements EventListener//, ASyncProce
|
||||||
if (rs.next())
|
if (rs.next())
|
||||||
{
|
{
|
||||||
m_Name = rs.getString(1);
|
m_Name = rs.getString(1);
|
||||||
m_IsReport = rs.getString(4).equals("Y");
|
|
||||||
m_ShowHelp = rs.getString(5);
|
m_ShowHelp = rs.getString(5);
|
||||||
//
|
//
|
||||||
m_messageText.append("<b>");
|
m_messageText.append("<b>");
|
||||||
|
@ -321,10 +320,10 @@ public class ProcessDialog extends Window implements EventListener//, ASyncProce
|
||||||
if (component instanceof Button) {
|
if (component instanceof Button) {
|
||||||
Button element = (Button)component;
|
Button element = (Button)component;
|
||||||
if ("Ok".equalsIgnoreCase(element.getId())) {
|
if ("Ok".equalsIgnoreCase(element.getId())) {
|
||||||
if (element.getLabel().length() > 0)
|
if (isParameterPage)
|
||||||
this.startProcess();
|
this.startProcess();
|
||||||
else
|
else
|
||||||
this.dispose();
|
restart();
|
||||||
} else if ("Cancel".equalsIgnoreCase(element.getId())) {
|
} else if ("Cancel".equalsIgnoreCase(element.getId())) {
|
||||||
this.dispose();
|
this.dispose();
|
||||||
}
|
}
|
||||||
|
@ -369,7 +368,10 @@ public class ProcessDialog extends Window implements EventListener//, ASyncProce
|
||||||
m_messageText.append(pi.getLogInfo(true));
|
m_messageText.append(pi.getLogInfo(true));
|
||||||
message.setContent(m_messageText.toString());
|
message.setContent(m_messageText.toString());
|
||||||
|
|
||||||
bOK.setLabel("");
|
bOK.setLabel(Msg.getMsg(Env.getCtx(), "Parameter"));
|
||||||
|
bOK.setImage("/images/Reset16.png");
|
||||||
|
isParameterPage = false;
|
||||||
|
|
||||||
m_ids = pi.getIDs();
|
m_ids = pi.getIDs();
|
||||||
|
|
||||||
//move message div to center to give more space to display potentially very long log info
|
//move message div to center to give more space to display potentially very long log info
|
||||||
|
@ -383,15 +385,38 @@ public class ProcessDialog extends Window implements EventListener//, ASyncProce
|
||||||
Clients.response(new AuEcho(this, "onAfterProcess", null));
|
Clients.response(new AuEcho(this, "onAfterProcess", null));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void restart() {
|
||||||
|
m_messageText = new StringBuffer(initialMessage);
|
||||||
|
message.setContent(initialMessage);
|
||||||
|
|
||||||
|
north.setVisible(true);
|
||||||
|
messageDiv.detach();
|
||||||
|
messageDiv.setStyle(MESSAGE_DIV_STYLE);
|
||||||
|
north.appendChild(messageDiv);
|
||||||
|
|
||||||
|
center.appendChild(centerPanel);
|
||||||
|
|
||||||
|
isParameterPage = true;
|
||||||
|
|
||||||
|
bOK.setLabel(Msg.getMsg(Env.getCtx(), "Start"));
|
||||||
|
bOK.setImage("/images/Ok16.png");
|
||||||
|
|
||||||
|
//recreate process info
|
||||||
|
m_pi = new WProcessInfo(m_Name, m_AD_Process_ID);
|
||||||
|
m_pi.setAD_User_ID (Env.getAD_User_ID(Env.getCtx()));
|
||||||
|
m_pi.setAD_Client_ID(Env.getAD_Client_ID(Env.getCtx()));
|
||||||
|
parameterPanel.setProcessInfo(m_pi);
|
||||||
|
|
||||||
|
m_ids = null;
|
||||||
|
|
||||||
|
invalidate();
|
||||||
|
}
|
||||||
|
|
||||||
public void onAfterProcess()
|
public void onAfterProcess()
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
afterProcessTask();
|
afterProcessTask();
|
||||||
|
|
||||||
// Close automatically
|
|
||||||
if (m_IsReport && !m_pi.isError())
|
|
||||||
this.dispose();
|
|
||||||
|
|
||||||
// If the process is a silent one and no errors occured, close the dialog
|
// If the process is a silent one and no errors occured, close the dialog
|
||||||
if(m_ShowHelp != null && m_ShowHelp.equals("S"))
|
if(m_ShowHelp != null && m_ShowHelp.equals("S"))
|
||||||
this.dispose();
|
this.dispose();
|
||||||
|
|
|
@ -14,8 +14,6 @@
|
||||||
|
|
||||||
package org.adempiere.webui.apps;
|
package org.adempiere.webui.apps;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.sql.PreparedStatement;
|
import java.sql.PreparedStatement;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
|
@ -51,108 +49,112 @@ import org.zkoss.zul.Hbox;
|
||||||
import org.zkoss.zul.Label;
|
import org.zkoss.zul.Label;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Process Parameter Panel, based on existing ProcessParameter dialog.
|
* Process Parameter Panel, based on existing ProcessParameter dialog. -
|
||||||
* - Embedded in ProcessDialog
|
* Embedded in ProcessDialog - checks, if parameters exist and inquires and
|
||||||
* - checks, if parameters exist and inquires and saves them
|
* saves them
|
||||||
*
|
*
|
||||||
* @author Low Heng Sin
|
* @author Low Heng Sin
|
||||||
* @version 2006-12-01
|
* @version 2006-12-01
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("serial")
|
@SuppressWarnings("serial")
|
||||||
public class ProcessParameterPanel extends Panel
|
public class ProcessParameterPanel extends Panel implements
|
||||||
implements ValueChangeListener, IProcessParameter
|
ValueChangeListener, IProcessParameter {
|
||||||
{
|
private String width;
|
||||||
private String width;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Dynamic generated Parameter panel.
|
* Dynamic generated Parameter panel.
|
||||||
* @param WindowNo window
|
*
|
||||||
* @param pi process info
|
* @param WindowNo
|
||||||
*/
|
* window
|
||||||
public ProcessParameterPanel(int WindowNo, ProcessInfo pi)
|
* @param pi
|
||||||
{
|
* process info
|
||||||
this(WindowNo, pi, "100%");
|
*/
|
||||||
} // ProcessParameterPanel
|
public ProcessParameterPanel(int WindowNo, ProcessInfo pi) {
|
||||||
|
this(WindowNo, pi, "100%");
|
||||||
/**
|
} // ProcessParameterPanel
|
||||||
* Dynamic generated Parameter panel.
|
|
||||||
* @param WindowNo window
|
|
||||||
* @param pi process info
|
|
||||||
*/
|
|
||||||
public ProcessParameterPanel(int WindowNo, ProcessInfo pi, String width)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
m_WindowNo = WindowNo;
|
|
||||||
m_processInfo = pi;
|
|
||||||
this.width = width;
|
|
||||||
//
|
|
||||||
initComponent();
|
|
||||||
} // ProcessParameterPanel
|
|
||||||
|
|
||||||
private void initComponent() {
|
|
||||||
centerPanel = GridFactory.newGridLayout();
|
|
||||||
centerPanel.setInnerWidth(width);
|
|
||||||
this.appendChild(centerPanel);
|
|
||||||
|
|
||||||
//setup columns
|
|
||||||
Columns columns = new Columns();
|
|
||||||
centerPanel.appendChild(columns);
|
|
||||||
Column col = new Column();
|
|
||||||
col.setWidth("30%");
|
|
||||||
columns.appendChild(col);
|
|
||||||
col = new Column();
|
|
||||||
col.setWidth("65%");
|
|
||||||
columns.appendChild(col);
|
|
||||||
col = new Column();
|
|
||||||
col.setWidth("5%");
|
|
||||||
columns.appendChild(col);
|
|
||||||
}
|
|
||||||
|
|
||||||
private int m_WindowNo;
|
|
||||||
private ProcessInfo m_processInfo;
|
|
||||||
/** Logger */
|
|
||||||
private static CLogger log = CLogger.getCLogger(ProcessParameterPanel.class);
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Dynamic generated Parameter panel.
|
||||||
|
*
|
||||||
|
* @param WindowNo
|
||||||
|
* window
|
||||||
|
* @param pi
|
||||||
|
* process info
|
||||||
|
*/
|
||||||
|
public ProcessParameterPanel(int WindowNo, ProcessInfo pi, String width) {
|
||||||
//
|
//
|
||||||
private ArrayList<WEditor> m_wEditors = new ArrayList<WEditor>();
|
m_WindowNo = WindowNo;
|
||||||
private ArrayList<WEditor> m_wEditors2 = new ArrayList<WEditor>(); // for ranges
|
m_processInfo = pi;
|
||||||
private ArrayList<GridField> m_mFields = new ArrayList<GridField>();
|
this.width = width;
|
||||||
private ArrayList<GridField> m_mFields2 = new ArrayList<GridField>();
|
|
||||||
private ArrayList<Label> m_separators = new ArrayList<Label>();
|
|
||||||
//
|
//
|
||||||
private Grid centerPanel = null;
|
initComponent();
|
||||||
|
} // ProcessParameterPanel
|
||||||
|
|
||||||
/**
|
private void initComponent() {
|
||||||
* Dispose
|
centerPanel = GridFactory.newGridLayout();
|
||||||
*/
|
centerPanel.setInnerWidth(width);
|
||||||
public void dispose()
|
this.appendChild(centerPanel);
|
||||||
{
|
|
||||||
m_wEditors.clear();
|
|
||||||
m_wEditors2.clear();
|
|
||||||
m_mFields.clear();
|
|
||||||
m_mFields2.clear();
|
|
||||||
|
|
||||||
} // dispose
|
// setup columns
|
||||||
|
Columns columns = new Columns();
|
||||||
|
centerPanel.appendChild(columns);
|
||||||
|
Column col = new Column();
|
||||||
|
col.setWidth("30%");
|
||||||
|
columns.appendChild(col);
|
||||||
|
col = new Column();
|
||||||
|
col.setWidth("65%");
|
||||||
|
columns.appendChild(col);
|
||||||
|
col = new Column();
|
||||||
|
col.setWidth("5%");
|
||||||
|
columns.appendChild(col);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
private int m_WindowNo;
|
||||||
* Read Fields to display
|
private ProcessInfo m_processInfo;
|
||||||
* @return true if loaded OK
|
/** Logger */
|
||||||
*/
|
private static CLogger log = CLogger
|
||||||
public boolean init()
|
.getCLogger(ProcessParameterPanel.class);
|
||||||
{
|
|
||||||
log.config("");
|
|
||||||
|
|
||||||
// ASP
|
//
|
||||||
MClient client = MClient.get(Env.getCtx());
|
private ArrayList<WEditor> m_wEditors = new ArrayList<WEditor>();
|
||||||
String ASPFilter = "";
|
private ArrayList<WEditor> m_wEditors2 = new ArrayList<WEditor>(); // for
|
||||||
if (client.isUseASP())
|
// ranges
|
||||||
ASPFilter =
|
private ArrayList<GridField> m_mFields = new ArrayList<GridField>();
|
||||||
" AND ( p.AD_Process_Para_ID IN ( "
|
private ArrayList<GridField> m_mFields2 = new ArrayList<GridField>();
|
||||||
|
private ArrayList<Label> m_separators = new ArrayList<Label>();
|
||||||
|
//
|
||||||
|
private Grid centerPanel = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Dispose
|
||||||
|
*/
|
||||||
|
public void dispose() {
|
||||||
|
m_wEditors.clear();
|
||||||
|
m_wEditors2.clear();
|
||||||
|
m_mFields.clear();
|
||||||
|
m_mFields2.clear();
|
||||||
|
|
||||||
|
} // dispose
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Read Fields to display
|
||||||
|
*
|
||||||
|
* @return true if loaded OK
|
||||||
|
*/
|
||||||
|
public boolean init() {
|
||||||
|
log.config("");
|
||||||
|
|
||||||
|
// ASP
|
||||||
|
MClient client = MClient.get(Env.getCtx());
|
||||||
|
String ASPFilter = "";
|
||||||
|
if (client.isUseASP())
|
||||||
|
ASPFilter = " AND ( p.AD_Process_Para_ID IN ( "
|
||||||
// Just ASP subscribed process parameters for client "
|
// Just ASP subscribed process parameters for client "
|
||||||
+ " SELECT pp.AD_Process_Para_ID "
|
+ " SELECT pp.AD_Process_Para_ID "
|
||||||
+ " FROM ASP_Process_Para pp, ASP_Process p, ASP_Level l, ASP_ClientLevel cl "
|
+ " FROM ASP_Process_Para pp, ASP_Process p, ASP_Level l, ASP_ClientLevel cl "
|
||||||
+ " WHERE p.ASP_Level_ID = l.ASP_Level_ID "
|
+ " WHERE p.ASP_Level_ID = l.ASP_Level_ID "
|
||||||
+ " AND cl.AD_Client_ID = " + client.getAD_Client_ID()
|
+ " AND cl.AD_Client_ID = "
|
||||||
|
+ client.getAD_Client_ID()
|
||||||
+ " AND cl.ASP_Level_ID = l.ASP_Level_ID "
|
+ " AND cl.ASP_Level_ID = l.ASP_Level_ID "
|
||||||
+ " AND pp.ASP_Process_ID = p.ASP_Process_ID "
|
+ " AND pp.ASP_Process_ID = p.ASP_Process_ID "
|
||||||
+ " AND pp.IsActive = 'Y' "
|
+ " AND pp.IsActive = 'Y' "
|
||||||
|
@ -164,7 +166,8 @@ implements ValueChangeListener, IProcessParameter
|
||||||
// + show ASP exceptions for client
|
// + show ASP exceptions for client
|
||||||
+ " SELECT AD_Process_Para_ID "
|
+ " SELECT AD_Process_Para_ID "
|
||||||
+ " FROM ASP_ClientException ce "
|
+ " FROM ASP_ClientException ce "
|
||||||
+ " WHERE ce.AD_Client_ID = " + client.getAD_Client_ID()
|
+ " WHERE ce.AD_Client_ID = "
|
||||||
|
+ client.getAD_Client_ID()
|
||||||
+ " AND ce.IsActive = 'Y' "
|
+ " AND ce.IsActive = 'Y' "
|
||||||
+ " AND ce.AD_Process_Para_ID IS NOT NULL "
|
+ " AND ce.AD_Process_Para_ID IS NOT NULL "
|
||||||
+ " AND ce.AD_Tab_ID IS NULL "
|
+ " AND ce.AD_Tab_ID IS NULL "
|
||||||
|
@ -175,16 +178,17 @@ implements ValueChangeListener, IProcessParameter
|
||||||
// minus hide ASP exceptions for client
|
// minus hide ASP exceptions for client
|
||||||
+ " SELECT AD_Process_Para_ID "
|
+ " SELECT AD_Process_Para_ID "
|
||||||
+ " FROM ASP_ClientException ce "
|
+ " FROM ASP_ClientException ce "
|
||||||
+ " WHERE ce.AD_Client_ID = " + client.getAD_Client_ID()
|
+ " WHERE ce.AD_Client_ID = "
|
||||||
|
+ client.getAD_Client_ID()
|
||||||
+ " AND ce.IsActive = 'Y' "
|
+ " AND ce.IsActive = 'Y' "
|
||||||
+ " AND ce.AD_Process_Para_ID IS NOT NULL "
|
+ " AND ce.AD_Process_Para_ID IS NOT NULL "
|
||||||
+ " AND ce.AD_Tab_ID IS NULL "
|
+ " AND ce.AD_Tab_ID IS NULL "
|
||||||
+ " AND ce.AD_Field_ID IS NULL "
|
+ " AND ce.AD_Field_ID IS NULL "
|
||||||
+ " AND ce.ASP_Status = 'H')"; // Hide
|
+ " AND ce.ASP_Status = 'H')"; // Hide
|
||||||
//
|
//
|
||||||
String sql = null;
|
String sql = null;
|
||||||
if (Env.isBaseLanguage(Env.getCtx(), "AD_Process_Para"))
|
if (Env.isBaseLanguage(Env.getCtx(), "AD_Process_Para"))
|
||||||
sql = "SELECT p.Name, p.Description, p.Help, "
|
sql = "SELECT p.Name, p.Description, p.Help, "
|
||||||
+ "p.AD_Reference_ID, p.AD_Process_Para_ID, "
|
+ "p.AD_Reference_ID, p.AD_Process_Para_ID, "
|
||||||
+ "p.FieldLength, p.IsMandatory, p.IsRange, p.ColumnName, "
|
+ "p.FieldLength, p.IsMandatory, p.IsRange, p.ColumnName, "
|
||||||
+ "p.DefaultValue, p.DefaultValue2, p.VFormat, p.ValueMin, p.ValueMax, "
|
+ "p.DefaultValue, p.DefaultValue2, p.VFormat, p.ValueMin, p.ValueMax, "
|
||||||
|
@ -192,11 +196,10 @@ implements ValueChangeListener, IProcessParameter
|
||||||
+ "p.ReadOnlyLogic, p.DisplayLogic "
|
+ "p.ReadOnlyLogic, p.DisplayLogic "
|
||||||
+ "FROM AD_Process_Para p"
|
+ "FROM AD_Process_Para p"
|
||||||
+ " LEFT OUTER JOIN AD_Val_Rule vr ON (p.AD_Val_Rule_ID=vr.AD_Val_Rule_ID) "
|
+ " LEFT OUTER JOIN AD_Val_Rule vr ON (p.AD_Val_Rule_ID=vr.AD_Val_Rule_ID) "
|
||||||
+ "WHERE p.AD_Process_ID=?" // 1
|
+ "WHERE p.AD_Process_ID=?" // 1
|
||||||
+ " AND p.IsActive='Y' "
|
+ " AND p.IsActive='Y' " + ASPFilter + " ORDER BY SeqNo";
|
||||||
+ ASPFilter + " ORDER BY SeqNo";
|
else
|
||||||
else
|
sql = "SELECT t.Name, t.Description, t.Help, "
|
||||||
sql = "SELECT t.Name, t.Description, t.Help, "
|
|
||||||
+ "p.AD_Reference_ID, p.AD_Process_Para_ID, "
|
+ "p.AD_Reference_ID, p.AD_Process_Para_ID, "
|
||||||
+ "p.FieldLength, p.IsMandatory, p.IsRange, p.ColumnName, "
|
+ "p.FieldLength, p.IsMandatory, p.IsRange, p.ColumnName, "
|
||||||
+ "p.DefaultValue, p.DefaultValue2, p.VFormat, p.ValueMin, p.ValueMax, "
|
+ "p.DefaultValue, p.DefaultValue2, p.VFormat, p.ValueMin, p.ValueMax, "
|
||||||
|
@ -205,344 +208,327 @@ implements ValueChangeListener, IProcessParameter
|
||||||
+ "FROM AD_Process_Para p"
|
+ "FROM AD_Process_Para p"
|
||||||
+ " INNER JOIN AD_Process_Para_Trl t ON (p.AD_Process_Para_ID=t.AD_Process_Para_ID)"
|
+ " INNER JOIN AD_Process_Para_Trl t ON (p.AD_Process_Para_ID=t.AD_Process_Para_ID)"
|
||||||
+ " LEFT OUTER JOIN AD_Val_Rule vr ON (p.AD_Val_Rule_ID=vr.AD_Val_Rule_ID) "
|
+ " LEFT OUTER JOIN AD_Val_Rule vr ON (p.AD_Val_Rule_ID=vr.AD_Val_Rule_ID) "
|
||||||
+ "WHERE p.AD_Process_ID=?" // 1
|
+ "WHERE p.AD_Process_ID=?" // 1
|
||||||
+ " AND t.AD_Language='" + Env.getAD_Language(Env.getCtx()) + "'"
|
+ " AND t.AD_Language='" + Env.getAD_Language(Env.getCtx())
|
||||||
+ " AND p.IsActive='Y' "
|
+ "'" + " AND p.IsActive='Y' " + ASPFilter
|
||||||
+ ASPFilter + " ORDER BY SeqNo";
|
+ " ORDER BY SeqNo";
|
||||||
|
|
||||||
// Create Fields
|
// Create Fields
|
||||||
boolean hasFields = false;
|
boolean hasFields = false;
|
||||||
Rows rows = new Rows();
|
Rows rows = new Rows();
|
||||||
try
|
try {
|
||||||
{
|
PreparedStatement pstmt = DB.prepareStatement(sql, null);
|
||||||
PreparedStatement pstmt = DB.prepareStatement(sql, null);
|
pstmt.setInt(1, m_processInfo.getAD_Process_ID());
|
||||||
pstmt.setInt(1, m_processInfo.getAD_Process_ID());
|
ResultSet rs = pstmt.executeQuery();
|
||||||
ResultSet rs = pstmt.executeQuery();
|
while (rs.next()) {
|
||||||
while (rs.next())
|
hasFields = true;
|
||||||
{
|
createField(rs, rows);
|
||||||
hasFields = true;
|
|
||||||
createField (rs, rows);
|
|
||||||
}
|
|
||||||
rs.close();
|
|
||||||
pstmt.close();
|
|
||||||
}
|
}
|
||||||
catch(SQLException e)
|
rs.close();
|
||||||
{
|
pstmt.close();
|
||||||
log.log(Level.SEVERE, sql, e);
|
} catch (SQLException e) {
|
||||||
|
log.log(Level.SEVERE, sql, e);
|
||||||
|
}
|
||||||
|
|
||||||
|
// both vectors the same?
|
||||||
|
if (m_mFields.size() != m_mFields2.size()
|
||||||
|
|| m_mFields.size() != m_wEditors.size()
|
||||||
|
|| m_mFields2.size() != m_wEditors2.size())
|
||||||
|
log.log(Level.SEVERE, "View & Model vector size is different");
|
||||||
|
|
||||||
|
// clean up
|
||||||
|
if (hasFields) {
|
||||||
|
centerPanel.appendChild(rows);
|
||||||
|
dynamicDisplay();
|
||||||
|
} else
|
||||||
|
dispose();
|
||||||
|
return hasFields;
|
||||||
|
} // initDialog
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create Field. - creates Fields and adds it to m_mFields list - creates
|
||||||
|
* Editor and adds it to m_vEditors list Handeles Ranges by adding
|
||||||
|
* additional mField/vEditor.
|
||||||
|
* <p>
|
||||||
|
* mFields are used for default value and mandatory checking; vEditors are
|
||||||
|
* used to retrieve the value (no data binding)
|
||||||
|
*
|
||||||
|
* @param rs
|
||||||
|
* result set
|
||||||
|
*/
|
||||||
|
private void createField(ResultSet rs, Rows rows) {
|
||||||
|
// Create Field
|
||||||
|
GridFieldVO voF = GridFieldVO.createParameter(Env.getCtx(), m_WindowNo,
|
||||||
|
rs);
|
||||||
|
GridField mField = new GridField(voF);
|
||||||
|
m_mFields.add(mField); // add to Fields
|
||||||
|
|
||||||
|
Row row = new Row();
|
||||||
|
|
||||||
|
// The Editor
|
||||||
|
WEditor editor = WebEditorFactory.getEditor(mField, false);
|
||||||
|
editor.addValueChangeListener(this);
|
||||||
|
editor.dynamicDisplay();
|
||||||
|
// MField => VEditor - New Field value to be updated to editor
|
||||||
|
mField.addPropertyChangeListener(editor);
|
||||||
|
// Set Default
|
||||||
|
Object defaultObject = mField.getDefault();
|
||||||
|
mField.setValue(defaultObject, true);
|
||||||
|
// streach component to fill grid cell
|
||||||
|
editor.fillHorizontal();
|
||||||
|
// setup editor context menu
|
||||||
|
WEditorPopupMenu popupMenu = editor.getPopupMenu();
|
||||||
|
if (popupMenu != null) {
|
||||||
|
popupMenu.addMenuListener((ContextMenuListener) editor);
|
||||||
|
this.appendChild(popupMenu);
|
||||||
|
}
|
||||||
|
//
|
||||||
|
m_wEditors.add(editor); // add to Editors
|
||||||
|
|
||||||
|
row.appendChild(editor.getLabel().rightAlign());
|
||||||
|
//
|
||||||
|
if (voF.isRange) {
|
||||||
|
Hbox box = new Hbox();
|
||||||
|
box.appendChild(editor.getComponent());
|
||||||
|
//
|
||||||
|
GridFieldVO voF2 = GridFieldVO.createParameter(voF);
|
||||||
|
GridField mField2 = new GridField(voF2);
|
||||||
|
m_mFields2.add(mField2);
|
||||||
|
// The Editor
|
||||||
|
WEditor editor2 = WebEditorFactory.getEditor(mField2, false);
|
||||||
|
// New Field value to be updated to editor
|
||||||
|
mField2.addPropertyChangeListener(editor2);
|
||||||
|
editor2.dynamicDisplay();
|
||||||
|
editor2.fillHorizontal();
|
||||||
|
// setup editor context menu
|
||||||
|
popupMenu = editor2.getPopupMenu();
|
||||||
|
if (popupMenu != null) {
|
||||||
|
popupMenu.addMenuListener((ContextMenuListener) editor2);
|
||||||
|
this.appendChild(popupMenu);
|
||||||
}
|
}
|
||||||
|
// Set Default
|
||||||
|
Object defaultObject2 = mField2.getDefault();
|
||||||
|
mField2.setValue(defaultObject2, true);
|
||||||
|
//
|
||||||
|
m_wEditors2.add(editor2);
|
||||||
|
Label separator = new Label(" - ");
|
||||||
|
m_separators.add(separator);
|
||||||
|
box.appendChild(separator);
|
||||||
|
box.appendChild(editor2.getComponent());
|
||||||
|
row.appendChild(box);
|
||||||
|
} else {
|
||||||
|
row.appendChild(editor.getComponent());
|
||||||
|
m_mFields2.add(null);
|
||||||
|
m_wEditors2.add(null);
|
||||||
|
m_separators.add(null);
|
||||||
|
}
|
||||||
|
rows.appendChild(row);
|
||||||
|
} // createField
|
||||||
|
|
||||||
// both vectors the same?
|
/**
|
||||||
if (m_mFields.size() != m_mFields2.size()
|
* Save Parameter values
|
||||||
|| m_mFields.size() != m_wEditors.size()
|
*
|
||||||
|| m_mFields2.size() != m_wEditors2.size())
|
* @return true if parameters saved
|
||||||
log.log(Level.SEVERE, "View & Model vector size is different");
|
*/
|
||||||
|
public boolean saveParameters() {
|
||||||
// clean up
|
log.config("");
|
||||||
if (hasFields)
|
|
||||||
{
|
|
||||||
centerPanel.appendChild(rows);
|
|
||||||
dynamicDisplay();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
dispose();
|
|
||||||
return hasFields;
|
|
||||||
} // initDialog
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create Field.
|
* Mandatory fields see - MTable.getMandatory
|
||||||
* - creates Fields and adds it to m_mFields list
|
|
||||||
* - creates Editor and adds it to m_vEditors list
|
|
||||||
* Handeles Ranges by adding additional mField/vEditor.
|
|
||||||
* <p>
|
|
||||||
* mFields are used for default value and mandatory checking;
|
|
||||||
* vEditors are used to retrieve the value (no data binding)
|
|
||||||
*
|
|
||||||
* @param rs result set
|
|
||||||
*/
|
*/
|
||||||
private void createField (ResultSet rs, Rows rows)
|
StringBuffer sb = new StringBuffer();
|
||||||
{
|
int size = m_mFields.size();
|
||||||
// Create Field
|
for (int i = 0; i < size; i++) {
|
||||||
GridFieldVO voF = GridFieldVO.createParameter(Env.getCtx(), m_WindowNo, rs);
|
GridField field = (GridField) m_mFields.get(i);
|
||||||
GridField mField = new GridField (voF);
|
if (field.isMandatory(true)) // check context
|
||||||
m_mFields.add(mField); // add to Fields
|
|
||||||
|
|
||||||
Row row = new Row();
|
|
||||||
|
|
||||||
// The Editor
|
|
||||||
WEditor editor = WebEditorFactory.getEditor(mField, false);
|
|
||||||
editor.addValueChangeListener(this);
|
|
||||||
editor.dynamicDisplay();
|
|
||||||
// MField => VEditor - New Field value to be updated to editor
|
|
||||||
mField.addPropertyChangeListener(editor);
|
|
||||||
// Set Default
|
|
||||||
Object defaultObject = mField.getDefault();
|
|
||||||
mField.setValue (defaultObject, true);
|
|
||||||
//streach component to fill grid cell
|
|
||||||
editor.fillHorizontal();
|
|
||||||
//setup editor context menu
|
|
||||||
WEditorPopupMenu popupMenu = editor.getPopupMenu();
|
|
||||||
if (popupMenu != null)
|
|
||||||
{
|
|
||||||
popupMenu.addMenuListener((ContextMenuListener)editor);
|
|
||||||
this.appendChild(popupMenu);
|
|
||||||
}
|
|
||||||
//
|
|
||||||
m_wEditors.add (editor); // add to Editors
|
|
||||||
|
|
||||||
row.appendChild(editor.getLabel().rightAlign());
|
|
||||||
//
|
|
||||||
if (voF.isRange)
|
|
||||||
{
|
{
|
||||||
Hbox box = new Hbox();
|
WEditor wEditor = (WEditor) m_wEditors.get(i);
|
||||||
box.appendChild(editor.getComponent());
|
Object data = wEditor.getValue();
|
||||||
//
|
if (data == null || data.toString().length() == 0) {
|
||||||
GridFieldVO voF2 = GridFieldVO.createParameter(voF);
|
field.setInserting(true); // set editable (i.e. updateable)
|
||||||
GridField mField2 = new GridField (voF2);
|
// otherwise deadlock
|
||||||
m_mFields2.add (mField2);
|
field.setError(true);
|
||||||
// The Editor
|
if (sb.length() > 0)
|
||||||
WEditor editor2 = WebEditorFactory.getEditor(mField2, false);
|
sb.append(", ");
|
||||||
// New Field value to be updated to editor
|
sb.append(field.getHeader());
|
||||||
mField2.addPropertyChangeListener(editor2);
|
} else
|
||||||
editor2.dynamicDisplay();
|
field.setError(false);
|
||||||
editor2.fillHorizontal();
|
// Check for Range
|
||||||
//setup editor context menu
|
WEditor wEditor2 = (WEditor) m_wEditors2.get(i);
|
||||||
popupMenu = editor2.getPopupMenu();
|
if (wEditor2 != null) {
|
||||||
if (popupMenu != null)
|
Object data2 = wEditor.getValue();
|
||||||
{
|
GridField field2 = (GridField) m_mFields2.get(i);
|
||||||
popupMenu.addMenuListener((ContextMenuListener)editor2);
|
if (data2 == null || data2.toString().length() == 0) {
|
||||||
this.appendChild(popupMenu);
|
field.setInserting(true); // set editable (i.e.
|
||||||
}
|
// updateable) otherwise
|
||||||
// Set Default
|
// deadlock
|
||||||
Object defaultObject2 = mField2.getDefault();
|
field2.setError(true);
|
||||||
mField2.setValue (defaultObject2, true);
|
|
||||||
//
|
|
||||||
m_wEditors2.add (editor2);
|
|
||||||
Label separator = new Label(" - ");
|
|
||||||
m_separators.add(separator);
|
|
||||||
box.appendChild(separator);
|
|
||||||
box.appendChild(editor2.getComponent());
|
|
||||||
row.appendChild(box);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
row.appendChild(editor.getComponent());
|
|
||||||
m_mFields2.add (null);
|
|
||||||
m_wEditors2.add (null);
|
|
||||||
m_separators.add(null);
|
|
||||||
}
|
|
||||||
rows.appendChild(row);
|
|
||||||
} // createField
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Save Parameter values
|
|
||||||
* @return true if parameters saved
|
|
||||||
*/
|
|
||||||
public boolean saveParameters()
|
|
||||||
{
|
|
||||||
log.config("");
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Mandatory fields
|
|
||||||
* see - MTable.getMandatory
|
|
||||||
*/
|
|
||||||
StringBuffer sb = new StringBuffer();
|
|
||||||
int size = m_mFields.size();
|
|
||||||
for (int i = 0; i < size; i++)
|
|
||||||
{
|
|
||||||
GridField field = (GridField)m_mFields.get(i);
|
|
||||||
if (field.isMandatory(true)) // check context
|
|
||||||
{
|
|
||||||
WEditor wEditor = (WEditor)m_wEditors.get(i);
|
|
||||||
Object data = wEditor.getValue();
|
|
||||||
if (data == null || data.toString().length() == 0)
|
|
||||||
{
|
|
||||||
field.setInserting (true); // set editable (i.e. updateable) otherwise deadlock
|
|
||||||
field.setError(true);
|
|
||||||
if (sb.length() > 0)
|
if (sb.length() > 0)
|
||||||
sb.append(", ");
|
sb.append(", ");
|
||||||
sb.append(field.getHeader());
|
sb.append(field.getHeader());
|
||||||
}
|
} else
|
||||||
else
|
field2.setError(false);
|
||||||
field.setError(false);
|
} // range field
|
||||||
// Check for Range
|
} // mandatory
|
||||||
WEditor wEditor2 = (WEditor)m_wEditors2.get(i);
|
} // field loop
|
||||||
if (wEditor2 != null)
|
|
||||||
{
|
|
||||||
Object data2 = wEditor.getValue();
|
|
||||||
GridField field2 = (GridField)m_mFields2.get(i);
|
|
||||||
if (data2 == null || data2.toString().length() == 0)
|
|
||||||
{
|
|
||||||
field.setInserting (true); // set editable (i.e. updateable) otherwise deadlock
|
|
||||||
field2.setError(true);
|
|
||||||
if (sb.length() > 0)
|
|
||||||
sb.append(", ");
|
|
||||||
sb.append(field.getHeader());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
field2.setError(false);
|
|
||||||
} // range field
|
|
||||||
} // mandatory
|
|
||||||
} // field loop
|
|
||||||
|
|
||||||
|
if (sb.length() != 0) {
|
||||||
|
FDialog.error(m_WindowNo, this, "FillMandatory", sb.toString());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (sb.length() != 0)
|
/**********************************************************************
|
||||||
{
|
* Save Now
|
||||||
FDialog.error(m_WindowNo, this, "FillMandatory", sb.toString());
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**********************************************************************
|
|
||||||
* Save Now
|
|
||||||
*/
|
|
||||||
for (int i = 0; i < m_mFields.size(); i++)
|
|
||||||
{
|
|
||||||
// Get Values
|
|
||||||
WEditor editor = (WEditor)m_wEditors.get(i);
|
|
||||||
WEditor editor2 = (WEditor)m_wEditors2.get(i);
|
|
||||||
Object result = editor.getValue();
|
|
||||||
Object result2 = null;
|
|
||||||
if (editor2 != null)
|
|
||||||
result2 = editor2.getValue();
|
|
||||||
|
|
||||||
// Create Parameter
|
|
||||||
MPInstancePara para = new MPInstancePara (Env.getCtx(), m_processInfo.getAD_PInstance_ID(), i);
|
|
||||||
GridField mField = (GridField)m_mFields.get(i);
|
|
||||||
para.setParameterName(mField.getColumnName());
|
|
||||||
|
|
||||||
// Date
|
|
||||||
if (result instanceof Timestamp || result2 instanceof Timestamp)
|
|
||||||
{
|
|
||||||
para.setP_Date((Timestamp)result);
|
|
||||||
if (editor2 != null && result2 != null)
|
|
||||||
para.setP_Date_To((Timestamp)result2);
|
|
||||||
}
|
|
||||||
// Integer
|
|
||||||
else if (result instanceof Integer || result2 instanceof Integer)
|
|
||||||
{
|
|
||||||
if (result != null)
|
|
||||||
{
|
|
||||||
Integer ii = (Integer)result;
|
|
||||||
para.setP_Number(ii.intValue());
|
|
||||||
}
|
|
||||||
if (editor2 != null && result2 != null)
|
|
||||||
{
|
|
||||||
Integer ii = (Integer)result2;
|
|
||||||
para.setP_Number_To(ii.intValue());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// BigDecimal
|
|
||||||
else if (result instanceof BigDecimal || result2 instanceof BigDecimal)
|
|
||||||
{
|
|
||||||
para.setP_Number ((BigDecimal)result);
|
|
||||||
if (editor2 != null && result2 != null)
|
|
||||||
para.setP_Number_To ((BigDecimal)result2);
|
|
||||||
}
|
|
||||||
// Boolean
|
|
||||||
else if (result instanceof Boolean)
|
|
||||||
{
|
|
||||||
Boolean bb = (Boolean)result;
|
|
||||||
String value = bb.booleanValue() ? "Y" : "N";
|
|
||||||
para.setP_String (value);
|
|
||||||
// to does not make sense
|
|
||||||
}
|
|
||||||
// String
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (result != null)
|
|
||||||
para.setP_String (result.toString());
|
|
||||||
if (editor2 != null && result2 != null)
|
|
||||||
para.setP_String_To (result2.toString());
|
|
||||||
}
|
|
||||||
|
|
||||||
// Info
|
|
||||||
para.setInfo (editor.getDisplay());
|
|
||||||
if (editor2 != null)
|
|
||||||
para.setInfo_To (editor2.getDisplay());
|
|
||||||
//
|
|
||||||
para.save();
|
|
||||||
log.fine(para.toString());
|
|
||||||
} // for every parameter
|
|
||||||
|
|
||||||
return true;
|
|
||||||
} // saveParameters
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Editor Listener
|
|
||||||
* @param evt ValueChangeEvent
|
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
for (int i = 0; i < m_mFields.size(); i++) {
|
||||||
|
// Get Values
|
||||||
|
WEditor editor = (WEditor) m_wEditors.get(i);
|
||||||
|
WEditor editor2 = (WEditor) m_wEditors2.get(i);
|
||||||
|
Object result = editor.getValue();
|
||||||
|
Object result2 = null;
|
||||||
|
if (editor2 != null)
|
||||||
|
result2 = editor2.getValue();
|
||||||
|
|
||||||
public void valueChange(ValueChangeEvent evt)
|
// Create Parameter
|
||||||
{
|
MPInstancePara para = new MPInstancePara(Env.getCtx(),
|
||||||
processNewValue(evt.getNewValue(), evt.getPropertyName());
|
m_processInfo.getAD_PInstance_ID(), i);
|
||||||
}
|
GridField mField = (GridField) m_mFields.get(i);
|
||||||
|
para.setParameterName(mField.getColumnName());
|
||||||
|
|
||||||
private void processNewValue(Object value, String name) {
|
// Date
|
||||||
if (value == null)
|
if (result instanceof Timestamp || result2 instanceof Timestamp) {
|
||||||
value = new String("");
|
para.setP_Date((Timestamp) result);
|
||||||
|
if (editor2 != null && result2 != null)
|
||||||
|
para.setP_Date_To((Timestamp) result2);
|
||||||
|
}
|
||||||
|
// Integer
|
||||||
|
else if (result instanceof Integer || result2 instanceof Integer) {
|
||||||
|
if (result != null) {
|
||||||
|
Integer ii = (Integer) result;
|
||||||
|
para.setP_Number(ii.intValue());
|
||||||
|
}
|
||||||
|
if (editor2 != null && result2 != null) {
|
||||||
|
Integer ii = (Integer) result2;
|
||||||
|
para.setP_Number_To(ii.intValue());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// BigDecimal
|
||||||
|
else if (result instanceof BigDecimal
|
||||||
|
|| result2 instanceof BigDecimal) {
|
||||||
|
para.setP_Number((BigDecimal) result);
|
||||||
|
if (editor2 != null && result2 != null)
|
||||||
|
para.setP_Number_To((BigDecimal) result2);
|
||||||
|
}
|
||||||
|
// Boolean
|
||||||
|
else if (result instanceof Boolean) {
|
||||||
|
Boolean bb = (Boolean) result;
|
||||||
|
String value = bb.booleanValue() ? "Y" : "N";
|
||||||
|
para.setP_String(value);
|
||||||
|
// to does not make sense
|
||||||
|
}
|
||||||
|
// String
|
||||||
|
else {
|
||||||
|
if (result != null)
|
||||||
|
para.setP_String(result.toString());
|
||||||
|
if (editor2 != null && result2 != null)
|
||||||
|
para.setP_String_To(result2.toString());
|
||||||
|
}
|
||||||
|
|
||||||
if (value instanceof String)
|
// Info
|
||||||
Env.setContext(Env.getCtx(), m_WindowNo, name, (String) value);
|
para.setInfo(editor.getDisplay());
|
||||||
else if (value instanceof Integer)
|
if (editor2 != null)
|
||||||
Env.setContext(Env.getCtx(), m_WindowNo, name, ((Integer) value)
|
para.setInfo_To(editor2.getDisplay());
|
||||||
.intValue());
|
//
|
||||||
else if (value instanceof Boolean)
|
para.save();
|
||||||
Env.setContext(Env.getCtx(), m_WindowNo, name, ((Boolean) value)
|
log.fine(para.toString());
|
||||||
.booleanValue());
|
} // for every parameter
|
||||||
else if (value instanceof Timestamp)
|
|
||||||
Env.setContext(Env.getCtx(), m_WindowNo, name, (Timestamp) value);
|
|
||||||
else
|
|
||||||
Env.setContext(Env.getCtx(), m_WindowNo, name, value.toString());
|
|
||||||
|
|
||||||
dynamicDisplay();
|
return true;
|
||||||
}
|
} // saveParameters
|
||||||
|
|
||||||
private void dynamicDisplay() {
|
/**
|
||||||
for(int i = 0; i < m_wEditors.size(); i++) {
|
* Editor Listener
|
||||||
WEditor editor = m_wEditors.get(i);
|
*
|
||||||
GridField mField = editor.getGridField();
|
* @param evt
|
||||||
if (mField.isDisplayed(true)) {
|
* ValueChangeEvent
|
||||||
if (!editor.isVisible()) {
|
*/
|
||||||
editor.setVisible(true);
|
|
||||||
if (mField.getVO().isRange) {
|
public void valueChange(ValueChangeEvent evt) {
|
||||||
m_separators.get(i).setVisible(true);
|
processNewValue(evt.getNewValue(), evt.getPropertyName());
|
||||||
m_wEditors2.get(i).setVisible(true);
|
}
|
||||||
}
|
|
||||||
}
|
private void processNewValue(Object value, String name) {
|
||||||
boolean rw = mField.isEditablePara(true); // r/w - check if field is Editable
|
if (value == null)
|
||||||
editor.setReadWrite(rw);
|
value = new String("");
|
||||||
editor.dynamicDisplay();
|
|
||||||
|
if (value instanceof String)
|
||||||
|
Env.setContext(Env.getCtx(), m_WindowNo, name, (String) value);
|
||||||
|
else if (value instanceof Integer)
|
||||||
|
Env.setContext(Env.getCtx(), m_WindowNo, name,
|
||||||
|
((Integer) value).intValue());
|
||||||
|
else if (value instanceof Boolean)
|
||||||
|
Env.setContext(Env.getCtx(), m_WindowNo, name,
|
||||||
|
((Boolean) value).booleanValue());
|
||||||
|
else if (value instanceof Timestamp)
|
||||||
|
Env.setContext(Env.getCtx(), m_WindowNo, name, (Timestamp) value);
|
||||||
|
else
|
||||||
|
Env.setContext(Env.getCtx(), m_WindowNo, name, value.toString());
|
||||||
|
|
||||||
|
dynamicDisplay();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void dynamicDisplay() {
|
||||||
|
for (int i = 0; i < m_wEditors.size(); i++) {
|
||||||
|
WEditor editor = m_wEditors.get(i);
|
||||||
|
GridField mField = editor.getGridField();
|
||||||
|
if (mField.isDisplayed(true)) {
|
||||||
|
if (!editor.isVisible()) {
|
||||||
|
editor.setVisible(true);
|
||||||
if (mField.getVO().isRange) {
|
if (mField.getVO().isRange) {
|
||||||
m_wEditors2.get(i).setReadWrite(rw);
|
m_separators.get(i).setVisible(true);
|
||||||
m_wEditors2.get(i).dynamicDisplay();
|
m_wEditors2.get(i).setVisible(true);
|
||||||
}
|
|
||||||
} else if (editor.isVisible()) {
|
|
||||||
editor.setVisible(false);
|
|
||||||
if (mField.getVO().isRange) {
|
|
||||||
m_separators.get(i).setVisible(false);
|
|
||||||
m_wEditors2.get(i).setVisible(false);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
boolean rw = mField.isEditablePara(true); // r/w - check if
|
||||||
|
// field is Editable
|
||||||
|
editor.setReadWrite(rw);
|
||||||
|
editor.dynamicDisplay();
|
||||||
|
if (mField.getVO().isRange) {
|
||||||
|
m_wEditors2.get(i).setReadWrite(rw);
|
||||||
|
m_wEditors2.get(i).dynamicDisplay();
|
||||||
|
}
|
||||||
|
} else if (editor.isVisible()) {
|
||||||
|
editor.setVisible(false);
|
||||||
|
if (mField.getVO().isRange) {
|
||||||
|
m_separators.get(i).setVisible(false);
|
||||||
|
m_wEditors2.get(i).setVisible(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Restore window context.
|
* Restore window context.
|
||||||
* @author teo_sarca [ 1699826 ]
|
*
|
||||||
* @see org.compiere.model.GridField#restoreValue()
|
* @author teo_sarca [ 1699826 ]
|
||||||
*/
|
* @see org.compiere.model.GridField#restoreValue()
|
||||||
protected void restoreContext() {
|
*/
|
||||||
for (GridField f : m_mFields) {
|
protected void restoreContext() {
|
||||||
if (f != null)
|
for (GridField f : m_mFields) {
|
||||||
f.restoreValue();
|
if (f != null)
|
||||||
}
|
f.restoreValue();
|
||||||
for (GridField f : m_mFields2) {
|
|
||||||
if (f != null)
|
|
||||||
f.restoreValue();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} // ProcessParameterPanel
|
for (GridField f : m_mFields2) {
|
||||||
|
if (f != null)
|
||||||
|
f.restoreValue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param processInfo
|
||||||
|
*/
|
||||||
|
public void setProcessInfo(ProcessInfo processInfo) {
|
||||||
|
m_processInfo = processInfo;
|
||||||
|
}
|
||||||
|
} // ProcessParameterPanel
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue