refs #33
adding conditional feature to pause CSS/Layout for PartStack children
Change-Id: I44199344e062fe9b58a25be7d99b6e8b8f2fe005
diff --git a/bundles/runtime/org.eclipse.fx.ui.workbench.renderers.fx/src/org/eclipse/fx/ui/workbench/renderers/fx/widget/WLayoutedWidgetImpl.java b/bundles/runtime/org.eclipse.fx.ui.workbench.renderers.fx/src/org/eclipse/fx/ui/workbench/renderers/fx/widget/WLayoutedWidgetImpl.java
index 6febb05..7e0fd49 100755
--- a/bundles/runtime/org.eclipse.fx.ui.workbench.renderers.fx/src/org/eclipse/fx/ui/workbench/renderers/fx/widget/WLayoutedWidgetImpl.java
+++ b/bundles/runtime/org.eclipse.fx.ui.workbench.renderers.fx/src/org/eclipse/fx/ui/workbench/renderers/fx/widget/WLayoutedWidgetImpl.java
@@ -12,24 +12,21 @@
import java.util.List;
-import javafx.scene.Node;
-import javafx.scene.input.DragEvent;
-import javafx.scene.input.MouseDragEvent;
-import javafx.scene.layout.Pane;
-import javafx.scene.layout.StackPane;
-
import javax.inject.Inject;
import javax.inject.Named;
import org.eclipse.e4.core.di.annotations.Optional;
import org.eclipse.e4.ui.model.application.ui.MUIElement;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.model.application.ui.basic.MPartStack;
import org.eclipse.e4.ui.workbench.UIEvents;
import org.eclipse.e4.ui.workbench.modeling.EModelService;
import org.eclipse.fx.core.log.Log;
import org.eclipse.fx.core.log.Logger;
import org.eclipse.fx.ui.controls.dnd.EFXDragEvent;
-import org.eclipse.fx.ui.workbench.renderers.base.services.DnDService;
+import org.eclipse.fx.ui.panes.LazyStackPane;
import org.eclipse.fx.ui.workbench.renderers.base.services.DnDFeedbackService;
+import org.eclipse.fx.ui.workbench.renderers.base.services.DnDService;
import org.eclipse.fx.ui.workbench.renderers.base.widget.WCallback;
import org.eclipse.fx.ui.workbench.renderers.base.widget.WLayoutedWidget;
import org.eclipse.fx.ui.workbench.renderers.fx.internal.DnDSupport;
@@ -38,6 +35,11 @@
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
+import javafx.scene.Node;
+import javafx.scene.input.DragEvent;
+import javafx.scene.input.MouseDragEvent;
+import javafx.scene.layout.Pane;
+
/**
* Base implementation for all {@link WLayoutedWidget} implementations
*
@@ -54,6 +56,8 @@
private double weight = 10;
private WCallback<@NonNull DropData, @Nullable Void> dropCallback;
+ private static final boolean OPTIMIZED_STACK_LAYOUT = Boolean.getBoolean("efxclipse.experimental.optstack"); //$NON-NLS-1$
+
@Inject
@NonNull
DnDFeedbackService feedbackService;
@@ -144,15 +148,35 @@
return this.dropCallback;
}
+ private boolean stateCheck(LazyStackPane.CheckType type) {
+ if( ! OPTIMIZED_STACK_LAYOUT ) {
+ return true;
+ }
+
+ if( getDomElement() instanceof MPart ) {
+ MPart p = (MPart) getDomElement();
+ if( p != null && ((MUIElement)p.getParent()) instanceof MPartStack ) {
+ if( p.getParent().getSelectedElement() == p ) {
+ return true;
+ } else {
+ return false;
+ }
+ } else {
+ return true;
+ }
+ } else {
+ return true;
+ }
+ }
+
/**
* Create the static layout pane
*
* @return the layout pane
*/
- @SuppressWarnings("static-method")
@NonNull
protected Pane createStaticPane() {
- return new StackPane();
+ return new LazyStackPane(this::stateCheck);
}
@Override