IDEMPIERE-1230 Detail pane always created for level 1 tab even when there's no child tab. Further optimization and fixed problem with sortTab.
This commit is contained in:
parent
31426fbf60
commit
2952930ab4
|
@ -2423,7 +2423,7 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
|
||||||
// Table Open?
|
// Table Open?
|
||||||
if (!m_mTable.isOpen())
|
if (!m_mTable.isOpen())
|
||||||
{
|
{
|
||||||
log.severe ("Table not open");
|
log.log (Level.SEVERE, "Table not open", new Exception("Table not open"));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
// Row Count
|
// Row Count
|
||||||
|
|
|
@ -92,6 +92,7 @@ import org.zkoss.zul.Cell;
|
||||||
import org.zkoss.zul.Center;
|
import org.zkoss.zul.Center;
|
||||||
import org.zkoss.zul.DefaultTreeNode;
|
import org.zkoss.zul.DefaultTreeNode;
|
||||||
import org.zkoss.zul.Div;
|
import org.zkoss.zul.Div;
|
||||||
|
import org.zkoss.zul.RowRenderer;
|
||||||
import org.zkoss.zul.Separator;
|
import org.zkoss.zul.Separator;
|
||||||
import org.zkoss.zul.South;
|
import org.zkoss.zul.South;
|
||||||
import org.zkoss.zul.Space;
|
import org.zkoss.zul.Space;
|
||||||
|
@ -177,7 +178,7 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer
|
||||||
|
|
||||||
private GridTabDataBinder dataBinder;
|
private GridTabDataBinder dataBinder;
|
||||||
|
|
||||||
private boolean activated = false;
|
protected boolean activated = false;
|
||||||
|
|
||||||
private Group currentGroup;
|
private Group currentGroup;
|
||||||
|
|
||||||
|
@ -1517,9 +1518,15 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer
|
||||||
}
|
}
|
||||||
} else if (tabPanel != null && !tabPanel.getGridTab().isCurrent()) {
|
} else if (tabPanel != null && !tabPanel.getGridTab().isCurrent()) {
|
||||||
tabPanel.activate(true);
|
tabPanel.activate(true);
|
||||||
|
} else if (tabPanel != null && tabPanel.isGridView()) {
|
||||||
|
//ensure row indicator is not lost
|
||||||
|
RowRenderer<Object[]> renderer = tabPanel.getGridView().getListbox().getRowRenderer();
|
||||||
|
GridTabRowRenderer gtr = (GridTabRowRenderer)renderer;
|
||||||
|
org.zkoss.zul.Row row = gtr.getCurrentRow();
|
||||||
|
if (row != null)
|
||||||
|
gtr.setCurrentRow(row);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -189,7 +189,9 @@ public class CompositeADTabbox extends AbstractADTabbox
|
||||||
headerTab.switchRowPresentation();
|
headerTab.switchRowPresentation();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!headerTab.getGridTab().isSortTab())
|
||||||
headerTab.getGridTab().setCurrentRow(row, true);
|
headerTab.getGridTab().setCurrentRow(row, true);
|
||||||
|
|
||||||
if (headerTab.isGridView()) {
|
if (headerTab.isGridView()) {
|
||||||
if (headerTab.getGridTab().isNew() || headerTab.needSave(true, false)) {
|
if (headerTab.getGridTab().isNew() || headerTab.needSave(true, false)) {
|
||||||
headerTab.getGridView().onEditCurrentRow();
|
headerTab.getGridView().onEditCurrentRow();
|
||||||
|
@ -451,7 +453,6 @@ public class CompositeADTabbox extends AbstractADTabbox
|
||||||
|
|
||||||
private void onPostTabSelectionChanged(Boolean back) {
|
private void onPostTabSelectionChanged(Boolean back) {
|
||||||
if (headerTab instanceof ADTabpanel && !headerTab.getGridTab().isSortTab()) {
|
if (headerTab instanceof ADTabpanel && !headerTab.getGridTab().isSortTab()) {
|
||||||
|
|
||||||
List<Object[]> list = new ArrayList<Object[]>();
|
List<Object[]> list = new ArrayList<Object[]>();
|
||||||
int tabIndex = -1;
|
int tabIndex = -1;
|
||||||
int currentLevel = headerTab.getTabLevel();
|
int currentLevel = headerTab.getTabLevel();
|
||||||
|
@ -484,9 +485,8 @@ public class CompositeADTabbox extends AbstractADTabbox
|
||||||
headerTab.setDetailPane(detailPane);
|
headerTab.setDetailPane(detailPane);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Events.echoEvent(new Event(ON_TAB_SELECTION_CHANGED_ECHO_EVENT, layout, back));
|
|
||||||
}
|
}
|
||||||
|
Events.echoEvent(new Event(ON_TAB_SELECTION_CHANGED_ECHO_EVENT, layout, back));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onTabSelectionChangedEcho(Boolean back) {
|
private void onTabSelectionChangedEcho(Boolean back) {
|
||||||
|
@ -514,8 +514,22 @@ public class CompositeADTabbox extends AbstractADTabbox
|
||||||
tabPanel.setDetailPaneMode(true);
|
tabPanel.setDetailPaneMode(true);
|
||||||
detailPane.setADTabpanel(tabIndex, tabPanel, tabLabel, enable.booleanValue());
|
detailPane.setADTabpanel(tabIndex, tabPanel, tabLabel, enable.booleanValue());
|
||||||
}
|
}
|
||||||
|
if (back == null || !back.booleanValue()) {
|
||||||
detailPane.setSelectedIndex(0);
|
detailPane.setSelectedIndex(0);
|
||||||
activateDetailIfVisible();
|
activateDetailIfVisible();
|
||||||
|
} else {
|
||||||
|
if (((ADTabpanel) headerTab).isDetailVisible()) {
|
||||||
|
IADTabpanel selectDetailPanel = detailPane.getSelectedADTabpanel();
|
||||||
|
if (!selectDetailPanel.isVisible()) {
|
||||||
|
selectDetailPanel.setVisible(true);
|
||||||
|
}
|
||||||
|
if (!selectDetailPanel.isGridView()) {
|
||||||
|
selectDetailPanel.switchRowPresentation();
|
||||||
|
}
|
||||||
|
if (selectDetailPanel instanceof ADTabpanel)
|
||||||
|
((ADTabpanel)selectDetailPanel).activated = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -780,8 +794,9 @@ public class CompositeADTabbox extends AbstractADTabbox
|
||||||
} else {
|
} else {
|
||||||
tabPanel.query(false, 0, 0);
|
tabPanel.query(false, 0, 0);
|
||||||
}
|
}
|
||||||
if (!tabPanel.isVisible())
|
if (!tabPanel.isVisible()) {
|
||||||
tabPanel.setVisible(true);
|
tabPanel.setVisible(true);
|
||||||
|
}
|
||||||
if (!tabPanel.isGridView()) {
|
if (!tabPanel.isGridView()) {
|
||||||
tabPanel.switchRowPresentation();
|
tabPanel.switchRowPresentation();
|
||||||
}
|
}
|
||||||
|
@ -791,6 +806,11 @@ public class CompositeADTabbox extends AbstractADTabbox
|
||||||
headerTab.getDetailPane().updateToolbar(false, true);
|
headerTab.getDetailPane().updateToolbar(false, true);
|
||||||
} else {
|
} else {
|
||||||
tabPanel.dynamicDisplay(0);
|
tabPanel.dynamicDisplay(0);
|
||||||
|
RowRenderer<Object[]> renderer = tabPanel.getGridView().getListbox().getRowRenderer();
|
||||||
|
GridTabRowRenderer gtr = (GridTabRowRenderer)renderer;
|
||||||
|
Row row = gtr.getCurrentRow();
|
||||||
|
if (row != null)
|
||||||
|
gtr.setCurrentRow(row);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue