IDEMPIERE-123 Embedded Tab Enhancement
(transplanted from 9e9c9b9a7660697b9cb35c4ce88abe195c2b0828)
This commit is contained in:
parent
533e1c0a72
commit
857badd5fc
|
@ -311,10 +311,15 @@ DataStatusListener, IADTabpanel, VetoableChangeListener
|
||||||
rows.appendChild(row);
|
rows.appendChild(row);
|
||||||
includedTabFooter.put(field.getIncluded_Tab_ID(), (Groupfoot)row);
|
includedTabFooter.put(field.getIncluded_Tab_ID(), (Groupfoot)row);
|
||||||
|
|
||||||
|
row = new Row();
|
||||||
|
row.setSpans("5");
|
||||||
|
row.appendChild(new Separator());
|
||||||
|
rows.appendChild(row);
|
||||||
|
|
||||||
for (EmbeddedPanel ep : includedPanel) {
|
for (EmbeddedPanel ep : includedPanel) {
|
||||||
if (ep.adTabId == field.getIncluded_Tab_ID()) {
|
if (ep.adTabId == field.getIncluded_Tab_ID()) {
|
||||||
ep.group = includedTab.get(ep.adTabId);
|
ep.group = includedTab.get(ep.adTabId);
|
||||||
createEmbeddedPanelUI(ep);
|
createEmbeddedPanelUI(ep, field.getDisplayLength());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1045,6 +1050,20 @@ DataStatusListener, IADTabpanel, VetoableChangeListener
|
||||||
*/
|
*/
|
||||||
public void embed(Properties ctx, int windowNo, GridWindow gridWindow,
|
public void embed(Properties ctx, int windowNo, GridWindow gridWindow,
|
||||||
int adTabId, int tabIndex, IADTabpanel tabPanel) {
|
int adTabId, int tabIndex, IADTabpanel tabPanel) {
|
||||||
|
embed(ctx, windowNo, gridWindow, adTabId, tabIndex, tabPanel, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Embed detail tab
|
||||||
|
* @param ctx
|
||||||
|
* @param windowNo
|
||||||
|
* @param gridWindow
|
||||||
|
* @param adTabId
|
||||||
|
* @param tabIndex
|
||||||
|
* @param tabPanel
|
||||||
|
*/
|
||||||
|
public void embed(Properties ctx, int windowNo, GridWindow gridWindow,
|
||||||
|
int adTabId, int tabIndex, IADTabpanel tabPanel, int height) {
|
||||||
EmbeddedPanel ep = new EmbeddedPanel();
|
EmbeddedPanel ep = new EmbeddedPanel();
|
||||||
ep.tabPanel = tabPanel;
|
ep.tabPanel = tabPanel;
|
||||||
ep.adTabId = adTabId;
|
ep.adTabId = adTabId;
|
||||||
|
@ -1061,7 +1080,7 @@ DataStatusListener, IADTabpanel, VetoableChangeListener
|
||||||
ep.windowPanel = panel;
|
ep.windowPanel = panel;
|
||||||
|
|
||||||
if (group != null) {
|
if (group != null) {
|
||||||
createEmbeddedPanelUI(ep);
|
createEmbeddedPanelUI(ep, height);
|
||||||
if (active)
|
if (active)
|
||||||
activateChild(true, ep);
|
activateChild(true, ep);
|
||||||
}
|
}
|
||||||
|
@ -1086,19 +1105,22 @@ DataStatusListener, IADTabpanel, VetoableChangeListener
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createEmbeddedPanelUI(EmbeddedPanel ep) {
|
private void createEmbeddedPanelUI(EmbeddedPanel ep, int height) {
|
||||||
org.zkoss.zul.Row row = new Row();
|
org.zkoss.zul.Row row = new Row();
|
||||||
row.setSpans("5");
|
row.setSpans("5");
|
||||||
grid.getRows().insertBefore(row, includedTabFooter.get(ep.adTabId));
|
grid.getRows().insertBefore(row, includedTabFooter.get(ep.adTabId));
|
||||||
ep.windowPanel.createPart(row);
|
ep.windowPanel.createPart(row);
|
||||||
ep.windowPanel.getComponent().setWidth("100%");
|
ep.windowPanel.getComponent().setWidth("100%");
|
||||||
ep.windowPanel.getComponent().setStyle("position: relative");
|
ep.windowPanel.getComponent().setStyle("position: relative;");
|
||||||
|
//for backward compatibility, only treat display length > 50 as height for the embedded panel
|
||||||
|
if (height > 50)
|
||||||
|
ep.windowPanel.getComponent().setHeight(height + "px");
|
||||||
|
else
|
||||||
ep.windowPanel.getComponent().setHeight("400px");
|
ep.windowPanel.getComponent().setHeight("400px");
|
||||||
|
|
||||||
Label title = new Label(ep.gridWindow.getTab(ep.tabIndex).getName());
|
Label title = new Label(ep.gridWindow.getTab(ep.tabIndex).getName());
|
||||||
ep.group.appendChild(title);
|
ep.group.appendChild(title);
|
||||||
ep.group.appendChild(ep.windowPanel.getToolbar());
|
ep.group.appendChild(ep.windowPanel.getToolbar());
|
||||||
ep.windowPanel.getStatusBar().setZclass("z-group-foot");
|
|
||||||
ep.windowPanel.initPanel(-1, null);
|
ep.windowPanel.initPanel(-1, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -104,6 +104,7 @@ public class ADWindowPanel extends AbstractADWindowPanel
|
||||||
layout.setPage(page);
|
layout.setPage(page);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//toolbar would be added to group for embedded tab
|
||||||
if (!isEmbedded())
|
if (!isEmbedded())
|
||||||
{
|
{
|
||||||
North n = new North();
|
North n = new North();
|
||||||
|
@ -115,10 +116,22 @@ public class ADWindowPanel extends AbstractADWindowPanel
|
||||||
toolbar.setWindowNo(getWindowNo());
|
toolbar.setWindowNo(getWindowNo());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//status bar on top for embedded tab
|
||||||
|
if (!isEmbedded())
|
||||||
|
{
|
||||||
South s = new South();
|
South s = new South();
|
||||||
layout.appendChild(s);
|
layout.appendChild(s);
|
||||||
s.setCollapsible(false);
|
s.setCollapsible(false);
|
||||||
statusBar.setParent(s);
|
statusBar.setParent(s);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
North n = new North();
|
||||||
|
layout.appendChild(n);
|
||||||
|
n.setCollapsible(false);
|
||||||
|
statusBar.setParent(n);
|
||||||
|
}
|
||||||
|
|
||||||
LayoutUtils.addSclass("adwindow-status", statusBar);
|
LayoutUtils.addSclass("adwindow-status", statusBar);
|
||||||
|
|
||||||
if (!isEmbedded() && adTab.isUseExternalSelection())
|
if (!isEmbedded() && adTab.isUseExternalSelection())
|
||||||
|
|
|
@ -164,6 +164,8 @@ public abstract class AbstractADWindowPanel extends AbstractUIPart implements To
|
||||||
|
|
||||||
protected Map<Integer, ADTabpanel> includedMap = new HashMap<Integer, ADTabpanel>();
|
protected Map<Integer, ADTabpanel> includedMap = new HashMap<Integer, ADTabpanel>();
|
||||||
|
|
||||||
|
protected Map<Integer, GridField> includedFieldMap = new HashMap<Integer, GridField>();
|
||||||
|
|
||||||
private IADTabpanel embeddedTabPanel;
|
private IADTabpanel embeddedTabPanel;
|
||||||
|
|
||||||
private boolean m_findCreateNew;
|
private boolean m_findCreateNew;
|
||||||
|
@ -577,12 +579,14 @@ public abstract class AbstractADWindowPanel extends AbstractUIPart implements To
|
||||||
if (fields[i].getIncluded_Tab_ID() > 0)
|
if (fields[i].getIncluded_Tab_ID() > 0)
|
||||||
{
|
{
|
||||||
includedMap.put(fields[i].getIncluded_Tab_ID(), fTabPanel);
|
includedMap.put(fields[i].getIncluded_Tab_ID(), fTabPanel);
|
||||||
|
includedFieldMap.put(fields[i].getIncluded_Tab_ID(), fields[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (includedMap.containsKey(gTab.getAD_Tab_ID()))
|
if (includedMap.containsKey(gTab.getAD_Tab_ID()))
|
||||||
{
|
{
|
||||||
includedMap.get(gTab.getAD_Tab_ID()).embed(ctx, curWindowNo, gridWindow, gTab.getAD_Tab_ID(), tabIndex, fTabPanel);
|
includedMap.get(gTab.getAD_Tab_ID()).embed(ctx, curWindowNo, gridWindow, gTab.getAD_Tab_ID(), tabIndex, fTabPanel,
|
||||||
|
includedFieldMap.get(gTab.getAD_Tab_ID()).getDisplayLength());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue