Skip to content

Commit

Permalink
GUI remember last save location
Browse files Browse the repository at this point in the history
  • Loading branch information
Pyknic committed Jun 5, 2015
1 parent b2721df commit 7c3132b
Show file tree
Hide file tree
Showing 4 changed files with 153 additions and 152 deletions.
194 changes: 102 additions & 92 deletions src/main/java/com/speedment/gui/controllers/ProjectPromptController.java
Expand Up @@ -27,6 +27,7 @@
import com.speedment.core.platform.Platform; import com.speedment.core.platform.Platform;
import com.speedment.core.platform.component.DbmsHandlerComponent; import com.speedment.core.platform.component.DbmsHandlerComponent;
import static com.speedment.gui.controllers.AlertController.showAlert; import static com.speedment.gui.controllers.AlertController.showAlert;
import static com.speedment.gui.util.ProjectUtil.getDefaultLocation;
import com.speedment.util.Trees; import com.speedment.util.Trees;
import java.io.IOException; import java.io.IOException;
import java.net.URL; import java.net.URL;
Expand All @@ -45,6 +46,8 @@
import javafx.scene.layout.HBox; import javafx.scene.layout.HBox;
import javafx.scene.layout.StackPane; import javafx.scene.layout.StackPane;
import javafx.stage.Stage; import javafx.stage.Stage;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;


/** /**
* FXML Controller class * FXML Controller class
Expand All @@ -53,6 +56,8 @@
*/ */
public class ProjectPromptController implements Initializable { public class ProjectPromptController implements Initializable {


private final static Logger LOGGER = LogManager.getLogger(ProjectPromptController.class);

@FXML private Button buttonOpen; @FXML private Button buttonOpen;
@FXML private TextField fieldHost; @FXML private TextField fieldHost;
@FXML private TextField fieldPort; @FXML private TextField fieldPort;
Expand All @@ -79,101 +84,105 @@ public ProjectPromptController(Stage stage) {
*/ */
@Override @Override
public void initialize(URL url, ResourceBundle rb) { public void initialize(URL url, ResourceBundle rb) {

try {
if (Settings.inst().get("hide_open_option", true)) { if (Settings.inst().get("hide_open_option", true)) {
container.getChildren().remove(openContainer); container.getChildren().remove(openContainer);
} }


fieldType.setItems( fieldType.setItems(
Stream.of(StandardDbmsType.values()) Stream.of(StandardDbmsType.values())
.map(s -> s.getName()) .map(s -> s.getName())
.collect(Collectors.toCollection(FXCollections::observableArrayList)) .collect(Collectors.toCollection(FXCollections::observableArrayList))
); );


fieldSchema.setText(Settings.inst().get("last_known_schema", "")); fieldSchema.setText(Settings.inst().get("last_known_schema", ""));
fieldPort.setText(Settings.inst().get("last_known_port", "")); fieldPort.setText(Settings.inst().get("last_known_port", ""));


fieldType.getSelectionModel().selectedItemProperty().addListener((observable, old, next) -> { fieldType.getSelectionModel().selectedItemProperty().addListener((observable, old, next) -> {
if (!observable.getValue().isEmpty()) { if (!observable.getValue().isEmpty()) {
final StandardDbmsType item = StandardDbmsType.valueOf(next.toUpperCase()); final StandardDbmsType item = StandardDbmsType.valueOf(next.toUpperCase());


if (fieldHost.textProperty().getValue().isEmpty()) { if (fieldHost.textProperty().getValue().isEmpty()) {
fieldHost.textProperty().setValue("127.0.0.1"); fieldHost.textProperty().setValue("127.0.0.1");
} }


if (fieldUser.textProperty().getValue().isEmpty()) { if (fieldUser.textProperty().getValue().isEmpty()) {
fieldUser.textProperty().setValue("root"); fieldUser.textProperty().setValue("root");
}
if (fieldName.textProperty().getValue().isEmpty()) {
fieldName.textProperty().setValue("db0");
}

fieldPort.textProperty().setValue("" + item.getDefaultPort());
} }
if (fieldName.textProperty().getValue().isEmpty()) { });
fieldName.textProperty().setValue("db0");
fieldHost.textProperty().addListener((ov, o, n) -> toggleConnectButton());
fieldPort.textProperty().addListener((ov, o, n) -> toggleConnectButton());
fieldType.selectionModelProperty().addListener((ov, o, n) -> toggleConnectButton());
fieldName.textProperty().addListener((ov, o, n) -> toggleConnectButton());
fieldSchema.textProperty().addListener((ov, o, n) -> toggleConnectButton());
fieldUser.textProperty().addListener((ov, o, n) -> toggleConnectButton());

fieldType.getSelectionModel().select(Settings.inst().get("last_known_dbtype", ""));
fieldHost.setText(Settings.inst().get("last_known_host", "127.0.0.1"));
fieldUser.setText(Settings.inst().get("last_known_user", "root"));
fieldName.setText(Settings.inst().get("last_known_name", "db0"));

buttonConnect.setOnAction(ev -> {

Project project = Project.newProject();

Dbms dbms = Dbms.newDbms();
dbms.setIpAddress(fieldHost.getText());
dbms.setPort(Integer.parseInt(fieldPort.getText()));
dbms.setName(fieldName.getText());
dbms.setUsername(fieldUser.getText());
dbms.setPassword(fieldPass.getText());
dbms.setType(fieldType.getSelectionModel().getSelectedItem());
project.add(dbms);

project.setName(fieldSchema.getText());
Settings.inst().set("last_known_schema", fieldSchema.getText());
Settings.inst().set("last_known_dbtype", fieldType.getSelectionModel().getSelectedItem());
Settings.inst().set("last_known_host", fieldHost.getText());
Settings.inst().set("last_known_user", fieldUser.getText());
Settings.inst().set("last_known_name", fieldName.getText());
Settings.inst().set("last_known_port", fieldPort.getText());

try {
final DbmsHandler dh = Platform.get().get(DbmsHandlerComponent.class).get(dbms);
dh.schemasPopulated()
.filter(s -> fieldSchema.getText().equalsIgnoreCase(s.getName()))
.forEachOrdered(dbms::add);

Trees.traverse((Child) project, c -> c.asParent()
.map(p -> p.stream())
.orElse(Stream.empty())
.map(n -> (Child<?>) n),
Trees.TraversalOrder.DEPTH_FIRST_PRE
).forEachOrdered(System.out::println);

SceneController.showIn(stage, project);
Settings.inst().set("hide_open_option", false);
} catch (Exception ex) {
showAlert(stage, "Error!",
"Could not connect to the database. Make sure the " +
"information provided is correct and that the database " +
"server is running."
);
throw ex;
} }

});
fieldPort.textProperty().setValue("" + item.getDefaultPort());
} buttonOpen.setOnAction(createOpenProjectHandler(stage, getDefaultLocation(null), (f,p) -> {
}); // Todo: set saved file;

SceneController.showIn(stage, p);
fieldHost.textProperty().addListener((ov, o, n) -> toggleConnectButton()); }));
fieldPort.textProperty().addListener((ov, o, n) -> toggleConnectButton()); } catch (Exception exxx) {
fieldType.selectionModelProperty().addListener((ov, o, n) -> toggleConnectButton()); exxx.printStackTrace();
fieldName.textProperty().addListener((ov, o, n) -> toggleConnectButton()); throw exxx;
fieldSchema.textProperty().addListener((ov, o, n) -> toggleConnectButton()); }
fieldUser.textProperty().addListener((ov, o, n) -> toggleConnectButton());

fieldType.getSelectionModel().select(Settings.inst().get("last_known_dbtype", ""));
fieldHost.setText(Settings.inst().get("last_known_host", "127.0.0.1"));
fieldUser.setText(Settings.inst().get("last_known_user", "root"));
fieldName.setText(Settings.inst().get("last_known_name", "db0"));

buttonConnect.setOnAction(ev -> {

Project project = Project.newProject();

Dbms dbms = Dbms.newDbms();
dbms.setIpAddress(fieldHost.getText());
dbms.setPort(Integer.parseInt(fieldPort.getText()));
dbms.setName(fieldName.getText());
dbms.setUsername(fieldUser.getText());
dbms.setPassword(fieldPass.getText());
dbms.setType(fieldType.getSelectionModel().getSelectedItem());
project.add(dbms);

project.setName(fieldSchema.getText());
Settings.inst().set("last_known_schema", fieldSchema.getText());
Settings.inst().set("last_known_dbtype", fieldType.getSelectionModel().getSelectedItem());
Settings.inst().set("last_known_host", fieldHost.getText());
Settings.inst().set("last_known_user", fieldUser.getText());
Settings.inst().set("last_known_name", fieldName.getText());
Settings.inst().set("last_known_port", fieldPort.getText());

try {
final DbmsHandler dh = Platform.get().get(DbmsHandlerComponent.class).get(dbms);
dh.schemasPopulated()
.filter(s -> fieldSchema.getText().equalsIgnoreCase(s.getName()))
.forEachOrdered(dbms::add);

Trees.traverse((Child) project, c -> c.asParent()
.map(p -> p.stream())
.orElse(Stream.empty())
.map(n -> (Child<?>) n),
Trees.TraversalOrder.DEPTH_FIRST_PRE
).forEachOrdered(System.out::println);

SceneController.showIn(stage, project);
Settings.inst().set("hide_open_option", false);
} catch (Exception ex) {
showAlert(stage, "Error!",
"Could not connect to the database. Make sure the " +
"information provided is correct and that the database " +
"server is running."
);
throw ex;
}
});

buttonOpen.setOnAction(createOpenProjectHandler(stage, (f,p) -> {
// Todo: set saved file;
SceneController.showIn(stage, p);
}));
} }


private void toggleConnectButton() { private void toggleConnectButton() {
Expand Down Expand Up @@ -201,6 +210,7 @@ public static void showIn(Stage stage) {
stage.setScene(scene); stage.setScene(scene);
stage.show(); stage.show();
} catch (IOException ex) { } catch (IOException ex) {
LOGGER.error(ex);
throw new RuntimeException(ex); throw new RuntimeException(ex);
} }
} }
Expand Down
30 changes: 8 additions & 22 deletions src/main/java/com/speedment/gui/controllers/SceneController.java
Expand Up @@ -31,6 +31,7 @@
import static com.speedment.gui.util.ProjectUtil.createOpenProjectHandler; import static com.speedment.gui.util.ProjectUtil.createOpenProjectHandler;
import static com.speedment.gui.util.ProjectUtil.createSaveAsProjectHandler; import static com.speedment.gui.util.ProjectUtil.createSaveAsProjectHandler;
import static com.speedment.gui.util.ProjectUtil.createSaveProjectHandler; import static com.speedment.gui.util.ProjectUtil.createSaveProjectHandler;
import static com.speedment.gui.util.ProjectUtil.getDefaultLocation;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.net.URL; import java.net.URL;
Expand All @@ -40,7 +41,6 @@
import java.time.ZoneId; import java.time.ZoneId;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.time.temporal.UnsupportedTemporalTypeException; import java.time.temporal.UnsupportedTemporalTypeException;
import java.util.Arrays;
import java.util.ResourceBundle; import java.util.ResourceBundle;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;
Expand Down Expand Up @@ -163,27 +163,9 @@ public void initialize(URL url, ResourceBundle rb) {
mbNew.setOnAction(newProject); mbNew.setOnAction(newProject);


// Open project. // Open project.
// final EventHandler<ActionEvent> openProject = ev -> { final EventHandler<ActionEvent> openProject = createOpenProjectHandler(
// System.out.println("Load project"); stage, getDefaultLocation(savedFile), (f, p) -> {
// final FileChooser fileChooser = new FileChooser();
// fileChooser.setTitle("Open Groovy File");
// fileChooser.setSelectedExtensionFilter(new ExtensionFilter("Groovy files (*.groovy)", "*.groovy"));
// File file = fileChooser.showOpenDialog(stage);
//
// try {
// final Project p = Project.newProject();
// GroovyParser.fromGroovy(p, file.toPath());
// treeHierarchy.setRoot(branch(p));
// project = p;
//
// } catch (Exception e) {
// e.printStackTrace();
// final Alert alert = new Alert(Alert.AlertType.ERROR, e.getMessage(), ButtonType.OK);
// alert.showAndWait();
// }
//
// };
final EventHandler<ActionEvent> openProject = createOpenProjectHandler(stage, (f, p) -> {
savedFile = f; savedFile = f;
treeHierarchy.setRoot(branch(p)); treeHierarchy.setRoot(branch(p));
project = p; project = p;
Expand Down Expand Up @@ -276,6 +258,10 @@ public Project getProject() {
public File getLastSaved() { public File getLastSaved() {
return savedFile; return savedFile;
} }

public void setLastSaved(File savedFile) {
this.savedFile = savedFile;
}


private void populateTree(Project project) { private void populateTree(Project project) {
final ListChangeListener<? super TreeItem<Child<?>>> change = l -> { final ListChangeListener<? super TreeItem<Child<?>>> change = l -> {
Expand Down

0 comments on commit 7c3132b

Please sign in to comment.