diff options
author | Tom Schindl | 2016-11-25 20:35:26 +0000 |
---|---|---|
committer | Tom Schindl | 2016-11-25 20:35:26 +0000 |
commit | 21845b5cc2713db7af7d5d2c46e2ed6dcd68e56d (patch) | |
tree | 64d925854142bce32640d619fb9bdb32f9ff8280 | |
parent | 89173129c335c37cc9d44c06aade0d01356d76c3 (diff) | |
download | org.eclipse.efxclipse-21845b5cc2713db7af7d5d2c46e2ed6dcd68e56d.tar.gz org.eclipse.efxclipse-21845b5cc2713db7af7d5d2c46e2ed6dcd68e56d.tar.xz org.eclipse.efxclipse-21845b5cc2713db7af7d5d2c46e2ed6dcd68e56d.zip |
refs #33
adding conditional feature to pause CSS/Layout for PartStack children
Change-Id: I44199344e062fe9b58a25be7d99b6e8b8f2fe005
-rwxr-xr-x | bundles/runtime/org.eclipse.fx.ui.workbench.renderers.fx/src/org/eclipse/fx/ui/workbench/renderers/fx/widget/WLayoutedWidgetImpl.java | 42 |
1 files changed, 33 insertions, 9 deletions
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 6febb05a5..7e0fd49fe 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 @@ package org.eclipse.fx.ui.workbench.renderers.fx.widget; 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.fx.ui.workbench.services.ModelService; 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 @@ public abstract class WLayoutedWidgetImpl<N, NN extends Node, M extends MUIEleme 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 @@ public abstract class WLayoutedWidgetImpl<N, NN extends Node, M extends MUIEleme 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 |