/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package org.pieShare.pieShareAppFx.controller;
import org.pieShare.pieShareAppFx.controller.api.IController;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.Node;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.AnchorPane;
import javafx.stage.DirectoryChooser;
import javax.annotation.PostConstruct;
import org.pieShare.pieShareApp.model.PieShareAppBeanNames;
import org.pieShare.pieShareApp.model.PieUser;
import org.pieShare.pieShareApp.service.configurationService.ApplicationConfigurationService;
import org.pieShare.pieShareApp.service.configurationService.api.IPieShareConfiguration;
import org.pieShare.pieShareApp.service.database.DatabaseService;
import org.pieShare.pieShareApp.service.database.api.IDatabaseService;
import org.pieShare.pieShareAppFx.FXMLController;
import org.pieShare.pieShareAppFx.controller.api.ITwoColumnListViewItem;
import org.pieShare.pieTools.pieUtilities.service.beanService.IBeanService;
/**
*
* @author Richard
*/
public class BasePreferencesController implements IController, ITwoColumnListViewItem {
private IPieShareConfiguration configuration;
private ApplicationConfigurationService applicationConfigurationService;
private IBeanService beanService;
private FXMLController fxmlController;
private IDatabaseService databaseService;
private PieUser user;
@FXML
private Button buttonBrowseWorking;
@FXML
private Button buttonBrowseTemp;
@FXML
private Button buttonBrowseDatabase;
@FXML
private TextField textFieldTempPath;
@FXML
private TextField textFieldWorkingPath;
@FXML
private TextField textFielddatabaseDir;
@FXML
private AnchorPane loginInnerContainer;
@PostConstruct
public void init() {
}
public void setApplicationConfigurationService(ApplicationConfigurationService applicationConfigurationService) {
this.applicationConfigurationService = applicationConfigurationService;
}
public void setDatabaseService(IDatabaseService databaseService) {
this.databaseService = databaseService;
}
public void setBeanService(IBeanService beanService) {
this.beanService = beanService;
}
public void setFXMLController(FXMLController controller) {
this.fxmlController = controller;
}
@Override
public void initialize(URL location, ResourceBundle resources) {
user = beanService.getBean(PieShareAppBeanNames.getPieUser());
configuration = user.getPieShareConfiguration();
textFieldTempPath.setText(configuration.getTmpDir().getAbsolutePath());
textFieldWorkingPath.setText(configuration.getWorkingDir().getAbsolutePath());
textFielddatabaseDir.setText(applicationConfigurationService.getDatabaseFolder().toPath().toString());
}
@FXML
private void handleButtonWorkingClick(ActionEvent event) {
File choosenFile = showFolderChooser("Select Working Directory", configuration.getWorkingDir());
if (choosenFile == null || !choosenFile.exists()) {
return;
}
configuration.setWorkingDir(choosenFile);
textFieldWorkingPath.setText(configuration.getWorkingDir().getAbsolutePath());
databaseService.mergePieUser(user);
}
@FXML
private void handleButtonTempClick(ActionEvent event) {
File choosenFile = showFolderChooser("Select Temp Directory", configuration.getTmpDir());
if (choosenFile == null) {
return;
}
configuration.setTmpDir(choosenFile);
textFieldTempPath.setText(configuration.getTmpDir().getAbsolutePath());
databaseService.mergePieUser(user);
}
@FXML
private void handleButtonDatabaseClick(ActionEvent event) {
File choosenFile = showFolderChooser("Select Database Directory", applicationConfigurationService.getDatabaseFolder());
if (choosenFile == null) {
return;
}
applicationConfigurationService.setDatabaseFolder(choosenFile);
}
private File showFolderChooser(String titel, File initial) {
DirectoryChooser chooser = new DirectoryChooser();
chooser.setTitle(titel);
chooser.setInitialDirectory(initial);
File choosenFile = chooser.showDialog(fxmlController.getMainStage());
if (choosenFile == null || !choosenFile.exists()) {
return null;
}
return choosenFile;
}
@Override
public Node getControl() throws IOException {
FXMLLoader loader = beanService.getBean(PieShareAppBeanNames.getGUILoader());
return loader.load(getClass().getResourceAsStream("/fxml/settingsPanels/BasePreferencesPanel.fxml"));
}
@Override
public Label getSecondColumn() {
Label label = new Label("Base Settings");
return label;
}
@Override
public Label getFirstColumn() {
InputStream st = getClass().getResourceAsStream("/images/settings_16.png");
Image image = new Image(st);
Label label = new Label("", new ImageView(image));
return label;
}
@Override
public IController getController() {
return this;
}
}