IDEMPIERE-3630 Process Dialog should wait for Info Popup.
This commit is contained in:
parent
4d7f35616e
commit
2f71950292
|
@ -94,7 +94,9 @@ public class ProcessDialog extends AbstractProcessDialog implements EventListene
|
|||
*/
|
||||
private static final long serialVersionUID = -6728929130788829223L;
|
||||
|
||||
public static final String ON_INITIAL_FOCUS_EVENT = "onInitialFocus";
|
||||
public static final String ON_INITIAL_FOCUS_EVENT = "onInitialFocus";
|
||||
|
||||
private static final String ON_OK_ECHO = "onOkEcho";
|
||||
|
||||
/** Logger */
|
||||
private static CLogger log = CLogger.getCLogger(ProcessDialog.class);
|
||||
|
@ -138,6 +140,7 @@ public class ProcessDialog extends AbstractProcessDialog implements EventListene
|
|||
querySaved();
|
||||
addEventListener(WindowContainer.ON_WINDOW_CONTAINER_SELECTION_CHANGED_EVENT, this);
|
||||
addEventListener(ON_INITIAL_FOCUS_EVENT, this);
|
||||
addEventListener(ON_OK_ECHO, this);
|
||||
}
|
||||
catch(Exception ex)
|
||||
{
|
||||
|
@ -188,10 +191,9 @@ public class ProcessDialog extends AbstractProcessDialog implements EventListene
|
|||
} else if (bOK.equals(component)) {
|
||||
super.onEvent(event);
|
||||
|
||||
if (isParameterPage)
|
||||
startProcess();
|
||||
else
|
||||
restart();
|
||||
onOk();
|
||||
} else if (event.getName().equals(ON_OK_ECHO)) {
|
||||
onOk();
|
||||
}else if (bCancel.equals(component)){
|
||||
super.onEvent(event);
|
||||
cancelProcess();
|
||||
|
@ -228,6 +230,20 @@ public class ProcessDialog extends AbstractProcessDialog implements EventListene
|
|||
}
|
||||
}
|
||||
|
||||
private void onOk() {
|
||||
if (isParameterPage)
|
||||
{
|
||||
if (getParameterPanel().isWaitingForDialog())
|
||||
{
|
||||
Events.echoEvent(ON_OK_ECHO, this, null);
|
||||
return;
|
||||
}
|
||||
startProcess();
|
||||
}
|
||||
else
|
||||
restart();
|
||||
}
|
||||
|
||||
private void onCtrlKeyEvent(KeyEvent keyEvent) {
|
||||
if (keyEvent.isAltKey() && keyEvent.getKeyCode() == 0x58) { // Alt-X
|
||||
if (m_WindowNo > 0) {
|
||||
|
|
|
@ -30,6 +30,7 @@ import org.zkoss.zk.ui.Component;
|
|||
import org.zkoss.zk.ui.HtmlBasedComponent;
|
||||
import org.zkoss.zk.ui.event.Event;
|
||||
import org.zkoss.zk.ui.event.EventListener;
|
||||
import org.zkoss.zk.ui.event.Events;
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -48,6 +49,9 @@ public class ProcessModalDialog extends AbstractProcessDialog implements EventLi
|
|||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -6227339628038418701L;
|
||||
|
||||
private static final String ON_OK_ECHO = "onOkEcho";
|
||||
|
||||
/** Logger */
|
||||
private static CLogger log = CLogger.getCLogger(ProcessModalDialog.class);
|
||||
//
|
||||
|
@ -112,6 +116,7 @@ public class ProcessModalDialog extends AbstractProcessDialog implements EventLi
|
|||
{
|
||||
log.log(Level.SEVERE, "", ex);
|
||||
}
|
||||
addEventListener(ON_OK_ECHO, this);
|
||||
}
|
||||
|
||||
public ProcessModalDialog (int WindowNo, int AD_Process_ID, int tableId, int recordId, boolean autoStart)
|
||||
|
@ -199,13 +204,24 @@ public class ProcessModalDialog extends AbstractProcessDialog implements EventLi
|
|||
Component component = event.getTarget();
|
||||
if (component.equals(bOK)) {
|
||||
super.onEvent(event);
|
||||
startProcess();
|
||||
onOk();
|
||||
} else if (event.getName().equals(ON_OK_ECHO)) {
|
||||
onOk();
|
||||
} else if (component.equals(bCancel)) {
|
||||
super.onEvent(event);
|
||||
cancelProcess();
|
||||
}else {
|
||||
super.onEvent(event);
|
||||
}
|
||||
}
|
||||
|
||||
private void onOk() {
|
||||
if (getParameterPanel().isWaitingForDialog())
|
||||
{
|
||||
Events.echoEvent(ON_OK_ECHO, this, null);
|
||||
return;
|
||||
}
|
||||
startProcess();
|
||||
}
|
||||
|
||||
protected void onClientInfo() {
|
||||
|
|
|
@ -37,6 +37,7 @@ import org.adempiere.webui.component.Urlbox;
|
|||
import org.adempiere.webui.editor.IZoomableEditor;
|
||||
import org.adempiere.webui.editor.WEditor;
|
||||
import org.adempiere.webui.editor.WEditorPopupMenu;
|
||||
import org.adempiere.webui.editor.WSearchEditor;
|
||||
import org.adempiere.webui.editor.WebEditorFactory;
|
||||
import org.adempiere.webui.event.ContextMenuListener;
|
||||
import org.adempiere.webui.event.ValueChangeEvent;
|
||||
|
@ -932,6 +933,26 @@ public class ProcessParameterPanel extends Panel implements
|
|||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return true if editor is showing dialog awaiting user action
|
||||
*/
|
||||
public boolean isWaitingForDialog() {
|
||||
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);
|
||||
if (editor != null && editor instanceof WSearchEditor) {
|
||||
if (((WSearchEditor)editor).isShowingDialog())
|
||||
return true;
|
||||
} else if (editor2 != null && editor2 instanceof WSearchEditor) {
|
||||
if (((WSearchEditor)editor2).isShowingDialog())
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
static class ZoomListener implements EventListener<Event> {
|
||||
|
||||
private IZoomableEditor searchEditor;
|
||||
|
|
Loading…
Reference in New Issue