diff options
author | Tom Schindl | 2015-02-05 11:14:29 +0000 |
---|---|---|
committer | Tom Schindl | 2015-02-05 11:14:29 +0000 |
commit | 9ff9062acd2c84b1766cdbc9ee364e21b7f0c505 (patch) | |
tree | 5a896311986ab9c058dfed8def3556909ad93628 /experimental/compensator | |
parent | 81af1aebbed7bfd26c1bf3e6ef4b33379c7ae269 (diff) | |
download | org.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')
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); - } - } -} |