Java tutorial
/* * Copyright 2014 Loic Merckel * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing permissions and limitations under * the License. */ package io.uploader.drive.gui.controller; import io.uploader.drive.drive.DriveDirectoryImpl; import io.uploader.drive.gui.dlg.DriveDirectoryChooser; import io.uploader.drive.gui.dlg.MessageDialogs; import io.uploader.drive.gui.factory.DriveTaskFactory; import io.uploader.drive.gui.factory.DriveUiFactory; import io.uploader.drive.gui.model.DriveTaskModel; import io.uploader.drive.gui.util.UiUtils; import io.uploader.drive.util.Callback; import java.net.URL; import java.util.ResourceBundle; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.control.CheckBox; import javafx.scene.control.TextField; import javafx.stage.DirectoryChooser; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.api.services.drive.model.File; public class TaskAddPanelViewController implements Initializable { private static final Logger logger = LoggerFactory.getLogger(TaskAddPanelViewController.class); @FXML private TextField srcField; @FXML private TextField destField; @FXML private CheckBox checkBoxOverwrite; private DriveTaskFactory taskFactory = null; private DriveUiFactory driveUiFactory = null; DriveDirectoryImpl drivedir = null; private Callback<DriveTaskModel> callback = null; private void checkController() { if (taskFactory == null) { throw new IllegalStateException("The DriveTaskFactory must be set before using the controller"); } if (driveUiFactory == null) { throw new IllegalStateException("The DriveUiFactory must be set before using the controller"); } if (callback == null) { throw new IllegalStateException("The Callback must be set before using the controller"); } } @Override public void initialize(URL arg0, ResourceBundle arg1) { srcField.setEditable(false); destField.setEditable(false); destField.setText("Backups"); drivedir = new DriveDirectoryImpl(destField.getText()); } @FXML protected void onAdd(ActionEvent event) { String srcDir = srcField.getText().trim(); String destDir = destField.getText().trim(); boolean overwrite = checkBoxOverwrite.isSelected(); if (StringUtils.isEmpty(srcDir)) { MessageDialogs.showMessageDialog(UiUtils.getStage(event), "A source folder must be specified", "Error", MessageDialogs.MessageType.ERROR); return; } if (StringUtils.isEmpty(destDir)) { MessageDialogs.showMessageDialog(UiUtils.getStage(event), "A destination folder must be specified", "Error", MessageDialogs.MessageType.ERROR); return; } // if overwrite ask confirmation if (overwrite) { if (MessageDialogs.Response.NO == MessageDialogs.showConfirmDialog(UiUtils.getStage(event), "Are you sure you want to overwrite existing files?", "Confirmation", MessageDialogs.MessageType.WARNING)) { return; } } DriveTaskModel driveTaskModel = new DriveTaskModel(taskFactory, drivedir, srcDir, overwrite); callback.onSuccess(driveTaskModel); //close the dialog UiUtils.closeDialog(event); } @FXML protected void onCancel(ActionEvent event) { //close the dialog UiUtils.closeDialog(event); } @FXML protected void onSelectSourceDirectory(ActionEvent event) { DirectoryChooser dirChooser = new DirectoryChooser(); dirChooser.setTitle("Select Directory to Upload"); java.io.File dir = dirChooser.showDialog(UiUtils.getStage(event)); if (dir != null) { srcField.setText(dir.getPath()); } } @FXML protected void onChangeDestinationDirectory(ActionEvent event) { checkController(); DriveDirectoryChooser driveChooser = driveUiFactory.buildDriveDirectoryChooser(UiUtils.getStage(event), new Callback<File>() { @Override public void onSuccess(File result) { if (result != null) { destField.setText(result.getTitle()); drivedir = DriveDirectoryImpl.newDriveDirectory(result.getTitle(), result.getId()); } } @Override public void onFailure(Throwable cause) { logger.error("Error occurred while selecting drive directory", cause); } }); driveChooser.showDialog(); } public void setTaskFactory(DriveTaskFactory taskFactory) { this.taskFactory = taskFactory; } public void setDriveUiFactory(DriveUiFactory driveUiFactory) { this.driveUiFactory = driveUiFactory; } public void setCallback(Callback<DriveTaskModel> callback) { this.callback = callback; } //public void setTaskList (ObservableList<DriveTaskModel> taskList) { // this.taskList = taskList ; //} }