Search in sources :

Example 11 with Menu

use of javafx.scene.control.Menu in project Gargoyle by callakrsos.

the class PagedCodeAreaFindAndReplaceHelper method createMenus.

/**
	 *  FindAndReplace에 대한 메뉴를 정의.
	 * @return
	 * @작성자 : KYJ
	 * @작성일 : 2017. 1. 13.
	 */
public Menu createMenus() {
    menuSearch = new Menu("Search");
    miFindReplace = new MenuItem("Find/Replace");
    miFindReplace.setAccelerator(new KeyCodeCombination(KeyCode.F, KeyCombination.CONTROL_DOWN));
    miFindReplace.setOnAction(this::findReplaceEvent);
    menuSearch.getItems().add(miFindReplace);
    return menuSearch;
}
Also used : MenuItem(javafx.scene.control.MenuItem) KeyCodeCombination(javafx.scene.input.KeyCodeCombination) Menu(javafx.scene.control.Menu)

Example 12 with Menu

use of javafx.scene.control.Menu in project Gargoyle by callakrsos.

the class SVNTreeView method addContextMenus.

/***********************************************************************************/
/***********************************************************************************/
/* 일반API 구현 */
/**
	 * 컨텍스트 메뉴 등록
	 *
	 * @작성자 : KYJ
	 * @작성일 : 2016. 4. 4.
	 */
void addContextMenus() {
    menuNew = new Menu("New");
    menuAddNewLocation = new MenuItem("Repository Location");
    menuDiscardLocation = new MenuItem("Discard Location");
    menuReflesh = new MenuItem("Reflesh");
    menuCheckout = new MenuItem("Checkout");
    menuSvnGraph = new MenuItem("SVN Graph");
    menuProperties = new MenuItem("Properties");
    menuNew.getItems().add(menuAddNewLocation);
    menuAddNewLocation.setOnAction(this::menuAddNewLocationOnAction);
    menuDiscardLocation.setOnAction(this::menuDiscardLocationOnAction);
    menuCheckout.setOnAction(this::menuCheckoutOnAction);
    menuSvnGraph.setOnAction(this::menuSVNGraphOnAction);
    menuProperties.setOnAction(this::menuPropertiesOnAction);
    contextMenu = new ContextMenu(menuNew, new SeparatorMenuItem(), menuCheckout, new SeparatorMenuItem(), menuSvnGraph, new SeparatorMenuItem(), menuDiscardLocation, menuReflesh, new SeparatorMenuItem(), menuProperties);
    // setContextMenu(contextMenu);
    setCellFactory(treeItem -> {
        TextFieldTreeCell<SVNItem> textFieldTreeCell = new TextFieldTreeCell<>();
        textFieldTreeCell.setContextMenu(contextMenu);
        return textFieldTreeCell;
    });
    // 특정 조건에 따른 메뉴 VISIBLE 처리를 정의함.
    contextMenu.setOnShown(contextMenuVisibleEvent);
}
Also used : MenuItem(javafx.scene.control.MenuItem) SeparatorMenuItem(javafx.scene.control.SeparatorMenuItem) ContextMenu(javafx.scene.control.ContextMenu) ContextMenu(javafx.scene.control.ContextMenu) Menu(javafx.scene.control.Menu) TextFieldTreeCell(javafx.scene.control.cell.TextFieldTreeCell) SeparatorMenuItem(javafx.scene.control.SeparatorMenuItem)

Example 13 with Menu

use of javafx.scene.control.Menu in project Gargoyle by callakrsos.

the class PostgreSqlPane method menuExportMergeScriptOnAction.

/* (non-Javadoc)
	 * @see com.kyj.fx.voeditor.visual.component.sql.view.SqlPane#menuExportMergeScriptOnAction(javafx.event.ActionEvent)
	 */
@Override
public void menuExportMergeScriptOnAction(ActionEvent e) {
    //		TableView<Map<String, Object>> tbResult = getTbResult();
    List<Map<String, Object>> items = getSelectedTabResultItems();
    //		TreeView<DatabaseItemTree<String>> schemaTree = getSchemaTree();
    //
    //		List<String> schemaList = schemaTree.getRoot().getChildren().stream().map(v -> v.getValue().getName()).collect(Collectors.toList());
    //
    String defaultSchema = "";
    try {
        Map<String, Object> findOne = DbUtil.findOne(connectionSupplier.get(), "select current_schema() as currentschema");
        if (findOne != null && !findOne.isEmpty()) {
            defaultSchema = ValueUtil.decode(findOne.get("currentschema"), "").toString();
        }
    } catch (Exception e4) {
        e4.printStackTrace();
    }
    //
    final String _defaultSchema = defaultSchema;
    //
    //		if (items.isEmpty())
    //			return;
    //
    //		// TODO :: DBMS에 따라 Merge문 생성 로직 분기 처리 필요.
    //
    //		Optional<Pair<String, String[]>> showInputDialog = DialogUtil.showInputCustomDialog(tbResult.getScene().getWindow(), "table Name",
    //				"테이블명을 입력하세요.", new CustomInputDialogAction<GridPane, String[]>() {
    //
    //					TextField txtSchema;
    //					TextField txtTable;
    //
    //					@Override
    //					public GridPane getNode() {
    //						GridPane gridPane = new GridPane();
    //						txtSchema = new TextField();
    //						txtTable = new TextField();
    //
    //						FxUtil.installAutoTextFieldBinding(txtSchema, () -> {
    //							return schemaList;
    //						});
    //
    //						FxUtil.installAutoTextFieldBinding(txtTable, () -> {
    //							return searchPattern(txtSchema.getText(), txtTable.getText()).stream().map(v -> v.getValue().getName())
    //									.collect(Collectors.toList());
    //						});
    //						txtSchema.setText(_defaultSchema);
    //
    //						//Default TableName
    //						TreeItem<DatabaseItemTree<String>> selectedItem = getSchemaTree().getSelectionModel().getSelectedItem();
    //						if (null != selectedItem) {
    //							DatabaseItemTree<String> value = selectedItem.getValue();
    //							if (value instanceof TableItemTree) {
    //								txtTable.setText(value.getName());
    //							}
    //						}
    //
    //						Label label = new Label("Schema : ");
    //						Label label2 = new Label("Table : ");
    //						gridPane.add(label, 0, 0);
    //						gridPane.add(label2, 1, 0);
    //						gridPane.add(txtSchema, 0, 1);
    //						gridPane.add(txtTable, 1, 1);
    //						return gridPane;
    //					}
    //
    //					@Override
    //					public String[] okClickValue() {
    //
    //						String schema = txtSchema.getText().trim();
    //						String table = txtTable.getText().trim();
    //
    //						String[] okValue = new String[2];
    //						okValue[0] = schema;
    //						okValue[1] = table;
    //						return okValue;
    //					}
    //
    //					@Override
    //					public String[] cancelClickValue() {
    //						return null;
    //					}
    //
    //				});
    Optional<Pair<String, String[]>> showTableInputDialog = showTableInputDialog(v -> v.getName());
    showTableInputDialog.ifPresent(op -> {
        if (!"OK".equals(op.getKey()))
            return;
        String[] resultValue = op.getValue();
        try {
            StringBuilder clip = new StringBuilder();
            PostgreTableItemTree dirtyTreeItem = new PostgreTableItemTree();
            String schemaName = (resultValue[0] == null || resultValue[0].isEmpty()) ? _defaultSchema : resultValue[0];
            String tableName = resultValue[1];
            String childrenSQL = dirtyTreeItem.getChildrenSQL(schemaName, tableName);
            List<Map<String, Object>> select = DbUtil.select(childrenSQL);
            List<String> pkList = new ArrayList<>();
            List<String> notPkList = new ArrayList<>();
            List<String> columnList = new ArrayList<>();
            for (Map<String, Object> map : select) {
                String columnName = map.get("column_name").toString();
                Object primaryKeyYn = map.get("primary_yn");
                columnList.add(columnName);
                if ("Y".equals(primaryKeyYn)) {
                    pkList.add(columnName);
                } else {
                    notPkList.add(columnName);
                }
            }
            String mergePreffix = String.format("with upsert as ( update %s set  ", tableName);
            String mergeMiddle = " returning * )\n";
            String collect = columnList.stream().collect(Collectors.joining(", ", "(", ")"));
            String insertPreffix = String.format("insert into %s", tableName);
            String insertend = " where not exists (select * from upsert);\n";
            List<String> valueList = items.stream().map(v -> {
                return ValueUtil.toJSONObject(v);
            }).map(v -> {
                String updateSetSql = notPkList.stream().map(str -> {
                    if (str == null)
                        return null;
                    else {
                        JsonElement jsonElement = v.get(str);
                        if (jsonElement == null) {
                            return str.concat("=").concat("null");
                        } else {
                            String dataValue = jsonElement.toString();
                            dataValue = dataValue.substring(1, dataValue.length() - 1);
                            if (dataValue.indexOf("'") >= 0) {
                                dataValue = StringUtils.replace(dataValue, "'", "''");
                            }
                            return str.concat("=").concat("'").concat(dataValue).concat("'");
                        }
                    }
                }).collect(Collectors.joining(", "));
                String updateWhereSql = pkList.stream().map(str -> {
                    if (str == null)
                        return null;
                    else {
                        if (null == v.get(str))
                            return null;
                        String dataValue = v.get(str).toString();
                        dataValue = dataValue.substring(1, dataValue.length() - 1);
                        if (dataValue.indexOf("'") >= 0) {
                            try {
                                dataValue = StringUtils.replace(dataValue, "'", "''");
                            } catch (Exception e1) {
                                e1.printStackTrace();
                            }
                        }
                        return str.concat(" = ").concat("'").concat(dataValue).concat("'");
                    }
                }).filter(str -> str != null).collect(Collectors.joining(" and "));
                String insertValueSql = columnList.stream().map(str -> {
                    if (str == null)
                        return null;
                    else {
                        JsonElement jsonElement = v.get(str);
                        if (jsonElement == null) {
                            return "null";
                        } else {
                            String dataValue = jsonElement.toString();
                            dataValue = dataValue.substring(1, dataValue.length() - 1);
                            if (dataValue.indexOf("'") >= 0) {
                                dataValue = StringUtils.replace(dataValue, "'", "''");
                            }
                            return "'".concat(dataValue).concat("'");
                        }
                    }
                }).collect(Collectors.joining(", "));
                return new StringBuilder().append(mergePreffix).append(updateSetSql).append(" where ").append(updateWhereSql).append(mergeMiddle).append(insertPreffix).append(collect).append(" select ").append(insertValueSql).append(insertend).toString();
            }).collect(Collectors.toList());
            valueList.forEach(str -> {
                clip.append(str);
            });
            SqlKeywords parent = new SqlKeywords();
            {
                MenuBar menuBar = new MenuBar();
                Menu menuFile = new Menu("File");
                MenuItem miSaveAs = new MenuItem("Save As");
                miSaveAs.setOnAction(ev -> {
                    File saveAsFile = DialogUtil.showFileSaveCheckDialog(getScene().getWindow(), chooser -> {
                        chooser.getExtensionFilters().add(new ExtensionFilter(GargoyleExtensionFilters.SQL_NAME, GargoyleExtensionFilters.SQL));
                    });
                    if (saveAsFile != null) {
                        ThreadUtil.createNewThreadAndRun("Saveas", () -> {
                            SaveSQLFileFunction function = new SaveSQLFileFunction();
                            function.apply(saveAsFile, parent.getText());
                        });
                    }
                });
                menuFile.getItems().add(miSaveAs);
                menuBar.getMenus().add(menuFile);
                parent.setTop(menuBar);
            }
            parent.setContent(clip.toString());
            parent.setWrapText(false);
            parent.setPrefSize(1200d, 800d);
            FxUtil.createStageAndShow(parent, stage -> {
                stage.initOwner(getScene().getWindow());
                stage.setTitle(String.format("[Merge Script] Table : %s", tableName));
            });
        } catch (Exception e2) {
            LOGGER.error(ValueUtil.toString(e2));
            DialogUtil.showExceptionDailog(e2, "에러발생, 테이블을 잘못 선택하셨을 수 있습니다.");
        }
    });
}
Also used : StringUtils(org.apache.commons.lang.StringUtils) Connection(java.sql.Connection) DbUtil(com.kyj.fx.voeditor.visual.util.DbUtil) TreeItem(javafx.scene.control.TreeItem) LoggerFactory(org.slf4j.LoggerFactory) DialogUtil(com.kyj.fx.voeditor.visual.util.DialogUtil) Supplier(java.util.function.Supplier) ArrayList(java.util.ArrayList) JsonElement(com.google.gson.JsonElement) ThreadUtil(com.kyj.fx.voeditor.visual.util.ThreadUtil) Map(java.util.Map) GargoyleExtensionFilters(com.kyj.fx.voeditor.visual.util.GargoyleExtensionFilters) SaveSQLFileFunction(com.kyj.fx.voeditor.visual.component.sql.functions.SaveSQLFileFunction) SqlKeywords(com.kyj.fx.voeditor.visual.component.text.SqlKeywords) Pair(javafx.util.Pair) Logger(org.slf4j.Logger) MenuBar(javafx.scene.control.MenuBar) MenuItem(javafx.scene.control.MenuItem) DatabaseTreeNode(com.kyj.fx.voeditor.visual.component.sql.dbtree.DatabaseTreeNode) ValueUtil(com.kyj.fx.voeditor.visual.util.ValueUtil) Collectors(java.util.stream.Collectors) File(java.io.File) PostgreDatabaseItemTree(com.kyj.fx.voeditor.visual.component.sql.dbtree.postgre.PostgreDatabaseItemTree) Menu(javafx.scene.control.Menu) FxUtil(com.kyj.fx.voeditor.visual.util.FxUtil) List(java.util.List) ResourceLoader(com.kyj.fx.voeditor.visual.momory.ResourceLoader) ActionEvent(javafx.event.ActionEvent) DatabaseItemTree(com.kyj.fx.voeditor.visual.component.sql.dbtree.commons.DatabaseItemTree) PostgreTableItemTree(com.kyj.fx.voeditor.visual.component.sql.dbtree.postgre.PostgreTableItemTree) Optional(java.util.Optional) ExtensionFilter(javafx.stage.FileChooser.ExtensionFilter) SqlKeywords(com.kyj.fx.voeditor.visual.component.text.SqlKeywords) ArrayList(java.util.ArrayList) MenuBar(javafx.scene.control.MenuBar) MenuItem(javafx.scene.control.MenuItem) JsonElement(com.google.gson.JsonElement) ExtensionFilter(javafx.stage.FileChooser.ExtensionFilter) Menu(javafx.scene.control.Menu) SaveSQLFileFunction(com.kyj.fx.voeditor.visual.component.sql.functions.SaveSQLFileFunction) Map(java.util.Map) File(java.io.File) Pair(javafx.util.Pair) PostgreTableItemTree(com.kyj.fx.voeditor.visual.component.sql.dbtree.postgre.PostgreTableItemTree)

Example 14 with Menu

use of javafx.scene.control.Menu in project Gargoyle by callakrsos.

the class SqlMultiplePane method createTreeContextMenu.

/**
	 * 컨텍스트 메뉴 생성 및 기능 적용
	 *
	 * @param schemaTree2
	 */
private void createTreeContextMenu(TreeView<K> schemaTree) {
    MenuItem menuSelectScript = new MenuItem("Select Script");
    menuSelectScript.setOnAction(this::applySelectScript);
    MenuItem menuUpdateScript = new MenuItem("Update Script");
    menuUpdateScript.setOnAction(this::applyUpdateScript);
    MenuItem menuDeleteScript = new MenuItem("Delete Script");
    menuDeleteScript.setOnAction(this::applyDeleteSelectScript);
    MenuItem menuInsertScript = new MenuItem("Insert Script");
    menuInsertScript.setOnAction(this::applyInsertScript);
    Menu menu = new Menu("Script", null, menuSelectScript, menuUpdateScript, menuDeleteScript, menuInsertScript);
    // MenuItem menuPrimaryKeys = new MenuItem("Primary Keys");
    MenuItem menuShowData = new MenuItem("Show 100 rows");
    menuShowData.setOnAction(this::show100RowAction);
    MenuItem menuProperties = new MenuItem("Properties");
    menuProperties.setOnAction(this::showProperties);
    MenuItem menuReflesh = new MenuItem("Reflesh");
    menuReflesh.setOnAction(this::menuRefleshOnAction);
    menuReflesh.setAccelerator(new KeyCodeCombination(KeyCode.F5));
    ContextMenu contextMenu = new ContextMenu(menu, menuShowData, menuProperties, new SeparatorMenuItem(), menuReflesh);
    schemaTree.setContextMenu(contextMenu);
}
Also used : MenuItem(javafx.scene.control.MenuItem) SeparatorMenuItem(javafx.scene.control.SeparatorMenuItem) KeyCodeCombination(javafx.scene.input.KeyCodeCombination) ContextMenu(javafx.scene.control.ContextMenu) ContextMenu(javafx.scene.control.ContextMenu) Menu(javafx.scene.control.Menu) SeparatorMenuItem(javafx.scene.control.SeparatorMenuItem)

Example 15 with Menu

use of javafx.scene.control.Menu in project Gargoyle by callakrsos.

the class SqlMultiplePane method createResultTableContextMenu.

private void createResultTableContextMenu(TableView<Map<String, Object>> tbResult) {
    MenuItem menuExportExcel = new MenuItem("Export Excel File");
    menuExportExcel.setOnAction(e -> menuExportExcelOnAction(tbResult));
    MenuItem menuExportSpreadSheet = new MenuItem("Export SpreadSheet");
    menuExportSpreadSheet.setOnAction(this::menuExportSpreadSheetOnAction);
    Menu menuExportExcelFile = new Menu("Export", null, menuExportExcel, menuExportSpreadSheet);
    ContextMenu contextMenu = new ContextMenu(menuExportExcelFile);
    tbResult.setContextMenu(contextMenu);
}
Also used : MenuItem(javafx.scene.control.MenuItem) SeparatorMenuItem(javafx.scene.control.SeparatorMenuItem) ContextMenu(javafx.scene.control.ContextMenu) ContextMenu(javafx.scene.control.ContextMenu) Menu(javafx.scene.control.Menu)

Aggregations

Menu (javafx.scene.control.Menu)19 MenuItem (javafx.scene.control.MenuItem)18 ContextMenu (javafx.scene.control.ContextMenu)10 SeparatorMenuItem (javafx.scene.control.SeparatorMenuItem)8 KeyCodeCombination (javafx.scene.input.KeyCodeCombination)7 MenuBar (javafx.scene.control.MenuBar)6 File (java.io.File)3 SqlKeywords (com.kyj.fx.voeditor.visual.component.text.SqlKeywords)2 IOException (java.io.IOException)2 ArrayList (java.util.ArrayList)2 List (java.util.List)2 ExtensionFilter (javafx.stage.FileChooser.ExtensionFilter)2 JsonElement (com.google.gson.JsonElement)1 FileWrapper (com.kyj.fx.voeditor.visual.component.FileWrapper)1 JavaProjectMemberFileTreeItem (com.kyj.fx.voeditor.visual.component.JavaProjectMemberFileTreeItem)1 DatabaseTreeNode (com.kyj.fx.voeditor.visual.component.sql.dbtree.DatabaseTreeNode)1 DatabaseItemTree (com.kyj.fx.voeditor.visual.component.sql.dbtree.commons.DatabaseItemTree)1 PostgreDatabaseItemTree (com.kyj.fx.voeditor.visual.component.sql.dbtree.postgre.PostgreDatabaseItemTree)1 PostgreTableItemTree (com.kyj.fx.voeditor.visual.component.sql.dbtree.postgre.PostgreTableItemTree)1 SaveSQLFileFunction (com.kyj.fx.voeditor.visual.component.sql.functions.SaveSQLFileFunction)1