From d136ea9057ae7f1ef2bf21c3f555ba069ada7b8a Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Tue, 25 Nov 2008 15:55:27 +0000 Subject: [PATCH] Improve management of the server push update info thread. Improve dynamic display handling for table editor. --- .../org/adempiere/webui/AdempiereWebUI.java | 2 + .../src/org/adempiere/webui/Desktop.java | 41 ++++++++++++++----- .../adempiere/webui/component/GridPanel.java | 33 +++++++++++++++ .../component/GridTabListItemRenderer.java | 17 ++++++++ .../webui/editor/WAccountEditor.java | 6 +-- .../webui/editor/WAssignmentEditor.java | 6 +-- .../adempiere/webui/editor/WBinaryEditor.java | 6 +-- .../adempiere/webui/editor/WButtonEditor.java | 6 +-- .../adempiere/webui/editor/WDateEditor.java | 6 +-- .../webui/editor/WDatetimeEditor.java | 6 +-- .../webui/editor/WFilenameEditor.java | 6 +-- .../adempiere/webui/editor/WImageEditor.java | 6 +-- .../webui/editor/WLocationEditor.java | 6 +-- .../webui/editor/WLocatorEditor.java | 6 +-- .../adempiere/webui/editor/WNumberEditor.java | 6 +-- .../webui/editor/WPAttributeEditor.java | 6 +-- .../adempiere/webui/editor/WSearchEditor.java | 7 +--- .../adempiere/webui/editor/WStringEditor.java | 6 +-- .../webui/editor/WTableDirEditor.java | 6 +-- .../adempiere/webui/editor/WTimeEditor.java | 6 +-- .../adempiere/webui/editor/WUrlEditor.java | 6 +-- .../adempiere/webui/editor/WYesNoEditor.java | 6 +-- .../org/adempiere/webui/panel/ADTabpanel.java | 27 +----------- .../webui/panel/AbstractADWindowPanel.java | 6 ++- 24 files changed, 107 insertions(+), 128 deletions(-) diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/AdempiereWebUI.java b/zkwebui/WEB-INF/src/org/adempiere/webui/AdempiereWebUI.java index f6f1ea0751..635eac8be7 100644 --- a/zkwebui/WEB-INF/src/org/adempiere/webui/AdempiereWebUI.java +++ b/zkwebui/WEB-INF/src/org/adempiere/webui/AdempiereWebUI.java @@ -181,6 +181,8 @@ public class AdempiereWebUI extends Window implements EventListener, IWebClient mSession.logout(); } + appDesktop.logout(); + SessionManager.clearSession(); super.getChildren().clear(); Page page = this.getPage(); diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/Desktop.java b/zkwebui/WEB-INF/src/org/adempiere/webui/Desktop.java index b40e86673a..35c36800f3 100644 --- a/zkwebui/WEB-INF/src/org/adempiere/webui/Desktop.java +++ b/zkwebui/WEB-INF/src/org/adempiere/webui/Desktop.java @@ -63,7 +63,6 @@ import org.compiere.util.DB; import org.compiere.util.Env; import org.compiere.util.Msg; import org.compiere.util.WebDoc; -import org.zkoss.lang.Threads; import org.zkoss.util.media.AMedia; import org.zkoss.zhtml.Button; import org.zkoss.zk.ui.Component; @@ -114,6 +113,10 @@ public class Desktop extends AbstractUIPart implements MenuListener, Serializabl private MGoal[] m_goals = null; private List queryZoom = null; + + private Thread updateInfoThread; + + private UpdateInfoRunnable updateInfoRunnable; private static final String key = "queryZoom"; @@ -355,9 +358,10 @@ public class Desktop extends AbstractUIPart implements MenuListener, Serializabl updateInfo(); - Thread infoThread = new Thread(new UpdateInfoRunnable(layout.getDesktop()), "UpdateInfo"); - infoThread.setDaemon(true); - infoThread.start(); + updateInfoRunnable = new UpdateInfoRunnable(layout.getDesktop()); + updateInfoThread = new Thread(updateInfoRunnable, "UpdateInfo"); + updateInfoThread.setDaemon(true); + updateInfoThread.start(); } private String goalsDetail(int AD_Table_ID, Panelchildren panel) @@ -474,27 +478,35 @@ public class Desktop extends AbstractUIPart implements MenuListener, Serializabl private class UpdateInfoRunnable implements Runnable { private org.zkoss.zk.ui.Desktop desktop; + private boolean stop = false; UpdateInfoRunnable(org.zkoss.zk.ui.Desktop desktop) { this.desktop = desktop; } public void run() { - while(true) { + while(!stop) { + try { + Thread.sleep(60000); // Update every one minutes + } catch (InterruptedException e1) { + if (stop) break; + } + try { // get full control of desktop Executions.activate(desktop); try { - updateInfo(); - Threads.sleep(5000);// Update each 5 seconds + updateInfo(); } catch (Error ex) { - throw ex; + logger.log(Level.SEVERE, "UpdateInfo Thread error="+ex.getLocalizedMessage(), ex); + break; } finally { // release full control of desktop Executions.deactivate(desktop); } - } catch (Exception e) { - logger.log(Level.WARNING, "Failed to run UpdateInfo", e); - } + } catch (Throwable e) { + logger.log(Level.SEVERE, "UpdateInfo Thread error="+e.getLocalizedMessage(), e); + break; + } } } } @@ -984,4 +996,11 @@ public class Desktop extends AbstractUIPart implements MenuListener, Serializabl public Component getComponent() { return layout; } + + public void logout() { + if (updateInfoThread != null && updateInfoThread.isAlive()) { + updateInfoRunnable.stop = true; + updateInfoThread.interrupt(); + } + } } diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/component/GridPanel.java b/zkwebui/WEB-INF/src/org/adempiere/webui/component/GridPanel.java index 3e07a711cb..d26d352691 100644 --- a/zkwebui/WEB-INF/src/org/adempiere/webui/component/GridPanel.java +++ b/zkwebui/WEB-INF/src/org/adempiere/webui/component/GridPanel.java @@ -14,11 +14,13 @@ package org.adempiere.webui.component; import java.util.HashMap; +import java.util.List; import java.util.Map; import javax.swing.table.AbstractTableModel; import org.adempiere.webui.LayoutUtils; +import org.adempiere.webui.editor.WEditor; import org.compiere.model.GridField; import org.compiere.model.GridTab; import org.compiere.model.GridTable; @@ -298,4 +300,35 @@ public class GridPanel extends Borderlayout implements EventListener public Listbox getListbox() { return listbox; } + + public void dynamicDisplay(int col) { + if (!gridTab.isOpen()) + { + return; + } + + // Selective + if (col > 0) + return; + + boolean noData = gridTab.getRowCount() == 0; + List list = renderer.getEditors(); + for (WEditor comp : list) + { + GridField mField = comp.getGridField(); + if (mField != null && mField.getIncluded_Tab_ID() <= 0) + { + if (noData) + { + comp.setReadWrite(false); + } + else + { + comp.dynamicDisplay(); + boolean rw = mField.isEditable(true); // r/w - check Context + comp.setReadWrite(rw); + } + } + } // all components + } } diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/component/GridTabListItemRenderer.java b/zkwebui/WEB-INF/src/org/adempiere/webui/component/GridTabListItemRenderer.java index 94e2a19086..3efa854969 100644 --- a/zkwebui/WEB-INF/src/org/adempiere/webui/component/GridTabListItemRenderer.java +++ b/zkwebui/WEB-INF/src/org/adempiere/webui/component/GridTabListItemRenderer.java @@ -14,7 +14,9 @@ package org.adempiere.webui.component; import java.sql.Timestamp; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -116,6 +118,9 @@ public class GridTabListItemRenderer implements ListitemRenderer, ListitemRender if (editor != null) { editor.addValueChangeListener(dataBinder); cell.appendChild(editor.getComponent()); + if (editor.getComponent() instanceof Checkbox) { + cell.setStyle("text-align:center"); + } gridField.addPropertyChangeListener(editor); editor.setValue(gridField.getValue()); WEditorPopupMenu popupMenu = editor.getPopupMenu(); @@ -255,4 +260,16 @@ public class GridTabListItemRenderer implements ListitemRenderer, ListitemRender public boolean isInitialize() { return !editors.isEmpty(); } + + /** + * + * @return active editor list + */ + public List getEditors() { + List editorList = new ArrayList(); + if (!editors.isEmpty()) + editorList.addAll(editors.values()); + + return editorList; + } } diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WAccountEditor.java b/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WAccountEditor.java index 44a03da5bb..eb501b5767 100644 --- a/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WAccountEditor.java +++ b/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WAccountEditor.java @@ -36,7 +36,7 @@ import org.zkoss.zk.ui.event.Events; */ public class WAccountEditor extends WEditor { - private static final String[] LISTENER_EVENTS = {Events.ON_CLICK, Events.ON_CHANGE, Events.ON_FOCUS}; + private static final String[] LISTENER_EVENTS = {Events.ON_CLICK, Events.ON_CHANGE}; private MAccountLookup m_mAccount; @@ -173,10 +173,6 @@ public class WAccountEditor extends WEditor { cmd_button(); } - else if (Events.ON_FOCUS.equalsIgnoreCase(event.getName()) && gridField != null) - { - this.setReadWrite(gridField.isEditable(true)); - } } public String[] getEvents() diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WAssignmentEditor.java b/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WAssignmentEditor.java index 4ff2f5daad..8622b63878 100644 --- a/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WAssignmentEditor.java +++ b/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WAssignmentEditor.java @@ -23,7 +23,7 @@ public class WAssignmentEditor extends WEditor { private final static CLogger log = CLogger.getCLogger(WAssignmentEditor.class); - private static final String[] LISTENER_EVENTS = {Events.ON_CLICK, Events.ON_FOCUS}; + private static final String[] LISTENER_EVENTS = {Events.ON_CLICK}; private boolean m_readWrite; private Object m_value; @@ -153,10 +153,6 @@ public class WAssignmentEditor extends WEditor { fireValueChange(vce); } } - else if (Events.ON_FOCUS.equalsIgnoreCase(event.getName()) && gridField != null) - { - this.setReadWrite(gridField.isEditable(true)); - } } } diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WBinaryEditor.java b/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WBinaryEditor.java index d2a048aebd..b1a8ac5c85 100644 --- a/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WBinaryEditor.java +++ b/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WBinaryEditor.java @@ -26,7 +26,7 @@ import org.zkoss.zk.ui.event.Events; */ public class WBinaryEditor extends WEditor { - private static final String[] LISTENER_EVENTS = {Events.ON_CLICK, Events.ON_FOCUS}; + private static final String[] LISTENER_EVENTS = {Events.ON_CLICK}; /** Logger */ private static CLogger log = CLogger.getCLogger(WBinaryEditor.class); @@ -127,9 +127,5 @@ public class WBinaryEditor extends WEditor if (!dialog.isCancel() && dialog.isChange()) m_data = dialog.getData(); } - else if (Events.ON_FOCUS.equalsIgnoreCase(event.getName()) && gridField != null) - { - this.setReadWrite(gridField.isEditable(true)); - } } } diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WButtonEditor.java b/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WButtonEditor.java index 5f313ecaab..5a709fb463 100644 --- a/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WButtonEditor.java +++ b/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WButtonEditor.java @@ -48,7 +48,7 @@ import org.zkoss.zk.ui.event.Events; */ public class WButtonEditor extends WEditor { - private static final String[] LISTENER_EVENTS = {Events.ON_CLICK, Events.ON_FOCUS}; + private static final String[] LISTENER_EVENTS = {Events.ON_CLICK}; private static final CLogger logger; @@ -274,9 +274,5 @@ public class WButtonEditor extends WEditor evtListener.actionPerformed(actionEvent); } } - else if (Events.ON_FOCUS.equalsIgnoreCase(event.getName()) && gridField != null) - { - this.setReadWrite(gridField.isEditable(true)); - } } } diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WDateEditor.java b/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WDateEditor.java index 64737def19..e1235abebd 100644 --- a/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WDateEditor.java +++ b/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WDateEditor.java @@ -37,7 +37,7 @@ import org.zkoss.zk.ui.event.Events; */ public class WDateEditor extends WEditor { - private static final String[] LISTENER_EVENTS = {Events.ON_CHANGE, Events.ON_FOCUS}; + private static final String[] LISTENER_EVENTS = {Events.ON_CHANGE}; private static final CLogger logger; static @@ -119,10 +119,6 @@ public class WDateEditor extends WEditor super.fireValueChange(changeEvent); oldValue = newValue; } - else if (Events.ON_FOCUS.equalsIgnoreCase(event.getName()) && gridField != null) - { - this.setReadWrite(gridField.isEditable(true)); - } } @Override diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WDatetimeEditor.java b/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WDatetimeEditor.java index 4a71ac6288..8636e5c9dd 100644 --- a/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WDatetimeEditor.java +++ b/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WDatetimeEditor.java @@ -29,7 +29,7 @@ import org.zkoss.zk.ui.event.Events; */ public class WDatetimeEditor extends WEditor { - private static final String[] LISTENER_EVENTS = {Events.ON_CHANGE, Events.ON_FOCUS}; + private static final String[] LISTENER_EVENTS = {Events.ON_CHANGE}; private static final CLogger logger; static @@ -112,10 +112,6 @@ public class WDatetimeEditor extends WEditor super.fireValueChange(changeEvent); oldValue = newValue; } - else if (Events.ON_FOCUS.equalsIgnoreCase(event.getName()) && gridField != null) - { - this.setReadWrite(gridField.isEditable(true)); - } } @Override diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WFilenameEditor.java b/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WFilenameEditor.java index 73f89bcfaf..71a14d8979 100644 --- a/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WFilenameEditor.java +++ b/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WFilenameEditor.java @@ -35,7 +35,7 @@ import org.zkoss.zul.Fileupload; */ public class WFilenameEditor extends WEditor { - private static final String[] LISTENER_EVENTS = {Events.ON_CLICK, Events.ON_CHANGE, Events.ON_FOCUS}; + private static final String[] LISTENER_EVENTS = {Events.ON_CLICK, Events.ON_CHANGE}; private static final CLogger log = CLogger.getCLogger(WFilenameEditor.class); @@ -98,10 +98,6 @@ public class WFilenameEditor extends WEditor { cmd_file(); } - else if (Events.ON_FOCUS.equalsIgnoreCase(event.getName()) && gridField != null) - { - this.setReadWrite(gridField.isEditable(true)); - } } /** diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WImageEditor.java b/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WImageEditor.java index 6b81aada19..257199980d 100644 --- a/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WImageEditor.java +++ b/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WImageEditor.java @@ -33,7 +33,7 @@ import org.zkoss.zk.ui.event.Events; */ public class WImageEditor extends WEditor { - private static final String[] LISTENER_EVENTS = {Events.ON_CLICK, Events.ON_FOCUS}; + private static final String[] LISTENER_EVENTS = {Events.ON_CLICK}; private static final CLogger logger; @@ -150,9 +150,5 @@ public class WImageEditor extends WEditor ValueChangeEvent vce = new ValueChangeEvent(this, gridField.getColumnName(), oldValue, newValue); fireValueChange(vce); } - else if (Events.ON_FOCUS.equalsIgnoreCase(event.getName()) && gridField != null) - { - this.setReadWrite(gridField.isEditable(true)); - } } } diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WLocationEditor.java b/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WLocationEditor.java index 18dd0c72ef..7e7083c7e8 100644 --- a/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WLocationEditor.java +++ b/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WLocationEditor.java @@ -40,7 +40,7 @@ import org.zkoss.zk.ui.event.Events; **/ public class WLocationEditor extends WEditor implements EventListener, PropertyChangeListener { - private static final String[] LISTENER_EVENTS = {Events.ON_CLICK, Events.ON_FOCUS}; + private static final String[] LISTENER_EVENTS = {Events.ON_CLICK}; private static CLogger log = CLogger.getCLogger(WLocationEditor.class); private static final long serialVersionUID = 1L; @@ -163,10 +163,6 @@ public class WLocationEditor extends WEditor implements EventListener, PropertyC } setValue(ii); } - else if (Events.ON_FOCUS.equalsIgnoreCase(event.getName()) && gridField != null) - { - this.setReadWrite(gridField.isEditable(true)); - } } /** diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WLocatorEditor.java b/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WLocatorEditor.java index 38bbf0c514..0835297797 100644 --- a/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WLocatorEditor.java +++ b/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WLocatorEditor.java @@ -49,7 +49,7 @@ import org.zkoss.zk.ui.event.Events; public class WLocatorEditor extends WEditor implements EventListener, PropertyChangeListener { - private static final String[] LISTENER_EVENTS = {Events.ON_CLICK, Events.ON_FOCUS}; + private static final String[] LISTENER_EVENTS = {Events.ON_CLICK}; private String m_columnName; private MLocatorLookup m_mLocator; @@ -216,10 +216,6 @@ public class WLocatorEditor extends WEditor implements EventListener, PropertyCh return; setValue (ld.getValue(), true); } - else if (Events.ON_FOCUS.equalsIgnoreCase(event.getName()) && gridField != null) - { - this.setReadWrite(gridField.isEditable(true)); - } } /** diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WNumberEditor.java b/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WNumberEditor.java index 0814bbd3d9..20ceca7cf7 100644 --- a/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WNumberEditor.java +++ b/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WNumberEditor.java @@ -39,7 +39,7 @@ import org.zkoss.zk.ui.event.Events; */ public class WNumberEditor extends WEditor { - public static final String[] LISTENER_EVENTS = {Events.ON_CHANGE, Events.ON_FOCUS}; + public static final String[] LISTENER_EVENTS = {Events.ON_CHANGE}; public static final int MAX_DISPLAY_LENGTH = 20; @@ -112,10 +112,6 @@ public class WNumberEditor extends WEditor super.fireValueChange(changeEvent); oldValue = newValue; } - else if (Events.ON_FOCUS.equalsIgnoreCase(event.getName()) && gridField != null) - { - this.setReadWrite(gridField.isEditable(true)); - } } @Override diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WPAttributeEditor.java b/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WPAttributeEditor.java index 2157fea9ff..31d5ccb48d 100644 --- a/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WPAttributeEditor.java +++ b/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WPAttributeEditor.java @@ -38,7 +38,7 @@ import org.zkoss.zk.ui.event.Events; */ public class WPAttributeEditor extends WEditor implements ContextMenuListener { - private static final String[] LISTENER_EVENTS = {Events.ON_CLICK, Events.ON_CHANGE, Events.ON_FOCUS}; + private static final String[] LISTENER_EVENTS = {Events.ON_CLICK, Events.ON_CHANGE}; private static final CLogger log = CLogger.getCLogger(WPAttributeEditor.class); @@ -130,10 +130,6 @@ public class WPAttributeEditor extends WEditor implements ContextMenuListener { cmd_dialog(); } - else if (Events.ON_FOCUS.equalsIgnoreCase(event.getName()) && gridField != null) - { - this.setReadWrite(gridField.isEditable(true)); - } } /** diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WSearchEditor.java b/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WSearchEditor.java index eb35e92fdc..59637d6d2a 100644 --- a/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WSearchEditor.java +++ b/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WSearchEditor.java @@ -56,7 +56,7 @@ import org.zkoss.zk.ui.event.Events; */ public class WSearchEditor extends WEditor implements ContextMenuListener, ValueChangeListener, IZoomableEditor { - private static final String[] LISTENER_EVENTS = {Events.ON_CLICK, Events.ON_CHANGE, Events.ON_OK, Events.ON_FOCUS}; + private static final String[] LISTENER_EVENTS = {Events.ON_CLICK, Events.ON_CHANGE, Events.ON_OK}; private Lookup lookup; private String m_tableName = null; private String m_keyColumnName = null; @@ -223,11 +223,6 @@ public class WSearchEditor extends WEditor implements ContextMenuListener, Value } actionButton(""); } - else if (Events.ON_FOCUS.equalsIgnoreCase(e.getName()) && gridField != null) - { - this.setReadWrite(gridField.isEditable(true)); - } - } @Override diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WStringEditor.java b/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WStringEditor.java index 59048c9c7e..e214c7e25a 100644 --- a/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WStringEditor.java +++ b/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WStringEditor.java @@ -44,7 +44,7 @@ public class WStringEditor extends WEditor implements ContextMenuListener { private static final String EDITOR_EVENT = "EDITOR"; - private static final String[] LISTENER_EVENTS = {Events.ON_CHANGE, Events.ON_FOCUS}; + private static final String[] LISTENER_EVENTS = {Events.ON_CHANGE}; private String oldText; @@ -157,10 +157,6 @@ public class WStringEditor extends WEditor implements ContextMenuListener super.fireValueChange(changeEvent); oldText = newText; } - else if (Events.ON_FOCUS.equalsIgnoreCase(event.getName()) && gridField != null) - { - this.setReadWrite(gridField.isEditable(true)); - } } @Override diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WTableDirEditor.java b/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WTableDirEditor.java index 1cf8249eb1..97edf89607 100644 --- a/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WTableDirEditor.java +++ b/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WTableDirEditor.java @@ -50,7 +50,7 @@ import org.zkoss.zk.ui.event.Events; public class WTableDirEditor extends WEditor implements ListDataListener, ContextMenuListener, IZoomableEditor { - public final static String[] LISTENER_EVENTS = {Events.ON_SELECT, Events.ON_FOCUS}; + public final static String[] LISTENER_EVENTS = {Events.ON_SELECT}; private static final CLogger logger; @@ -266,10 +266,6 @@ ContextMenuListener, IZoomableEditor super.fireValueChange(changeEvent); oldValue = newValue; } - else if (Events.ON_FOCUS.equalsIgnoreCase(event.getName()) && gridField != null) - { - this.setReadWrite(gridField.isEditable(true)); - } } public String[] getEvents() diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WTimeEditor.java b/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WTimeEditor.java index 083aff4747..af61409282 100644 --- a/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WTimeEditor.java +++ b/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WTimeEditor.java @@ -30,7 +30,7 @@ import org.zkoss.zul.Timebox; */ public class WTimeEditor extends WEditor { - private static final String[] LISTENER_EVENTS = {Events.ON_CHANGE, Events.ON_FOCUS}; + private static final String[] LISTENER_EVENTS = {Events.ON_CHANGE}; private static final CLogger logger; static @@ -104,10 +104,6 @@ public class WTimeEditor extends WEditor super.fireValueChange(changeEvent); oldValue = newValue; } - else if (Events.ON_FOCUS.equalsIgnoreCase(event.getName()) && gridField != null) - { - this.setReadWrite(gridField.isEditable(true)); - } } @Override diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WUrlEditor.java b/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WUrlEditor.java index b51e762d7c..2236a34cb0 100644 --- a/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WUrlEditor.java +++ b/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WUrlEditor.java @@ -29,7 +29,7 @@ import org.zkoss.zk.ui.event.Events; public class WUrlEditor extends WEditor { - private static final String[] LISTENER_EVENTS = {Events.ON_CLICK, Events.ON_CHANGE, Events.ON_FOCUS}; + private static final String[] LISTENER_EVENTS = {Events.ON_CLICK, Events.ON_CHANGE}; public WUrlEditor(GridField gridField) { @@ -108,10 +108,6 @@ public class WUrlEditor extends WEditor FDialog.warn(0, this.getComponent(), "URLnotValid", message); } - else if (Events.ON_FOCUS.equalsIgnoreCase(event.getName()) && gridField != null) - { - this.setReadWrite(gridField.isEditable(true)); - } } public String[] getEvents() diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WYesNoEditor.java b/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WYesNoEditor.java index 1aa6eb29c6..22ce5cb25a 100644 --- a/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WYesNoEditor.java +++ b/zkwebui/WEB-INF/src/org/adempiere/webui/editor/WYesNoEditor.java @@ -37,7 +37,7 @@ import org.zkoss.zk.ui.event.Events; */ public class WYesNoEditor extends WEditor { - public static final String[] LISTENER_EVENTS = {Events.ON_CHECK, Events.ON_FOCUS}; + public static final String[] LISTENER_EVENTS = {Events.ON_CHECK}; private static final CLogger logger; static @@ -69,10 +69,6 @@ public class WYesNoEditor extends WEditor super.fireValueChange(changeEvent); oldValue = newValue; } - else if (Events.ON_FOCUS.equalsIgnoreCase(event.getName()) && gridField != null) - { - this.setReadWrite(gridField.isEditable(true)); - } } public void propertyChange(PropertyChangeEvent evt) diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/panel/ADTabpanel.java b/zkwebui/WEB-INF/src/org/adempiere/webui/panel/ADTabpanel.java index b9e050c576..ed967b5837 100644 --- a/zkwebui/WEB-INF/src/org/adempiere/webui/panel/ADTabpanel.java +++ b/zkwebui/WEB-INF/src/org/adempiere/webui/panel/ADTabpanel.java @@ -493,31 +493,7 @@ DataStatusListener, IADTabpanel // Selective if (col > 0) - { - GridField changedField = gridTab.getField(col); - String columnName = changedField.getColumnName(); - ArrayList dependants = gridTab.getDependantFields(columnName); - logger.config("(" + gridTab.toString() + ") " - + columnName + " - Dependents=" + dependants.size()); - if (dependants.size() == 0 && changedField.getCallout().length() > 0) - { - for (WEditor comp : editors) - { - if (columnName.equals(comp.getColumnName())) - { - boolean manMissing = false; - boolean noValue = changedField.getValue() == null || changedField.getValue().toString().length() == 0; - if (noValue && changedField.isEditable(true) && changedField.isMandatory(true)) - { - manMissing = true; - } - comp.setBackground(manMissing || changedField.isError()); - break; - } - } - return; - } - } + return; boolean noData = gridTab.getRowCount() == 0; logger.config(gridTab.toString() + " - Rows=" + gridTab.getRowCount()); @@ -802,6 +778,7 @@ DataStatusListener, IADTabpanel if (listPanel.isVisible()) { listPanel.updateListIndex(); + listPanel.dynamicDisplay(col); } if (!includedPanel.isEmpty()) { diff --git a/zkwebui/WEB-INF/src/org/adempiere/webui/panel/AbstractADWindowPanel.java b/zkwebui/WEB-INF/src/org/adempiere/webui/panel/AbstractADWindowPanel.java index 1ff8463432..df2a28f00a 100644 --- a/zkwebui/WEB-INF/src/org/adempiere/webui/panel/AbstractADWindowPanel.java +++ b/zkwebui/WEB-INF/src/org/adempiere/webui/panel/AbstractADWindowPanel.java @@ -230,6 +230,8 @@ public abstract class AbstractADWindowPanel extends AbstractUIPart implements To for (int tab = 0; tab < tabSize; tab++) { initTab(query, tab); + if (tab == 0 && curTab == null && m_findCancelled) + return false; } Env.setContext(ctx, curWindowNo, "WindowName", gridWindow.getName()); } @@ -238,7 +240,9 @@ public abstract class AbstractADWindowPanel extends AbstractUIPart implements To initEmbeddedTab(query, embeddedTabindex); } - curTab.getTableModel().setChanged(false); + if (curTab != null) + curTab.getTableModel().setChanged(false); + if (embeddedTabindex < 0) { curTabIndex = 0;