package com.jazzautomation.ui.javafx;
import com.jazzautomation.ui.Os;
import com.jazzautomation.ui.Settings;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.CheckBox;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import java.net.URL;
import java.util.ResourceBundle;
/**
* JavaFX front-end - will implement later.
*
* <p>Created by douglas_bullard on 10/2/13.</p>
*/
public class MainController implements Initializable
{
@FXML private Button quitButton;
@FXML private Button selectProjectConfigFileButton;
@FXML private TextField currentDirField;
@FXML private CheckBox useHttpProxyCheckbox;
@FXML private CheckBox useHttpProxyAuthenticationCheckbox;
@FXML private TextField proxyServerNameField;
@FXML private TextField proxyServerPortField;
@FXML private TextField proxyUserNameField;
@FXML private PasswordField proxyPasswordField;
@FXML private GridPane proxyServerPane;
@FXML private HBox proxyBox;
@FXML private VBox userBox;
private Os os = Os.getOs();
private Settings preferences;
// ------------------------ INTERFACE METHODS ------------------------
// --------------------- Interface Initializable ---------------------
@Override public void initialize(URL url, ResourceBundle resourceBundle)
{
System.out.println("com.jazzautomation.ui.MainController.initialize");
preferences = new Settings();
initializeUiFromSettings();
setDefaultButton();
}
// -------------------------- OTHER METHODS --------------------------
private void initializeUiFromSettings()
{
if (preferences != null)
{
setCheckboxFromSettings(useHttpProxyCheckbox, preferences.shouldUseProxy());
setCheckboxFromSettings(useHttpProxyAuthenticationCheckbox, preferences.shouldUseProxyAuthentication());
proxyServerNameField.setText(preferences.getProxyServerName()); // these override the helpful text if not empty or null
proxyServerPortField.setText(preferences.getProxyServerPort() + "");
proxyUserNameField.setText(preferences.getProxyUserName());
}
}
/** Helper method to deal with null values upon initialization. */
private void setCheckboxFromSettings(CheckBox checkbox, boolean value)
{
if (checkbox != null)
{
checkbox.setSelected(value);
}
}
public void quitClickedAction()
{
saveSettings();
System.exit(0);
}
@FXML private void saveSettings() {}
private void setDefaultButton()
{
quitButton.setDefaultButton(true);
}
public void start(Stage stage) throws Exception
{
// if (areAllNotNull(preferences, watchFilesCheckbox, deleteDotFilesCheckbox, groupByFilesCheckbox, shouldIncludeImportedFilesCheckbox,
// useHttpProxyAuthenticationCheckbox, useHttpProxyCheckbox, proxyServerNameField, proxyServerPortField, proxyUserNameField,
// proxyPasswordField, tabPane, justUseCompileConfigCheckbox, showGradleTaskDependenciesCheckbox))
{
preferences.setUseHttpProxy(useHttpProxyCheckbox.isSelected());
preferences.setUseProxyAuthentication(useHttpProxyAuthenticationCheckbox.isSelected());
preferences.setProxyServerName(proxyServerNameField.getText());
String text = proxyServerPortField.getText();
try
{
preferences.setProxyServerPort(Integer.parseInt(text));
}
catch (NumberFormatException e)
{
System.out.println("GradleVisualizerUiController.saveSettings - couldn't parse a port number out of \"" + text + '"');
}
preferences.setProxyUserName(proxyUserNameField.getText());
// preferences.setProxyPassword(proxyPasswordField.getText());
}
}
public void useHttpAuthenticationBoxClicked()
{
System.out.println("GradleVisualizerUiController.useHttpAuthenticationBoxClicked");
userBox.setVisible(useHttpProxyAuthenticationCheckbox.isSelected());
saveSettings();
}
public void useHttpProxyBoxClicked()
{
System.out.println("GradleVisualizerUiController.useHttpProxyBoxClicked");
boolean selected = useHttpProxyCheckbox.isSelected();
proxyBox.setVisible(selected);
useHttpProxyAuthenticationCheckbox.setVisible(selected);
if (!selected)
{
setCheckboxFromSettings(useHttpProxyAuthenticationCheckbox, false);
userBox.setVisible(false);
}
saveSettings();
}
}