* [ 1631888 ] Lazy loading of tab
This commit is contained in:
parent
b44d933df4
commit
548b8a1c46
|
@ -122,7 +122,7 @@ public class GridField
|
||||||
return;
|
return;
|
||||||
log.config("(" + m_vo.ColumnName + ")");
|
log.config("(" + m_vo.ColumnName + ")");
|
||||||
|
|
||||||
if (DisplayType.isLookup(m_vo.displayType))
|
if (DisplayType.isLookup(m_vo.displayType) && m_vo.IsDisplayed)
|
||||||
{
|
{
|
||||||
if (m_vo.lookupInfo == null)
|
if (m_vo.lookupInfo == null)
|
||||||
{
|
{
|
||||||
|
@ -673,6 +673,7 @@ public class GridField
|
||||||
|
|
||||||
// cannot be validated
|
// cannot be validated
|
||||||
if (!isLookup()
|
if (!isLookup()
|
||||||
|
|| m_lookup == null
|
||||||
|| m_lookup.containsKey(m_value))
|
|| m_lookup.containsKey(m_value))
|
||||||
return true;
|
return true;
|
||||||
// it's not null, a lookup and does not have the key
|
// it's not null, a lookup and does not have the key
|
||||||
|
|
|
@ -68,7 +68,7 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
|
||||||
m_mTable.setDeleteable(m_vo.IsDeleteable);
|
m_mTable.setDeleteable(m_vo.IsDeleteable);
|
||||||
// Load Tab
|
// Load Tab
|
||||||
// if (vo.TabNo == 0)
|
// if (vo.TabNo == 0)
|
||||||
initTab(false);
|
//initTab(false);
|
||||||
// else
|
// else
|
||||||
// {
|
// {
|
||||||
// m_loader = new Loader();
|
// m_loader = new Loader();
|
||||||
|
@ -169,6 +169,11 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
|
||||||
log.config ("fini");
|
log.config ("fini");
|
||||||
} // waitLoadComplete
|
} // waitLoadComplete
|
||||||
|
|
||||||
|
public boolean isLoadComplete()
|
||||||
|
{
|
||||||
|
return m_loadComplete;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize Tab with record from AD_Tab_v
|
* Initialize Tab with record from AD_Tab_v
|
||||||
* @param async async
|
* @param async async
|
||||||
|
@ -219,8 +224,8 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
|
||||||
m_Chats.clear();
|
m_Chats.clear();
|
||||||
m_Chats = null;
|
m_Chats = null;
|
||||||
//
|
//
|
||||||
m_vo.Fields.clear();
|
m_vo.getFields().clear();
|
||||||
m_vo.Fields = null;
|
//m_vo.Fields = null;
|
||||||
m_vo = null;
|
m_vo = null;
|
||||||
} // dispose
|
} // dispose
|
||||||
|
|
||||||
|
@ -234,13 +239,13 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
|
||||||
{
|
{
|
||||||
log.fine("#" + m_vo.TabNo);
|
log.fine("#" + m_vo.TabNo);
|
||||||
|
|
||||||
if (m_vo.Fields == null)
|
if (m_vo.getFields() == null)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// Add Fields
|
// Add Fields
|
||||||
for (int f = 0; f < m_vo.Fields.size(); f++)
|
for (int f = 0; f < m_vo.getFields().size(); f++)
|
||||||
{
|
{
|
||||||
GridFieldVO voF = (GridFieldVO)m_vo.Fields.get(f);
|
GridFieldVO voF = (GridFieldVO)m_vo.getFields().get(f);
|
||||||
// Add Fields to Table
|
// Add Fields to Table
|
||||||
if (voF != null)
|
if (voF != null)
|
||||||
{
|
{
|
||||||
|
@ -359,6 +364,7 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
|
||||||
*/
|
*/
|
||||||
public GridTable getTableModel()
|
public GridTable getTableModel()
|
||||||
{
|
{
|
||||||
|
if (!m_loadComplete) initTab(false);
|
||||||
return m_mTable;
|
return m_mTable;
|
||||||
} // getTableModel
|
} // getTableModel
|
||||||
|
|
||||||
|
@ -482,6 +488,8 @@ public class GridTab implements DataStatusListener, Evaluatee, Serializable
|
||||||
*/
|
*/
|
||||||
public void query (boolean onlyCurrentRows, int onlyCurrentDays, int maxRows)
|
public void query (boolean onlyCurrentRows, int onlyCurrentDays, int maxRows)
|
||||||
{
|
{
|
||||||
|
if (!m_loadComplete) initTab(false);
|
||||||
|
|
||||||
log.fine("#" + m_vo.TabNo
|
log.fine("#" + m_vo.TabNo
|
||||||
+ " - Only Current Rows=" + onlyCurrentRows
|
+ " - Only Current Rows=" + onlyCurrentRows
|
||||||
+ ", Days=" + onlyCurrentDays + ", Detail=" + isDetail());
|
+ ", Days=" + onlyCurrentDays + ", Detail=" + isDetail());
|
||||||
|
|
|
@ -119,55 +119,64 @@ public class GridWindow implements Serializable
|
||||||
GridTab mTab = new GridTab(mTabVO);
|
GridTab mTab = new GridTab(mTabVO);
|
||||||
Env.setContext(mTabVO.ctx, mTabVO.WindowNo, mTabVO.TabNo,
|
Env.setContext(mTabVO.ctx, mTabVO.WindowNo, mTabVO.TabNo,
|
||||||
"KeyColumnName", mTab.getKeyColumnName());
|
"KeyColumnName", mTab.getKeyColumnName());
|
||||||
// Set Link Column
|
|
||||||
if (mTab.getLinkColumnName().length() == 0)
|
|
||||||
{
|
|
||||||
ArrayList parents = mTab.getParentColumnNames();
|
|
||||||
// No Parent - no link
|
|
||||||
if (parents.size() == 0)
|
|
||||||
;
|
|
||||||
// Standard case
|
|
||||||
else if (parents.size() == 1)
|
|
||||||
mTab.setLinkColumnName((String)parents.get(0));
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// More than one parent.
|
|
||||||
// Search prior tabs for the "right parent"
|
|
||||||
// for all previous tabs
|
|
||||||
for (int i = 0; i < m_tabs.size(); i++)
|
|
||||||
{
|
|
||||||
// we have a tab
|
|
||||||
GridTab tab = (GridTab)m_tabs.get(i);
|
|
||||||
String tabKey = tab.getKeyColumnName(); // may be ""
|
|
||||||
// look, if one of our parents is the key of that tab
|
|
||||||
for (int j = 0; j < parents.size(); j++)
|
|
||||||
{
|
|
||||||
String parent = (String)parents.get(j);
|
|
||||||
if (parent.equals(tabKey))
|
|
||||||
{
|
|
||||||
mTab.setLinkColumnName(parent);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
// The tab could have more than one key, look into their parents
|
|
||||||
if (tabKey.equals(""))
|
|
||||||
for (int k = 0; k < tab.getParentColumnNames().size(); k++)
|
|
||||||
if (parent.equals(tab.getParentColumnNames().get(k)))
|
|
||||||
{
|
|
||||||
mTab.setLinkColumnName(parent);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} // for all parents
|
|
||||||
} // for all previous tabs
|
|
||||||
} // parents.size > 1
|
|
||||||
} // set Link column
|
|
||||||
mTab.setLinkColumnName(null); // overwrites, if AD_Column_ID exists
|
|
||||||
//
|
|
||||||
m_tabs.add(mTab);
|
m_tabs.add(mTab);
|
||||||
}
|
}
|
||||||
} // for all tabs
|
} // for all tabs
|
||||||
return true;
|
return true;
|
||||||
} // loadTabData
|
} // loadTabData
|
||||||
|
|
||||||
|
public void initTab(int index)
|
||||||
|
{
|
||||||
|
GridTab mTab = m_tabs.get(index);
|
||||||
|
if (mTab.isLoadComplete()) return;
|
||||||
|
mTab.initTab(false);
|
||||||
|
|
||||||
|
// Set Link Column
|
||||||
|
if (mTab.getLinkColumnName().length() == 0)
|
||||||
|
{
|
||||||
|
ArrayList parents = mTab.getParentColumnNames();
|
||||||
|
// No Parent - no link
|
||||||
|
if (parents.size() == 0)
|
||||||
|
;
|
||||||
|
// Standard case
|
||||||
|
else if (parents.size() == 1)
|
||||||
|
mTab.setLinkColumnName((String)parents.get(0));
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// More than one parent.
|
||||||
|
// Search prior tabs for the "right parent"
|
||||||
|
// for all previous tabs
|
||||||
|
for (int i = 0; i < m_tabs.size(); i++)
|
||||||
|
{
|
||||||
|
// we have a tab
|
||||||
|
GridTab tab = (GridTab)m_tabs.get(i);
|
||||||
|
String tabKey = tab.getKeyColumnName(); // may be ""
|
||||||
|
// look, if one of our parents is the key of that tab
|
||||||
|
for (int j = 0; j < parents.size(); j++)
|
||||||
|
{
|
||||||
|
String parent = (String)parents.get(j);
|
||||||
|
if (parent.equals(tabKey))
|
||||||
|
{
|
||||||
|
mTab.setLinkColumnName(parent);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// The tab could have more than one key, look into their parents
|
||||||
|
if (tabKey.equals(""))
|
||||||
|
for (int k = 0; k < tab.getParentColumnNames().size(); k++)
|
||||||
|
if (parent.equals(tab.getParentColumnNames().get(k)))
|
||||||
|
{
|
||||||
|
mTab.setLinkColumnName(parent);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} // for all parents
|
||||||
|
} // for all previous tabs
|
||||||
|
} // parents.size > 1
|
||||||
|
} // set Link column
|
||||||
|
mTab.setLinkColumnName(null); // overwrites, if AD_Column_ID exists
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get Window Icon
|
* Get Window Icon
|
||||||
* @return Icon for Window
|
* @return Icon for Window
|
||||||
|
@ -369,6 +378,7 @@ public class GridWindow implements Serializable
|
||||||
if (getHelp().length() != 0)
|
if (getHelp().length() != 0)
|
||||||
center.addElement(new p().addElement(getHelp()));
|
center.addElement(new p().addElement(getHelp()));
|
||||||
|
|
||||||
|
center.addElement(new a().setName("Tabs").addElement(new h3("Tabs").addAttribute("ALIGN", "left")));
|
||||||
// Links to Tabs
|
// Links to Tabs
|
||||||
int size = getTabCount();
|
int size = getTabCount();
|
||||||
p p = new p();
|
p p = new p();
|
||||||
|
@ -376,7 +386,8 @@ public class GridWindow implements Serializable
|
||||||
{
|
{
|
||||||
GridTab tab = getTab(i);
|
GridTab tab = getTab(i);
|
||||||
if (i > 0)
|
if (i > 0)
|
||||||
p.addElement(" - ");
|
p.addElement(" | ");
|
||||||
|
//p.addElement(" - ");
|
||||||
p.addElement(new a("#Tab"+i).addElement(tab.getName()));
|
p.addElement(new a("#Tab"+i).addElement(tab.getName()));
|
||||||
}
|
}
|
||||||
center.addElement(p)
|
center.addElement(p)
|
||||||
|
@ -386,11 +397,19 @@ public class GridWindow implements Serializable
|
||||||
for (int i = 0; i < size; i++)
|
for (int i = 0; i < size; i++)
|
||||||
{
|
{
|
||||||
table table = new table("1", "5", "5", "100%", null);
|
table table = new table("1", "5", "5", "100%", null);
|
||||||
|
table.setBorder("1px").setCellSpacing(0);
|
||||||
GridTab tab = getTab(i);
|
GridTab tab = getTab(i);
|
||||||
|
table tabHeader = new table();
|
||||||
|
tabHeader.setBorder("0").setCellPadding(0).setCellSpacing(0);
|
||||||
|
tabHeader.addElement(new tr()
|
||||||
|
.addElement(new td().addElement(new a().setName("Tab" + i)
|
||||||
|
.addElement(new h2(Msg.getMsg(Env.getCtx(), "Tab") + ": " + tab.getName()))))
|
||||||
|
.addElement(new td().addElement(WebDoc.NBSP).addElement(WebDoc.NBSP))
|
||||||
|
.addElement(new a("#Tabs").addElement("..").addAttribute("title", "Up one level")));
|
||||||
tr tr = new tr()
|
tr tr = new tr()
|
||||||
.addElement(new th()
|
.addElement(new th()
|
||||||
.addElement(new a().setName("Tab" + i)
|
.addElement(tabHeader));
|
||||||
.addElement(new h2(Msg.getMsg(Env.getCtx(), "Tab") + ": " + tab.getName()))));
|
|
||||||
if (tab.getDescription().length() != 0)
|
if (tab.getDescription().length() != 0)
|
||||||
tr.addElement(new th()
|
tr.addElement(new th()
|
||||||
.addElement(new i(tab.getDescription())));
|
.addElement(new i(tab.getDescription())));
|
||||||
|
@ -404,6 +423,9 @@ public class GridWindow implements Serializable
|
||||||
td.addElement(new p().addElement(tab.getHelp()));
|
td.addElement(new p().addElement(tab.getHelp()));
|
||||||
// Links to Fields
|
// Links to Fields
|
||||||
p = new p();
|
p = new p();
|
||||||
|
p.addElement(new a().setName("Fields"+i).addElement(new h4("Fields").addAttribute("ALIGN", "left")));
|
||||||
|
if (!tab.isLoadComplete())
|
||||||
|
this.initTab(i);
|
||||||
for (int j = 0; j < tab.getFieldCount(); j++)
|
for (int j = 0; j < tab.getFieldCount(); j++)
|
||||||
{
|
{
|
||||||
GridField field = tab.getField(j);
|
GridField field = tab.getField(j);
|
||||||
|
@ -411,7 +433,8 @@ public class GridWindow implements Serializable
|
||||||
if (hdr != null && hdr.length() > 0)
|
if (hdr != null && hdr.length() > 0)
|
||||||
{
|
{
|
||||||
if (j > 0)
|
if (j > 0)
|
||||||
p.addElement(" - ");
|
p.addElement(" | ");
|
||||||
|
//p.addElement(" - ");
|
||||||
p.addElement(new a("#Field" + i + j, hdr));
|
p.addElement(new a("#Field" + i + j, hdr));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -425,10 +448,16 @@ public class GridWindow implements Serializable
|
||||||
String hdr = field.getHeader();
|
String hdr = field.getHeader();
|
||||||
if (hdr != null && hdr.length() > 0)
|
if (hdr != null && hdr.length() > 0)
|
||||||
{
|
{
|
||||||
td = new td().setColSpan(2)
|
table fieldHeader = new table();
|
||||||
.addElement(new a().setName("Field" + i + j)
|
fieldHeader.setBorder("0").setCellPadding(0).setCellSpacing(0);
|
||||||
.addElement(new h3(Msg.getMsg(Env.getCtx(), "Field") + ": " + hdr))
|
fieldHeader.addElement(new tr()
|
||||||
);
|
.addElement(new td().addElement(new a().setName("Field" + i + j)
|
||||||
|
.addElement(new h3(Msg.getMsg(Env.getCtx(), "Field") + ": " + hdr)))
|
||||||
|
.addElement(new td().addElement(WebDoc.NBSP).addElement(WebDoc.NBSP))
|
||||||
|
.addElement(new strong().addElement(new a("#Fields"+i).addElement("..").addAttribute("title", "Up one level")))));
|
||||||
|
|
||||||
|
td = new td().setColSpan(2).addElement(fieldHeader);
|
||||||
|
|
||||||
if (field.getDescription().length() != 0)
|
if (field.getDescription().length() != 0)
|
||||||
td.addElement(new i(field.getDescription()));
|
td.addElement(new i(field.getDescription()));
|
||||||
//
|
//
|
||||||
|
|
Loading…
Reference in New Issue