diff options
author | Sopot Cela | 2013-05-29 14:28:09 +0000 |
---|---|---|
committer | Tom Schindl | 2013-05-29 14:28:09 +0000 |
commit | b2364c50f012e4b311be97c253dec0e05da43305 (patch) | |
tree | 66a9c7f9e36143d034da5082823cb65a40d42de3 /bundles | |
parent | 13f9e5cfaefb7ec2c215d86f7767c0497458ba17 (diff) | |
download | org.eclipse.efxclipse-b2364c50f012e4b311be97c253dec0e05da43305.tar.gz org.eclipse.efxclipse-b2364c50f012e4b311be97c253dec0e05da43305.tar.xz org.eclipse.efxclipse-b2364c50f012e4b311be97c253dec0e05da43305.zip |
NEW - bug 409364: [e4] Renderer does not support window adding at
runtime
Diffstat (limited to 'bundles')
-rwxr-xr-x | bundles/runtime/org.eclipse.fx.ui.workbench.fx/src/org/eclipse/fx/ui/workbench/fx/PartRenderingEngine.java | 32 |
1 files changed, 28 insertions, 4 deletions
diff --git a/bundles/runtime/org.eclipse.fx.ui.workbench.fx/src/org/eclipse/fx/ui/workbench/fx/PartRenderingEngine.java b/bundles/runtime/org.eclipse.fx.ui.workbench.fx/src/org/eclipse/fx/ui/workbench/fx/PartRenderingEngine.java index d2f3a17a8..bc8f3ca63 100755 --- a/bundles/runtime/org.eclipse.fx.ui.workbench.fx/src/org/eclipse/fx/ui/workbench/fx/PartRenderingEngine.java +++ b/bundles/runtime/org.eclipse.fx.ui.workbench.fx/src/org/eclipse/fx/ui/workbench/fx/PartRenderingEngine.java @@ -92,7 +92,7 @@ public class PartRenderingEngine implements IPresentationEngine { } void setupEventListener(IEventBroker eventBroker) { - eventBroker.subscribe(UIEvents.UIElement.TOPIC_TOBERENDERED, new EventHandler() { + EventHandler tbrEventHandler = new EventHandler() { public void handleEvent(Event event) { MUIElement changedObj = (MUIElement) event.getProperty(UIEvents.EventTags.ELEMENT); @@ -103,7 +103,31 @@ public class PartRenderingEngine implements IPresentationEngine { removeGui(changedObj); } } - }); + }; + eventBroker.subscribe(UIEvents.UIElement.TOPIC_TOBERENDERED, tbrEventHandler); + + EventHandler childrenHandler = new EventHandler() { + @SuppressWarnings("unchecked") + @Override + public void handleEvent(Event event) { + Object changedObj = event.getProperty(UIEvents.EventTags.ELEMENT); + if (changedObj instanceof MApplication){ + if (UIEvents.isADD(event)){ + //Using UIEvents because we don't have access to Utils from here + Iterable<MWindow> iterable = (Iterable<MWindow>) UIEvents.asIterable(event, UIEvents.EventTags.NEW_VALUE); + for (MWindow win: iterable) { + createGui(win); + } + } else if (UIEvents.isREMOVE(event)){ + Iterable<MWindow> iterable = (Iterable<MWindow>) UIEvents.asIterable(event, UIEvents.EventTags.OLD_VALUE); + for (MWindow win: iterable) { + removeGui(win); + } + } + } + } + }; + eventBroker.subscribe(UIEvents.ElementContainer.TOPIC_CHILDREN, childrenHandler); } public Object createGui(MUIElement element, Object parentWidget, IEclipseContext parentContext) { @@ -240,8 +264,8 @@ public class PartRenderingEngine implements IPresentationEngine { ? element.getCurSharedRef() : (MUIElement) ((EObject)element).eContainer(); - if( container != null ) { - AbstractRenderer<MUIElement, Object> parentRenderer = getRendererFor(container); + if( container != null || element instanceof MWindow ) { + AbstractRenderer<MUIElement, Object> parentRenderer = (AbstractRenderer<MUIElement, Object>) (container == null ? null : getRendererFor(container)); AbstractRenderer<MUIElement, Object> renderer = getRendererFor(element); if( renderer != null ) { |