From b6272115b97725a08db10005ced12256213ddc68 Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Tue, 16 Oct 2012 15:26:59 +0800 Subject: [PATCH] IDEMPIERE-369 Master Detail layout improvements. 1) Fixed auto goes into detail mode for sort tab. 2) Fixed cna't goes back to parent tab after navigating to sort tab. 3) Fixed wrong icon for sort tab. --- .../adempiere/webui/adwindow/ADSortTab.java | 49 +++++++++---------- .../adwindow/AbstractADWindowContent.java | 3 +- .../webui/adwindow/CompositeADTabbox.java | 5 +- 3 files changed, 27 insertions(+), 30 deletions(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADSortTab.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADSortTab.java index 178db7c3e6..d81a81a2e4 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADSortTab.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADSortTab.java @@ -41,13 +41,13 @@ import org.compiere.util.DB; import org.compiere.util.Env; import org.compiere.util.Msg; import org.compiere.util.NamePair; -import org.zkoss.zhtml.Span; import org.zkoss.zk.au.out.AuFocus; import org.zkoss.zk.ui.event.DropEvent; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.Events; import org.zkoss.zk.ui.util.Clients; +import org.zkoss.zul.Hlayout; import org.zkoss.zul.Vbox; import org.zkoss.zul.event.ListDataEvent; @@ -86,8 +86,8 @@ public class ADSortTab extends Panel implements IADTabpanel this.gridTab = gridTab; m_AD_Table_ID = gridTab.getAD_Table_ID(); - this.setHeight("100%"); - } // VSortTab + this.setVflex("true"); + } // ADSortTab /** Logger */ static CLogger log = CLogger.getCLogger(ADSortTab.class); @@ -254,13 +254,10 @@ public class ADSortTab extends Panel implements IADTabpanel */ private void init() throws Exception { - this.setStyle("height: 100%; width: 100%;"); // noLabel.setValue("No"); yesLabel.setValue("Yes"); - yesList.setHeight("100%"); - noList.setHeight("100%"); yesList.setVflex(true); noList.setVflex(true); @@ -287,10 +284,10 @@ public class ADSortTab extends Panel implements IADTabpanel yesList.setSeltype("multiple"); noList.setSeltype("multiple"); - bAdd.setImage("images/Detail24.png"); + bAdd.setImage("images/Next24.png"); bAdd.addEventListener(Events.ON_CLICK, actionListener); - bRemove.setImage("images/Parent24.png"); + bRemove.setImage("images/Previous24.png"); bRemove.addEventListener(Events.ON_CLICK, actionListener); EventListener crossListMouseListener = new DragListener(); @@ -306,10 +303,10 @@ public class ADSortTab extends Panel implements IADTabpanel } }; - bUp.setImage("images/Previous24.png"); + bUp.setImage("images/Parent24.png"); bUp.addEventListener(Events.ON_CLICK, actionListener); - bDown.setImage("images/Next24.png"); + bDown.setImage("images/Detail24.png"); bDown.addEventListener(Events.ON_CLICK, actionListener); EventListener yesListMouseMotionListener = new EventListener() @@ -354,29 +351,28 @@ public class ADSortTab extends Panel implements IADTabpanel listHeader.appendChild(noLabel); listHeader.setParent(listHead); - Span span = new Span(); - span.setParent(this); - span.setStyle("height: 99%; display: inline-block; width: 40%;"); - span.appendChild(noList); + Hlayout hlayout = new Hlayout(); + hlayout.setVflex("true"); + hlayout.setHflex("true"); + hlayout.setStyle("margin: auto;"); + appendChild(hlayout); + noList.setHflex("1"); + noList.setVflex(true); + hlayout.appendChild(noList); Vbox vbox = new Vbox(); vbox.appendChild(bAdd); vbox.appendChild(bRemove); - span = new Span(); - span.setParent(this); - span.setStyle("height: 99%; display: inline-block; width: 46px"); - span.appendChild(vbox); + vbox.setWidth("46px"); + hlayout.appendChild(vbox); - span = new Span(); - span.setParent(this); - span.setStyle("height: 99%; display: inline-block; width: 40%"); - span.appendChild(yesList); + yesList.setVflex(true); + yesList.setHflex("1"); + hlayout.appendChild(yesList); vbox = new Vbox(); vbox.appendChild(bUp); vbox.appendChild(bDown); - span = new Span(); - span.setParent(this); - span.setStyle("height: 99%; display: inline-block; width: 46px"); - span.appendChild(vbox); + vbox.setWidth("46px"); + hlayout.appendChild(vbox); } // Init /* (non-Javadoc) @@ -933,6 +929,7 @@ public class ADSortTab extends Panel implements IADTabpanel @Override public void setDetailPaneMode(boolean detailMode, boolean vflex) { + this.setVflex(Boolean.toString(vflex)); } } //ADSortTab diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java index 7b7228cf9b..3030d26d4e 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java @@ -95,6 +95,7 @@ import org.zkoss.zk.ui.Session; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.EventListener; import org.zkoss.zk.ui.event.Events; +import org.zkoss.zk.ui.util.Clients; import org.zkoss.zul.Button; import org.zkoss.zul.Column; import org.zkoss.zul.Columns; @@ -1580,7 +1581,7 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements } if (dirtyTabpanel != null) { if (dirtyTabpanel == adTabbox.getSelectedDetailADTabpanel()) - onDetailRecord(); + Clients.scrollIntoView(dirtyTabpanel); focusToTabpanel(dirtyTabpanel); } else { focusToActivePanel(); diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/CompositeADTabbox.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/CompositeADTabbox.java index 392fb2a831..4ee6a73f3a 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/CompositeADTabbox.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/CompositeADTabbox.java @@ -593,14 +593,14 @@ public class CompositeADTabbox extends AbstractADTabbox @Override public boolean dataSave(boolean onSaveEvent) { IADTabpanel detail = getSelectedDetailADTabpanel(); - if (detail != null && detail.getGridTab().needSave(true, true)) { + if (detail != null && !detail.getGridTab().isSortTab() && detail.getGridTab().needSave(true, true)) { Execution execution = Executions.getCurrent(); if (execution != null) { execution.setAttribute(getClass().getName()+".dataAction", detail.getUuid()); } return detail.getGridTab().dataSave(onSaveEvent); } - return headerTab.getGridTab().dataSave(onSaveEvent); + return headerTab.getGridTab().isSortTab() ? true : headerTab.getGridTab().dataSave(onSaveEvent); } @Override @@ -637,7 +637,6 @@ public class CompositeADTabbox extends AbstractADTabbox if (tabPanel instanceof ADSortTab) { detailPane.invalidate(); detailPane.updateToolbar(false, true); - onDetailRecord(); } }