/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package weeklyschedulerfx;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.Node;
import javafx.scene.control.Label;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.VBox;
import javafx.util.StringConverter;
import weeklyschedulerfx.doubleSlider.DoubleSlider;
/**
*
* @author José Pereda Llamas <pereda@eii.uva.es>
* Created on 14-sep-2012, 12:04:34
*
*/
public class schedulerController implements Initializable {
@FXML
private GridPane grid;
@Override
public void initialize(URL url, ResourceBundle rb) {
final Label[] rangeLabel=new Label[7];
int cont=0;
for(Node n:grid.getChildren()){
if(n instanceof VBox){
VBox cell=(VBox)n;
cell.setStyle("-fx-background-color: #ecebe9,rgba(0,0,0,0.05),linear-gradient(#dcca8a, #c7a740),"
+ "linear-gradient(#f9f2d6 0%, #f4e5bc 20%, #e6c75d 80%, #e2c045 100%),"
+ "linear-gradient(#f6ebbe, #e6c34d);"
+ "-fx-background-radius: 4;-fx-background-insets: 0,2 2 1 2,2,3,4;");
if(cont<7){
rangeLabel[cont]=new Label();
rangeLabel[cont].textProperty().set("[00:00 - 00:00]");
cell.getChildren().add(rangeLabel[cont]);
}
else {
final int day=cont-7;
final DoubleSlider doubleSlider1 = new DoubleSlider();
doubleSlider1.setPrefWidth(300);
doubleSlider1.setShowTickMarks(true);
doubleSlider1.setShowTickLabels(true);
doubleSlider1.setMajorTickUnit(2);
doubleSlider1.setMinorTickCount(1);
doubleSlider1.setSnapToTicks(true);
doubleSlider1.setMin(0);
doubleSlider1.setMax(48);
doubleSlider1.setLabelFormatter(new StringConverter<Double>(){
@Override
public String toString(Double object) {
if(object==null){
return null;
}
return toTime(object.doubleValue());
}
@Override
public Double fromString(String string) {
return (string!=null?new Double(string):new Double(0));
}
});
doubleSlider1.value1Property().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> arg0,
Number arg1, Number arg2) {
rangeLabel[day].textProperty().set("["+toTime(arg2.intValue())+" - "+toTime(doubleSlider1.getValue2())+"]");
}
});
doubleSlider1.value2Property().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> arg0,
Number arg1, Number arg2) {
rangeLabel[day].textProperty().set("["+toTime(doubleSlider1.getValue1())+" - "+toTime(arg2.intValue())+"]");
}
});
/*
* sample values
*/
doubleSlider1.setValue1(day<5?16:0); // 8:00
doubleSlider1.setValue2(day<5?32:0); // 16:00
cell.getChildren().add(doubleSlider1);
}
cont+=1;
}
}
}
private String toTime(double value){
return String.format("%02d:%02d", (int)(value/2), (int)(30*(value%2)));
}
}