/*******************************************************************************
* Copyright (c) 2011 Kai Toedter 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:
* Kai Toedter - initial API and implementation
******************************************************************************/
package com.toedter.e4.ui.controls.javafx.skin;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.control.Button;
import javafx.scene.control.TabPane;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import com.sun.javafx.scene.control.skin.TabPaneSkin;
public class CTabPaneSkin extends TabPaneSkin {
Group minMaxGroup = new Group();
private final Button maxButton;
private final Button minButton;
private final Button restoreButton;
private final ImageView maxImageView;
private final ImageView restoreImageView;
public CTabPaneSkin(TabPane tabPane) {
super(tabPane);
Image maxImage = new Image(getClass().getResourceAsStream("max.png"));
maxImageView = new ImageView(maxImage);
maxButton = new Button("", maxImageView);
maxButton.setVisible(false); // will be enabled by MinMax addon
maxButton.setStyle("-fx-background-color: transparent; -fx-padding: 4;");
maxButton.translateXProperty().bind(tabPane.widthProperty().subtract(24.0));
maxButton.setLayoutY(6.0);
Image restoreImage = new Image(getClass().getResourceAsStream("restore.png"));
restoreImageView = new ImageView(restoreImage);
restoreButton = new Button("", restoreImageView);
restoreButton.setVisible(false); // will be enabled by MinMax addon
restoreButton.setStyle("-fx-background-color: transparent; -fx-padding: 4;");
restoreButton.translateXProperty().bind(tabPane.widthProperty().subtract(24.0));
restoreButton.setLayoutY(6.0);
Image minImage = new Image(getClass().getResourceAsStream("min.png"));
minButton = new Button("", new ImageView(minImage));
minButton.setVisible(false); // will be enabled by MinMax addon
minButton.setStyle("-fx-background-color: transparent; -fx-padding: 4;");
minButton.translateXProperty().bind(tabPane.widthProperty().subtract(44.0));
minButton.setLayoutY(6.0);
minMaxGroup.getChildren().add(minButton);
minMaxGroup.getChildren().add(maxButton);
minMaxGroup.getChildren().add(restoreButton);
getChildren().add(minMaxGroup);
}
public void setMaximizeHandler(final Runnable handler) {
System.out.println("CTabPaneSkin.setMaximizeHandler()");
maxButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
System.out.println("CTabPaneSkin.setMaximizeHandler(...).new EventHandler() {...}.handle()");
handler.run();
setMaximizeVisible(false);
setRestoreVisible(true);
}
});
}
public void setMinimizeHandler(final Runnable handler) {
minButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
handler.run();
}
});
}
public void setRestoreHandler(final Runnable handler) {
restoreButton.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
handler.run();
setMaximizeVisible(true);
setRestoreVisible(false);
}
});
}
public void setMinimizeVisible(boolean isMinimizeVisible) {
minButton.setVisible(isMinimizeVisible);
}
public void setMaximizeVisible(boolean isMaximizeVisible) {
maxButton.setVisible(isMaximizeVisible);
}
public void setRestoreVisible(boolean isRestoreVisible) {
restoreButton.setVisible(isRestoreVisible);
}
public boolean isMinimizeVisible() {
return minButton.isVisible();
}
public boolean isMaximizeVisible() {
return maxButton.isVisible();
}
}