package eu.ggnet.saft.sample.support;
import javafx.application.Platform;
import javafx.beans.property.*;
import javafx.embed.swing.JFXPanel;
import javafx.geometry.*;
import javafx.scene.control.*;
import javafx.scene.layout.GridPane;
import eu.ggnet.saft.api.ui.Title;
import eu.ggnet.saft.core.fx.OkCancelStage;
import java.time.*;
import java.util.*;
import java.util.concurrent.CountDownLatch;
/**
* Shows a selector pane for the Revenue Report.
* <p>
* @author oliver.guenther
*/
@Title("Umsatzreport Parameter")
public class RevenueReportSelectorPane extends GridPane {
private final ObjectProperty<Step> step = new SimpleObjectProperty<>();
private final ObjectProperty<Category> category = new SimpleObjectProperty<>();
private final ObjectProperty<LocalDate> start;
private final ObjectProperty<LocalDate> end;
public RevenueReportSelectorPane() {
setAlignment(Pos.CENTER);
setHgap(10);
setVgap(10);
setPadding(new Insets(25, 25, 25, 25));
ChoiceBox<Step> stepChoice = new ChoiceBox<>();
stepChoice.getItems().addAll(Step.values());
step.bind(stepChoice.getSelectionModel().selectedItemProperty());
stepChoice.getSelectionModel().select(Step.DAY);
addRow(0, new Label("Step:"), stepChoice);
ChoiceBox<Category> contractorChoice = new ChoiceBox<>();
contractorChoice.getItems().addAll(Category.values());
category.bind(contractorChoice.getSelectionModel().selectedItemProperty());
contractorChoice.getSelectionModel().selectFirst();
addRow(1, new Label("Contractor:"), contractorChoice);
DatePicker startPicker = new DatePicker(LocalDate.of(2014, 01, 01));
start = startPicker.valueProperty();
DatePicker endPicker = new DatePicker(LocalDate.of(2014, 12, 31));
end = endPicker.valueProperty();
addRow(2, new Label("Start:"), startPicker);
addRow(3, new Label("End:"), endPicker);
}
public Step getStep() {
return step.get();
}
public Category getCategory() {
return category.get();
}
public Date getStart() {
return Date.from(start.get().atStartOfDay(ZoneId.systemDefault()).toInstant());
}
public Date getEnd() {
return Date.from(end.get().atStartOfDay(ZoneId.systemDefault()).toInstant());
}
@Override
public String toString() {
return "RevenueReportSelectorPane{" + "step=" + step.get() + ", category=" + category.get() + ", start=" + start.get() + ", end=" + end.get() + '}';
}
public static void main(String[] args) throws InterruptedException {
final JFXPanel p = new JFXPanel();
final CountDownLatch block = new CountDownLatch(1);
Platform.runLater(new Runnable() {
@Override
public void run() {
RevenueReportSelectorPane pane = new RevenueReportSelectorPane();
OkCancelStage<RevenueReportSelectorPane> stage = new OkCancelStage<>("Toller Title", pane);
stage.showAndWait();
if (stage.isOk()) {
System.out.println("OK Pressed");
System.out.println(pane);
} else {
System.out.println("Closed without OK");
}
block.countDown();
}
});
block.await();
}
}