From d0f745b3456d47a32b41d92c41744b7ff1d21a21 Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Mon, 20 Aug 2012 12:40:08 +0800 Subject: [PATCH] IDEMPIERE-144 Performance: Remove the use of zk event thread. Fixed more modal window that have been overlook due to the use of "modal" string instead of Window.MODE_MODAL constant. --- .../org/adempiere/webui/acct/WAcctViewer.java | 1 - .../webui/apps/form/WCreateFromWindow.java | 1 - .../webui/editor/WAssignmentEditor.java | 44 +++++--- .../webui/editor/WLocationEditor.java | 54 +++++---- .../webui/editor/WLocatorEditor.java | 28 +++-- .../adempiere/webui/editor/WSearchEditor.java | 37 ++++--- .../org/adempiere/webui/grid/WBPartner.java | 1 - .../webui/panel/AbstractADWindowPanel.java | 13 ++- .../org/adempiere/webui/panel/WSchedule.java | 18 ++- .../adempiere/webui/window/InfoSchedule.java | 43 ++++++-- .../webui/window/WAssignmentDialog.java | 26 +++-- .../webui/window/WFieldRecordInfo.java | 2 +- .../webui/window/WLocationDialog.java | 2 +- .../webui/window/WLocatorDialog.java | 103 +++++++++++++----- .../webui/window/WRecordAccessDialog.java | 5 +- 15 files changed, 249 insertions(+), 129 deletions(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/acct/WAcctViewer.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/acct/WAcctViewer.java index 24da50a757..a547da3cc2 100755 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/acct/WAcctViewer.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/acct/WAcctViewer.java @@ -614,7 +614,6 @@ public class WAcctViewer extends Window implements EventListener south.setHeight("26px"); southPanel.setParent(south); - this.setAttribute("mode", "modal"); this.setTitle(TITLE); this.setBorder("normal"); this.setClosable(true); diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WCreateFromWindow.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WCreateFromWindow.java index 50418f8a00..dac0aef2c4 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WCreateFromWindow.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WCreateFromWindow.java @@ -58,7 +58,6 @@ public class WCreateFromWindow extends Window implements EventListener, W public WCreateFromWindow(CreateFrom createFrom, int windowNo) { super(); - setAttribute("mode", "modal"); this.createFrom = createFrom; this.windowNo = windowNo; diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WAssignmentEditor.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WAssignmentEditor.java index 08ff9760f3..0af7f0e53d 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WAssignmentEditor.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WAssignmentEditor.java @@ -6,10 +6,12 @@ import java.text.DateFormat; import java.text.NumberFormat; import java.util.logging.Level; +import org.adempiere.util.Callback; import org.adempiere.webui.apps.AEnv; import org.adempiere.webui.component.EditorBox; import org.adempiere.webui.event.ContextMenuEvent; import org.adempiere.webui.event.ContextMenuListener; +import org.adempiere.webui.event.DialogEvents; import org.adempiere.webui.event.ValueChangeEvent; import org.adempiere.webui.window.InfoSchedule; import org.adempiere.webui.window.WAssignmentDialog; @@ -21,6 +23,7 @@ import org.compiere.util.DB; import org.compiere.util.DisplayType; import org.compiere.util.Env; import org.zkoss.zk.ui.event.Event; +import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.Events; public class WAssignmentEditor extends WEditor implements ContextMenuListener { @@ -136,7 +139,7 @@ public class WAssignmentEditor extends WEditor implements ContextMenuListener { // if (Events.ON_CLICK.equalsIgnoreCase(event.getName())) { - Integer oldValue = (Integer)getValue(); + final Integer oldValue = (Integer)getValue(); int S_ResourceAssignment_ID = oldValue == null ? 0 : oldValue.intValue(); MResourceAssignment ma = new MResourceAssignment(Env.getCtx(), S_ResourceAssignment_ID, null); if (S_ResourceAssignment_ID == 0) { @@ -151,23 +154,26 @@ public class WAssignmentEditor extends WEditor implements ContextMenuListener { // Start VAssignment Dialog if (S_ResourceAssignment_ID != 0) { - WAssignmentDialog vad = new WAssignmentDialog (ma, true, true); - ma = vad.getMResourceAssignment(); + final WAssignmentDialog vad = new WAssignmentDialog (ma, true, true); + vad.addEventListener(DialogEvents.ON_WINDOW_CLOSE, new EventListener() { + @Override + public void onEvent(Event event) throws Exception { + MResourceAssignment ma = vad.getMResourceAssignment(); + processNewValue(oldValue, ma); + } + }); + AEnv.showWindow(vad); } // Start InfoSchedule directly else { - InfoSchedule is = new InfoSchedule(ma, true); - ma = is.getMResourceAssignment(); - } - - // Set Value - if (ma != null && ma.getS_ResourceAssignment_ID() != 0) - { - setValue(new Integer(ma.getS_ResourceAssignment_ID())); - ValueChangeEvent vce = new ValueChangeEvent(this, gridField.getColumnName(), oldValue, getValue()); - fireValueChange(vce); - } + final InfoSchedule is = new InfoSchedule(ma, true, new Callback() { + @Override + public void onCallback(MResourceAssignment ma) { + processNewValue(oldValue, ma); + } + }); + } } } @@ -187,4 +193,14 @@ public class WAssignmentEditor extends WEditor implements ContextMenuListener { AEnv.zoom(gridField.getGridTab().getAD_Table_ID(), (Integer)getValue()); } + private void processNewValue(final Integer oldValue, MResourceAssignment ma) { + // Set Value + if (ma != null && ma.getS_ResourceAssignment_ID() != 0) + { + setValue(new Integer(ma.getS_ResourceAssignment_ID())); + ValueChangeEvent vce = new ValueChangeEvent(WAssignmentEditor.this, gridField.getColumnName(), oldValue, getValue()); + fireValueChange(vce); + } + } + } diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WLocationEditor.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WLocationEditor.java index b20aea7fc5..c4b603c802 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WLocationEditor.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WLocationEditor.java @@ -21,10 +21,10 @@ import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import org.adempiere.webui.ValuePreference; -import org.adempiere.webui.apps.AEnv; import org.adempiere.webui.component.Locationbox; import org.adempiere.webui.event.ContextMenuEvent; import org.adempiere.webui.event.ContextMenuListener; +import org.adempiere.webui.event.DialogEvents; import org.adempiere.webui.event.ValueChangeEvent; import org.adempiere.webui.window.WFieldRecordInfo; import org.adempiere.webui.window.WLocationDialog; @@ -163,28 +163,36 @@ public class WLocationEditor extends WEditor implements EventListener, Pr if ("onClick".equals(event.getName())) { log.config( "actionPerformed - " + m_value); - WLocationDialog ld = new WLocationDialog(Msg.getMsg(Env.getCtx(), "Location"), m_value); - ld.setVisible(true); - AEnv.showWindow(ld); - m_value = ld.getValue(); - // - if (!ld.isChanged()) - return; - - // Data Binding - int C_Location_ID = 0; - if (m_value != null) - C_Location_ID = m_value.getC_Location_ID(); - Integer ii = new Integer(C_Location_ID); - // force Change - user does not realize that embedded object is already saved. - ValueChangeEvent valuechange = new ValueChangeEvent(this,getColumnName(),null,null); - fireValueChange(valuechange); // resets m_mLocation - if (C_Location_ID != 0) - { - ValueChangeEvent vc = new ValueChangeEvent(this,getColumnName(),null,ii); - fireValueChange(vc); - } - setValue(ii); + final WLocationDialog ld = new WLocationDialog(Msg.getMsg(Env.getCtx(), "Location"), m_value); + ld.addEventListener(DialogEvents.ON_WINDOW_CLOSE, new EventListener() { + + @Override + public void onEvent(Event event) throws Exception { + m_value = ld.getValue(); + // + if (!ld.isChanged()) + return; + + // Data Binding + int C_Location_ID = 0; + if (m_value != null) + C_Location_ID = m_value.getC_Location_ID(); + Integer ii = new Integer(C_Location_ID); + // force Change - user does not realize that embedded object is already saved. + ValueChangeEvent valuechange = new ValueChangeEvent(WLocationEditor.this,getColumnName(),null,null); + fireValueChange(valuechange); // resets m_mLocation + if (C_Location_ID != 0) + { + ValueChangeEvent vc = new ValueChangeEvent(WLocationEditor.this,getColumnName(),null,ii); + fireValueChange(vc); + } + setValue(ii); + } + }); + getComponent().appendChild(ld); + ld.setPosition("parent"); + ld.setTitle(null); + ld.doPopup(); } } diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WLocatorEditor.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WLocatorEditor.java index aa2f5de470..7e2803d6d4 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WLocatorEditor.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WLocatorEditor.java @@ -29,6 +29,7 @@ import org.adempiere.webui.apps.AEnv; import org.adempiere.webui.component.EditorBox; import org.adempiere.webui.event.ContextMenuEvent; import org.adempiere.webui.event.ContextMenuListener; +import org.adempiere.webui.event.DialogEvents; import org.adempiere.webui.event.ValueChangeEvent; import org.adempiere.webui.window.WFieldRecordInfo; import org.adempiere.webui.window.WLocatorDialog; @@ -233,20 +234,25 @@ public class WLocatorEditor extends WEditor implements EventListener, Pro m_mLocator.setOnly_Warehouse_ID(only_Warehouse_ID); m_mLocator.setOnly_Product_ID(getOnly_Product_ID()); - WLocatorDialog ld = new WLocatorDialog(Msg.translate(Env.getCtx(), getColumnName()), + final WLocatorDialog ld = new WLocatorDialog(Msg.translate(Env.getCtx(), getColumnName()), m_mLocator, M_Locator_ID, isMandatory(), only_Warehouse_ID, this.m_WindowNo); + ld.addEventListener(DialogEvents.ON_WINDOW_CLOSE, new EventListener() { + @Override + public void onEvent(Event event) throws Exception { + m_mLocator.setOnly_Warehouse_ID(0); + // redisplay + + if (!ld.isChanged()) + return; + setValue (ld.getValue(), true); + } + }); // display - ld.setVisible(true); - AEnv.showWindow(ld); - - m_mLocator.setOnly_Warehouse_ID(0); - - // redisplay - - if (!ld.isChanged()) - return; - setValue (ld.getValue(), true); + getComponent().appendChild(ld); + ld.setPosition("parent"); + ld.setTitle(null); + ld.doPopup(); } } diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WSearchEditor.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WSearchEditor.java index 736c6e6dec..bea84bee7a 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WSearchEditor.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WSearchEditor.java @@ -433,7 +433,7 @@ public class WSearchEditor extends WEditor implements ContextMenuListener, Value private void actionBPartner (boolean newRecord) { - WBPartner vbp = new WBPartner (lookup.getWindowNo()); + final WBPartner vbp = new WBPartner (lookup.getWindowNo()); int BPartner_ID = 0; // if update, get current value @@ -447,23 +447,28 @@ public class WSearchEditor extends WEditor implements ContextMenuListener, Value vbp.loadBPartner (BPartner_ID); + final int finalBPartner_ID = BPartner_ID; + vbp.addEventListener(DialogEvents.ON_WINDOW_CLOSE, new EventListener() { + @Override + public void onEvent(Event event) throws Exception { + // get result + int result = vbp.getC_BPartner_ID(); + + if (result == 0 // 0 = not saved + && result == finalBPartner_ID) // the same + return; + + // Maybe new BPartner - put in cache + lookup.getDirect(new Integer(result), false, true); + setValue(new Integer(result)); + actionCombo (new Integer(result)); // data binding + + //setValue(getValue()); + } + }); vbp.setVisible(true); - AEnv.showWindow(vbp); - - // get result - int result = vbp.getC_BPartner_ID(); - - if (result == 0 // 0 = not saved - && result == BPartner_ID) // the same - return; - - // Maybe new BPartner - put in cache - lookup.getDirect(new Integer(result), false, true); - setValue(new Integer(result)); - actionCombo (new Integer(result)); // data binding - - //setValue(getValue()); + AEnv.showWindow(vbp); } // actionBPartner private void actionButton(String queryValue) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/grid/WBPartner.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/grid/WBPartner.java index 58beda32d9..9bcd13fc7f 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/grid/WBPartner.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/grid/WBPartner.java @@ -141,7 +141,6 @@ public class WBPartner extends Window implements EventListener, ValueChangeListe this.setBorder("normal"); this.setClosable(true); this.setTitle("Business Partner"); - this.setAttribute("mode", "modal"); this.appendChild(centerPanel); this.appendChild(confirmPanel); diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/AbstractADWindowPanel.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/AbstractADWindowPanel.java index f7bf4af335..cab21f0d26 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/AbstractADWindowPanel.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/AbstractADWindowPanel.java @@ -883,9 +883,16 @@ public abstract class AbstractADWindowPanel extends AbstractUIPart implements To { public void onEvent(Event event) throws Exception { - new WRecordAccessDialog(null, curTab.getAD_Table_ID(), curTab.getRecord_ID()); + WRecordAccessDialog recordAccessDialog = new WRecordAccessDialog(null, curTab.getAD_Table_ID(), curTab.getRecord_ID()); + recordAccessDialog.addEventListener(DialogEvents.ON_WINDOW_CLOSE, new EventListener() { - toolbar.lock(curTab.isLocked()); + @Override + public void onEvent(Event event) throws Exception { + toolbar.lock(curTab.isLocked()); + } + }); + + AEnv.showWindow(recordAccessDialog); } }); @@ -1753,7 +1760,7 @@ public abstract class AbstractADWindowPanel extends AbstractUIPart implements To if (callback != null) callback.onCallback(false); return; - } else if (!onSaveEvent && !navigationEvent) //need manual refresh + } else if (!onSaveEvent) //need manual refresh { curTab.setCurrentRow(curTab.getCurrentRow()); } diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/WSchedule.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/WSchedule.java index 4cdf1b8040..2fa4f93843 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/WSchedule.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/WSchedule.java @@ -21,8 +21,10 @@ import java.util.Date; import java.util.TimeZone; import java.util.logging.Level; +import org.adempiere.webui.apps.AEnv; import org.adempiere.webui.component.Panel; import org.adempiere.webui.component.ToolBarButton; +import org.adempiere.webui.event.DialogEvents; import org.adempiere.webui.window.InfoSchedule; import org.adempiere.webui.window.WAssignmentDialog; import org.compiere.model.MResourceAssignment; @@ -182,11 +184,17 @@ public class WSchedule extends Panel implements EventListener MouseEvent me = (MouseEvent) event; if (me.getX() > 0) { MResourceAssignment assignment = new MResourceAssignment(Env.getCtx(), me.getX(), null); - WAssignmentDialog wad = new WAssignmentDialog(assignment, false, infoSchedule.isCreateNew()); - if (!wad.isCancelled()) { - _assignmentDialogResult = wad.getMResourceAssignment(); - Events.echoEvent("onAssignmentCallback", this, null); - } + final WAssignmentDialog wad = new WAssignmentDialog(assignment, false, infoSchedule.isCreateNew()); + wad.addEventListener(DialogEvents.ON_WINDOW_CLOSE, new EventListener() { + @Override + public void onEvent(Event event) throws Exception { + if (!wad.isCancelled()) { + _assignmentDialogResult = wad.getMResourceAssignment(); + Events.echoEvent("onAssignmentCallback", WSchedule.this, null); + } + } + }); + AEnv.showWindow(wad); } } else if (event instanceof BandScrollEvent){ BandScrollEvent e = (BandScrollEvent) event; diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/InfoSchedule.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/InfoSchedule.java index 833efbbb19..a80b9e4baa 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/InfoSchedule.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/InfoSchedule.java @@ -26,6 +26,7 @@ import java.util.Date; import java.util.GregorianCalendar; import java.util.logging.Level; +import org.adempiere.util.Callback; import org.adempiere.webui.apps.AEnv; import org.adempiere.webui.component.Button; import org.adempiere.webui.component.ConfirmPanel; @@ -38,6 +39,7 @@ import org.adempiere.webui.component.Listbox; import org.adempiere.webui.component.Row; import org.adempiere.webui.component.Rows; import org.adempiere.webui.component.Window; +import org.adempiere.webui.event.DialogEvents; import org.adempiere.webui.panel.StatusBarPanel; import org.adempiere.webui.panel.WSchedule; import org.compiere.model.MAssignmentSlot; @@ -74,9 +76,11 @@ import org.zkoss.zul.Vbox; public class InfoSchedule extends Window implements EventListener { /** - * + * @param mAssignment optional assignment + * @param createNew if true, allows to create new assignments */ private static final long serialVersionUID = -5948901371276429661L; + private Callback m_callback; /** * Constructor @@ -84,13 +88,24 @@ public class InfoSchedule extends Window implements EventListener * @param createNew if true, allows to create new assignments */ public InfoSchedule (MResourceAssignment mAssignment, boolean createNew) + { + this(mAssignment, createNew, (Callback)null); + } + + /** + * Constructor + * @param mAssignment optional assignment + * @param createNew if true, allows to create new assignments + * @param listener + */ + public InfoSchedule (MResourceAssignment mAssignment, boolean createNew, Callback callback) { super(); setTitle(Msg.getMsg(Env.getCtx(), "InfoSchedule")); if (createNew) - setAttribute("mode", "modal"); + setAttribute(Window.MODE_KEY, Window.MODE_HIGHLIGHTED); else - setAttribute("mode", "overlapped"); + setAttribute(Window.MODE_KEY, Window.MODE_OVERLAPPED); this.setWidth("600px"); // this.setHeight("600px"); this.setClosable(true); @@ -106,6 +121,15 @@ public class InfoSchedule extends Window implements EventListener if (m_dateFrom == null) m_dateFrom = new Timestamp(System.currentTimeMillis()); m_createNew = createNew; + m_callback = callback; + if (callback != null) { + this.addEventListener(DialogEvents.ON_WINDOW_CLOSE, new EventListener() { + @Override + public void onEvent(Event event) throws Exception { + m_callback.onCallback(getMResourceAssignment()); + } + }); + } try { init(); @@ -114,8 +138,7 @@ public class InfoSchedule extends Window implements EventListener catch(Exception ex) { log.log(Level.SEVERE, "InfoSchedule", ex); - } - AEnv.showWindow(this); + } } // InfoSchedule /** @@ -539,8 +562,14 @@ public class InfoSchedule extends Window implements EventListener ma.setAssignDateFrom(TimeUtil.getDayTime(start, slot.getStartTime())); ma.setQty(new BigDecimal(1)); - WAssignmentDialog vad = new WAssignmentDialog (ma, false, m_createNew); - mAssignmentCallback(vad.getMResourceAssignment()); + final WAssignmentDialog vad = new WAssignmentDialog (ma, false, m_createNew); + vad.addEventListener(DialogEvents.ON_WINDOW_CLOSE, new EventListener() { + @Override + public void onEvent(Event event) throws Exception { + mAssignmentCallback(vad.getMResourceAssignment()); + } + }); + AEnv.showWindow(vad); } else { FDialog.error(0, this, "No available time slot for the selected day."); } diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WAssignmentDialog.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WAssignmentDialog.java index 3931837dfb..fc4b8e3af6 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WAssignmentDialog.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WAssignmentDialog.java @@ -28,6 +28,7 @@ import java.util.GregorianCalendar; import java.util.HashMap; import java.util.logging.Level; +import org.adempiere.util.Callback; import org.adempiere.webui.LayoutUtils; import org.adempiere.webui.apps.AEnv; import org.adempiere.webui.component.Button; @@ -97,9 +98,8 @@ public class WAssignmentDialog extends Window implements EventListener { super (); this.setTitle(Msg.getMsg(Env.getCtx(), "VAssignmentDialog")); - this.setAttribute("mode", "modal"); this.setBorder("normal"); - + this.setAttribute(Window.MODE_KEY, Window.MODE_HIGHLIGHTED); log.config(mAssignment.toString()); m_mAssignment = mAssignment; try @@ -114,8 +114,7 @@ public class WAssignmentDialog extends Window implements EventListener log.log(Level.SEVERE, "", e); } setDisplay(); // from mAssignment - // - AEnv.showWindow(this); + // } // VAssignmentDialog /** Assignment */ @@ -378,14 +377,17 @@ public class WAssignmentDialog extends Window implements EventListener // Zoom - InfoResource else if (e.getTarget().getId().equals("Zoom")) { - InfoSchedule is = new InfoSchedule (m_mAssignment, true); - if (is.getMResourceAssignment() != null) - { - m_mAssignment = is.getMResourceAssignment(); - // setDisplay(); - detach(); - } - is = null; + InfoSchedule is = new InfoSchedule (m_mAssignment, true, new Callback() { + @Override + public void onCallback(MResourceAssignment result) { + if (result != null) + { + m_mAssignment = result; + // setDisplay(); + detach(); + } + } + }); } // cancel - return diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WFieldRecordInfo.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WFieldRecordInfo.java index 988c1648aa..1983f82bc3 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WFieldRecordInfo.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WFieldRecordInfo.java @@ -75,7 +75,7 @@ public class WFieldRecordInfo extends Window implements EventListener { super (); this.setTitle(title); - this.setAttribute("modal", Boolean.TRUE); + this.setAttribute(Window.MODE_KEY, Window.MODE_HIGHLIGHTED); this.setWidth("640px"); this.setHeight("480px"); this.setBorder("normal"); diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WLocationDialog.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WLocationDialog.java index bb122158f8..3fe07fc736 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WLocationDialog.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WLocationDialog.java @@ -173,7 +173,7 @@ public class WLocationDialog extends Window implements EventListener this.setWidth("380px"); this.setClosable(true); this.setBorder("normal"); - this.setAttribute("mode","modal"); + this.setAttribute(Window.MODE_KEY, Window.MODE_HIGHLIGHTED); } private void initComponents() diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WLocatorDialog.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WLocatorDialog.java index d413e1f890..0987e7d1f2 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WLocatorDialog.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WLocatorDialog.java @@ -26,6 +26,7 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.util.logging.Level; +import org.adempiere.webui.LayoutUtils; import org.adempiere.webui.component.Button; import org.adempiere.webui.component.Checkbox; import org.adempiere.webui.component.Label; @@ -44,6 +45,7 @@ import org.compiere.util.Msg; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.Events; +import org.zkoss.zul.Cell; import org.zkoss.zul.Hbox; import org.zkoss.zul.Separator; import org.zkoss.zul.Vbox; @@ -146,69 +148,112 @@ public class WLocatorDialog extends Window implements EventListener Hbox boxLocator = new Hbox(); boxLocator.setWidth("100%"); - boxLocator.setWidths("30%, 70%"); - + lstLocator.setWidth("150px"); // Elaine 2009/02/02 - fixed the locator width lstLocator.setMold("select"); lstLocator.setRows(0); + LayoutUtils.addSclass("z-label", lstLocator); - boxLocator.appendChild(lblLocator); - boxLocator.appendChild(lstLocator); + Cell cell = new Cell(); + cell.setWidth("30%"); + boxLocator.appendChild(cell); + cell.appendChild(lblLocator); + cell = new Cell(); + cell.setWidth("70%"); + boxLocator.appendChild(cell); + cell.appendChild(lstLocator); Hbox boxCheckbox = new Hbox(); boxCheckbox.setWidth("100%"); - boxCheckbox.setWidths("30%, 70%"); - boxCheckbox.setStyle("text-align:left"); + boxCheckbox.setPack("start"); chkCreateNew.setLabel(Msg.getMsg(Env.getCtx(), "CreateNew")); - boxCheckbox.appendChild(new Label()); - boxCheckbox.appendChild(chkCreateNew); + cell = new Cell(); + cell.setWidth("100%"); + boxCheckbox.appendChild(cell); + cell.appendChild(chkCreateNew); Hbox boxWarehouse = new Hbox(); boxWarehouse.setWidth("100%"); - boxWarehouse.setWidths("30%, 70%"); + boxWarehouse.setHflex("true"); lstWarehouse.setWidth("100px"); lstWarehouse.setMold("select"); - lstWarehouse.setRows(0); - - boxWarehouse.appendChild(lblWarehouse); - boxWarehouse.appendChild(lstWarehouse); - boxWarehouse.appendChild(txtWarehouse); + lstWarehouse.setRows(0); + LayoutUtils.addSclass("z-label", lstWarehouse); + + cell = new Cell(); + cell.setWidth("30%"); + boxWarehouse.appendChild(cell); + cell.appendChild(lblWarehouse); + lblWarehouse.setHflex("true"); + cell = new Cell(); + cell.setWidth("70%"); + boxWarehouse.appendChild(cell); + cell.appendChild(lstWarehouse); + cell.appendChild(txtWarehouse); Hbox boxAisle = new Hbox(); boxAisle.setWidth("100%"); - boxAisle.setWidths("30%, 70%"); + boxAisle.setHflex("true"); - boxAisle.appendChild(lblAisleX); - boxAisle.appendChild(txtAisleX); + cell = new Cell(); + cell.setWidth("30%"); + boxAisle.appendChild(cell); + lblAisleX.setHflex("true"); + cell.appendChild(lblAisleX); + cell = new Cell(); + cell.setWidth("70%"); + boxAisle.appendChild(cell); + cell.appendChild(txtAisleX); Hbox boxBin = new Hbox(); boxBin.setWidth("100%"); - boxBin.setWidths("30%, 70%"); + boxBin.setHflex("true"); - boxBin.appendChild(lblBinY); - boxBin.appendChild(txtBinY); + cell = new Cell(); + cell.setWidth("30%"); + boxBin.appendChild(cell); + cell.appendChild(lblBinY); + lblBinY.setHflex("true"); + cell = new Cell(); + cell.setWidth("70%"); + boxBin.appendChild(cell); + cell.appendChild(txtBinY); Hbox boxLevel = new Hbox(); boxLevel.setWidth("100%"); - boxLevel.setWidths("30%, 70%"); + boxLevel.setHflex("true"); - boxLevel.appendChild(lblLevelZ); - boxLevel.appendChild(txtLevelZ); + cell = new Cell(); + cell.setWidth("30%"); + boxLevel.appendChild(cell); + cell.appendChild(lblLevelZ); + lblLevelZ.setHflex("true"); + cell = new Cell(); + cell.setWidth("70%"); + boxLevel.appendChild(cell); + cell.appendChild(txtLevelZ); Hbox boxKey = new Hbox(); boxKey.setWidth("100%"); - boxKey.setWidths("30%, 70%"); + boxKey.setHflex("true"); - boxKey.appendChild(lblKey); - boxKey.appendChild(txtKey); + cell = new Cell(); + cell.setWidth("30%"); + boxKey.appendChild(cell); + cell.appendChild(lblKey); + lblKey.setHflex("true"); + cell = new Cell(); + cell.setWidth("70%"); + boxKey.appendChild(cell); + cell.appendChild(txtKey); Hbox boxButtons = new Hbox(); boxButtons.setWidth("100%"); - boxButtons.setWidths("80%, 10%, 10%"); - boxButtons.setStyle("text-align:right"); + boxButtons.setStyle("padding: 5px;"); + boxButtons.setPack("end"); btnCancel.setImage("/images/Cancel16.png"); btnCancel.addEventListener(Events.ON_CLICK, this); @@ -216,7 +261,6 @@ public class WLocatorDialog extends Window implements EventListener btnOk.setImage("/images/Ok16.png"); btnOk.addEventListener(Events.ON_CLICK, this); - boxButtons.appendChild(new Label()); boxButtons.appendChild(btnCancel); boxButtons.appendChild(btnOk); @@ -239,7 +283,6 @@ public class WLocatorDialog extends Window implements EventListener this.setClosable(true); this.setBorder("normal"); this.setWidth("260Px"); - this.setAttribute("mode","modal"); this.setSizable(true); // Elaine 2009/02/02 - window set to resizable } diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WRecordAccessDialog.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WRecordAccessDialog.java index 0e98c20bb1..097eeea187 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WRecordAccessDialog.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WRecordAccessDialog.java @@ -63,7 +63,7 @@ public class WRecordAccessDialog extends Window implements EventListener { super(); setTitle(Msg.translate(Env.getCtx(), "RecordAccessDialog")); - setAttribute("modal", Boolean.TRUE); + setAttribute(Window.MODE_KEY, Window.MODE_HIGHLIGHTED); setBorder("normal"); setWidth("600px"); setSizable(true); @@ -79,8 +79,7 @@ public class WRecordAccessDialog extends Window implements EventListener catch (Exception e) { log.log(Level.SEVERE, "", e); - } - AEnv.showWindow(this); + } } // RecordAccessDialog private int m_AD_Table_ID;