# IGNITE-32: WIP on UI usability.

Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/0eb6a6a7
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/0eb6a6a7
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/0eb6a6a7

Branch: refs/heads/ignite-188
Commit: 0eb6a6a744b8936336375f87bdd5ff1088c0ee29
Parents: 53760d1
Author: AKuznetsov <akuznet...@gridgain.com>
Authored: Fri Feb 6 18:06:02 2015 +0700
Committer: AKuznetsov <akuznet...@gridgain.com>
Committed: Fri Feb 6 18:06:02 2015 +0700

----------------------------------------------------------------------
 .../ignite/schema/model/PojoDescriptor.java     |   8 +-
 .../org/apache/ignite/schema/ui/Controls.java   |   4 +-
 .../apache/ignite/schema/ui/SchemaLoadApp.java  | 137 ++++++++++++-------
 3 files changed, 95 insertions(+), 54 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0eb6a6a7/modules/schema-load/src/main/java/org/apache/ignite/schema/model/PojoDescriptor.java
----------------------------------------------------------------------
diff --git 
a/modules/schema-load/src/main/java/org/apache/ignite/schema/model/PojoDescriptor.java
 
b/modules/schema-load/src/main/java/org/apache/ignite/schema/model/PojoDescriptor.java
index 70b682c..9f3322b 100644
--- 
a/modules/schema-load/src/main/java/org/apache/ignite/schema/model/PojoDescriptor.java
+++ 
b/modules/schema-load/src/main/java/org/apache/ignite/schema/model/PojoDescriptor.java
@@ -109,12 +109,14 @@ public class PojoDescriptor {
 
         fields = FXCollections.observableList(flds);
 
-        boolean hasKeys = !keyFields().isEmpty();
+        boolean isTbl = parent != null;
+
+        boolean hasKeys = !isTbl || !keyFields().isEmpty();
 
         useProp = new SimpleBooleanProperty(hasKeys);
 
-        if (parent != null)
-            parent.indeterminate().set(true);
+        if (isTbl && !hasKeys && !parent.indeterminateProp.get())
+            parent.indeterminateProp.set(true);
 
         useProp.addListener(new ChangeListener<Boolean>() {
             @Override public void changed(ObservableValue<? extends Boolean> 
val, Boolean oldVal, Boolean newVal) {

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0eb6a6a7/modules/schema-load/src/main/java/org/apache/ignite/schema/ui/Controls.java
----------------------------------------------------------------------
diff --git 
a/modules/schema-load/src/main/java/org/apache/ignite/schema/ui/Controls.java 
b/modules/schema-load/src/main/java/org/apache/ignite/schema/ui/Controls.java
index e4f1ef7..e270edb 100644
--- 
a/modules/schema-load/src/main/java/org/apache/ignite/schema/ui/Controls.java
+++ 
b/modules/schema-load/src/main/java/org/apache/ignite/schema/ui/Controls.java
@@ -315,8 +315,8 @@ public class Controls {
      * @param items Combo box items.
      * @return New {@code ComboBox} instance.
      */
-    public static ComboBox<String> comboBox(String tip, String... items) {
-        ComboBox<String> cb = new 
ComboBox<>(FXCollections.observableArrayList(items));
+    public static <T> ComboBox<T> comboBox(String tip, T... items) {
+        ComboBox<T> cb = new 
ComboBox<>(FXCollections.observableArrayList(items));
 
         cb.setMaxWidth(Double.MAX_VALUE);
         cb.getSelectionModel().select(0);

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0eb6a6a7/modules/schema-load/src/main/java/org/apache/ignite/schema/ui/SchemaLoadApp.java
----------------------------------------------------------------------
diff --git 
a/modules/schema-load/src/main/java/org/apache/ignite/schema/ui/SchemaLoadApp.java
 
b/modules/schema-load/src/main/java/org/apache/ignite/schema/ui/SchemaLoadApp.java
index 44fbfd3..d03d252 100644
--- 
a/modules/schema-load/src/main/java/org/apache/ignite/schema/ui/SchemaLoadApp.java
+++ 
b/modules/schema-load/src/main/java/org/apache/ignite/schema/ui/SchemaLoadApp.java
@@ -47,45 +47,69 @@ import static org.apache.ignite.schema.ui.Controls.*;
  */
 @SuppressWarnings("UnnecessaryFullyQualifiedName")
 public class SchemaLoadApp extends Application {
-    /** Rdbms names. */
-    private static final String[] RDBMS_NAMES = {
-        "H2 Database",
-        "DB2",
-        "Oracle",
-        "MySQL",
-        "Microsoft SQL Server",
-        "PostgreSQL",
-        "Custom server..."};
-
-    /** Jdbc drivers. */
-    private static final String[] JDBC_JAR = {
-        "h2.jar",
-        "db2jcc4.jar",
-        "ojdbc6.jar",
-        "mysql-connector-java-5-bin.jar",
-        "sqljdbc41.jar",
-        "postgresql-9.3.jdbc4.jar",
-        "jdbc.jar"};
-
-    /** Jdbc drivers. */
-    private static final String[] JDBC_DRIVERS = {
-        "org.h2.Driver",
-        "com.ibm.db2.jcc.DB2Driver",
-        "oracle.jdbc.OracleDriver",
-        "com.mysql.jdbc.Driver",
-        "com.microsoft.sqlserver.jdbc.SQLServerDriver",
-        "org.postgresql.Driver",
-        "org.custom.Driver"};
-
-    /** Jdbc urls. */
-    private static final String[] JDBC_URLS = {
-        "jdbc:h2:[database]",
-        "jdbc:db2://[host]:[port]/[database]",
-        "jdbc:oracle:thin:@[host]:[port]:[database]",
-        "jdbc:mysql://[host]:[port]/[database]",
-        "jdbc:sqlserver://[host]:[port][;databaseName=database]",
-        "jdbc:postgresql://[host]:[port]/[database]",
-        "jdbc:custom"};
+    /** Default presets for most popular databases. */
+    private enum Preset {
+        /** Preset for H2. */
+        H2("H2 Database", "h2.jar", "org.h2.Driver", "jdbc:h2:[database]", 
"sa"),
+
+        /** Preset for DB2. */
+        DB2("DB2", "db2jcc4.jar", "com.ibm.db2.jcc.DB2Driver", 
"jdbc:db2://[host]:[port]/[database]", "db2admin"),
+
+        /** Preset for Oracle. */
+        ORACLE("Oracle", "ojdbc6.jar", "oracle.jdbc.OracleDriver", 
"jdbc:oracle:thin:@[host]:[port]:[database]", "system"),
+
+        /** Preset for MySql. */
+        MY_SQL("MySQL", "mysql-connector-java-5-bin.jar", 
"com.mysql.jdbc.Driver", "jdbc:mysql://[host]:[port]/[database]", "root"),
+
+        /** Preset for MsSql. */
+        MS_SQL("Microsoft SQL Server", "sqljdbc41.jar", 
"com.microsoft.sqlserver.jdbc.SQLServerDriver", 
"jdbc:sqlserver://[host]:[port][;databaseName=database]", "sa"),
+
+        /** Preset for PostgreSQL. */
+        POSTGRE_SQL("PostgreSQL", "postgresql-9.3.jdbc4.jar", 
"org.postgresql.Driver", "jdbc:postgresql://[host]:[port]/[database]", "sa"),
+
+        /** Preset for custom server. */
+        CUSTOM("Custom server...", "custom-jdbc.jar", "org.custom.Driver", 
"jdbc:custom", "sa");
+
+        /** RDBMS name. */
+        private final String name;
+
+        /** JDBC driver jar name. */
+        private String jar;
+
+        /** JDBC driver class name. */
+        private String drv;
+
+        /** JDBC URL. */
+        private String url;
+
+        /** User name. */
+        private String user;
+
+        /**
+         * Enum constructor.
+         *
+         * @param name RDBMS name.
+         * @param jar JDBC driver jar name.
+         * @param drv JDBC driver class name.
+         * @param url JDBC URL.
+         * @param user User name.
+         */
+        Preset(String name, String jar, String drv, String url, String user) {
+            this.name = name;
+            this.jar = jar;
+            this.drv = drv;
+            this.url = url;
+            this.user = user;
+        }
+
+        /** {@inheritDoc} */
+        @Override public String toString() {
+            return name;
+        }
+    }
+
+    /** Databases presets. */
+    private static Preset[] PRESETS = Preset.values();
 
     /** */
     private Stage owner;
@@ -115,7 +139,7 @@ public class SchemaLoadApp extends Application {
     private Button nextBtn;
 
     /** */
-    private ComboBox<String> rdbmsCb;
+    private ComboBox<Preset> rdbmsCb;
 
     /** */
     private TextField jdbcDrvJarTf;
@@ -621,8 +645,22 @@ public class SchemaLoadApp extends Application {
 
         connPnl.wrap();
 
-        rdbmsCb = connPnl.addLabeled("DB Server preset:",
-            comboBox("Select database server to get predefined settings", 
RDBMS_NAMES), 2);
+        GridPaneEx presetPnl = paneEx(0, 0, 0, 0);
+        presetPnl.addColumn(100, 100, Double.MAX_VALUE, Priority.ALWAYS);
+        presetPnl.addColumn();
+
+
+
+        rdbmsCb = presetPnl.add(comboBox("Select database server to get 
predefined settings", PRESETS));
+
+        presetPnl.add(button("Save preset", "", new 
EventHandler<ActionEvent>() {
+            @Override public void handle(ActionEvent evt) {
+                // TODO: CODE: implement.
+            }
+        }));
+
+        connPnl.add(label("DB Preset:"));
+        connPnl.add(presetPnl, 2);
 
         jdbcDrvJarTf = connPnl.addLabeled("Driver JAR:", textField("Path to 
driver jar"));
 
@@ -658,13 +696,12 @@ public class SchemaLoadApp extends Application {
 
         jdbcUrlTf = connPnl.addLabeled("JDBC URL:", textField("JDBC URL of the 
database connection string"), 2);
 
-        rdbmsCb.getSelectionModel().selectedIndexProperty().addListener(new 
ChangeListener<Number>() {
-            @Override public void changed(ObservableValue<? extends Number> 
observable, Number oldIdx, Number newIdx) {
-                int idx = newIdx.intValue();
-
-                jdbcDrvJarTf.setText(JDBC_JAR[idx]);
-                jdbcDrvClsTf.setText(JDBC_DRIVERS[idx]);
-                jdbcUrlTf.setText(JDBC_URLS[idx]);
+        rdbmsCb.getSelectionModel().selectedItemProperty().addListener(new 
ChangeListener<Preset>() {
+            @Override public void changed(ObservableValue<? extends Preset> 
val, Preset oldVal, Preset newVal) {
+                jdbcDrvJarTf.setText(newVal.jar);
+                jdbcDrvClsTf.setText(newVal.drv);
+                jdbcUrlTf.setText(newVal.url);
+                userTf.setText(newVal.user);
             }
         });
 
@@ -763,6 +800,8 @@ public class SchemaLoadApp extends Application {
         TableColumn<PojoField, Boolean> useFldCol = customColumn("Use", "use",
             "Check to use this field for XML and POJO generation\n" +
             "Note that NOT NULL columns cannot be unchecked", 
PojoFieldUseCell.cellFactory());
+        useFldCol.setMinWidth(50);
+        useFldCol.setMaxWidth(50);
 
         TableColumn<PojoField, Boolean> keyCol = booleanColumn("Key", "key",
             "Check to include this field into key object");

Reply via email to