package com.digiarea.closure.model.controller;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.geometry.HPos;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.geometry.VPos;
import javafx.scene.control.Button;
import javafx.scene.control.CheckBox;
import javafx.scene.control.ContentDisplay;
import javafx.scene.control.Control;
import javafx.scene.control.Label;
import javafx.scene.control.TableCell;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TitledPane;
import javafx.scene.control.ToggleButton;
import javafx.scene.control.ToggleGroup;
import javafx.scene.control.Tooltip;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.ColumnConstraints;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.Priority;
import javafx.scene.layout.RowConstraints;
import javafx.scene.layout.VBox;
import javafx.util.Callback;
import com.digiarea.closure.model.Check;
import com.digiarea.closure.model.Optimization;
import com.digiarea.closure.model.bind.ModelFacade;
import com.digiarea.closure.model.providers.LabelProviders;
/**
* FXML Controller class
*
* @author daginno
*/
public class JSCheckSectionController extends ClosureController implements Initializable {
public JSCheckSectionController(ModelFacade modelFacade, ResourceBundle bundle) {
super(modelFacade, bundle);
}
@FXML
private ToggleGroup toggleGroup;
@FXML
private TableView<Check> controlCheck;
@FXML
private TableColumn<Check, Boolean> conrolCheckBox;
@FXML
private TableColumn<Check, String> conrolCheckDescription;
@FXML
private TableView<Optimization> controlOptimization;
@FXML
private TableColumn<Optimization, Boolean> conrolOptimizationBox;
@FXML
private TableColumn<Optimization, String> conrolOptimizationDescription;
@FXML
private ToggleButton controlSkipAllPasses;
@FXML
private ToggleButton controlFunctionsOnly;
@FXML
private ToggleButton controlPerformCheck;
/**
* Initializes the controller class.
*/
@Override
public void initialize(URL url, ResourceBundle rb) {
conrolCheckBox.setCellValueFactory(new PropertyValueFactory<Check, Boolean>("check"));
conrolCheckBox.setCellFactory(new Callback<TableColumn<Check, Boolean>, TableCell<Check, Boolean>>() {
@Override
public TableCell<Check, Boolean> call(TableColumn<Check, Boolean> param) {
TableCell<Check, Boolean> cell = new TableCell<Check, Boolean>() {
private CheckBox box;
@Override
public void updateItem(Boolean item, boolean empty) {
if (item != null) {
if (box == null) {
createCheckBox();
}
box.setSelected(item);
setGraphic(box);
}
}
private void createCheckBox() {
box = new CheckBox();
box.setContentDisplay(ContentDisplay.GRAPHIC_ONLY);
box.selectedProperty().addListener(new ChangeListener<Boolean>() {
@Override
public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
((Check) getTableRow().getItem()).setCheck(newValue);
commitEdit(newValue);
}
});
}
};
return cell;
}
});
conrolCheckDescription.setCellFactory(new JSCheckSectionController.TextCellFactory());
conrolCheckDescription.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Check, String>, ObservableValue<String>>() {
@Override
public ObservableValue<String> call(TableColumn.CellDataFeatures<Check, String> p) {
if (p.getValue() != null) {
return new SimpleStringProperty(LabelProviders.getCheckLabel(p.getValue().getType()));
} else {
return new SimpleStringProperty("<no name>");
}
}
});
conrolOptimizationBox.setCellValueFactory(new PropertyValueFactory<Optimization, Boolean>("optimize"));
conrolOptimizationBox.setCellFactory(new Callback<TableColumn<Optimization, Boolean>, TableCell<Optimization, Boolean>>() {
@Override
public TableCell<Optimization, Boolean> call(TableColumn<Optimization, Boolean> param) {
TableCell<Optimization, Boolean> cell = new TableCell<Optimization, Boolean>() {
private CheckBox box;
@Override
public void updateItem(Boolean item, boolean empty) {
if (item != null) {
if (box == null) {
createCheckBox();
}
box.setSelected(item);
setGraphic(box);
}
}
private void createCheckBox() {
box = new CheckBox();
box.setContentDisplay(ContentDisplay.GRAPHIC_ONLY);
box.selectedProperty().addListener(new ChangeListener<Boolean>() {
@Override
public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
((Optimization) getTableRow().getItem()).setOptimize(newValue);
commitEdit(newValue);
}
});
}
};
return cell;
}
});
conrolOptimizationDescription.setCellFactory(new JSCheckSectionController.OptimizationTextCellFactory());
conrolOptimizationDescription.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<Optimization, String>, ObservableValue<String>>() {
@Override
public ObservableValue<String> call(TableColumn.CellDataFeatures<Optimization, String> p) {
if (p.getValue() != null) {
return new SimpleStringProperty(LabelProviders.getOptimizationlabel(p.getValue().getType()));
} else {
return new SimpleStringProperty("<no name>");
}
}
});
}
public class OptimizationTextCellFactory implements Callback<TableColumn<Optimization, String>, TableCell<Optimization, String>> {
@Override
public TableCell<Optimization, String> call(TableColumn<Optimization, String> arg0) {
TableCell<Optimization, String> cell = new TableCell<Optimization, String>() {
@Override
public void updateItem(String item, boolean empty) {
if (item != null) {
setText(item);
setTooltip(new Tooltip(item));
}
}
};
return cell;
}
}
public class TextCellFactory implements Callback<TableColumn<Check, String>, TableCell<Check, String>> {
@Override
public TableCell<Check, String> call(TableColumn<Check, String> arg0) {
TableCell<Check, String> cell = new TableCell<Check, String>() {
@Override
public void updateItem(String item, boolean empty) {
if (item != null) {
setText(item);
setTooltip(new Tooltip(item));
}
}
};
return cell;
}
}
@FXML
private void handleCheckAllChecksAction(ActionEvent event) {
modelFacade.applyJSCheck(true);
}
@FXML
private void handleUncheckAllChecksAction(ActionEvent event) {
modelFacade.applyJSCheck(false);
}
@FXML
private void handleCheckAllOptimizationsAction(ActionEvent event) {
modelFacade.applyJSOptimization(true);
}
@FXML
private void handleUncheckAllOptimizationsAction(ActionEvent event) {
modelFacade.applyJSOptimization(false);
}
public TableView<Check> getControlCheck() {
return controlCheck;
}
public TableView<Optimization> getControlOptimization() {
return controlOptimization;
}
public ToggleButton getControlSkipAllPasses() {
return controlSkipAllPasses;
}
public ToggleButton getControlFunctionsOnly() {
return controlFunctionsOnly;
}
public TableColumn<Check, Boolean> getConrolCheckBox() {
return conrolCheckBox;
}
public TableColumn<Check, String> getConrolCheckDescription() {
return conrolCheckDescription;
}
public TableColumn<Optimization, Boolean> getConrolOptimizationBox() {
return conrolOptimizationBox;
}
public TableColumn<Optimization, String> getConrolOptimizationDescription() {
return conrolOptimizationDescription;
}
public ToggleButton getControlPerformCheck() {
return controlPerformCheck;
}
public AnchorPane create() throws Exception {
AnchorPane anchorPane12 = new AnchorPane();
anchorPane12.setId("AnchorPane");
anchorPane12.setMinHeight(Control.USE_COMPUTED_SIZE);
anchorPane12.setMinWidth(Control.USE_COMPUTED_SIZE);
anchorPane12.setPrefHeight(Control.USE_COMPUTED_SIZE);
anchorPane12.setPrefWidth(Control.USE_COMPUTED_SIZE);
TitledPane titledPane11 = new TitledPane();
titledPane11.setAnimated(false);
titledPane11.setCollapsible(false);
titledPane11.setFocusTraversable(true);
titledPane11.setPrefHeight(Control.USE_COMPUTED_SIZE);
titledPane11.setPrefWidth(Control.USE_COMPUTED_SIZE);
titledPane11.setText(bundle.getString("JSChecksSection"));
AnchorPane.setBottomAnchor(titledPane11, 0.0);
AnchorPane.setLeftAnchor(titledPane11, 0.0);
AnchorPane.setRightAnchor(titledPane11, 0.0);
AnchorPane.setTopAnchor(titledPane11, 0.0);
VBox vBox20 = new VBox();
vBox20.setPrefHeight(Control.USE_COMPUTED_SIZE);
vBox20.setPrefWidth(Control.USE_COMPUTED_SIZE);
vBox20.setSpacing(6.0);
Label label22 = new Label();
label22.setText(bundle.getString("JSChecksSection_Desc"));
vBox20.getChildren().add(label22);
GridPane gridPane28 = new GridPane();
gridPane28.setId("GridPane");
gridPane28.setHgap(5.0);
VBox.setVgrow(gridPane28, Priority.NEVER);
controlSkipAllPasses = new ToggleButton();
controlSkipAllPasses.setMaxWidth(1.7976931348623157E308);
controlSkipAllPasses.setMnemonicParsing(false);
controlSkipAllPasses.setText(bundle.getString("JSChecksSection_SkipAllPasses"));
GridPane.setColumnIndex(controlSkipAllPasses, 0);
GridPane.setRowIndex(controlSkipAllPasses, 0);
toggleGroup = new ToggleGroup();
controlSkipAllPasses.setToggleGroup(toggleGroup);
gridPane28.getChildren().add(controlSkipAllPasses);
controlFunctionsOnly = new ToggleButton();
controlFunctionsOnly.setMaxWidth(1.7976931348623157E308);
controlFunctionsOnly.setMnemonicParsing(false);
controlFunctionsOnly.setText(bundle.getString("JSChecksSection_FunctionsOnly"));
controlFunctionsOnly.setToggleGroup(toggleGroup);
GridPane.setColumnIndex(controlFunctionsOnly, 1);
GridPane.setRowIndex(controlFunctionsOnly, 0);
gridPane28.getChildren().add(controlFunctionsOnly);
controlPerformCheck = new ToggleButton();
controlPerformCheck.setMaxWidth(1.7976931348623157E308);
controlPerformCheck.setMnemonicParsing(false);
controlPerformCheck.setText(bundle.getString("JSChecksSection_PerformChecks"));
controlPerformCheck.setToggleGroup(toggleGroup);
GridPane.setColumnIndex(controlPerformCheck, 2);
GridPane.setRowIndex(controlPerformCheck, 0);
gridPane28.getChildren().add(controlPerformCheck);
ColumnConstraints columnConstraints54 = new ColumnConstraints();
columnConstraints54.setHgrow(Priority.ALWAYS);
columnConstraints54.setMinWidth(10.0);
gridPane28.getColumnConstraints().add(columnConstraints54);
ColumnConstraints columnConstraints55 = new ColumnConstraints();
columnConstraints55.setHgrow(Priority.ALWAYS);
columnConstraints55.setMinWidth(10.0);
gridPane28.getColumnConstraints().add(columnConstraints55);
ColumnConstraints columnConstraints56 = new ColumnConstraints();
columnConstraints56.setHgrow(Priority.ALWAYS);
columnConstraints56.setMinWidth(10.0);
gridPane28.getColumnConstraints().add(columnConstraints56);
RowConstraints rowConstraints52 = new RowConstraints();
rowConstraints52.setMinHeight(Control.USE_PREF_SIZE);
rowConstraints52.setVgrow(Priority.NEVER);
gridPane28.getRowConstraints().add(rowConstraints52);
vBox20.getChildren().add(gridPane28);
GridPane gridPane29 = new GridPane();
gridPane29.setId("GridPane");
gridPane29.setHgap(5.0);
VBox.setVgrow(gridPane29, Priority.NEVER);
Button button21 = new Button();
button21.setAlignment(Pos.CENTER_RIGHT);
button21.setContentDisplay(ContentDisplay.RIGHT);
button21.setMnemonicParsing(false);
button21.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
handleUncheckAllChecksAction(event);
}
});
button21.setText("");
GridPane.setColumnIndex(button21, 2);
GridPane.setHalignment(button21, HPos.RIGHT);
GridPane.setRowIndex(button21, 0);
ImageView imageView10 = new ImageView();
imageView10.setFitHeight(16.0);
imageView10.setFitWidth(16.0);
imageView10.setMouseTransparent(true);
imageView10.setPickOnBounds(true);
imageView10.setPreserveRatio(true);
Image image10 = new Image(getClass().getResource("/com/digiarea/closurefx/resources/editor-uncheck.png").openStream());
imageView10.setImage(image10);
button21.setGraphic(imageView10);
Tooltip tooltip4 = new Tooltip();
tooltip4.setText(bundle.getString("JSChecksSection_UncheckAll"));
button21.setTooltip(tooltip4);
gridPane29.getChildren().add(button21);
Button button22 = new Button();
button22.setAlignment(Pos.CENTER_RIGHT);
button22.setContentDisplay(ContentDisplay.RIGHT);
button22.setMnemonicParsing(false);
button22.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
handleCheckAllChecksAction(event);
}
});
button22.setText("");
GridPane.setColumnIndex(button22, 1);
GridPane.setHalignment(button22, HPos.RIGHT);
GridPane.setRowIndex(button22, 0);
ImageView imageView11 = new ImageView();
imageView11.setFitHeight(16.0);
imageView11.setFitWidth(16.0);
imageView11.setMouseTransparent(true);
imageView11.setPickOnBounds(true);
imageView11.setPreserveRatio(true);
Image image11 = new Image(getClass().getResource("/com/digiarea/closurefx/resources/editor-check.png").openStream());
imageView11.setImage(image11);
button22.setGraphic(imageView11);
Tooltip tooltip5 = new Tooltip();
tooltip5.setText(bundle.getString("JSChecksSection_CheckAll"));
button22.setTooltip(tooltip5);
gridPane29.getChildren().add(button22);
ColumnConstraints columnConstraints57 = new ColumnConstraints();
columnConstraints57.setHalignment(HPos.RIGHT);
columnConstraints57.setHgrow(Priority.ALWAYS);
columnConstraints57.setMinWidth(Control.USE_PREF_SIZE);
gridPane29.getColumnConstraints().add(columnConstraints57);
ColumnConstraints columnConstraints58 = new ColumnConstraints();
columnConstraints58.setHalignment(HPos.RIGHT);
columnConstraints58.setHgrow(Priority.NEVER);
columnConstraints58.setMinWidth(Control.USE_PREF_SIZE);
gridPane29.getColumnConstraints().add(columnConstraints58);
ColumnConstraints columnConstraints59 = new ColumnConstraints();
columnConstraints59.setHalignment(HPos.RIGHT);
columnConstraints59.setHgrow(Priority.NEVER);
columnConstraints59.setMinWidth(Control.USE_PREF_SIZE);
gridPane29.getColumnConstraints().add(columnConstraints59);
RowConstraints rowConstraints53 = new RowConstraints();
rowConstraints53.setMinHeight(Control.USE_PREF_SIZE);
rowConstraints53.setValignment(VPos.CENTER);
rowConstraints53.setVgrow(Priority.NEVER);
gridPane29.getRowConstraints().add(rowConstraints53);
vBox20.getChildren().add(gridPane29);
controlCheck = new TableView();
controlCheck.setMaxHeight(Control.USE_COMPUTED_SIZE);
controlCheck.setMinHeight(Control.USE_COMPUTED_SIZE);
controlCheck.setPrefHeight(100.0);
controlCheck.setPrefWidth(Control.USE_COMPUTED_SIZE);
controlCheck.setTableMenuButtonVisible(false);
VBox.setVgrow(controlCheck, Priority.ALWAYS);
conrolCheckBox = new TableColumn();
conrolCheckBox.setMaxWidth(25.0);
conrolCheckBox.setMinWidth(25.0);
conrolCheckBox.setPrefWidth(25.0);
conrolCheckBox.setText(".");
controlCheck.getColumns().add(conrolCheckBox);
conrolCheckDescription = new TableColumn();
conrolCheckDescription.setMinWidth(100.0);
conrolCheckDescription.setPrefWidth(400.0);
conrolCheckDescription.setText(bundle.getString("JSChecksSection_Column_Checks"));
conrolCheckDescription.setVisible(true);
controlCheck.getColumns().add(conrolCheckDescription);
vBox20.getChildren().add(controlCheck);
GridPane gridPane30 = new GridPane();
gridPane30.setId("GridPane");
gridPane30.setHgap(5.0);
VBox.setVgrow(gridPane30, Priority.NEVER);
Button button23 = new Button();
button23.setAlignment(Pos.CENTER_RIGHT);
button23.setContentDisplay(ContentDisplay.RIGHT);
button23.setMnemonicParsing(false);
button23.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
handleUncheckAllOptimizationsAction(event);
}
});
button23.setText("");
GridPane.setColumnIndex(button23, 2);
GridPane.setHalignment(button23, HPos.RIGHT);
GridPane.setRowIndex(button23, 0);
ImageView imageView12 = new ImageView();
imageView12.setFitHeight(16.0);
imageView12.setFitWidth(16.0);
imageView12.setMouseTransparent(true);
imageView12.setPickOnBounds(true);
imageView12.setPreserveRatio(true);
Image image12 = new Image(getClass().getResource("/com/digiarea/closurefx/resources/editor-uncheck.png").openStream());
imageView12.setImage(image12);
button23.setGraphic(imageView12);
Tooltip tooltip6 = new Tooltip();
tooltip6.setText(bundle.getString("JSChecksSection_UncheckAll"));
button23.setTooltip(tooltip6);
gridPane30.getChildren().add(button23);
Button button24 = new Button();
button24.setAlignment(Pos.CENTER_RIGHT);
button24.setContentDisplay(ContentDisplay.RIGHT);
button24.setMnemonicParsing(false);
button24.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
handleCheckAllOptimizationsAction(event);
}
});
button24.setText("");
GridPane.setColumnIndex(button24, 1);
GridPane.setHalignment(button24, HPos.RIGHT);
GridPane.setRowIndex(button24, 0);
ImageView imageView13 = new ImageView();
imageView13.setFitHeight(16.0);
imageView13.setFitWidth(16.0);
imageView13.setMouseTransparent(true);
imageView13.setPickOnBounds(true);
imageView13.setPreserveRatio(true);
Image image13 = new Image(getClass().getResource("/com/digiarea/closurefx/resources/editor-check.png").openStream());
imageView13.setImage(image13);
button24.setGraphic(imageView13);
Tooltip tooltip7 = new Tooltip();
tooltip7.setText(bundle.getString("JSChecksSection_CheckAll"));
button24.setTooltip(tooltip7);
gridPane30.getChildren().add(button24);
ColumnConstraints columnConstraints60 = new ColumnConstraints();
columnConstraints60.setHalignment(HPos.RIGHT);
columnConstraints60.setHgrow(Priority.ALWAYS);
columnConstraints60.setMinWidth(Control.USE_PREF_SIZE);
gridPane30.getColumnConstraints().add(columnConstraints60);
ColumnConstraints columnConstraints61 = new ColumnConstraints();
columnConstraints61.setHalignment(HPos.RIGHT);
columnConstraints61.setHgrow(Priority.NEVER);
columnConstraints61.setMinWidth(Control.USE_PREF_SIZE);
gridPane30.getColumnConstraints().add(columnConstraints61);
ColumnConstraints columnConstraints62 = new ColumnConstraints();
columnConstraints62.setHalignment(HPos.RIGHT);
columnConstraints62.setHgrow(Priority.NEVER);
columnConstraints62.setMinWidth(Control.USE_PREF_SIZE);
gridPane30.getColumnConstraints().add(columnConstraints62);
RowConstraints rowConstraints54 = new RowConstraints();
rowConstraints54.setMinHeight(Control.USE_PREF_SIZE);
rowConstraints54.setValignment(VPos.CENTER);
rowConstraints54.setVgrow(Priority.NEVER);
gridPane30.getRowConstraints().add(rowConstraints54);
vBox20.getChildren().add(gridPane30);
controlOptimization = new TableView();
controlOptimization.setMaxHeight(Control.USE_COMPUTED_SIZE);
controlOptimization.setMinHeight(Control.USE_COMPUTED_SIZE);
controlOptimization.setPrefHeight(100.0);
controlOptimization.setPrefWidth(Control.USE_COMPUTED_SIZE);
VBox.setVgrow(controlOptimization, Priority.ALWAYS);
conrolOptimizationBox = new TableColumn();
conrolOptimizationBox.setMaxWidth(25.0);
conrolOptimizationBox.setMinWidth(25.0);
conrolOptimizationBox.setPrefWidth(25.0);
conrolOptimizationBox.setText(".");
controlOptimization.getColumns().add(conrolOptimizationBox);
conrolOptimizationDescription = new TableColumn();
conrolOptimizationDescription.setMinWidth(100.0);
conrolOptimizationDescription.setPrefWidth(400.0);
conrolOptimizationDescription.setText(bundle.getString("JSChecksSection_Column_Optimizations"));
controlOptimization.getColumns().add(conrolOptimizationDescription);
vBox20.getChildren().add(controlOptimization);
Insets insets28 = new Insets(10.0, 10.0, 10.0, 10.0);
vBox20.setPadding(insets28);
titledPane11.setContent(vBox20);
anchorPane12.getChildren().add(titledPane11);
initialize(null, bundle);
return anchorPane12;
}
}