|
|
|
@ -63,7 +63,6 @@ import xyz.wbsite.dbtool.javafx.tool.Tool;
|
|
|
|
|
import xyz.wbsite.dbtool.javafx.view.DBCheckBoxTableCell;
|
|
|
|
|
import xyz.wbsite.dbtool.web.frame.utils.ResourceUtil;
|
|
|
|
|
|
|
|
|
|
import java.io.InputStream;
|
|
|
|
|
import java.net.URL;
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.HashSet;
|
|
|
|
@ -104,7 +103,6 @@ public class JavaFxApplication extends Application {
|
|
|
|
|
primaryStage.setScene(new Scene(root));
|
|
|
|
|
primaryStage.centerOnScreen();
|
|
|
|
|
primaryStage.show();
|
|
|
|
|
|
|
|
|
|
primaryStage.setOnCloseRequest(new EventHandler<WindowEvent>() {
|
|
|
|
|
@Override
|
|
|
|
|
public void handle(WindowEvent event) {
|
|
|
|
@ -124,15 +122,6 @@ public class JavaFxApplication extends Application {
|
|
|
|
|
mainController.setMain(this);
|
|
|
|
|
mTree = mainController.getDbtree();
|
|
|
|
|
mDetail = mainController.getDetail();
|
|
|
|
|
mFields = mainController.getFields();
|
|
|
|
|
mFields.setEditable(true);
|
|
|
|
|
mFields.setSortPolicy(new Callback<TableView, Boolean>() {
|
|
|
|
|
@Override
|
|
|
|
|
public Boolean call(TableView param) {
|
|
|
|
|
//禁止点击列头排序
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
add = mainController.getAdd();
|
|
|
|
|
add.setOnMouseClicked(new EventHandler<MouseEvent>() {
|
|
|
|
|
@Override
|
|
|
|
@ -148,132 +137,8 @@ public class JavaFxApplication extends Application {
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
mFields.setOnMouseClicked(new EventHandler<MouseEvent>() {
|
|
|
|
|
@Override
|
|
|
|
|
public void handle(MouseEvent event) {
|
|
|
|
|
int selectedIndex = mFields.getSelectionModel().getSelectedIndex();
|
|
|
|
|
if (currentTable == null || selectedIndex == -1) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
Field field = currentTable.getFields().get(selectedIndex);
|
|
|
|
|
ContextMenuBuilder builder = new ContextMenuBuilder();
|
|
|
|
|
builder.add("新增", new EventHandler<ActionEvent>() {
|
|
|
|
|
@Override
|
|
|
|
|
public void handle(ActionEvent event) {
|
|
|
|
|
addField();
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
builder.add("删除", new EventHandler<ActionEvent>() {
|
|
|
|
|
@Override
|
|
|
|
|
public void handle(ActionEvent event) {
|
|
|
|
|
subField();
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
if (field.getFieldType().equals(FieldType.Dict.name())) {
|
|
|
|
|
builder.add("编辑字典", new EventHandler<ActionEvent>() {
|
|
|
|
|
@Override
|
|
|
|
|
public void handle(ActionEvent event) {
|
|
|
|
|
MenuItem target = (MenuItem) event.getTarget();
|
|
|
|
|
int index = mFields.getSelectionModel().getSelectedIndex();
|
|
|
|
|
List<Field> fields = currentTable.getFields();
|
|
|
|
|
Field field = fields.get(index);
|
|
|
|
|
Dialog.showSelectEdit(field);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
} else if (field.getFieldType().equals(FieldType.Select.name())) {
|
|
|
|
|
builder.add("编辑选项", new EventHandler<ActionEvent>() {
|
|
|
|
|
@Override
|
|
|
|
|
public void handle(ActionEvent event) {
|
|
|
|
|
int index = mFields.getSelectionModel().getSelectedIndex();
|
|
|
|
|
List<Field> fields = currentTable.getFields();
|
|
|
|
|
Field field = fields.get(index);
|
|
|
|
|
Dialog.showSelectEdit(field);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
} else if (field.getFieldType().equals(FieldType.Boolean.name())) {
|
|
|
|
|
builder.add("编辑是否", new EventHandler<ActionEvent>() {
|
|
|
|
|
@Override
|
|
|
|
|
public void handle(ActionEvent event) {
|
|
|
|
|
int index = mFields.getSelectionModel().getSelectedIndex();
|
|
|
|
|
List<Field> fields = currentTable.getFields();
|
|
|
|
|
Field field = fields.get(index);
|
|
|
|
|
if (field.getSelectItems().size() == 2) {
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
{
|
|
|
|
|
SelectItem selectItem = new SelectItem();
|
|
|
|
|
selectItem.setValue("true");
|
|
|
|
|
selectItem.setLabel("是");
|
|
|
|
|
field.getSelectItems().add(selectItem);
|
|
|
|
|
}
|
|
|
|
|
//region 初始化项目树
|
|
|
|
|
{
|
|
|
|
|
SelectItem selectItem = new SelectItem();
|
|
|
|
|
selectItem.setValue("false");
|
|
|
|
|
selectItem.setLabel("否");
|
|
|
|
|
field.getSelectItems().add(selectItem);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
Dialog.showSelectEdit(field);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
builder.add("向上调整", new EventHandler<ActionEvent>() {
|
|
|
|
|
@Override
|
|
|
|
|
public void handle(ActionEvent event) {
|
|
|
|
|
int index = mFields.getSelectionModel().getSelectedIndex();
|
|
|
|
|
List<Field> fields = currentTable.getFields();
|
|
|
|
|
if (index > 0) {
|
|
|
|
|
fields.add(index - 1, fields.get(index));
|
|
|
|
|
fields.add(index + 1, fields.get(index));
|
|
|
|
|
fields.remove(index);
|
|
|
|
|
fields.remove(index + 1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
builder.add("向下调整", new EventHandler<ActionEvent>() {
|
|
|
|
|
@Override
|
|
|
|
|
public void handle(ActionEvent event) {
|
|
|
|
|
int index = mFields.getSelectionModel().getSelectedIndex();
|
|
|
|
|
List<Field> fields = currentTable.getFields();
|
|
|
|
|
if (index < fields.size() - 1) {
|
|
|
|
|
fields.add(index, fields.get(index + 1));
|
|
|
|
|
fields.add(index + 2, fields.get(index + 1));
|
|
|
|
|
fields.remove(index + 1);
|
|
|
|
|
fields.remove(index + 2);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
ContextMenu con = builder.build();
|
|
|
|
|
mFields.setContextMenu(con);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
URL projectdetail = JavaFxApplication.class.getClassLoader().getResource("fxml/DetailProject.fxml");
|
|
|
|
|
if (projectdetail == null) {
|
|
|
|
|
projectdetail = getClass().getResource("../../../fxml/DetailProject.fxml");
|
|
|
|
|
}
|
|
|
|
|
mProjectLoader = new FXMLLoader(projectdetail);
|
|
|
|
|
mProjectLoader.load();
|
|
|
|
|
detailProjectController = mProjectLoader.getController();
|
|
|
|
|
|
|
|
|
|
URL mddetail = JavaFxApplication.class.getClassLoader().getResource("fxml/DetailModule.fxml");
|
|
|
|
|
if (mddetail == null) {
|
|
|
|
|
mddetail = getClass().getResource("../../../fxml/DetailModule.fxml");
|
|
|
|
|
}
|
|
|
|
|
mModuleLoader = new FXMLLoader(mddetail);
|
|
|
|
|
mModuleLoader.load();
|
|
|
|
|
detailModuleController = mModuleLoader.getController();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
URL tabledetail = JavaFxApplication.class.getClassLoader().getResource("fxml/DetailTable.fxml");
|
|
|
|
|
if (tabledetail == null) {
|
|
|
|
|
tabledetail = getClass().getResource("../../../fxml/DetailTable.fxml");
|
|
|
|
|
}
|
|
|
|
|
mTableLoader = new FXMLLoader(tabledetail);
|
|
|
|
|
mTableLoader.load();
|
|
|
|
|
detailTableController = mTableLoader.getController();
|
|
|
|
|
|
|
|
|
|
mTree.setShowRoot(true);
|
|
|
|
|
mTree.setEditable(true);
|
|
|
|
|
mTree.setDisable(false);
|
|
|
|
@ -410,46 +275,19 @@ public class JavaFxApplication extends Application {
|
|
|
|
|
return textFieldTreeCell;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
{//初始化模块面板
|
|
|
|
|
detailModuleController.getModuleComment().textProperty().addListener(new ChangeListener<String>() {
|
|
|
|
|
@Override
|
|
|
|
|
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
|
|
|
|
|
if (currentModule != null) {
|
|
|
|
|
currentModule.setNote(newValue);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
detailModuleController.getModulePrefix().textProperty().addListener(new ChangeListener<String>() {
|
|
|
|
|
@Override
|
|
|
|
|
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
|
|
|
|
|
if (currentModule != null) {
|
|
|
|
|
currentModule.setModulePrefix(newValue);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
detailModuleController.getModuleName().textProperty().addListener(new ChangeListener<String>() {
|
|
|
|
|
@Override
|
|
|
|
|
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
|
|
|
|
|
if (currentModule != null) {
|
|
|
|
|
currentModule.setName(newValue);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
//endregion
|
|
|
|
|
|
|
|
|
|
detailModuleController.getIsGenerate().selectedProperty().addListener(new ChangeListener<Boolean>() {
|
|
|
|
|
@Override
|
|
|
|
|
public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
|
|
|
|
|
if (currentModule != null) {
|
|
|
|
|
currentModule.setNeedGenerate(newValue);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
//region 初始化项目面板
|
|
|
|
|
{
|
|
|
|
|
URL projectdetail = JavaFxApplication.class.getClassLoader().getResource("fxml/DetailProject.fxml");
|
|
|
|
|
if (projectdetail == null) {
|
|
|
|
|
projectdetail = getClass().getResource("../../../fxml/DetailProject.fxml");
|
|
|
|
|
}
|
|
|
|
|
mProjectLoader = new FXMLLoader(projectdetail);
|
|
|
|
|
mProjectLoader.load();
|
|
|
|
|
detailProjectController = mProjectLoader.getController();
|
|
|
|
|
|
|
|
|
|
{// 初始化项目面板
|
|
|
|
|
detailProjectController.getName().textProperty().addListener(new ChangeListener<String>() {
|
|
|
|
|
@Override
|
|
|
|
|
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
|
|
|
|
@ -503,8 +341,65 @@ public class JavaFxApplication extends Application {
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
//endregion
|
|
|
|
|
|
|
|
|
|
//region 初始化模块面板
|
|
|
|
|
{
|
|
|
|
|
URL mddetail = JavaFxApplication.class.getClassLoader().getResource("fxml/DetailModule.fxml");
|
|
|
|
|
if (mddetail == null) {
|
|
|
|
|
mddetail = getClass().getResource("../../../fxml/DetailModule.fxml");
|
|
|
|
|
}
|
|
|
|
|
mModuleLoader = new FXMLLoader(mddetail);
|
|
|
|
|
mModuleLoader.load();
|
|
|
|
|
detailModuleController = mModuleLoader.getController();
|
|
|
|
|
detailModuleController.getModuleComment().textProperty().addListener(new ChangeListener<String>() {
|
|
|
|
|
@Override
|
|
|
|
|
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
|
|
|
|
|
if (currentModule != null) {
|
|
|
|
|
currentModule.setNote(newValue);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
detailModuleController.getModulePrefix().textProperty().addListener(new ChangeListener<String>() {
|
|
|
|
|
@Override
|
|
|
|
|
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
|
|
|
|
|
if (currentModule != null) {
|
|
|
|
|
currentModule.setModulePrefix(newValue);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
detailModuleController.getModuleName().textProperty().addListener(new ChangeListener<String>() {
|
|
|
|
|
@Override
|
|
|
|
|
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
|
|
|
|
|
if (currentModule != null) {
|
|
|
|
|
currentModule.setName(newValue);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
detailModuleController.getIsGenerate().selectedProperty().addListener(new ChangeListener<Boolean>() {
|
|
|
|
|
@Override
|
|
|
|
|
public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
|
|
|
|
|
if (currentModule != null) {
|
|
|
|
|
currentModule.setNeedGenerate(newValue);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
//endregion
|
|
|
|
|
|
|
|
|
|
//region 初始化表面板
|
|
|
|
|
{
|
|
|
|
|
URL tabledetail = JavaFxApplication.class.getClassLoader().getResource("fxml/DetailTable.fxml");
|
|
|
|
|
if (tabledetail == null) {
|
|
|
|
|
tabledetail = getClass().getResource("../../../fxml/DetailTable.fxml");
|
|
|
|
|
}
|
|
|
|
|
mTableLoader = new FXMLLoader(tabledetail);
|
|
|
|
|
mTableLoader.load();
|
|
|
|
|
detailTableController = mTableLoader.getController();
|
|
|
|
|
|
|
|
|
|
{//初始化表面板
|
|
|
|
|
detailTableController.getTablename().textProperty().addListener(new ChangeListener<String>() {
|
|
|
|
|
@Override
|
|
|
|
|
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
|
|
|
|
@ -664,9 +559,126 @@ public class JavaFxApplication extends Application {
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
ManagerFactory.getReflashManager(this).start();
|
|
|
|
|
//endregion
|
|
|
|
|
|
|
|
|
|
//region 初始化字段面板
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
mFields = mainController.getFields();
|
|
|
|
|
mFields.setEditable(true);
|
|
|
|
|
mFields.setSortPolicy(new Callback<TableView, Boolean>() {
|
|
|
|
|
@Override
|
|
|
|
|
public Boolean call(TableView param) {
|
|
|
|
|
//禁止点击列头排序
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
mFields.setOnMouseClicked(new EventHandler<MouseEvent>() {
|
|
|
|
|
@Override
|
|
|
|
|
public void handle(MouseEvent event) {
|
|
|
|
|
int selectedIndex = mFields.getSelectionModel().getSelectedIndex();
|
|
|
|
|
if (currentTable == null || selectedIndex == -1) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
Field field = currentTable.getFields().get(selectedIndex);
|
|
|
|
|
ContextMenuBuilder builder = new ContextMenuBuilder();
|
|
|
|
|
builder.add("新增", new EventHandler<ActionEvent>() {
|
|
|
|
|
@Override
|
|
|
|
|
public void handle(ActionEvent event) {
|
|
|
|
|
addField();
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
builder.add("删除", new EventHandler<ActionEvent>() {
|
|
|
|
|
@Override
|
|
|
|
|
public void handle(ActionEvent event) {
|
|
|
|
|
subField();
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
if (field.getFieldType().equals(FieldType.Dict.name())) {
|
|
|
|
|
builder.add("编辑字典", new EventHandler<ActionEvent>() {
|
|
|
|
|
@Override
|
|
|
|
|
public void handle(ActionEvent event) {
|
|
|
|
|
MenuItem target = (MenuItem) event.getTarget();
|
|
|
|
|
int index = mFields.getSelectionModel().getSelectedIndex();
|
|
|
|
|
List<Field> fields = currentTable.getFields();
|
|
|
|
|
Field field = fields.get(index);
|
|
|
|
|
Dialog.showSelectEdit(field);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
} else if (field.getFieldType().equals(FieldType.Select.name())) {
|
|
|
|
|
builder.add("编辑选项", new EventHandler<ActionEvent>() {
|
|
|
|
|
@Override
|
|
|
|
|
public void handle(ActionEvent event) {
|
|
|
|
|
int index = mFields.getSelectionModel().getSelectedIndex();
|
|
|
|
|
List<Field> fields = currentTable.getFields();
|
|
|
|
|
Field field = fields.get(index);
|
|
|
|
|
Dialog.showSelectEdit(field);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
} else if (field.getFieldType().equals(FieldType.Boolean.name())) {
|
|
|
|
|
builder.add("编辑是否", new EventHandler<ActionEvent>() {
|
|
|
|
|
@Override
|
|
|
|
|
public void handle(ActionEvent event) {
|
|
|
|
|
int index = mFields.getSelectionModel().getSelectedIndex();
|
|
|
|
|
List<Field> fields = currentTable.getFields();
|
|
|
|
|
Field field = fields.get(index);
|
|
|
|
|
if (field.getSelectItems().size() == 2) {
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
{
|
|
|
|
|
SelectItem selectItem = new SelectItem();
|
|
|
|
|
selectItem.setValue("true");
|
|
|
|
|
selectItem.setLabel("是");
|
|
|
|
|
field.getSelectItems().add(selectItem);
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
SelectItem selectItem = new SelectItem();
|
|
|
|
|
selectItem.setValue("false");
|
|
|
|
|
selectItem.setLabel("否");
|
|
|
|
|
field.getSelectItems().add(selectItem);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
Dialog.showSelectEdit(field);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
builder.add("向上调整", new EventHandler<ActionEvent>() {
|
|
|
|
|
@Override
|
|
|
|
|
public void handle(ActionEvent event) {
|
|
|
|
|
int index = mFields.getSelectionModel().getSelectedIndex();
|
|
|
|
|
List<Field> fields = currentTable.getFields();
|
|
|
|
|
if (index > 0) {
|
|
|
|
|
fields.add(index - 1, fields.get(index));
|
|
|
|
|
fields.add(index + 1, fields.get(index));
|
|
|
|
|
fields.remove(index);
|
|
|
|
|
fields.remove(index + 1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
builder.add("向下调整", new EventHandler<ActionEvent>() {
|
|
|
|
|
@Override
|
|
|
|
|
public void handle(ActionEvent event) {
|
|
|
|
|
int index = mFields.getSelectionModel().getSelectedIndex();
|
|
|
|
|
List<Field> fields = currentTable.getFields();
|
|
|
|
|
if (index < fields.size() - 1) {
|
|
|
|
|
fields.add(index, fields.get(index + 1));
|
|
|
|
|
fields.add(index + 2, fields.get(index + 1));
|
|
|
|
|
fields.remove(index + 1);
|
|
|
|
|
fields.remove(index + 2);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
ContextMenu con = builder.build();
|
|
|
|
|
mFields.setContextMenu(con);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
//endregion
|
|
|
|
|
|
|
|
|
|
initProjectTree();
|
|
|
|
|
// 尝试加载一个项目树,project文件夹有则默认加载第一个,否则创建一个新项目树
|
|
|
|
|
initProjectTree(projectManager.invalidate());
|
|
|
|
|
super.init();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -692,8 +704,8 @@ public class JavaFxApplication extends Application {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void initProjectTree() {
|
|
|
|
|
currentProject = projectManager.getProject();
|
|
|
|
|
public void initProjectTree(Project project) {
|
|
|
|
|
currentProject = project;
|
|
|
|
|
TreeItem<Project> projectTreeItem = new TreeItem<Project>(currentProject);
|
|
|
|
|
mTree.setRoot(projectTreeItem);
|
|
|
|
|
projectTreeItem.setExpanded(true);
|
|
|
|
@ -1417,7 +1429,7 @@ public class JavaFxApplication extends Application {
|
|
|
|
|
int param1 = checkBoxTableCell.getParam();
|
|
|
|
|
Field field = currentTable.getFields().get(param1);
|
|
|
|
|
field.setIsQuery(newValue);
|
|
|
|
|
if (!newValue){
|
|
|
|
|
if (!newValue) {
|
|
|
|
|
field.setIsUnique(false);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|