/*
* Copyright (c) 2015 University of Illinois Board of Trustees, All rights reserved.
* Developed at GSLIS/ the iSchool, by Dr. Jana Diesner, Amirhossein Aleyasen,
* Chieh-Li Chin, Shubhanshu Mishra, Kiumars Soltani, and Liang Tao.
*
* This program 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; either version 2 of the License, or any later version.
*
* This program 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
* this program; if not, see <http://www.gnu.org/licenses>.
*
*/
package context.ui.control.workflow;
import context.app.Validation;
import context.core.entity.DataElement;
import context.core.entity.TabularData;
import context.core.entity.TaskInstance;
import context.ui.control.input.BasicInputViewController;
import context.ui.control.nextsteps.NextStepsViewController;
import context.ui.control.output.BasicOutputViewController;
import javafx.beans.property.DoubleProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javafx.scene.Node;
import javafx.scene.Parent;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.Pane;
import org.apache.commons.io.FilenameUtils;
/**
*
* @author Amirhossein Aleyasen <aleyase2@illinois.edu>
*/
public class WorkflowController extends AnchorPane {
/**
*
*/
protected Parent step1Content;
/**
*
*/
protected Parent step2Content;
/**
*
*/
protected Parent step3Content;
private boolean newController;
/**
*
*/
protected DoubleProperty progress;
/**
*
*/
protected StringProperty progressMessage;
/**
*
*/
protected Pane pane;
private TaskInstance taskInstance;
/**
*
*/
protected BasicInputViewController basicInputViewController;
/**
*
*/
protected BasicOutputViewController basicOutputViewController;
private StringProperty taskname = new SimpleStringProperty();
/**
*
*/
protected NextStepsViewController nextStepsViewController;
/**
*
*/
protected Node mainPainContent;
/**
*
*/
protected AnchorPane root;
/**
*
* @return
*/
public boolean isNew() {
return newController;
}
/**
*
* @param newController
*/
public void setNew(boolean newController) {
this.newController = newController;
}
/**
*
* @param taskInstance
*/
protected void initializeTaskToGUIControls(TaskInstance taskInstance) {
setNew(false);
setTaskInstance(taskInstance);
setInputSelectedCorpus(taskInstance.getInput());
setTabularOutputDirectory(taskInstance.getTabularOutput(0));
setTextOutputDirectory(taskInstance.getTextOutput());
}
/**
*
* @return
*/
public boolean validateInputOutput() {
if (basicInputViewController == null || basicInputViewController.getInputListView() == null) {
return true;
}
if (!Validation.selectAnyItemInListView(basicInputViewController.getInputListView())) {
return false;
}
if (!Validation.nonEmptyOutputTextfield(basicOutputViewController.getOutputDirTextField())) {
return false;
}
return true;
}
/**
*
* @param input
*/
public void setInputSelectedCorpus(DataElement input) {
System.out.println("input id=" + input.getId());
for (DataElement d : basicInputViewController.getInputListView().getItems()) {
System.out.println(">" + d.getId());
}
int index = basicInputViewController.getInputListView().getItems().indexOf(input);
System.out.println("index of listview=" + index);
basicInputViewController.getInputListView().getSelectionModel().select(input);
basicInputViewController.getInputListView().getFocusModel().focus(index);
}
/**
*
* @param textOutput
*/
public void setTextOutputDirectory(DataElement textOutput) {
if (textOutput == null || textOutput.getPath() == null) {
return;
}
String dirPath = FilenameUtils.getFullPathNoEndSeparator(textOutput.getPath().get());
basicOutputViewController.getOutputDirTextField().textProperty().set(dirPath);
}
/**
*
* @param tabularOutput
*/
public void setTabularOutputDirectory(TabularData tabularOutput) {
if (tabularOutput == null || tabularOutput.getPath() == null) {
return;
}
String dirPath = FilenameUtils.getFullPathNoEndSeparator(tabularOutput.getPath().get());
basicOutputViewController.getOutputDirTextField().textProperty().set(dirPath);
}
/**
*
* @param taskname
*/
public void setTaskname(StringProperty taskname) {
this.taskname = taskname;
}
/**
*
* @return
*/
public StringProperty getTaskname() {
return taskname;
}
/**
*
* @return
*/
public TaskInstance getTaskInstance() {
return taskInstance;
}
/**
*
* @param taskInstance
*/
public void setTaskInstance(TaskInstance taskInstance) {
this.taskInstance = taskInstance;
}
/**
*
* @return
*/
public Parent getStep1Content() {
return step1Content;
}
/**
*
* @return
*/
public StringProperty getProgressMessage() {
return progressMessage;
}
/**
*
* @param progressMessage
*/
public void setProgressMessage(StringProperty progressMessage) {
this.progressMessage = progressMessage;
}
/**
*
* @return
*/
public DoubleProperty getProgress() {
return progress;
}
/**
*
* @param progress
*/
public void setProgress(DoubleProperty progress) {
this.progress = progress;
}
/**
*
* @param content
*/
protected void boundToPane(Parent content) {
AnchorPane.setTopAnchor(content, 0.0);
AnchorPane.setLeftAnchor(content, 0.0);
AnchorPane.setBottomAnchor(content, 0.0);
AnchorPane.setRightAnchor(content, 0.0);
}
/**
*
* @return
*/
public Parent getStep2Content() {
return step2Content;
}
/**
*
* @return
*/
public Parent getStep3Content() {
return step3Content;
}
/**
*
* @param nextStep
*/
public void showNextStepPane(Parent nextStep) {
}
/**
*
*/
public void hideNextStepPane() {
}
/**
*
*/
public void deactiveAllControls() {
step1Content.setDisable(true);
if (step2Content != null) {
step2Content.setDisable(true);
}
step3Content.setDisable(true);
}
/**
*
*/
public void activeAllControls() {
step1Content.setDisable(false);
if (step2Content != null) {
step2Content.setDisable(false);
}
step3Content.setDisable(false);
}
}