/* * The MIT License * * Copyright 2016 Pawel Marynowski. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ package pattypan; import javafx.beans.value.ObservableValue; import javafx.event.ActionEvent; import javafx.scene.control.CheckBox; import javafx.scene.control.RadioButton; import javafx.scene.control.Toggle; import javafx.scene.control.ToggleGroup; import javafx.scene.input.KeyEvent; import javafx.scene.layout.HBox; import javafx.scene.layout.Region; import javafx.scene.layout.VBox; import pattypan.elements.WikiLabel; import pattypan.elements.WikiRadioButton; import pattypan.elements.WikiTextField; public class TemplateField { public String name; public String label; public boolean isSelected; public String selection; public String value; CheckBox cb; ToggleGroup group = new ToggleGroup(); RadioButton buttonYes = new WikiRadioButton("YES", group).setHeight(35); RadioButton buttonConst = new WikiRadioButton("CONST", group).setHeight(35); RadioButton buttonNo = new WikiRadioButton("NO", group).setHeight(35); WikiLabel labelElement = new WikiLabel(""); WikiTextField valueText = new WikiTextField("").setWidth(50, 500); public TemplateField(String name, String label, boolean isSelected, String constant) { this.name = name; this.label = label; this.isSelected = isSelected; this.selection = "YES"; this.value = constant; labelElement = new WikiLabel(label).setWidth(200, 500).setHeight(35); buttonYes.setSelected(true); group.selectedToggleProperty().addListener((ObservableValue<? extends Toggle> ov, Toggle tOld, Toggle tNew) -> { RadioButton btn = (RadioButton) tNew.getToggleGroup().getSelectedToggle(); setSelection(btn.getId()); }); valueText.setOnKeyReleased((KeyEvent event) -> { this.value = valueText.getText(); }); } public TemplateField(String name, String label) { this(name, label, true, ""); } public VBox getRow() { Region spacer = new Region(); spacer.setMinWidth(20); VBox vb = new VBox(5); HBox hb = new HBox(10); HBox hbCheckbox = new HBox(10); valueText.setText(Settings.getSetting("var-" + name + "-value")); value = Settings.getSetting("var-" + name + "-value"); setSelection(Settings.getSetting("var-" + name + "-selection")); hb.getChildren().addAll(labelElement, buttonYes, buttonConst, buttonNo, spacer, valueText, new Region()); vb.getChildren().add(hb); if (name.equals("date")) { Region r = new Region(); r.setMaxWidth(622); r.setPrefWidth(622); r.setMinWidth(420); r.setMinHeight(30); CheckBox checkbox = new CheckBox(Util.text("choose-columns-exif")); checkbox.setMaxWidth(500); checkbox.setPrefWidth(500); checkbox.setMinWidth(305); checkbox.setSelected(Settings.getSetting("exifDate").equals("true")); checkbox.setOnAction((ActionEvent e) -> { Settings.setSetting("exifDate", checkbox.isSelected() ? "true" : ""); }); hbCheckbox.getChildren().addAll(r, checkbox); vb.getChildren().add(hbCheckbox); } return vb; } public void setSelection(String id) { this.selection = id; switch (id) { case "YES": valueText.setVisible(true); labelElement.setDisable(false); buttonYes.setSelected(true); this.isSelected = true; break; case "CONST": valueText.setVisible(true); labelElement.setDisable(true); buttonConst.setSelected(true); this.isSelected = false; break; case "NO": valueText.setVisible(false); valueText.setText(""); labelElement.setDisable(true); buttonNo.setSelected(true); this.isSelected = false; break; default: break; } } }