/*
* ScreenFX - A plugin library for JavaFX 8 adding features for resizing
* and arranging stage windows on a multiple screen hardware configuration
*
* Copyright (C) 2014 Mario Voigt, Ulmenstr. 35, 09112 Chemnitz, Germany, vmario@hrz.tu-chemnitz.de
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see http://www.gnu.org/licenses/gpl-3.0.html
*/
package com.vmario.screenfx;
import javafx.event.Event;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.scene.control.Button;
import javafx.scene.control.Tooltip;
import javafx.scene.effect.Glow;
import javafx.scene.image.ImageView;
/**
* @author vmario
*
*/
class ScreenFXGridElement extends Button {
private final int rowIndex;
private final int columnIndex;
private final ScreenFXPosition sfxPosition;
/*
* a grid element - other values for this item as rowIndex, columnIndex and
* positionAction do not need a redudant getter/setter method
*/
/**
* @param rowIndex
* the row index of the button in grid
* @param columnIndex
* the column index of the button in grid
* @param buttonId
* the button id
* @param buttonSize
* the button size (width and height in pixel)
* @param buttonIcon
* the button icon
* @param toolTipText
* the text for tooltip
* @param positionAction
* the action to perform
*/
public ScreenFXGridElement(int rowIndex, int columnIndex, String buttonId, int buttonSize,
ImageView buttonIcon, String toolTipText, ScreenFXPosition positionAction) {
this.rowIndex = rowIndex;
this.columnIndex = columnIndex;
this.sfxPosition = positionAction;
setText("");
if (ScreenFXConfig.isAllowTooltips()) {
if (toolTipText != null & !toolTipText.isEmpty()) {
setTooltip(new Tooltip(toolTipText));
}
}
setBackground(null);
if (buttonId != null && !buttonId.isEmpty()) {
setId(buttonId);
}
setMinWidth(buttonSize);
setMinHeight(buttonSize);
setMaxWidth(buttonSize);
setMaxHeight(buttonSize);
setPadding(new Insets(0, 0, 0, 0));
setGraphic(buttonIcon);
Glow glow = new Glow(0.5);
setOnMouseEntered(new EventHandler<Event>() {
@Override
public void handle(Event event) {
setEffect(glow);
}
});
setOnMouseExited(new EventHandler<Event>() {
@Override
public void handle(Event event) {
setEffect(null);
}
});
}
/**
* @return the row index
*/
public int getRowIndex() {
return rowIndex;
}
/**
* @return the column index
*/
public int getColumnIndex() {
return columnIndex;
}
/**
* @return the ScreenFXPosition
*/
public ScreenFXPosition getSfxPosition() {
return sfxPosition;
}
}