diff options
2 files changed, 37 insertions, 4 deletions
diff --git a/experimental/swt/org.eclipse.fx.runtime.swt.e4/src/org/eclipse/fx/runtime/swt/e4/internal/FXToSWTAdapterFunction.java b/experimental/swt/org.eclipse.fx.runtime.swt.e4/src/org/eclipse/fx/runtime/swt/e4/internal/FXToSWTAdapterFunction.java index 383c030c5..e5d4359a5 100644 --- a/experimental/swt/org.eclipse.fx.runtime.swt.e4/src/org/eclipse/fx/runtime/swt/e4/internal/FXToSWTAdapterFunction.java +++ b/experimental/swt/org.eclipse.fx.runtime.swt.e4/src/org/eclipse/fx/runtime/swt/e4/internal/FXToSWTAdapterFunction.java @@ -10,16 +10,32 @@ *******************************************************************************/ package org.eclipse.fx.runtime.swt.e4.internal; +import javafx.scene.Group; +import javafx.scene.layout.AnchorPane; import javafx.scene.layout.BorderPane; +import javafx.scene.layout.HBox; import org.eclipse.e4.core.contexts.ContextFunction; import org.eclipse.e4.core.contexts.IEclipseContext; import org.eclipse.swt.widgets.FX_SWT; public class FXToSWTAdapterFunction extends ContextFunction { + @Override public Object compute(IEclipseContext context) { - BorderPane p = context.get(BorderPane.class); - return FX_SWT.new_Composite(p); + BorderPane borderPane = context.get(BorderPane.class); + if (borderPane != null) + return FX_SWT.new_Composite(borderPane); + AnchorPane anchorPane = context.get(AnchorPane.class); + if (anchorPane != null) + return FX_SWT.new_Composite(anchorPane); + Group group = context.get(Group.class); + if (group != null) + return FX_SWT.new_Composite(group); + HBox hbox = context.get(HBox.class); + if (hbox != null) + return FX_SWT.new_Composite(hbox); + throw new NullPointerException("Could not create SWT Composite wrapper"); } + } diff --git a/experimental/swt/org.eclipse.fx.runtime.swt/src/org/eclipse/swt/widgets/FX_SWT.java b/experimental/swt/org.eclipse.fx.runtime.swt/src/org/eclipse/swt/widgets/FX_SWT.java index 2f5933cee..c434460d6 100644 --- a/experimental/swt/org.eclipse.fx.runtime.swt/src/org/eclipse/swt/widgets/FX_SWT.java +++ b/experimental/swt/org.eclipse.fx.runtime.swt/src/org/eclipse/swt/widgets/FX_SWT.java @@ -13,14 +13,15 @@ package org.eclipse.swt.widgets; import java.util.HashMap;
import java.util.Map;
-import java.util.WeakHashMap;
import javafx.event.EventHandler;
+import javafx.scene.Group;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.BorderPane;
+import javafx.scene.layout.HBox;
+import javafx.scene.layout.Priority;
import javafx.scene.layout.Region;
import javafx.stage.Stage;
-import javafx.stage.Window;
import javafx.stage.WindowEvent;
import org.eclipse.swt.SWT;
@@ -47,6 +48,21 @@ public class FX_SWT { return c;
}
+ public static Composite new_Composite(Group group) {
+ Composite c = new FXSWTEmbed(Display.getCurrent(), SWT.NONE);
+ c.setLayout(new FillLayout());
+ group.getChildren().add(c.internal_getNativeObject());
+ return c;
+ }
+
+ public static Composite new_Composite(HBox pane) {
+ Composite c = new FXSWTEmbed(Display.getCurrent(), SWT.NONE);
+ c.setLayout(new FillLayout());
+ pane.getChildren().add(c.internal_getNativeObject());
+ HBox.setHgrow(c.internal_getNativeObject(), Priority.ALWAYS);
+ return c;
+ }
+
static class FXSWTEmbed extends Composite {
private static Map<Stage, Shell> SHELL_MAP = new HashMap<>();
FXSWTEmbed(Display display, int style) {
@@ -74,4 +90,5 @@ public class FX_SWT { return s;
}
}
+
}
|