diff options
author | Claudio Guglielmo | 2021-06-07 14:38:49 +0000 |
---|---|---|
committer | Claudio Guglielmo | 2021-06-07 14:38:49 +0000 |
commit | c475ff14b9f40cb8b4ac0b3b4703bd8bebe23b68 (patch) | |
tree | 8085f93bd83b7de671e04bfff7bfac8449566741 | |
parent | 57a9c6235be25183d320246173bd816c81b02d99 (diff) | |
download | org.eclipse.scout.rt-features/cgu/poc_lazy_outline.tar.gz org.eclipse.scout.rt-features/cgu/poc_lazy_outline.tar.xz org.eclipse.scout.rt-features/cgu/poc_lazy_outline.zip |
POC: lazy loading outline (WIP)releafeatures/cgu/poc_lazy_outlinefeatures/cgu/poc_lazy_outline
4 files changed, 25 insertions, 7 deletions
diff --git a/org.eclipse.scout.rt.client/src/main/java/org/eclipse/scout/rt/client/ui/basic/tree/AbstractTree.java b/org.eclipse.scout.rt.client/src/main/java/org/eclipse/scout/rt/client/ui/basic/tree/AbstractTree.java index 122eb3822a..e33f60fa5b 100644 --- a/org.eclipse.scout.rt.client/src/main/java/org/eclipse/scout/rt/client/ui/basic/tree/AbstractTree.java +++ b/org.eclipse.scout.rt.client/src/main/java/org/eclipse/scout/rt/client/ui/basic/tree/AbstractTree.java @@ -707,7 +707,7 @@ public abstract class AbstractTree extends AbstractWidget implements ITree, ICon * Runtime */ @Override - protected final void initInternal() { + protected void initInternal() { super.initInternal(); initTreeInternal(); interceptInitTree(); @@ -1097,7 +1097,7 @@ public abstract class AbstractTree extends AbstractWidget implements ITree, ICon if (m_rootNode != null) { m_rootNode.setTreeInternal(null, true); // inform root of remove - root.nodeRemovedNotify(); + m_rootNode.nodeRemovedNotify(); } m_rootNode = root; if (m_rootNode != null) { diff --git a/org.eclipse.scout.rt.client/src/main/java/org/eclipse/scout/rt/client/ui/desktop/AbstractDesktop.java b/org.eclipse.scout.rt.client/src/main/java/org/eclipse/scout/rt/client/ui/desktop/AbstractDesktop.java index e0ca703d37..f035d00333 100644 --- a/org.eclipse.scout.rt.client/src/main/java/org/eclipse/scout/rt/client/ui/desktop/AbstractDesktop.java +++ b/org.eclipse.scout.rt.client/src/main/java/org/eclipse/scout/rt/client/ui/desktop/AbstractDesktop.java @@ -1208,7 +1208,10 @@ public abstract class AbstractDesktop extends AbstractWidget implements IDesktop BEANS.get(ExceptionHandler.class).handle(e); } } - m_outline.setNodeExpanded(m_outline.getRootNode(), true); + if (m_outline.getRootNode() != null) { + // XXX CGU Wieso macht man das hier und nicht in activate? + m_outline.setNodeExpanded(m_outline.getRootNode(), true); + } setPageDetailForm(m_outline.getDetailForm()); setPageDetailTable(m_outline.getDetailTable()); setPageSearchForm(m_outline.getSearchForm(), true); diff --git a/org.eclipse.scout.rt.client/src/main/java/org/eclipse/scout/rt/client/ui/desktop/outline/AbstractOutline.java b/org.eclipse.scout.rt.client/src/main/java/org/eclipse/scout/rt/client/ui/desktop/outline/AbstractOutline.java index 23d9384415..7878cab91b 100644 --- a/org.eclipse.scout.rt.client/src/main/java/org/eclipse/scout/rt/client/ui/desktop/outline/AbstractOutline.java +++ b/org.eclipse.scout.rt.client/src/main/java/org/eclipse/scout/rt/client/ui/desktop/outline/AbstractOutline.java @@ -112,6 +112,14 @@ public abstract class AbstractOutline extends AbstractTree implements IOutline { } @Override + protected void initInternal() { + if (getRootNode() == null) { + return; + } + super.initInternal(); + } + + @Override public ClientRunContext createDisplayParentRunContext() { return ClientRunContexts .copyCurrent() @@ -301,14 +309,11 @@ public abstract class AbstractOutline extends AbstractTree implements IOutline { TreeEvent.TYPE_NODES_CHECKED); addNodeFilter(new P_TableFilterBasedTreeNodeFilter()); super.initConfig(); - IPage<?> rootPage = interceptCreateRootPage(); - setRootNode(rootPage); + setRootNode(null); setVisible(getConfiguredVisible()); setOrder(calculateViewOrder()); setNavigateButtonsVisible(getConfiguredNavigateButtonsVisible()); setOutlineOverviewVisible(getConfiguredOutlineOverviewVisible()); - ensureDefaultDetailFormCreated(); - ensureDefaultDetailFormStarted(); } @Override @@ -814,6 +819,13 @@ public abstract class AbstractOutline extends AbstractTree implements IOutline { @Override public void activate() { + if (getRootNode() == null) { + IPage<?> rootPage = interceptCreateRootPage(); + setRootNode(rootPage); + ensureDefaultDetailFormCreated(); + ensureDefaultDetailFormStarted(); + initInternal(); + } interceptActivated(); } diff --git a/org.eclipse.scout.rt.ui.html/src/main/java/org/eclipse/scout/rt/ui/html/json/tree/JsonTree.java b/org.eclipse.scout.rt.ui.html/src/main/java/org/eclipse/scout/rt/ui/html/json/tree/JsonTree.java index 21c245cca8..6a15ca2ba2 100644 --- a/org.eclipse.scout.rt.ui.html/src/main/java/org/eclipse/scout/rt/ui/html/json/tree/JsonTree.java +++ b/org.eclipse.scout.rt.ui.html/src/main/java/org/eclipse/scout/rt/ui/html/json/tree/JsonTree.java @@ -894,6 +894,9 @@ public class JsonTree<TREE extends ITree> extends AbstractJsonWidget<TREE> imple protected List<ITreeNode> getTopLevelNodes() { ITreeNode rootNode = getModel().getRootNode(); + if (rootNode == null) { + return new ArrayList<>(); + } if (getModel().isRootNodeVisible()) { return CollectionUtility.arrayList(rootNode); } |