Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Schindl2015-02-05 11:14:29 +0000
committerTom Schindl2015-02-05 11:14:29 +0000
commit9ff9062acd2c84b1766cdbc9ee364e21b7f0c505 (patch)
tree5a896311986ab9c058dfed8def3556909ad93628 /experimental/compensator
parent81af1aebbed7bfd26c1bf3e6ef4b33379c7ae269 (diff)
downloadorg.eclipse.efxclipse-9ff9062acd2c84b1766cdbc9ee364e21b7f0c505.tar.gz
org.eclipse.efxclipse-9ff9062acd2c84b1766cdbc9ee364e21b7f0c505.tar.xz
org.eclipse.efxclipse-9ff9062acd2c84b1766cdbc9ee364e21b7f0c505.zip
adopt to changes to new custom windows
Diffstat (limited to 'experimental/compensator')
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.app/META-INF/MANIFEST.MF3
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.app/css/dark-default.css100
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.app/css/default.css100
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.app/src/org/eclipse/fx/code/compensator/app/ApplicationDecoration.fxgraph12
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.app/src/org/eclipse/fx/code/compensator/app/ApplicationDecoration.fxml13
-rw-r--r--experimental/compensator/org.eclipse.fx.code.compensator.app/src/org/eclipse/fx/code/compensator/app/CustomWindowPane.java235
6 files changed, 19 insertions, 444 deletions
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.app/META-INF/MANIFEST.MF b/experimental/compensator/org.eclipse.fx.code.compensator.app/META-INF/MANIFEST.MF
index d7260f214..17ec0188c 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.app/META-INF/MANIFEST.MF
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.app/META-INF/MANIFEST.MF
@@ -31,7 +31,8 @@ Require-Bundle: org.eclipse.fx.ui.workbench.fx,
org.eclipse.fx.code.compensator.project,
org.eclipse.fx.core.di,
org.eclipse.fx.ui.workbench.renderers.fx,
- org.eclipse.fx.ui.workbench.renderers.base;bundle-version="1.2.0"
+ org.eclipse.fx.ui.workbench.renderers.base;bundle-version="1.2.0",
+ org.eclipse.fx.ui.controls;bundle-version="2.0.0"
Import-Package: javafx.animation;version="2.0.0",
javafx.application;version="2.0.0",
javafx.beans;version="2.0.0",
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.app/css/dark-default.css b/experimental/compensator/org.eclipse.fx.code.compensator.app/css/dark-default.css
index 6920902a7..196bef392 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.app/css/dark-default.css
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.app/css/dark-default.css
@@ -19,104 +19,4 @@
.menu-bar {
-fx-background-color: transparent;
-}
-
-/* Main CSS-File */
-.dialog {
- -fx-padding: -1;
- -fx-border-insets: 0 10 10 0;
-}
-
-.dialog.cross-platform {
- -fx-border-width: 2;
- -fx-border-radius: 5 5 0 0;
- -fx-effect: dropshadow(three-pass-box, rgba(0, 0, 0, 0.2), 11, 0.0, 3, 3);
- -fx-border-color: #a3a3a3;
-}
-
-.dialog.heavyweight.cross-platform {
- /**
- * This allows for the drop shadow which otherwise won't appear. We don't
- * want this in lightweight dialogs as it will overwrite the background.
- */
- -fx-background-color: inherit;
-}
-
-.dialog.cross-platform:active {
- -fx-effect: dropshadow(three-pass-box, rgba(0, 0, 0, 0.4), 11, 0.0, 3, 3);
- -fx-border-color: #3e3e3e;
-}
-
-.dialog > * > .window-header {
- -fx-padding: 0 3 0 8;
- -fx-background-color: linear-gradient(#cccccc, #bababa 37%, #a6a6a6);
- -fx-background-radius: 5 5 0 0;
-}
-
-.dialog:active > * > .window-header {
- -fx-background-color: linear-gradient(#595959, #474747 37%, #343434);
-}
-
-.dialog > * > .window-header > * > .window-title {
- -fx-padding: 0 0 0 0;
- -fx-alignment: center;
- -fx-font-size: 1.166667em; /*15px;*/
- -fx-text-fill: #808080;
-}
-
-.dialog:active > * > .window-header > * > .window-title {
- -fx-text-fill: #ebebeb;
-}
-
-.dialog > .window-resize-corner {
- -fx-fill: transparent;
- -fx-cursor: se_resize;
-}
-
-.dialog > * > .window-header > * > .window-buttons > .window-button {
- -fx-background-color: transparent transparent;
- -fx-background-insets: 0, 1;
- -fx-background-radius: 2;
- -fx-padding: 0 0 0 0;
- -fx-alignment: center;
-}
-
-.dialog:active .window-button:hover {
- -fx-background-color: linear-gradient(#505050,#2d2d2d),
- linear-gradient(#a3a3a3, #8b8b8b 34%, #777777 36%, #777777 63%, #8b8b8b 65%, #adadad);
-}
-
-.dialog .window-buttons {
- -fx-padding: 6 0 0 0;
-}
-
-.dialog .window-button:pressed {
- -fx-background-color: linear-gradient(#515151,#202020),
- linear-gradient(#a3a3a3, #8b8b8b 34%, #777777 36%, #777777 63%, #8b8b8b 65%, #adadad);
-}
-
-.dialog .window-button > .graphic {
- -fx-background-color: #949494;
- -fx-scale-shape: false;
- -fx-padding: 4.5 4.5 4.5 4.5; /* Graphic is 9x9 px */
-}
-
-.dialog:active .window-button:hover > .graphic {
- -fx-background-color: #fefeff;
-}
-
-.dialog .window-button:pressed > .graphic {
- -fx-background-color: #cfcfcf;
-}
-
-.dialog .window-close-button > .graphic {
- -fx-shape: "M395.992,296.758l1.794-1.794l7.292,7.292l-1.795,1.794 L395.992,296.758z M403.256,294.992l1.794,1.794l-7.292,7.292l-1.794-1.795 L403.256,294.992z";
-}
-
-.dialog .window-minimize-button > .graphic {
- -fx-shape: "M420.012,299.248v2.537h-9.001v-2.537H420.012z";
-}
-
-.dialog .window-maximize-button > .graphic {
- -fx-shape: "M406.283,294.985h2.537v9.031h-2.538L406.283,294.985z M412.012,298.248v2.537h-9.001v-2.537H412.012z";
} \ No newline at end of file
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.app/css/default.css b/experimental/compensator/org.eclipse.fx.code.compensator.app/css/default.css
index 22c0d6afa..198cd70e2 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.app/css/default.css
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.app/css/default.css
@@ -15,104 +15,4 @@
.menu-bar {
-fx-background-color: transparent;
-}
-
-/* Main CSS-File */
-.dialog {
- -fx-padding: -1;
- -fx-border-insets: 0 10 10 0;
-}
-
-.dialog.cross-platform {
- -fx-border-width: 2;
- -fx-border-radius: 5 5 0 0;
- -fx-effect: dropshadow(three-pass-box, rgba(0, 0, 0, 0.2), 11, 0.0, 3, 3);
- -fx-border-color: #a3a3a3;
-}
-
-.dialog.heavyweight.cross-platform {
- /**
- * This allows for the drop shadow which otherwise won't appear. We don't
- * want this in lightweight dialogs as it will overwrite the background.
- */
- -fx-background-color: inherit;
-}
-
-.dialog.cross-platform:active {
- -fx-effect: dropshadow(three-pass-box, rgba(0, 0, 0, 0.4), 11, 0.0, 3, 3);
- -fx-border-color: #3e3e3e;
-}
-
-.dialog > * > .window-header {
- -fx-padding: 0 3 0 8;
- -fx-background-color: linear-gradient(#cccccc, #bababa 37%, #a6a6a6);
- -fx-background-radius: 5 5 0 0;
-}
-
-.dialog:active > * > .window-header {
- -fx-background-color: linear-gradient(#595959, #474747 37%, #343434);
-}
-
-.dialog > * > .window-header > * > .window-title {
- -fx-padding: 0 0 0 0;
- -fx-alignment: center;
- -fx-font-size: 1.166667em; /*15px;*/
- -fx-text-fill: #808080;
-}
-
-.dialog:active > * > .window-header > * > .window-title {
- -fx-text-fill: #ebebeb;
-}
-
-.dialog > .window-resize-corner {
- -fx-fill: transparent;
- -fx-cursor: se_resize;
-}
-
-.dialog > * > .window-header > * > .window-buttons > .window-button {
- -fx-background-color: transparent transparent;
- -fx-background-insets: 0, 1;
- -fx-background-radius: 2;
- -fx-padding: 0 0 0 0;
- -fx-alignment: center;
-}
-
-.dialog:active .window-button:hover {
- -fx-background-color: linear-gradient(#505050,#2d2d2d),
- linear-gradient(#a3a3a3, #8b8b8b 34%, #777777 36%, #777777 63%, #8b8b8b 65%, #adadad);
-}
-
-.dialog .window-buttons {
- -fx-padding: 6 0 0 0;
-}
-
-.dialog .window-button:pressed {
- -fx-background-color: linear-gradient(#515151,#202020),
- linear-gradient(#a3a3a3, #8b8b8b 34%, #777777 36%, #777777 63%, #8b8b8b 65%, #adadad);
-}
-
-.dialog .window-button > .graphic {
- -fx-background-color: #949494;
- -fx-scale-shape: false;
- -fx-padding: 4.5 4.5 4.5 4.5; /* Graphic is 9x9 px */
-}
-
-.dialog:active .window-button:hover > .graphic {
- -fx-background-color: #fefeff;
-}
-
-.dialog .window-button:pressed > .graphic {
- -fx-background-color: #cfcfcf;
-}
-
-.dialog .window-close-button > .graphic {
- -fx-shape: "M395.992,296.758l1.794-1.794l7.292,7.292l-1.795,1.794 L395.992,296.758z M403.256,294.992l1.794,1.794l-7.292,7.292l-1.794-1.795 L403.256,294.992z";
-}
-
-.dialog .window-minimize-button > .graphic {
- -fx-shape: "M420.012,299.248v2.537h-9.001v-2.537H420.012z";
-}
-
-.dialog .window-maximize-button > .graphic {
- -fx-shape: "M406.283,294.985h2.537v9.031h-2.538L406.283,294.985z M412.012,298.248v2.537h-9.001v-2.537H412.012z";
} \ No newline at end of file
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.app/src/org/eclipse/fx/code/compensator/app/ApplicationDecoration.fxgraph b/experimental/compensator/org.eclipse.fx.code.compensator.app/src/org/eclipse/fx/code/compensator/app/ApplicationDecoration.fxgraph
index 6bdac28b7..43c358f04 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.app/src/org/eclipse/fx/code/compensator/app/ApplicationDecoration.fxgraph
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.app/src/org/eclipse/fx/code/compensator/app/ApplicationDecoration.fxgraph
@@ -9,18 +9,24 @@ import org.eclipse.fx.ui.panes.FillLayoutPane
import javafx.scene.control.ToolBar
import javafx.scene.control.TextField
import javafx.scene.Group
+import org.eclipse.fx.ui.controls.stage.DefaultWindowPane
+import javafx.scene.layout.Pane
+import javafx.scene.layout.HBox
component ApplicationDecoration styledwith "/css/default.css" {
- CustomWindowPane {
+ DefaultWindowPane {
content : BorderPane {
top : ToolBar {
- ^id : "main-header",
items : [
+ Pane {
+ ^id : "menu-bar-area",
+ call HBox#hgrow : "ALWAYS"
+ },
TextField
]
},
center : FillLayoutPane {
- ^id : "trim-pane-container"
+ ^id : "client-area"
}
}
}
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.app/src/org/eclipse/fx/code/compensator/app/ApplicationDecoration.fxml b/experimental/compensator/org.eclipse.fx.code.compensator.app/src/org/eclipse/fx/code/compensator/app/ApplicationDecoration.fxml
index 8cef5fc3e..a3e8cfddc 100644
--- a/experimental/compensator/org.eclipse.fx.code.compensator.app/src/org/eclipse/fx/code/compensator/app/ApplicationDecoration.fxml
+++ b/experimental/compensator/org.eclipse.fx.code.compensator.app/src/org/eclipse/fx/code/compensator/app/ApplicationDecoration.fxml
@@ -7,24 +7,27 @@
<?import javafx.scene.control.TextField?>
<?import javafx.scene.control.ToolBar?>
<?import javafx.scene.layout.BorderPane?>
-<?import org.eclipse.fx.code.compensator.app.CustomWindowPane?>
+<?import javafx.scene.layout.HBox?>
+<?import javafx.scene.layout.Pane?>
+<?import org.eclipse.fx.ui.controls.stage.DefaultWindowPane?>
<?import org.eclipse.fx.ui.panes.FillLayoutPane?>
<?scenebuilder-stylesheet /css/default.css?>
-<CustomWindowPane xmlns:fx="http://javafx.com/fxml">
+<DefaultWindowPane xmlns:fx="http://javafx.com/fxml">
<content>
<BorderPane>
<top>
- <ToolBar id="main-header">
+ <ToolBar>
<items>
+ <Pane id="menu-bar-area" HBox.hgrow="ALWAYS"/>
<TextField/>
</items>
</ToolBar>
</top>
<center>
- <FillLayoutPane id="trim-pane-container"/>
+ <FillLayoutPane id="client-area"/>
</center>
</BorderPane>
</content>
-</CustomWindowPane>
+</DefaultWindowPane>
diff --git a/experimental/compensator/org.eclipse.fx.code.compensator.app/src/org/eclipse/fx/code/compensator/app/CustomWindowPane.java b/experimental/compensator/org.eclipse.fx.code.compensator.app/src/org/eclipse/fx/code/compensator/app/CustomWindowPane.java
deleted file mode 100644
index 788a9e755..000000000
--- a/experimental/compensator/org.eclipse.fx.code.compensator.app/src/org/eclipse/fx/code/compensator/app/CustomWindowPane.java
+++ /dev/null
@@ -1,235 +0,0 @@
-package org.eclipse.fx.code.compensator.app;
-
-
-import org.eclipse.fx.ui.workbench.renderers.fx.DefWindowRenderer.CustomRootContainer;
-
-import javafx.beans.property.ObjectProperty;
-import javafx.beans.property.ReadOnlyBooleanProperty;
-import javafx.css.PseudoClass;
-import javafx.event.ActionEvent;
-import javafx.event.EventHandler;
-import javafx.event.EventType;
-import javafx.geometry.Point2D;
-import javafx.geometry.Rectangle2D;
-import javafx.scene.Node;
-import javafx.scene.Scene;
-import javafx.scene.control.Button;
-import javafx.scene.control.Label;
-import javafx.scene.control.ToolBar;
-import javafx.scene.input.MouseEvent;
-import javafx.scene.layout.BorderPane;
-import javafx.scene.layout.HBox;
-import javafx.scene.layout.Pane;
-import javafx.scene.layout.Priority;
-import javafx.scene.layout.Region;
-import javafx.scene.layout.StackPane;
-import javafx.scene.shape.Rectangle;
-import javafx.stage.Screen;
-import javafx.stage.Stage;
-
-public class CustomWindowPane extends StackPane implements CustomRootContainer {
- private BorderPane root;
- private Rectangle resizeCorner;
- private ToolBar dialogTitleBar;
- private Label titleLabel;
- private WindowButton closeButton;
- private WindowButton minButton;
- private WindowButton maxButton;
- private HBox windowBtns;
- private double mouseDragDeltaX;
- private double mouseDragDeltaY;
- private Rectangle2D backupWindowBounds;
-
- protected static final int HEADER_HEIGHT = 28;
-
- protected static final PseudoClass ACTIVE_PSEUDO_CLASS = PseudoClass.getPseudoClass("active"); //$NON-NLS-1$
-
- public CustomWindowPane() {
- root = new BorderPane();
- getChildren().add(root);
- getStyleClass().addAll("dialog", "decorated-root" //$NON-NLS-1$ //$NON-NLS-2$
-// ,Platform.getCurrent().getPlatformId()
- );
-
-
- // --- resize corner
- resizeCorner = new Rectangle(10, 10);
- resizeCorner.getStyleClass().add("window-resize-corner"); //$NON-NLS-1$
- resizeCorner.setManaged(false);
- getChildren().add(resizeCorner);
-
-
- // --- titlebar (only used for cross-platform look)
- dialogTitleBar = new ToolBar();
- dialogTitleBar.getStyleClass().add("window-header"); //$NON-NLS-1$
- dialogTitleBar.setPrefHeight(HEADER_HEIGHT);
- dialogTitleBar.setMinHeight(HEADER_HEIGHT);
- dialogTitleBar.setMaxHeight(HEADER_HEIGHT);
-
- titleLabel = new Label();
- titleLabel.setMaxHeight(Double.MAX_VALUE);
- titleLabel.setId("window-label-title");
- titleLabel.getStyleClass().add("window-title"); //$NON-NLS-1$
-// titleLabel.setText("Hello World");
-// titleLabel.setText(titleProperty().get());
-
-// titleProperty().addListener(new InvalidationListener() {
-// @Override public void invalidated(Observable valueModel) {
-// titleLabel.setText(titleProperty().get());
-// }
-// });
-
- Region spacer = new Region();
- HBox.setHgrow(spacer, Priority.ALWAYS);
-
- // add close min max
- closeButton = new WindowButton("close"); //$NON-NLS-1$
- closeButton.setFocusTraversable(false);
- closeButton.setOnAction((a) -> {
- //FIXME Need to ask for confirmation
- ((Stage)getScene().getWindow()).close();
- });
-
- minButton = new WindowButton("minimize"); //$NON-NLS-1$
- minButton.setFocusTraversable(false);
- minButton.setOnAction((a) -> ((Stage)getScene().getWindow()).setIconified(true));
-
- maxButton = new WindowButton("maximize"); //$NON-NLS-1$
- maxButton.setFocusTraversable(false);
- maxButton.setOnAction(this::maximize);
-
- windowBtns = new HBox(3);
- windowBtns.getStyleClass().add("window-buttons"); //$NON-NLS-1$
- windowBtns.getChildren().addAll(minButton, maxButton, closeButton);
-
- dialogTitleBar.getItems().addAll(titleLabel, spacer, windowBtns);
- dialogTitleBar.setOnMousePressed(event -> {
- mouseDragDeltaX = event.getSceneX();
- mouseDragDeltaY = event.getSceneY();
- });
- dialogTitleBar.setOnMouseDragged(event -> {
- getStage().setX(event.getScreenX() - mouseDragDeltaX);
- getStage().setY(event.getScreenY() - mouseDragDeltaY);
- });
- root.setTop(dialogTitleBar);
- dialogTitleBar.applyCss();
-
- EventHandler<MouseEvent> resizeHandler = new EventHandler<MouseEvent>() {
- private double width;
- private double height;
- private Point2D dragAnchor;
-
- @Override public void handle(MouseEvent event) {
- EventType<? extends MouseEvent> type = event.getEventType();
-
- if (type == MouseEvent.MOUSE_PRESSED) {
- width = getStage().getWidth();
- height = getStage().getHeight();
- dragAnchor = new Point2D(event.getSceneX(), event.getSceneY());
- } else if (type == MouseEvent.MOUSE_DRAGGED) {
- getStage().setWidth(width + (event.getSceneX() - dragAnchor.getX()));
- getStage().setHeight(height + (event.getSceneY() - dragAnchor.getY()));
- }
- }
- };
- resizeCorner.setOnMousePressed(resizeHandler);
- resizeCorner.setOnMouseDragged(resizeHandler);
- sceneProperty().addListener((o) -> {
- Scene s = getScene();
- if( s != null ) {
- if( s.getWindow() != null ) {
- handleFocus(s.getWindow().focusedProperty());
- } else {
- s.windowProperty().addListener((o2) -> {
- if( s.getWindow() != null) {
- handleFocus(s.getWindow().focusedProperty());
- }
- });
- }
- }
- });
-
- }
-
- private void handleFocus(ReadOnlyBooleanProperty readOnlyBooleanProperty) {
- readOnlyBooleanProperty.addListener((o) -> {
- pseudoClassStateChanged(ACTIVE_PSEUDO_CLASS, readOnlyBooleanProperty.getValue());
- });
- }
-
- @Override
- public void setTitle(String title) {
- titleLabel.setText(title);
- }
-
- @Override
- public void setMenuBar(Node menuBar) {
- ((ToolBar)lookup("#main-header")).getItems().add(0,menuBar);
- menuBar.getStyleClass().add("window-menubar");
- HBox.setHgrow(menuBar, Priority.ALWAYS);
- }
-
- @Override
- public void setTrim(Node trim) {
- ((Pane)lookup("#trim-pane-container")).getChildren().add(trim);
- }
-
- private Stage getStage() {
- return (Stage) getScene().getWindow();
- }
-
- private void maximize(ActionEvent e) {
- Stage stage = getStage();
- final double stageY = stage.getY();
- final Screen screen = Screen.getScreensForRectangle(stage.getX(), stageY, 1, 1).get(0);
- Rectangle2D bounds = screen.getVisualBounds();
- if (bounds.getMinX() == stage.getX() && bounds.getMinY() == stageY &&
- bounds.getWidth() == stage.getWidth() && bounds.getHeight() == stage.getHeight()) {
- if (backupWindowBounds != null) {
- stage.setX(backupWindowBounds.getMinX());
- stage.setY(backupWindowBounds.getMinY());
- stage.setWidth(backupWindowBounds.getWidth());
- stage.setHeight(backupWindowBounds.getHeight());
- }
- } else {
- backupWindowBounds = new Rectangle2D(stage.getX(), stage.getY(), stage.getWidth(), stage.getHeight());
- final double newStageY = screen.getVisualBounds().getMinY();
- stage.setX(screen.getVisualBounds().getMinX());
- stage.setY(newStageY);
- stage.setWidth(screen.getVisualBounds().getWidth());
- stage.setHeight(screen.getVisualBounds().getHeight());
- }
- }
-
- public void setContent(Node content) {
- root.setCenter(content);
- }
-
- public Node getContent() {
- return root.getCenter();
- }
-
- public ObjectProperty<Node> contentProperty() {
- return root.centerProperty();
- }
-
- protected void layoutChildren() {
- super.layoutChildren();
- if (resizeCorner != null) {
- resizeCorner.relocate(getWidth() - resizeCorner.getWidth(),
- getHeight() - resizeCorner.getHeight());
- }
- }
-
- private static class WindowButton extends Button {
- WindowButton(String name) {
- getStyleClass().setAll("window-button"); //$NON-NLS-1$
- getStyleClass().add("window-"+name+"-button"); //$NON-NLS-1$ //$NON-NLS-2$
- StackPane graphic = new StackPane();
- graphic.getStyleClass().setAll("graphic"); //$NON-NLS-1$
- setGraphic(graphic);
- setMinSize(17, 17);
- setPrefSize(17, 17);
- }
- }
-}

Back to the top