Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Schindl2013-05-29 09:19:13 +0000
committerTom Schindl2013-05-29 09:19:13 +0000
commit3248e341b6e9b94fa360bf6a5ebe286be19a1e46 (patch)
tree78e9b9eaed1120c66700a461c257c3b583a1e9f2 /bundles
parentf32fdd009bb6bdb2b0487df02614cdeb9dde0108 (diff)
downloadorg.eclipse.efxclipse-3248e341b6e9b94fa360bf6a5ebe286be19a1e46.tar.gz
org.eclipse.efxclipse-3248e341b6e9b94fa360bf6a5ebe286be19a1e46.tar.xz
org.eclipse.efxclipse-3248e341b6e9b94fa360bf6a5ebe286be19a1e46.zip
NEW - bug 409340: [e4] Add support for min/max
Diffstat (limited to 'bundles')
-rwxr-xr-xbundles/runtime/org.eclipse.fx.ui.workbench.renderers.base/src/org/eclipse/fx/ui/workbench/renderers/base/BaseStackRenderer.java2
-rwxr-xr-xbundles/runtime/org.eclipse.fx.ui.workbench.renderers.fx/META-INF/MANIFEST.MF4
-rwxr-xr-xbundles/runtime/org.eclipse.fx.ui.workbench.renderers.fx/src/org/eclipse/fx/ui/workbench/renderers/fx/DefStackRenderer.java53
-rw-r--r--bundles/runtime/org.eclipse.fx.ui.workbench.renderers.fx/src/org/eclipse/fx/ui/workbench/renderers/fx/widget/MinMaxGroup.java141
-rw-r--r--bundles/runtime/org.eclipse.fx.ui.workbench.renderers.fx/src/org/eclipse/fx/ui/workbench/renderers/fx/widget/StyleableMinMaxGroup.java94
-rwxr-xr-xbundles/runtime/org.eclipse.fx.ui.workbench.renderers.fx/src/org/eclipse/fx/ui/workbench/renderers/fx/widget/WLayoutedWidgetImpl.java7
6 files changed, 281 insertions, 20 deletions
diff --git a/bundles/runtime/org.eclipse.fx.ui.workbench.renderers.base/src/org/eclipse/fx/ui/workbench/renderers/base/BaseStackRenderer.java b/bundles/runtime/org.eclipse.fx.ui.workbench.renderers.base/src/org/eclipse/fx/ui/workbench/renderers/base/BaseStackRenderer.java
index d603e16a2..e17c2e14a 100755
--- a/bundles/runtime/org.eclipse.fx.ui.workbench.renderers.base/src/org/eclipse/fx/ui/workbench/renderers/base/BaseStackRenderer.java
+++ b/bundles/runtime/org.eclipse.fx.ui.workbench.renderers.base/src/org/eclipse/fx/ui/workbench/renderers/base/BaseStackRenderer.java
@@ -39,6 +39,7 @@ 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.base.widget.WPlaceholderWidget;
import org.eclipse.fx.ui.workbench.renderers.base.widget.WStack;
+import org.eclipse.fx.ui.workbench.renderers.base.widget.WMinMaxableWidget.WMinMaxState;
import org.eclipse.fx.ui.workbench.renderers.base.widget.WStack.WStackItem;
import org.osgi.service.event.Event;
import org.osgi.service.event.EventHandler;
@@ -138,6 +139,7 @@ public abstract class BaseStackRenderer<N, I, IC> extends BaseRenderer<MPartStac
@Override
protected void initWidget(final MPartStack element, final WStack<N, I, IC> widget) {
super.initWidget(element, widget);
+// widget.setMinMaxState(WMinMaxState.MAXIMIZED);
widget.setMouseSelectedItemCallback(new WCallback<WStackItem<I, IC>, Void>() {
@Override
diff --git a/bundles/runtime/org.eclipse.fx.ui.workbench.renderers.fx/META-INF/MANIFEST.MF b/bundles/runtime/org.eclipse.fx.ui.workbench.renderers.fx/META-INF/MANIFEST.MF
index 7d1c279cf..09243d219 100755
--- a/bundles/runtime/org.eclipse.fx.ui.workbench.renderers.fx/META-INF/MANIFEST.MF
+++ b/bundles/runtime/org.eclipse.fx.ui.workbench.renderers.fx/META-INF/MANIFEST.MF
@@ -24,12 +24,14 @@ Require-Bundle: org.eclipse.e4.ui.model.workbench;bundle-version="0.10.1",
org.eclipse.fx.core;bundle-version="0.8.1",
org.eclipse.fx.ui.dialogs;bundle-version="0.8.1",
org.eclipse.emf.common;bundle-version="2.9.0",
- org.eclipse.emf.ecore;bundle-version="2.9.0"
+ org.eclipse.emf.ecore;bundle-version="2.9.0",
+ org.eclipse.fx.osgi.util;bundle-version="0.8.1"
Import-Package: javafx.application,
javafx.beans;version="2.0.0",
javafx.beans.property,
javafx.beans.value,
javafx.collections,
+ javafx.css;version="8.0.0",
javafx.event,
javafx.geometry,
javafx.scene,
diff --git a/bundles/runtime/org.eclipse.fx.ui.workbench.renderers.fx/src/org/eclipse/fx/ui/workbench/renderers/fx/DefStackRenderer.java b/bundles/runtime/org.eclipse.fx.ui.workbench.renderers.fx/src/org/eclipse/fx/ui/workbench/renderers/fx/DefStackRenderer.java
index 70d64ea18..3057050d3 100755
--- a/bundles/runtime/org.eclipse.fx.ui.workbench.renderers.fx/src/org/eclipse/fx/ui/workbench/renderers/fx/DefStackRenderer.java
+++ b/bundles/runtime/org.eclipse.fx.ui.workbench.renderers.fx/src/org/eclipse/fx/ui/workbench/renderers/fx/DefStackRenderer.java
@@ -25,6 +25,8 @@ import javafx.scene.control.TabPane;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.input.KeyEvent;
+import javafx.scene.layout.Pane;
+import javafx.scene.layout.StackPane;
import javafx.util.Callback;
import javax.annotation.PostConstruct;
@@ -43,6 +45,7 @@ import org.eclipse.fx.ui.workbench.renderers.base.BaseStackRenderer;
import org.eclipse.fx.ui.workbench.renderers.base.widget.WCallback;
import org.eclipse.fx.ui.workbench.renderers.base.widget.WStack;
import org.eclipse.fx.ui.workbench.renderers.base.widget.WStack.WStackItem;
+import org.eclipse.fx.ui.workbench.renderers.fx.widget.MinMaxGroup;
import org.eclipse.fx.ui.workbench.renderers.fx.widget.PaginationItem;
import org.eclipse.fx.ui.workbench.renderers.fx.widget.WLayoutedWidgetImpl;
@@ -63,12 +66,26 @@ public class DefStackRenderer extends BaseStackRenderer<Node,Object, Node> {
private WCallback<WStackItem<Object, Node>, Void> mouseSelectedItemCallback;
private WCallback<WStackItem<Object, Node>, Void> keySelectedItemCallback;
-// private WCallback<WMinMaxState, Void> minMaxCallback;
+ private WCallback<WMinMaxState, Void> minMaxCallback;
+ private MinMaxGroup minMaxGroup;
private boolean inKeyTraversal;
// @Inject
// private EModelService modelService;
+ @Override
+ protected Pane createStaticPane() {
+ return new StackPane() {
+ @Override
+ protected void layoutChildren() {
+ super.layoutChildren();
+ if( minMaxGroup != null ) {
+
+ }
+ }
+ };
+ }
+
public void setMouseSelectedItemCallback(WCallback<WStackItem<Object, Node>, Void> mouseSelectedItemCallback) {
this.mouseSelectedItemCallback = mouseSelectedItemCallback;
}
@@ -94,27 +111,27 @@ public class DefStackRenderer extends BaseStackRenderer<Node,Object, Node> {
@Override
public void setMinMaxCallback(WCallback<WMinMaxState, Void> minMaxCallback) {
-// this.minMaxCallback = minMaxCallback;
+ this.minMaxCallback = minMaxCallback;
}
@Override
public void setMinMaxState(WMinMaxState state) {
-// MinMaxState t = MinMaxState.RESTORED;
-// switch (state) {
-// case MAXIMIZED:
-// t = MinMaxState.MAXIMIZED;
-// break;
-// case MINIMIZED:
-// t = MinMaxState.MINIMIZED;
-// break;
-// case RESTORED:
-// t = MinMaxState.RESTORED;
-// break;
-// case NONE:
-// t = MinMaxState.NONE;
-// break;
-// }
-// getWidget().setMinMaxState(t);
+ if( state == WMinMaxState.NONE ) {
+ if( minMaxGroup != null ) {
+ ((Pane)getStaticLayoutNode()).getChildren().remove(minMaxGroup);
+ minMaxGroup = null;
+ }
+ } else {
+ if( minMaxGroup == null ) {
+ minMaxGroup = new MinMaxGroup();
+ minMaxGroup.setManaged(false);
+ minMaxGroup.setState(state);
+ ((Pane)getStaticLayoutNode()).getChildren().add(minMaxGroup);
+ } else {
+ minMaxGroup.setState(state);
+ ((Pane)getStaticLayoutNode()).requestLayout();
+ }
+ }
}
@Override
diff --git a/bundles/runtime/org.eclipse.fx.ui.workbench.renderers.fx/src/org/eclipse/fx/ui/workbench/renderers/fx/widget/MinMaxGroup.java b/bundles/runtime/org.eclipse.fx.ui.workbench.renderers.fx/src/org/eclipse/fx/ui/workbench/renderers/fx/widget/MinMaxGroup.java
new file mode 100644
index 000000000..3ad9d29df
--- /dev/null
+++ b/bundles/runtime/org.eclipse.fx.ui.workbench.renderers.fx/src/org/eclipse/fx/ui/workbench/renderers/fx/widget/MinMaxGroup.java
@@ -0,0 +1,141 @@
+/*******************************************************************************
+ * Copyright (c) 2013 BestSolution.at and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Tom Schindl <tom.schindl@bestsolution.at> - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.fx.ui.workbench.renderers.fx.widget;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import javafx.beans.property.ObjectProperty;
+import javafx.beans.property.SimpleObjectProperty;
+import javafx.scene.Group;
+import javafx.scene.Node;
+import javafx.scene.image.Image;
+import javafx.scene.image.ImageView;
+import javafx.scene.layout.HBox;
+import javafx.scene.paint.Color;
+import javafx.scene.shape.Rectangle;
+
+import org.eclipse.fx.core.log.Logger;
+import org.eclipse.fx.osgi.util.LoggerCreator;
+import org.eclipse.fx.ui.workbench.renderers.base.widget.WMinMaxableWidget.WMinMaxState;
+
+public class MinMaxGroup extends HBox {
+
+ protected ObjectProperty<Node> maximizeGraphic = new SimpleObjectProperty<>(this,"maximizeGraphic");
+ protected ObjectProperty<Node> minimizeGraphic = new SimpleObjectProperty<>(this,"minimizeGraphic");
+ protected ObjectProperty<Node> restoreGraphic = new SimpleObjectProperty<>(this,"restoreGraphic");
+
+ private static Logger LOGGER = LoggerCreator.createLogger(MinMaxGroup.class);
+
+ /**
+ *
+ */
+ public MinMaxGroup() {
+ maximizeGraphic.set(createMaxIcon());
+ minimizeGraphic.set(createMinIcon());
+ restoreGraphic.set(createRestoreIcon());
+
+ getChildren().setAll(minimizeGraphic.get(), maximizeGraphic.get());
+
+ }
+
+ private Node createMaxIcon() {
+ Group g = new Group();
+
+ Rectangle r = new Rectangle(10,10,Color.WHITE);
+ r.setStrokeWidth(1.0);
+ r.setStroke(Color.BLACK);
+ g.getChildren().add(r);
+
+ r = new Rectangle(10,2,Color.WHITE);
+ r.setStrokeWidth(1.0);
+ r.setStroke(Color.BLACK);
+ g.getChildren().add(r);
+
+ return g;
+ }
+
+ private Node createMinIcon() {
+ Rectangle r = new Rectangle(10,3,Color.WHITE);
+ r.setStrokeWidth(1.0);
+ r.setStroke(Color.BLACK);
+ return r;
+ }
+
+ private Node createRestoreIcon() {
+ Group g = new Group();
+
+ Rectangle r = new Rectangle(5,0,5,5);
+ r.setFill(Color.WHITE);
+ r.setStrokeWidth(1.0);
+ r.setStroke(Color.BLACK);
+ g.getChildren().add(r);
+
+ r = new Rectangle(5,0,5,1);
+ r.setFill(Color.BLACK);
+ r.setStroke(Color.BLACK);
+ g.getChildren().add(r);
+
+ r = new Rectangle(3,3,5,5);
+ r.setFill(Color.WHITE);
+ r.setStrokeWidth(1.0);
+ r.setStroke(Color.BLACK);
+ g.getChildren().add(r);
+
+ r = new Rectangle(3,3,5,1);
+ r.setFill(Color.BLACK);
+ r.setStroke(Color.BLACK);
+ g.getChildren().add(r);
+
+ return g;
+ }
+
+ private static final Node getImageView(String iconName) {
+ String path = "/icons/"+iconName+".png";
+ try(InputStream in = MinMaxGroup.class.getResourceAsStream(path)) {
+ return new ImageView(new Image(in));
+ } catch (IOException e) {
+ LOGGER.error("Unable to load '"+path+"'", e);
+ }
+ return null;
+ }
+
+ public ObjectProperty<Node> maximizeGraphicProperty() {
+ return maximizeGraphic;
+ }
+
+ public ObjectProperty<Node> minimizeGraphicProperty() {
+ return minimizeGraphic;
+ }
+
+ public ObjectProperty<Node> restoreGraphicProperty() {
+ return restoreGraphic;
+ }
+
+ public void setState(WMinMaxState state) {
+ switch (state) {
+ case NONE:
+ getChildren().clear();
+ break;
+ case MAXIMIZED:
+ getChildren().setAll(minimizeGraphic.get(), restoreGraphic.get());
+ break;
+ case MINIMIZED:
+ getChildren().setAll(restoreGraphic.get());
+ break;
+ case RESTORED:
+ getChildren().setAll(minimizeGraphic.get(), maximizeGraphic.get());
+ break;
+ default:
+ break;
+ }
+ }
+}
diff --git a/bundles/runtime/org.eclipse.fx.ui.workbench.renderers.fx/src/org/eclipse/fx/ui/workbench/renderers/fx/widget/StyleableMinMaxGroup.java b/bundles/runtime/org.eclipse.fx.ui.workbench.renderers.fx/src/org/eclipse/fx/ui/workbench/renderers/fx/widget/StyleableMinMaxGroup.java
new file mode 100644
index 000000000..5f00b5fe7
--- /dev/null
+++ b/bundles/runtime/org.eclipse.fx.ui.workbench.renderers.fx/src/org/eclipse/fx/ui/workbench/renderers/fx/widget/StyleableMinMaxGroup.java
@@ -0,0 +1,94 @@
+/*******************************************************************************
+ * Copyright (c) 2013 BestSolution.at and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Tom Schindl <tom.schindl@bestsolution.at> - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.fx.ui.workbench.renderers.fx.widget;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import javafx.beans.property.StringProperty;
+import javafx.css.CssMetaData;
+import javafx.css.StyleConverter;
+import javafx.css.Styleable;
+import javafx.css.StyleableProperty;
+import javafx.css.StyleableStringProperty;
+import javafx.scene.layout.StackPane;
+
+/**
+ * @author tomschindl
+ *
+ */
+public class StyleableMinMaxGroup extends MinMaxGroup {
+ private static final List<CssMetaData<? extends Styleable, ?>> STYLEABLES;
+
+ private static final CssMetaData<StyleableMinMaxGroup,String> MAXIMIZE_GRAPHIC =
+ new CssMetaData<StyleableMinMaxGroup,String>("-fx-graphic",
+ StringConverter.INSTANCE) {
+
+ @Override
+ public boolean isSettable(StyleableMinMaxGroup n) {
+ // Note that we care about the graphic, not imageUrl
+ return n.maximizeGraphic == null || !n.maximizeGraphic.isBound();
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public StyleableProperty<String> getStyleableProperty(StyleableMinMaxGroup n) {
+ return (StyleableProperty<String>)n.maximizeUrlProperty();
+ }
+ };
+
+ static {
+ final List<CssMetaData<? extends Styleable, ?>> styleables =
+ new ArrayList<CssMetaData<? extends Styleable, ?>>(StackPane.getClassCssMetaData());
+ STYLEABLES = Collections.unmodifiableList(styleables);
+ }
+
+ @Override
+ public List<CssMetaData<? extends Styleable, ?>> getCssMetaData() {
+ return STYLEABLES;
+ }
+
+ private StringProperty maximizeUrl;
+
+ private StringProperty maximizeUrlProperty() {
+ if( maximizeUrl == null ) {
+ maximizeUrl = new StyleableStringProperty() {
+
+ @Override
+ public CssMetaData<? extends Styleable, String> getCssMetaData() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public Object getBean() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public String getName() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ };
+ }
+ return maximizeUrl;
+ }
+
+
+
+ static class StringConverter extends StyleConverter<String, String> {
+ final static StringConverter INSTANCE = new StringConverter();
+ }
+}
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 31e063219..b39f51da8 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
@@ -13,6 +13,7 @@ package org.eclipse.fx.ui.workbench.renderers.fx.widget;
import java.util.List;
import javafx.scene.Node;
+import javafx.scene.layout.Pane;
import javafx.scene.layout.StackPane;
import javax.inject.Inject;
@@ -47,7 +48,7 @@ public abstract class WLayoutedWidgetImpl<N,NN extends Node,M extends MUIElement
}
protected Node createStaticLayoutNode() {
- StackPane staticLayoutGroup = new StackPane();
+ Pane staticLayoutGroup = createStaticPane();
Node n = getWidgetNode();
if( n != null ) {
staticLayoutGroup.getChildren().add(n);
@@ -57,6 +58,10 @@ public abstract class WLayoutedWidgetImpl<N,NN extends Node,M extends MUIElement
return staticLayoutGroup;
}
+ protected Pane createStaticPane() {
+ return new StackPane();
+ }
+
@Override
public void addStyleClasses(List<String> classnames) {
getWidgetNode().getStyleClass().addAll(classnames);

Back to the top