Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSopot Cela2013-05-29 14:28:09 +0000
committerTom Schindl2013-05-29 14:28:09 +0000
commitb2364c50f012e4b311be97c253dec0e05da43305 (patch)
tree66a9c7f9e36143d034da5082823cb65a40d42de3 /bundles
parent13f9e5cfaefb7ec2c215d86f7767c0497458ba17 (diff)
downloadorg.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-xbundles/runtime/org.eclipse.fx.ui.workbench.fx/src/org/eclipse/fx/ui/workbench/fx/PartRenderingEngine.java32
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 ) {

Back to the top