From 1075d048d9c5bf1f3ab4e3754880249d2e7c0996 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Wed, 20 Mar 2013 13:43:12 -0500 Subject: [PATCH] IDEMPIERE-781 Column of type FilePath not working --- .../webui/editor/WFileDirectoryEditor.java | 28 +++++++++++++++---- 1 file changed, 22 insertions(+), 6 deletions(-) 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 dc9738d4bb..831425b897 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 @@ -16,11 +16,13 @@ package org.adempiere.webui.editor; import org.adempiere.webui.component.FilenameBox; import org.adempiere.webui.component.FolderBrowser; +import org.adempiere.webui.event.DialogEvents; import org.adempiere.webui.event.ValueChangeEvent; import org.adempiere.webui.theme.ThemeManager; import org.compiere.model.GridField; import org.compiere.util.CLogger; import org.zkoss.zk.ui.event.Event; +import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.Events; /** @@ -41,7 +43,6 @@ public class WFileDirectoryEditor extends WEditor { super(new FilenameBox(), gridField); getComponent().setButtonImage(ThemeManager.getThemeResource("images/Open16.png")); - getComponent().addEventListener(Events.ON_CLICK, this); getComponent().getButton().setUpload("false"); } @@ -98,7 +99,6 @@ public class WFileDirectoryEditor extends WEditor else if (Events.ON_CLICK.equals(event.getName())) { cmd_file(); - newValue = getComponent().getText(); } else { @@ -108,6 +108,16 @@ public class WFileDirectoryEditor extends WEditor if (oldValue != null && newValue != null && oldValue.equals(newValue)) { return; } + if (oldValue == null && newValue == null) { + return; + } + processNewValue(newValue); + } + + protected void processNewValue(String newValue) { + if (oldValue != null && newValue != null && oldValue.equals(newValue)) { + return; + } if (oldValue == null && newValue == null) { return; } @@ -120,10 +130,16 @@ public class WFileDirectoryEditor extends WEditor */ private void cmd_file() { - FolderBrowser directoryDialog = new FolderBrowser(true); - String directory = directoryDialog.getPath(); - getComponent().setText(directory); - getComponent().getTextbox().focus(); + final FolderBrowser directoryDialog = new FolderBrowser(true); + directoryDialog.addEventListener(DialogEvents.ON_WINDOW_CLOSE, new EventListener() { + @Override + public void onEvent(Event event) throws Exception { + String directory = directoryDialog.getPath(); + getComponent().setText(directory); + getComponent().getTextbox().focus(); + processNewValue(getComponent().getText()); + } + }); } // cmd_file public String[] getEvents()