/*
* Copyright (c) 2014 Dennis Fischer.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Public License v3.0+
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/gpl.html
*
* Contributors: Dennis Fischer
*/
package de.chaosfisch.uploader.gui.controller;
import com.cathive.fx.guice.FXMLController;
import de.chaosfisch.google.youtube.upload.Upload;
import de.chaosfisch.google.youtube.upload.metadata.Monetization;
import de.chaosfisch.google.youtube.upload.metadata.permissions.Syndication;
import de.chaosfisch.uploader.template.Template;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.scene.Node;
import javafx.scene.control.CheckBox;
import javafx.scene.control.ChoiceBox;
import javafx.scene.layout.GridPane;
import java.net.URL;
import java.util.ResourceBundle;
@FXMLController
public class UploadMonetizationController {
@FXML
protected ResourceBundle resources;
@FXML
private URL location;
@FXML
private GridPane gridPane;
@FXML
private CheckBox monetizeOverlay;
@FXML
private CheckBox monetizeProduct;
@FXML
private ChoiceBox<Syndication> monetizeSyndication;
@FXML
private CheckBox monetizeTrueView;
private final ObservableList<Syndication> syndicationList = FXCollections.observableArrayList();
@FXML
void initialize() {
assert null != gridPane : "fx:id=\"gridPane\" was not injected: check your FXML file 'UploadMonetization.fxml'.";
assert null != monetizeOverlay : "fx:id=\"monetizeOverlay\" was not injected: check your FXML file 'UploadMonetization.fxml'.";
assert null != monetizeProduct : "fx:id=\"monetizeProduct\" was not injected: check your FXML file 'UploadMonetization.fxml'.";
assert null != monetizeSyndication : "fx:id=\"monetizeSyndication\" was not injected: check your FXML file 'UploadMonetization.fxml'.";
assert null != monetizeTrueView : "fx:id=\"monetizeTrueView\" was not injected: check your FXML file 'UploadMonetization.fxml'.";
monetizeSyndication.setItems(syndicationList);
syndicationList.addAll(Syndication.values());
monetizeSyndication.getSelectionModel().selectFirst();
}
public void fromUpload(final Upload upload) {
final Monetization monetization = null == upload.getMonetization() ?
new Monetization() :
upload.getMonetization();
fromMonetization(monetization);
}
public void fromTemplate(final Template template) {
final Monetization monetization = null == template.getMonetization() ?
new Monetization() :
template.getMonetization();
fromMonetization(monetization);
}
private void fromMonetization(final Monetization monetization) {
monetizeOverlay.setSelected(monetization.isOverlay());
monetizeTrueView.setSelected(monetization.isTrueview());
monetizeProduct.setSelected(monetization.isProduct());
monetizeSyndication.setValue(monetization.getSyndication());
}
public Upload toUpload(final Upload upload) {
final Monetization monetization = upload.getMonetization();
toMonetization(monetization);
return upload;
}
public Template toTemplate(final Template template) {
final Monetization monetization = template.getMonetization();
toMonetization(monetization);
return template;
}
private void toMonetization(final Monetization monetization) {
monetization.setOverlay(monetizeOverlay.isSelected());
monetization.setTrueview(monetizeTrueView.isSelected());
monetization.setProduct(monetizeProduct.isSelected());
monetization.setSyndication(monetizeSyndication.getValue());
}
public Node getNode() {
return gridPane;
}
}