Java tutorial
/** * Copyright (C) 2015 Envidatec GmbH <info@envidatec.com> * * This file is part of JEApplication. * * JEApplication 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 in version 3. * * JEApplication 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 * JEApplication. If not, see <http://www.gnu.org/licenses/>. * * JEApplication is part of the OpenJEVis project, further project information * are published at <http://www.OpenJEVis.org/>. */ package org.jevis.application.unit; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.geometry.Insets; import javafx.scene.control.CheckBox; import javafx.scene.control.Label; import javafx.scene.control.Slider; import javafx.scene.control.TextField; import javafx.scene.layout.GridPane; import org.joda.time.Period; /** * * @author Florian Simon <florian.simon@envidatec.com> */ public class SampleRateNode extends GridPane { private final Slider sliderMonth = new Slider(); private final Slider sliderWeek = new Slider(); private final Slider sliderHours = new Slider(); private final Slider sliderMinutes = new Slider(); private final Slider sliderSecounds = new Slider(); private Period _returnPeriod; public SampleRateNode(Period period) { super(); buildNode(period); } private void buildNode(Period period) { // System.out.println("new SampleRateNode: " + period.toString()); // final Period newPeriod = period; sliderMonth.setMin(0); sliderMonth.setMax(12); sliderMonth.setValue(period.getMonths()); sliderMonth.setShowTickLabels(true); sliderMonth.setShowTickMarks(true); sliderMonth.setMajorTickUnit(6); // sliderMonth.setMinorTickCount(5); sliderMonth.setBlockIncrement(1); sliderWeek.setMin(0); sliderWeek.setMax(5); sliderWeek.setValue(period.getWeeks()); sliderWeek.setShowTickLabels(true); sliderWeek.setShowTickMarks(true); sliderWeek.setMajorTickUnit(1); // sliderWeek.setMinorTickCount(5); sliderWeek.setBlockIncrement(1); sliderHours.setMin(0); sliderHours.setMax(180); sliderHours.setValue(period.getHours()); sliderHours.setShowTickLabels(true); sliderHours.setShowTickMarks(true); sliderHours.setMajorTickUnit(15); // sliderHours.setMinorTickCount(5); sliderHours.setBlockIncrement(1); sliderMinutes.setMin(0); sliderMinutes.setMax(60); sliderMinutes.setValue(period.getMinutes()); sliderMinutes.setShowTickLabels(true); sliderMinutes.setShowTickMarks(true); sliderMinutes.setMajorTickUnit(15); // sliderMonth.setMinorTickCount(5); sliderMinutes.setBlockIncrement(1); sliderSecounds.setMin(0); sliderSecounds.setMax(60); sliderSecounds.setValue(period.getSeconds()); sliderSecounds.setShowTickLabels(true); sliderSecounds.setShowTickMarks(true); sliderSecounds.setMajorTickUnit(15); // sliderMonth.setMinorTickCount(5); sliderSecounds.setBlockIncrement(1); final Label monthlabel = new Label("Months:"); final Label weekslabel = new Label("Weeks:"); final Label hourslabel = new Label("Hours:"); final Label minuteslabel = new Label("Minutes:"); final Label secoundslabel = new Label("Secounds:"); final Label periodLabel = new Label("Sample Rate:"); final TextField sampleRate = new TextField(); sampleRate.setText(period.toString()); // Label enableLabel = new Label("Has fix sample rate:"); final CheckBox enable = new CheckBox("Set fixed sample rate"); setHgap(5); setVgap(5); setPadding(new Insets(10, 10, 10, 10)); int i = 0; add(enable, 0, i, 2, 1); add(monthlabel, 0, ++i); add(weekslabel, 0, ++i); add(hourslabel, 0, ++i); add(minuteslabel, 0, ++i); add(secoundslabel, 0, ++i); add(periodLabel, 0, ++i); i = 0; // add(enable, 1, i); add(sliderMonth, 1, ++i); add(sliderWeek, 1, ++i); add(sliderHours, 1, ++i); add(sliderMinutes, 1, ++i); add(sliderSecounds, 1, ++i); add(sampleRate, 1, ++i); enable.selectedProperty().addListener(new ChangeListener<Boolean>() { @Override public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) { // System.out.println("actioN!!!!!!!!"); sliderMonth.setDisable(!enable.isSelected()); sliderWeek.setDisable(!enable.isSelected()); sliderHours.setDisable(!enable.isSelected()); sliderMinutes.setDisable(!enable.isSelected()); sliderSecounds.setDisable(!enable.isSelected()); sampleRate.setDisable(!enable.isSelected()); monthlabel.setDisable(!enable.isSelected()); weekslabel.setDisable(!enable.isSelected()); hourslabel.setDisable(!enable.isSelected()); minuteslabel.setDisable(!enable.isSelected()); secoundslabel.setDisable(!enable.isSelected()); periodLabel.setDisable(!enable.isSelected()); } }); if (period.equals(Period.ZERO)) { enable.setSelected(false); } else { enable.setSelected(true); } ChangeListener<Number> sliderChanged = new ChangeListener<Number>() { @Override public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) { setPeriod(sampleRate); } }; sliderMinutes.valueProperty().addListener(sliderChanged); sliderSecounds.valueProperty().addListener(sliderChanged); sliderMonth.valueProperty().addListener(sliderChanged); sliderWeek.valueProperty().addListener(sliderChanged); sliderHours.valueProperty().addListener(sliderChanged); setPeriod(sampleRate); } private void setPeriod(TextField field) { Period newPeriod = Period.ZERO; if (sliderMinutes.getValue() != 0) { newPeriod = newPeriod.plusMinutes((int) sliderMinutes.getValue()); } if (sliderSecounds.getValue() != 0) { newPeriod = newPeriod.plusSeconds((int) sliderSecounds.getValue()); } if (sliderHours.getValue() != 0) { newPeriod = newPeriod.plusHours((int) sliderHours.getValue()); } if (sliderMonth.getValue() != 0) { newPeriod = newPeriod.plusMonths((int) sliderMonth.getValue()); } if (sliderWeek.getValue() != 0) { newPeriod = newPeriod.plusWeeks((int) sliderWeek.getValue()); } field.setText(newPeriod.toString()); _returnPeriod = newPeriod; } public Period getPeriod() { return _returnPeriod; } }