# IGNITE-32 WIP: Reworked UI.
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/d34e6fd8 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/d34e6fd8 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/d34e6fd8 Branch: refs/heads/ignite-32 Commit: d34e6fd89c8aa2f50cbc1068751f80be133f3ad6 Parents: 38c721e Author: AKuznetsov <akuznet...@gridgain.com> Authored: Sun Dec 28 11:18:47 2014 +0700 Committer: AKuznetsov <akuznet...@gridgain.com> Committed: Sun Dec 28 11:18:47 2014 +0700 ---------------------------------------------------------------------- .../org/apache/ignite/schema/ui/Controls.java | 55 ++++++++++++ .../org/apache/ignite/schema/ui/GridPaneEx.java | 93 ++++++++------------ .../apache/ignite/schema/ui/SchemaLoadApp.java | 64 +++++++------- 3 files changed, 127 insertions(+), 85 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d34e6fd8/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 new file mode 100644 index 0000000..954bdb1 --- /dev/null +++ b/modules/schema-load/src/main/java/org/apache/ignite/schema/ui/Controls.java @@ -0,0 +1,55 @@ +/* @java.file.header */ + +/* _________ _____ __________________ _____ + * __ ____/___________(_)______ /__ ____/______ ____(_)_______ + * _ / __ __ ___/__ / _ __ / _ / __ _ __ `/__ / __ __ \ + * / /_/ / _ / _ / / /_/ / / /_/ / / /_/ / _ / _ / / / + * \____/ /_/ /_/ \_,__/ \____/ \__,_/ /_/ /_/ /_/ + */ + +package org.apache.ignite.schema.ui; + +import javafx.event.*; +import javafx.scene.control.*; + +/** + * Utility class to create controls. + */ +public class Controls { + /** + * Create button. + * + * @param text Button text. + * @param onAct Button action. + * @return New button instance. + */ + public static Button button(String text, EventHandler<ActionEvent> onAct) { + Button btn = new Button(text); + + btn.setOnAction(onAct); + + return btn; + } + + /** + * Create checkbox. + * + * @param text Checkbox text. + * @param sel Checkbox selected state. + * @return New checkbox instance. + */ + public static CheckBox checkBox(String text, boolean sel) { + CheckBox ch = new CheckBox(text); + + ch.setSelected(sel); + + return ch; + } + + /** + * @return New text field instance. + */ + public static TextField textField() { + return new TextField(); + } +} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d34e6fd8/modules/schema-load/src/main/java/org/apache/ignite/schema/ui/GridPaneEx.java ---------------------------------------------------------------------- diff --git a/modules/schema-load/src/main/java/org/apache/ignite/schema/ui/GridPaneEx.java b/modules/schema-load/src/main/java/org/apache/ignite/schema/ui/GridPaneEx.java index eb1a8b7..e7e42e8 100644 --- a/modules/schema-load/src/main/java/org/apache/ignite/schema/ui/GridPaneEx.java +++ b/modules/schema-load/src/main/java/org/apache/ignite/schema/ui/GridPaneEx.java @@ -9,7 +9,6 @@ package org.apache.ignite.schema.ui; -import javafx.collections.*; import javafx.geometry.*; import javafx.scene.*; import javafx.scene.control.*; @@ -19,6 +18,12 @@ import javafx.scene.layout.*; * Utility extention of {@code GridPane}. */ public class GridPaneEx extends GridPane { + /** Current column. */ + private int col; + + /** Current row. */ + private int row; + /** * @param padding Pane padding. */ @@ -30,22 +35,6 @@ public class GridPaneEx extends GridPane { } /** - * Add percent columns. - * - * @param cols Columns percentages. - */ - public void addPercentColumns(double... cols) { - ObservableList<ColumnConstraints> ccs = getColumnConstraints(); - - for (double col : cols) { - ColumnConstraints cc = new ColumnConstraints(2); - cc.setPercentWidth(col); - - ccs.add(cc); - } - } - - /** * Add fixed width column. * * @param width Column width. @@ -65,11 +54,11 @@ public class GridPaneEx extends GridPane { * Add column with constraints and horizontal grow priority for the column. * * @param min Column minimum size. - * @param pref Column preffered size. + * @param pref Column preferred size. * @param max Column max size. * @param hgrow Column horizontal grow priority. */ - public void addColumnn(double min, double pref, double max, Priority hgrow) { + public void addColumn(double min, double pref, double max, Priority hgrow) { ColumnConstraints cc = new ColumnConstraints(min, pref, max); cc.setHgrow(hgrow); @@ -94,10 +83,10 @@ public class GridPaneEx extends GridPane { } /** - * Add row with constraints and verical grow priority for the row. + * Add row with constraints and vertical grow priority for the row. * * @param min Row minimum size. - * @param pref Row preffered size. + * @param pref Row preferred size. * @param max Row max size. * @param vgrow Row vertical grow priority. */ @@ -110,46 +99,47 @@ public class GridPaneEx extends GridPane { } /** - * Add label to grid pane. - * - * @param text Label text. - * @param colIx Column index position for the label within the grid pane. - * @param rowIx Row index position for the label within the grid pane. - * @return Label instance. + * Wrap to next row. */ - public Label addLabel(String text, int colIx, int rowIx) { - Label lb = new Label(text); + public void wrap() { + col = 0; - add(lb, colIx, rowIx); + row++; + } - return lb; + /** + * Move to next column. + */ + private void nextCol(int span) { + col += span; + + if (col >= getColumnConstraints().size()) + wrap(); } /** - * Add text field to gridpane. + * Add control to grid pane. * - * @param colIx Column index position for the text field within the grid pane. - * @param rowIx Row index position for the the text field within the grid pane. - * @return new label instance. + * @param ctrl Control to add. + * @param span How many columns control should take. + * @return Added control. */ - public TextField addTextField(int colIx, int rowIx) { - TextField tf = new TextField(); + public <T extends Node> T add(T ctrl, int span) { + add(ctrl, col, row, span, 1); - add(tf, colIx, rowIx); + nextCol(span); - return tf; + return ctrl; } /** - * Add label and text field to gridpane. + * Add control to grid pane. * - * @param text Label text. - * @param colIx Column index position for the label within the grid pane. - * @param rowIx Row index position for the the label within the grid pane. - * @return New text field instance. + * @param ctrl Control to add. + * @return Added control. */ - public TextField addTextField(String text, int colIx, int rowIx) { - return addLabeled(text, new TextField(), colIx, rowIx); + public <T extends Node> T add(T ctrl) { + return add(ctrl, 1); } /** @@ -157,16 +147,11 @@ public class GridPaneEx extends GridPane { * * @param text Label text. * @param ctrl Control to add. - * @param colIx Column index position for the label within the grid pane. - * @param rowIx Row index position for the the label within the grid pane. * @return Added control. */ - public <T extends Node> T addLabeled(String text, T ctrl, int colIx, int rowIx) { - Label lb = new Label(text); + public <T extends Node> T addLabeled(String text, T ctrl) { + add(new Label(text)); - add(lb, colIx, rowIx); - add(ctrl, colIx + 1, rowIx); - - return ctrl; + return add(ctrl); } } http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/d34e6fd8/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 84ac4f4..e3d512e 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 @@ -23,8 +23,6 @@ import org.apache.ignite.schema.pojo.*; import org.apache.ignite.schema.xml.*; import org.gridgain.grid.cache.query.*; -import javax.xml.transform.*; -import javax.xml.transform.stream.*; import java.io.*; import java.sql.*; import java.util.*; @@ -78,6 +76,12 @@ public class SchemaLoadApp extends Application { private TextField outFolderTf; /** */ + private CheckBox pojoConstructorCh; + + /** */ + private CheckBox xmlSingleFileCh; + + /** */ private GridPaneEx genPnl; /** */ @@ -91,18 +95,18 @@ public class SchemaLoadApp extends Application { connPnl = new GridPaneEx(DFLT_PADDING); connPnl.addColumn(); - connPnl.addColumnn(100, 100, Double.MAX_VALUE, Priority.ALWAYS); + connPnl.addColumn(100, 100, Double.MAX_VALUE, Priority.ALWAYS); - jdbcTf = connPnl.addTextField("JDBC Driver:", 0, 0); + jdbcTf = connPnl.addLabeled("JDBC Driver:", Controls.textField()); jdbcTf.setText("org.h2.Driver"); - urlTf = connPnl.addTextField("URL:", 0, 1); + urlTf = connPnl.addLabeled("URL:", Controls.textField()); urlTf.setText("jdbc:h2:mem:test"); - userTf = connPnl.addTextField("User:", 0, 2); + userTf = connPnl.addLabeled("User:", Controls.textField()); userTf.setText("sa"); - pwdTf = connPnl.addLabeled("Password:", new PasswordField(), 0, 3); + pwdTf = connPnl.addLabeled("Password:", new PasswordField()); } return connPnl; @@ -118,12 +122,14 @@ public class SchemaLoadApp extends Application { genPnl = new GridPaneEx(DFLT_PADDING); genPnl.addColumn(); - genPnl.addColumnn(100, 100, Double.MAX_VALUE, Priority.ALWAYS); + genPnl.addColumn(100, 100, Double.MAX_VALUE, Priority.ALWAYS); genPnl.addColumn(30); genPnl.addRow(100, 100, Double.MAX_VALUE, Priority.ALWAYS); genPnl.addRow(); genPnl.addRow(); + genPnl.addRow(); + genPnl.addRow(); rootItem = new CheckBoxTreeItem<>("Database"); rootItem.setExpanded(true); @@ -131,16 +137,17 @@ public class SchemaLoadApp extends Application { TreeView<String> tree = new TreeView<>(rootItem); tree.setCellFactory(CheckBoxTreeCell.<String>forTreeView()); - genPnl.add(tree, 0, 0, 3, 1); + genPnl.add(tree, 3); - pkgTf = genPnl.addTextField("Package:", 0, 2); + pkgTf = genPnl.addLabeled("Package:", Controls.textField()); pkgTf.setText("org.apache.ignite"); - outFolderTf = genPnl.addTextField("Output folder:", 0, 3); + genPnl.wrap(); + + outFolderTf = genPnl.addLabeled("Output Folder:", Controls.textField()); outFolderTf.setText(PATH); - Button btnFolder = new Button("..."); - btnFolder.setOnAction(new EventHandler<ActionEvent>() { + genPnl.add(Controls.button("...", new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent evt) { DirectoryChooser dc = new DirectoryChooser(); @@ -149,9 +156,11 @@ public class SchemaLoadApp extends Application { if (folder != null) outFolderTf.setText(folder.getAbsolutePath()); } - }); + })); - genPnl.add(btnFolder, 2, 3); + pojoConstructorCh = genPnl.add(Controls.checkBox("Generate Constructor For POJO", false), 3); + + xmlSingleFileCh = genPnl.add(Controls.checkBox("Write All Configurations To Single File", true), 3); } return genPnl; @@ -196,6 +205,8 @@ public class SchemaLoadApp extends Application { List<GridCacheQueryTypeMetadata> all = new ArrayList<>(); + boolean constructor = pojoConstructorCh.isSelected(); + for (TreeItem<String> schemeItem : rootItem.getChildren()) { for (TreeItem<String> tblItem : schemeItem.getChildren()) { if (((CheckBoxTreeItem)tblItem).isSelected()) { @@ -204,13 +215,9 @@ public class SchemaLoadApp extends Application { all.add(meta); - XmlTransformer transformer = new XmlTransformer(4); - - Result res = new StreamResult(new File(destFolder, meta.getType() + ".xml")); + XmlTransformer.transform(pkg, meta, new File(destFolder, meta.getType() + ".xml")); - transformer.transform(pkg, meta, res); - - PojoCodeGenerator.generate(meta, outFolder, pkg); + PojoCodeGenerator.generate(meta, outFolder, pkg, constructor); } } } @@ -218,11 +225,8 @@ public class SchemaLoadApp extends Application { if (all.isEmpty()) MessageBox.showInformationDialog(owner, "Warning", "Nothing selected"); else { - XmlTransformer transformer = new XmlTransformer(4); - - Result res = new StreamResult(new File(outFolder, "all.xml")); - - transformer.transform(pkg, all, res); + if (xmlSingleFileCh.isSelected()) + XmlTransformer.transform(pkg, all, new File(outFolder, "all.xml")); MessageBox.showInformationDialog(owner, "Information", "Generation complete!"); } @@ -250,15 +254,13 @@ public class SchemaLoadApp extends Application { * @return Panel with control buttons. */ private Pane createButtonsPane() { - prevBtn = new Button("Prev"); - prevBtn.setOnAction(new EventHandler<ActionEvent>() { + prevBtn = Controls.button("Prev", new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent evt) { prev(); } }); - nextBtn = new Button("Next"); - nextBtn.setOnAction(new EventHandler<ActionEvent>() { + nextBtn = Controls.button("Next", new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent evt) { next(); } @@ -323,7 +325,7 @@ public class SchemaLoadApp extends Application { primaryStage.setMinWidth(w); primaryStage.setMaxWidth(2 * w); - int h = 350; + int h = 400; primaryStage.setHeight(h); primaryStage.setMinHeight(h); primaryStage.setMaxHeight(2 * h);