From a9ca3fbf244a0ef58ea3f0bf3c333fae9d17e50c Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Fri, 17 Aug 2012 10:42:25 +0800 Subject: [PATCH] IDEMPIERE-144 Performance: Remove the use of zk event thread. Drop the use of FileUpload, remove use of Mode_MODAL that have been overlook in previous commit. --- .../org/adempiere/webui/apps/WProcessCtl.java | 2 +- .../webui/apps/form/WFileImport.java | 27 +++---------- .../webui/component/FilenameBox.java | 17 ++++++++ .../webui/dashboard/RequestWindow.java | 2 +- .../webui/editor/WFileDirectoryEditor.java | 1 + .../webui/editor/WFilenameEditor.java | 40 ++++--------------- .../adempiere/webui/editor/WStringEditor.java | 26 +++++++----- .../webui/panel/AbstractADWindowPanel.java | 17 ++++---- .../adempiere/webui/panel/WAttachment.java | 31 +++++--------- .../src/org/adempiere/webui/window/WChat.java | 1 - 10 files changed, 67 insertions(+), 97 deletions(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/WProcessCtl.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/WProcessCtl.java index 9532a5b0e9..7c174ae8c7 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/WProcessCtl.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/WProcessCtl.java @@ -87,7 +87,7 @@ public class WProcessCtl extends AbstractProcessCtl { para.setWidth("500px"); para.setVisible(true); para.setPosition("center"); - para.setAttribute(Window.MODE_KEY, Window.MODE_MODAL); + para.setAttribute(Window.MODE_KEY, Window.MODE_HIGHLIGHTED); AEnv.showWindow(para); } } // execute diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WFileImport.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WFileImport.java index 74a0f48e6b..1342abcd3e 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WFileImport.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WFileImport.java @@ -51,6 +51,7 @@ import org.compiere.util.Env; import org.compiere.util.Ini; import org.compiere.util.Msg; import org.zkoss.util.media.Media; +import org.zkoss.zk.ui.IdSpace; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.Events; @@ -60,7 +61,6 @@ import org.zkoss.zul.Center; import org.zkoss.zul.North; import org.zkoss.zul.South; import org.zkoss.zul.Div; -import org.zkoss.zul.Fileupload; import org.zkoss.zul.Hbox; import org.zkoss.zul.Separator; @@ -118,7 +118,6 @@ public class WFileImport extends ADForm implements EventListener public WFileImport() { - this.addEventListener(Events.ON_UPLOAD, this); } /** @@ -173,7 +172,8 @@ public class WFileImport extends ADForm implements EventListener bFile.setLabel(Msg.getMsg(Env.getCtx(), "FileImportFile")); bFile.setTooltiptext(Msg.getMsg(Env.getCtx(), "FileImportFileInfo")); - bFile.addEventListener(Events.ON_CLICK, this); + bFile.setUpload("true"); + bFile.addEventListener(Events.ON_UPLOAD, this); fCharset.setMold("select"); fCharset.setRows(0); @@ -275,9 +275,10 @@ public class WFileImport extends ADForm implements EventListener public void onEvent(Event e) throws Exception { - if (e.getTarget() == bFile) + if (e instanceof UploadEvent) { - cmd_loadFile(); + UploadEvent ue = (UploadEvent) e; + processUploadMedia(ue.getMedia()); invalidate(); } else if (e.getTarget() == fCharset) @@ -308,11 +309,6 @@ public class WFileImport extends ADForm implements EventListener SessionManager.getAppDesktop().closeActiveWindow(); return; } - else if (e instanceof UploadEvent) - { - UploadEvent ue = (UploadEvent) e; - processUploadMedia(ue.getMedia()); - } if (m_data != null && m_data.size() > 0 // file loaded && m_format != null && m_format.getRowCount() > 0) // format loaded @@ -321,17 +317,6 @@ public class WFileImport extends ADForm implements EventListener confirmPanel.getButton("Ok").setEnabled(false); } - /************************************************************************** - * Load File - */ - - private void cmd_loadFile() - { - Media media = Fileupload.get(); - if (AdempiereWebUI.isEventThreadEnabled()) - processUploadMedia(media); - } - private void processUploadMedia(Media media) { if (media == null) return; diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/FilenameBox.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/FilenameBox.java index 495252692b..15d4ee2cc2 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/FilenameBox.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/FilenameBox.java @@ -12,6 +12,9 @@ *****************************************************************************/ package org.adempiere.webui.component; +import org.zkoss.zk.ui.event.EventListener; +import org.zkoss.zk.ui.event.Events; + /** * * @author Low Heng Sin @@ -27,6 +30,7 @@ public class FilenameBox extends EditorBox public FilenameBox() { super(); + btn.setUpload("true"); } /** @@ -36,5 +40,18 @@ public class FilenameBox extends EditorBox { super(); setText(fileName); + btn.setUpload("true"); } + + /* (non-Javadoc) + * @see org.adempiere.webui.component.EditorBox#addEventListener(java.lang.String, org.zkoss.zk.ui.event.EventListener) + */ + @Override + public boolean addEventListener(String evtnm, EventListener listener) { + if (Events.ON_UPLOAD.equals(evtnm)) { + return btn.addEventListener(evtnm, listener); + } else { + return super.addEventListener(evtnm, listener); + } + } } \ No newline at end of file diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/dashboard/RequestWindow.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/dashboard/RequestWindow.java index c219ad0f59..96eca44b5e 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/dashboard/RequestWindow.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/dashboard/RequestWindow.java @@ -76,7 +76,7 @@ public class RequestWindow extends Window implements EventListener { this.parent = parent; setTitle("Event"); - setAttribute(Window.MODE_KEY, Window.MODE_MODAL); + setAttribute(Window.MODE_KEY, Window.MODE_HIGHLIGHTED); setWidth("400px"); setHeight("500px"); this.setBorder("normal"); diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WFileDirectoryEditor.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WFileDirectoryEditor.java index 0f89e40904..e61c3b282f 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WFileDirectoryEditor.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WFileDirectoryEditor.java @@ -41,6 +41,7 @@ public class WFileDirectoryEditor extends WEditor super(new FilenameBox(), gridField); getComponent().setButtonImage("/images/Open16.png"); getComponent().addEventListener(Events.ON_CLICK, this); + getComponent().getButton().setUpload("false"); } @Override diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WFilenameEditor.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WFilenameEditor.java index c3b08bf354..ce66b709f5 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WFilenameEditor.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WFilenameEditor.java @@ -21,17 +21,14 @@ import java.io.IOException; import java.io.InputStream; import java.util.logging.Level; -import org.adempiere.webui.AdempiereWebUI; import org.adempiere.webui.component.FilenameBox; import org.adempiere.webui.event.ValueChangeEvent; import org.compiere.model.GridField; import org.compiere.util.CLogger; import org.zkoss.util.media.Media; -import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.Events; import org.zkoss.zk.ui.event.UploadEvent; -import org.zkoss.zul.Fileupload; /** * @@ -50,7 +47,8 @@ public class WFilenameEditor extends WEditor { super(new FilenameBox(), gridField); getComponent().setButtonImage("/images/Open16.png"); - getComponent().addEventListener(Events.ON_CLICK, this); + getComponent().addEventListener(Events.ON_UPLOAD, this); + getComponent().getButton().setUpload("true,native"); } @Override @@ -105,11 +103,6 @@ public class WFilenameEditor extends WEditor newValue = getComponent().getText(); } - else if (Events.ON_CLICK.equals(event.getName())) - { - cmd_file(); - newValue = getComponent().getText(); - } else if (event instanceof UploadEvent) { UploadEvent ue = (UploadEvent) event; @@ -121,6 +114,10 @@ public class WFilenameEditor extends WEditor return; } + processNewValue(newValue); + } + + protected void processNewValue(String newValue) { if (oldValue != null && newValue != null && oldValue.equals(newValue)) { return; } @@ -131,29 +128,6 @@ public class WFilenameEditor extends WEditor fireValueChange(changeEvent); } - private Component parent = null; - - /** - * Load file - */ - private void cmd_file() - { - if (parent == null || getComponent().getParent() != parent) - { - if (parent != null) - { - parent.removeEventListener(Events.ON_UPLOAD, this); - } - parent = getComponent().getParent(); - parent.addEventListener(Events.ON_UPLOAD, this); - } - - // Show File Open Dialog - Media media = Fileupload.get(true); - if (AdempiereWebUI.isEventThreadEnabled()) - processUploadMedia(media); - } // cmd_file - private void processUploadMedia(Media file) { if (file == null) return; @@ -196,6 +170,8 @@ public class WFilenameEditor extends WEditor } getComponent().setText(fileName); + + processNewValue(getComponent().getText()); } public String[] getEvents() diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WStringEditor.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WStringEditor.java index d9b8260806..15c728abdf 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WStringEditor.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WStringEditor.java @@ -25,6 +25,7 @@ import org.adempiere.webui.component.Textbox; import org.adempiere.webui.component.Window; 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.session.SessionManager; import org.adempiere.webui.window.WFieldRecordInfo; @@ -32,6 +33,7 @@ import org.adempiere.webui.window.WTextEditorDialog; import org.compiere.model.GridField; import org.compiere.util.DisplayType; import org.zkoss.zk.ui.event.Event; +import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.Events; /** @@ -221,17 +223,23 @@ public class WStringEditor extends WEditor implements ContextMenuListener } else if (WEditorPopupMenu.EDITOR_EVENT.equals(evt.getContextEvent())) { - WTextEditorDialog dialog = new WTextEditorDialog(this.getColumnName(), getDisplay(), + final WTextEditorDialog dialog = new WTextEditorDialog(this.getColumnName(), getDisplay(), isReadWrite(), gridField.getFieldLength()); - dialog.setAttribute(Window.MODE_KEY, Window.MODE_MODAL); + dialog.setAttribute(Window.MODE_KEY, Window.MODE_HIGHLIGHTED); + dialog.addEventListener(DialogEvents.ON_WINDOW_CLOSE, new EventListener() { + @Override + public void onEvent(Event event) throws Exception { + if (!dialog.isCancelled()) { + getComponent().setText(dialog.getText()); + String newText = getComponent().getValue(); + ValueChangeEvent changeEvent = new ValueChangeEvent(WStringEditor.this, WStringEditor.this.getColumnName(), oldValue, newText); + WStringEditor.super.fireValueChange(changeEvent); + oldValue = newText; + } + } + }); SessionManager.getAppDesktop().showWindow(dialog); - if (!dialog.isCancelled()) { - getComponent().setText(dialog.getText()); - String newText = getComponent().getValue(); - ValueChangeEvent changeEvent = new ValueChangeEvent(this, this.getColumnName(), oldValue, newText); - super.fireValueChange(changeEvent); - oldValue = newText; - } + } else if (WEditorPopupMenu.CHANGE_LOG_EVENT.equals(evt.getContextEvent())) { 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 7fa389284a..385457a80b 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 @@ -1877,19 +1877,10 @@ public abstract class AbstractADWindowPanel extends AbstractUIPart implements To } //show table with deletion rows -> value, name... - final Window messagePanel = new Window() { - private static final long serialVersionUID = 3954976581821972619L; - - @Override - public void detach() { - super.detach(); - focusToActivePanel(); - } - }; + final Window messagePanel = new Window(); messagePanel.setBorder("normal"); messagePanel.setWidth("600px"); messagePanel.setTitle(Msg.getMsg(Env.getCtx(), "Find").replaceAll("&", "") + ": " + title); - messagePanel.setAttribute(Window.MODE_KEY, Window.MODE_MODAL); messagePanel.setClosable(true); messagePanel.setSizable(true); @@ -2062,6 +2053,12 @@ public abstract class AbstractADWindowPanel extends AbstractUIPart implements To hbox.setHflex("1"); messagePanel.setAttribute(Window.MODE_KEY, Window.MODE_HIGHLIGHTED); + messagePanel.addEventListener(DialogEvents.ON_WINDOW_CLOSE, new EventListener() { + @Override + public void onEvent(Event event) throws Exception { + focusToActivePanel(); + } + }); AEnv.showWindow(messagePanel); } // diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/WAttachment.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/WAttachment.java index 26f6ecdb59..5d2f7f36c1 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/WAttachment.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/WAttachment.java @@ -254,7 +254,8 @@ public class WAttachment extends Window implements EventListener bLoad.setImage("/images/Import24.png"); bLoad.setTooltiptext(Msg.getMsg(Env.getCtx(), "Load")); - bLoad.addEventListener(Events.ON_CLICK, this); + bLoad.setUpload("true"); + bLoad.addEventListener(Events.ON_UPLOAD, this); bDelete.setImage("/images/Delete24.png"); bDelete.setTooltiptext(Msg.getMsg(Env.getCtx(), "Delete")); @@ -455,7 +456,13 @@ public class WAttachment extends Window implements EventListener { // Save and Close - if (e.getTarget() == bOk) + if (e instanceof UploadEvent) + { + preview.setVisible(false); + UploadEvent ue = (UploadEvent) e; + processUploadMedia(ue.getMedia()); + } + else if (e.getTarget() == bOk) { String newText = text.getText(); @@ -513,11 +520,6 @@ public class WAttachment extends Window implements EventListener autoPreview (cbContent.getSelectedIndex(), false); } - // Load Attachment - - else if (e.getTarget() == bLoad) - loadFile(); - // Open Attachment else if (e.getTarget() == bSave) @@ -533,21 +535,6 @@ public class WAttachment extends Window implements EventListener } // onEvent - /************************************************************************** - * Load file for attachment - */ - - private void loadFile() - { - log.info(""); - - preview.setVisible(false); - - Media media = Fileupload.get(true); - if (AdempiereWebUI.isEventThreadEnabled()) - processUploadMedia(media); - } - private void processUploadMedia(Media media) { if (media != null) { diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WChat.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WChat.java index 94e5d33926..2b7beeede9 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WChat.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WChat.java @@ -85,7 +85,6 @@ public class WChat extends Window implements EventListener, DialogEvents { super(); setTitle(Msg.getMsg(Env.getCtx(), "Chat") + " " + Description); - setAttribute(Window.MODE_KEY, Window.MODE_MODAL); log.config("ID=" + CM_Chat_ID + ", Table=" + AD_Table_ID + ", Record=" + Record_ID); //