From a2a86c75ca04a4879ea8fe82330c9ba0693579ed Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Fri, 25 Mar 2011 23:04:01 -0500 Subject: [PATCH] Usability on zkwebui: * Red color whole label of empty mandatory fields --- .../org/adempiere/webui/component/Label.java | 17 +++++++++++++--- .../org/adempiere/webui/editor/WEditor.java | 20 ++++++++++++++++++- .../org/adempiere/webui/panel/ADTabpanel.java | 7 ++++++- 3 files changed, 39 insertions(+), 5 deletions(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/Label.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/Label.java index 3f865841b3..dfa4355622 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/Label.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/Label.java @@ -28,10 +28,10 @@ import org.zkoss.zk.ui.Component; */ public class Label extends org.zkoss.zul.Label { - /** - * + /** + * */ - private static final long serialVersionUID = 1912498227823474678L; + private static final long serialVersionUID = -6818124304324329510L; private Component decorator; @@ -106,4 +106,15 @@ public class Label extends org.zkoss.zul.Label public Component rightAlign() { return LayoutUtils.makeRightAlign(this); } + + private boolean m_zoomable = false; + + public boolean isZoomable() { + return m_zoomable; + } + + public void setZoomable(boolean zoomable) { + m_zoomable = zoomable; + } + } diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WEditor.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WEditor.java index 4e40378b68..0d2a1d168b 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WEditor.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WEditor.java @@ -47,7 +47,7 @@ import org.zkoss.zul.Image; */ public abstract class WEditor implements EventListener, PropertyChangeListener { - private static final String[] lISTENER_EVENTS = {}; + private static final String[] lISTENER_EVENTS = {}; public static final int MAX_DISPLAY_LENGTH = 35; @@ -489,4 +489,22 @@ public abstract class WEditor implements EventListener, PropertyChangeListener public void setHasFocus(boolean b) { hasFocus = b; } + + public void setMandatoryLabels() { + Object value = getValue(); + if (this instanceof WAccountEditor && value != null && ((Integer) value).intValue() == 0) // special case + value = null; + if (getLabel() != null) { + markMandatory(mandatory && !readOnly && getGridField().isEditable(true) && (value == null || value.toString().trim().length() == 0)); + } + } + + private static final String STYLE_ZOOMABLE_LABEL = "cursor: pointer; text-decoration: underline;"; + private static final String STYLE_NORMAL_LABEL = "color:black;"; + private static final String STYLE_EMPTY_MANDATORY_LABEL = "color: red;"; + + private void markMandatory(boolean mandatory) { + getLabel().setStyle( (getLabel().isZoomable() ? STYLE_ZOOMABLE_LABEL : "") + (mandatory ? STYLE_EMPTY_MANDATORY_LABEL : STYLE_NORMAL_LABEL)); + } + } diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/ADTabpanel.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/ADTabpanel.java index 86c1b422ba..6a2e259e2a 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/ADTabpanel.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/ADTabpanel.java @@ -479,7 +479,7 @@ DataStatusListener, IADTabpanel, VetoableChangeListener Label label = editor.getLabel(); if (popupMenu.isZoomEnabled() && editor instanceof IZoomableEditor) { - label.setStyle("cursor: pointer; text-decoration: underline;"); + label.setZoomable(true); label.addEventListener(Events.ON_CLICK, new ZoomListener((IZoomableEditor) editor)); } @@ -540,6 +540,11 @@ DataStatusListener, IADTabpanel, VetoableChangeListener return; } + for (WEditor comp : editors) + { + comp.setMandatoryLabels(); + } + // Selective if (col > 0) {