IDEMPIERE-818 Zk: Focus always move back to first form field even when it is not needed.
This commit is contained in:
parent
2475700b99
commit
97ede121b8
|
@ -40,6 +40,7 @@ import org.adempiere.webui.component.NumberBox;
|
||||||
import org.adempiere.webui.component.Row;
|
import org.adempiere.webui.component.Row;
|
||||||
import org.adempiere.webui.component.Rows;
|
import org.adempiere.webui.component.Rows;
|
||||||
import org.adempiere.webui.component.SimpleTreeModel;
|
import org.adempiere.webui.component.SimpleTreeModel;
|
||||||
|
import org.adempiere.webui.component.Urlbox;
|
||||||
import org.adempiere.webui.editor.IZoomableEditor;
|
import org.adempiere.webui.editor.IZoomableEditor;
|
||||||
import org.adempiere.webui.editor.WButtonEditor;
|
import org.adempiere.webui.editor.WButtonEditor;
|
||||||
import org.adempiere.webui.editor.WEditor;
|
import org.adempiere.webui.editor.WEditor;
|
||||||
|
@ -75,6 +76,7 @@ import org.compiere.util.Evaluatee;
|
||||||
import org.compiere.util.Msg;
|
import org.compiere.util.Msg;
|
||||||
import org.compiere.util.Util;
|
import org.compiere.util.Util;
|
||||||
import org.zkoss.zk.au.out.AuFocus;
|
import org.zkoss.zk.au.out.AuFocus;
|
||||||
|
import org.zkoss.zk.au.out.AuScript;
|
||||||
import org.zkoss.zk.ui.Component;
|
import org.zkoss.zk.ui.Component;
|
||||||
import org.zkoss.zk.ui.Executions;
|
import org.zkoss.zk.ui.Executions;
|
||||||
import org.zkoss.zk.ui.HtmlBasedComponent;
|
import org.zkoss.zk.ui.HtmlBasedComponent;
|
||||||
|
@ -968,6 +970,14 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void focusToFirstEditor() {
|
public void focusToFirstEditor() {
|
||||||
|
focusToFirstEditor(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param checkCurrent
|
||||||
|
*/
|
||||||
|
public void focusToFirstEditor(boolean checkCurrent) {
|
||||||
WEditor toFocus = null;
|
WEditor toFocus = null;
|
||||||
for (WEditor editor : editors) {
|
for (WEditor editor : editors) {
|
||||||
if (editor.isVisible() && editor.isReadWrite() && editor.getComponent().getParent() != null
|
if (editor.isVisible() && editor.isReadWrite() && editor.getComponent().getParent() != null
|
||||||
|
@ -977,7 +987,7 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (toFocus != null) {
|
if (toFocus != null) {
|
||||||
focusToEditor(toFocus);
|
focusToEditor(toFocus, checkCurrent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1316,7 +1326,7 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer
|
||||||
@Override
|
@Override
|
||||||
public void focus() {
|
public void focus() {
|
||||||
if (formContainer.isVisible())
|
if (formContainer.isVisible())
|
||||||
this.focusToFirstEditor();
|
this.focusToFirstEditor(true);
|
||||||
else
|
else
|
||||||
listPanel.focus();
|
listPanel.focus();
|
||||||
}
|
}
|
||||||
|
@ -1504,21 +1514,32 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer
|
||||||
}
|
}
|
||||||
if (found) {
|
if (found) {
|
||||||
if (editor.isVisible() && editor.isReadWrite()) {
|
if (editor.isVisible() && editor.isReadWrite()) {
|
||||||
focusToEditor(editor);
|
focusToEditor(editor, false);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void focusToEditor(WEditor toFocus) {
|
protected void focusToEditor(WEditor toFocus, boolean checkCurrent) {
|
||||||
Component c = toFocus.getComponent();
|
Component c = toFocus.getComponent();
|
||||||
if (c instanceof EditorBox) {
|
if (c instanceof EditorBox) {
|
||||||
c = ((EditorBox)c).getTextbox();
|
c = ((EditorBox)c).getTextbox();
|
||||||
} else if (c instanceof NumberBox) {
|
} else if (c instanceof NumberBox) {
|
||||||
c = ((NumberBox)c).getDecimalbox();
|
c = ((NumberBox)c).getDecimalbox();
|
||||||
|
} else if (c instanceof Urlbox) {
|
||||||
|
c = ((Urlbox)c).getTextbox();
|
||||||
}
|
}
|
||||||
|
if (!checkCurrent) {
|
||||||
((HtmlBasedComponent)c).focus();
|
((HtmlBasedComponent)c).focus();
|
||||||
|
} else {
|
||||||
|
StringBuilder script = new StringBuilder("var b=true;try{if (zk.currentFocus) {");
|
||||||
|
script.append("var p=zk.Widget.$('#").append(formContainer.getCenter().getUuid()).append("');");
|
||||||
|
script.append("if (zUtl.isAncestor(p, zk.currentFocus)) {");
|
||||||
|
script.append("b=false;}}}catch(error){}");
|
||||||
|
script.append("if(b){var w=zk.Widget.$('#").append(c.getUuid()).append("');w.focus(0);}");
|
||||||
|
Clients.response(new AuScript(script.toString()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,7 @@ import org.adempiere.util.GridRowCtx;
|
||||||
import org.adempiere.webui.component.Checkbox;
|
import org.adempiere.webui.component.Checkbox;
|
||||||
import org.adempiere.webui.component.EditorBox;
|
import org.adempiere.webui.component.EditorBox;
|
||||||
import org.adempiere.webui.component.NumberBox;
|
import org.adempiere.webui.component.NumberBox;
|
||||||
|
import org.adempiere.webui.component.Urlbox;
|
||||||
import org.adempiere.webui.editor.WButtonEditor;
|
import org.adempiere.webui.editor.WButtonEditor;
|
||||||
import org.adempiere.webui.editor.WEditor;
|
import org.adempiere.webui.editor.WEditor;
|
||||||
import org.adempiere.webui.editor.WEditorPopupMenu;
|
import org.adempiere.webui.editor.WEditorPopupMenu;
|
||||||
|
@ -608,6 +609,8 @@ public class GridTabRowRenderer implements RowRenderer<Object[]>, RowRendererExt
|
||||||
c = ((EditorBox)c).getTextbox();
|
c = ((EditorBox)c).getTextbox();
|
||||||
} else if (c instanceof NumberBox) {
|
} else if (c instanceof NumberBox) {
|
||||||
c = ((NumberBox)c).getDecimalbox();
|
c = ((NumberBox)c).getDecimalbox();
|
||||||
|
} else if (c instanceof Urlbox) {
|
||||||
|
c = ((Urlbox) c).getTextbox();
|
||||||
}
|
}
|
||||||
((HtmlBasedComponent)c).focus();
|
((HtmlBasedComponent)c).focus();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue