patch [ 1664158 ] Start Callout From Button
https://sourceforge.net/tracker/index.php?func=detail&aid=1664158&group_id=176962&atid=879334
This commit is contained in:
parent
9faf8748bc
commit
e82eded16c
|
@ -20,6 +20,7 @@ import java.awt.*;
|
||||||
import java.awt.event.*;
|
import java.awt.event.*;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.logging.*;
|
import java.util.logging.*;
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import javax.swing.event.*;
|
import javax.swing.event.*;
|
||||||
import org.compiere.apps.search.*;
|
import org.compiere.apps.search.*;
|
||||||
|
@ -1247,6 +1248,7 @@ public final class APanel extends CPanel
|
||||||
// Command Buttons
|
// Command Buttons
|
||||||
if (e.getSource() instanceof VButton)
|
if (e.getSource() instanceof VButton)
|
||||||
{
|
{
|
||||||
|
setStatusLine(processButtonCallout((VButton)e.getSource()), true);
|
||||||
actionButton((VButton)e.getSource());
|
actionButton((VButton)e.getSource());
|
||||||
setBusy(false, true);
|
setBusy(false, true);
|
||||||
return;
|
return;
|
||||||
|
@ -1365,6 +1367,79 @@ public final class APanel extends CPanel
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
* Process Callout(s).
|
||||||
|
* <p>
|
||||||
|
* The Callout is in the string of
|
||||||
|
* "class.method;class.method;"
|
||||||
|
* If there is no class name, i.e. only a method name, the class is regarded
|
||||||
|
* as CalloutSystem.
|
||||||
|
* The class needs to comply with the Interface Callout.
|
||||||
|
*
|
||||||
|
* @param field field
|
||||||
|
* @return error message or ""
|
||||||
|
* @see org.compiere.model.Callout
|
||||||
|
*/
|
||||||
|
private String processButtonCallout (VButton button)
|
||||||
|
{
|
||||||
|
GridField field = m_curTab.getField(button.getColumnName());
|
||||||
|
String callout = field.getCallout();
|
||||||
|
if (callout.length() == 0)
|
||||||
|
return "";
|
||||||
|
//
|
||||||
|
if (m_curTab.isProcessed()) // only active records
|
||||||
|
return ""; // "DocProcessed";
|
||||||
|
|
||||||
|
Object value = field.getValue();
|
||||||
|
Object oldValue = field.getOldValue();
|
||||||
|
log.fine(field.getColumnName() + "=" + value
|
||||||
|
+ " (" + callout + ") - old=" + oldValue);
|
||||||
|
|
||||||
|
StringTokenizer st = new StringTokenizer(callout, ";,", false);
|
||||||
|
while (st.hasMoreTokens()) // for each callout
|
||||||
|
{
|
||||||
|
String cmd = st.nextToken().trim();
|
||||||
|
Callout call = null;
|
||||||
|
String method = null;
|
||||||
|
int methodStart = cmd.lastIndexOf(".");
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (methodStart != -1) // no class
|
||||||
|
{
|
||||||
|
Class cClass = Class.forName(cmd.substring(0,methodStart));
|
||||||
|
call = (Callout)cClass.newInstance();
|
||||||
|
method = cmd.substring(methodStart+1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
log.log(Level.SEVERE, "class", e);
|
||||||
|
return "Callout Invalid: " + cmd + " (" + e.toString() + ")";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (call == null || method == null || method.length() == 0)
|
||||||
|
return "Callout Invalid: " + method;
|
||||||
|
|
||||||
|
String retValue = "";
|
||||||
|
try
|
||||||
|
{
|
||||||
|
retValue = call.start(m_ctx, method, m_curWindowNo, m_curTab, field, value, oldValue);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
log.log(Level.SEVERE, "start", e);
|
||||||
|
retValue = "Callout Invalid: " + e.toString();
|
||||||
|
return retValue;
|
||||||
|
}
|
||||||
|
if (!retValue.equals("")) // interrupt on first error
|
||||||
|
{
|
||||||
|
log.severe (retValue);
|
||||||
|
return retValue;
|
||||||
|
}
|
||||||
|
} // for each callout
|
||||||
|
return "";
|
||||||
|
} // processButtonCallout
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create New Record
|
* Create New Record
|
||||||
* @param copy true if current record is to be copied
|
* @param copy true if current record is to be copied
|
||||||
|
|
Loading…
Reference in New Issue