|
|
@ -7,7 +7,6 @@ import javafx.beans.value.ObservableValue;
|
|
|
|
import javafx.collections.FXCollections;
|
|
|
|
import javafx.collections.FXCollections;
|
|
|
|
import javafx.collections.ObservableList;
|
|
|
|
import javafx.collections.ObservableList;
|
|
|
|
import javafx.event.ActionEvent;
|
|
|
|
import javafx.event.ActionEvent;
|
|
|
|
import javafx.event.Event;
|
|
|
|
|
|
|
|
import javafx.event.EventHandler;
|
|
|
|
import javafx.event.EventHandler;
|
|
|
|
import javafx.fxml.FXMLLoader;
|
|
|
|
import javafx.fxml.FXMLLoader;
|
|
|
|
import javafx.scene.Node;
|
|
|
|
import javafx.scene.Node;
|
|
|
@ -58,13 +57,18 @@ import xyz.wbsite.dbtool.javafx.po.Project;
|
|
|
|
import xyz.wbsite.dbtool.javafx.po.SelectItem;
|
|
|
|
import xyz.wbsite.dbtool.javafx.po.SelectItem;
|
|
|
|
import xyz.wbsite.dbtool.javafx.po.Table;
|
|
|
|
import xyz.wbsite.dbtool.javafx.po.Table;
|
|
|
|
import xyz.wbsite.dbtool.javafx.po.TableMethod;
|
|
|
|
import xyz.wbsite.dbtool.javafx.po.TableMethod;
|
|
|
|
|
|
|
|
import xyz.wbsite.dbtool.javafx.tool.ContextMenuBuilder;
|
|
|
|
import xyz.wbsite.dbtool.javafx.tool.Dialog;
|
|
|
|
import xyz.wbsite.dbtool.javafx.tool.Dialog;
|
|
|
|
import xyz.wbsite.dbtool.javafx.tool.Tool;
|
|
|
|
import xyz.wbsite.dbtool.javafx.tool.Tool;
|
|
|
|
import xyz.wbsite.dbtool.javafx.view.DBCheckBoxTableCell;
|
|
|
|
import xyz.wbsite.dbtool.javafx.view.DBCheckBoxTableCell;
|
|
|
|
import xyz.wbsite.dbtool.web.frame.utils.ResourceUtil;
|
|
|
|
import xyz.wbsite.dbtool.web.frame.utils.ResourceUtil;
|
|
|
|
|
|
|
|
|
|
|
|
import java.net.URL;
|
|
|
|
import java.net.URL;
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
|
|
|
import java.util.HashSet;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
import java.util.Locale;
|
|
|
|
|
|
|
|
import java.util.Set;
|
|
|
|
|
|
|
|
|
|
|
|
public class JavaFxApplication extends Application {
|
|
|
|
public class JavaFxApplication extends Application {
|
|
|
|
|
|
|
|
|
|
|
@ -83,12 +87,8 @@ public class JavaFxApplication extends Application {
|
|
|
|
private DetailModuleController detailModuleController;
|
|
|
|
private DetailModuleController detailModuleController;
|
|
|
|
private DetailTableController detailTableController;
|
|
|
|
private DetailTableController detailTableController;
|
|
|
|
private Project currentProject;
|
|
|
|
private Project currentProject;
|
|
|
|
private Module currentMD;
|
|
|
|
private Module currentModule;
|
|
|
|
private Table currentTable;
|
|
|
|
private Table currentTable;
|
|
|
|
private ContextMenu project_menu;
|
|
|
|
|
|
|
|
private ContextMenu md_right_menu;
|
|
|
|
|
|
|
|
private ContextMenu table_right_menu;
|
|
|
|
|
|
|
|
private XEventHandler xEventHandler = new XEventHandler();
|
|
|
|
|
|
|
|
private boolean dragMD = false;
|
|
|
|
private boolean dragMD = false;
|
|
|
|
public static Stage primaryStage;
|
|
|
|
public static Stage primaryStage;
|
|
|
|
|
|
|
|
|
|
|
@ -156,69 +156,46 @@ public class JavaFxApplication extends Application {
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
Field field = currentTable.getFields().get(selectedIndex);
|
|
|
|
Field field = currentTable.getFields().get(selectedIndex);
|
|
|
|
ContextMenu con = null;
|
|
|
|
ContextMenuBuilder builder = new ContextMenuBuilder();
|
|
|
|
if (field.getFieldType().equals(FieldType.Dict.name())) {
|
|
|
|
builder.add("新增", new EventHandler<ActionEvent>() {
|
|
|
|
con = new ContextMenu(
|
|
|
|
@Override
|
|
|
|
new MenuItem("新增"),
|
|
|
|
public void handle(ActionEvent event) {
|
|
|
|
new MenuItem("删除"),
|
|
|
|
addField();
|
|
|
|
new MenuItem("编辑字典"),
|
|
|
|
|
|
|
|
new MenuItem("向上调整"),
|
|
|
|
|
|
|
|
new MenuItem("向下调整"));
|
|
|
|
|
|
|
|
} else if (field.getFieldType().equals(FieldType.Select.name())) {
|
|
|
|
|
|
|
|
con = new ContextMenu(
|
|
|
|
|
|
|
|
new MenuItem("新增"),
|
|
|
|
|
|
|
|
new MenuItem("删除"),
|
|
|
|
|
|
|
|
new MenuItem("编辑选项"),
|
|
|
|
|
|
|
|
new MenuItem("向上调整"),
|
|
|
|
|
|
|
|
new MenuItem("向下调整"));
|
|
|
|
|
|
|
|
} else if (field.getFieldType().equals(FieldType.Boolean.name())) {
|
|
|
|
|
|
|
|
con = new ContextMenu(
|
|
|
|
|
|
|
|
new MenuItem("新增"),
|
|
|
|
|
|
|
|
new MenuItem("删除"),
|
|
|
|
|
|
|
|
new MenuItem("编辑是否"),
|
|
|
|
|
|
|
|
new MenuItem("向上调整"),
|
|
|
|
|
|
|
|
new MenuItem("向下调整"));
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
con = new ContextMenu(
|
|
|
|
|
|
|
|
new MenuItem("新增"),
|
|
|
|
|
|
|
|
new MenuItem("删除"),
|
|
|
|
|
|
|
|
new MenuItem("向上调整"),
|
|
|
|
|
|
|
|
new MenuItem("向下调整"));
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
con.setOnAction(new EventHandler<ActionEvent>() {
|
|
|
|
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
|
|
|
|
@Override
|
|
|
|
public void handle(ActionEvent event) {
|
|
|
|
public void handle(ActionEvent event) {
|
|
|
|
MenuItem target = (MenuItem) event.getTarget();
|
|
|
|
MenuItem target = (MenuItem) event.getTarget();
|
|
|
|
int index = mFields.getSelectionModel().getSelectedIndex();
|
|
|
|
int index = mFields.getSelectionModel().getSelectedIndex();
|
|
|
|
List<Field> fields = currentTable.getFields();
|
|
|
|
List<Field> fields = currentTable.getFields();
|
|
|
|
|
|
|
|
Field field = fields.get(index);
|
|
|
|
if ("新增".equals(target.getText())) {
|
|
|
|
Dialog.showSelectEdit(field);
|
|
|
|
addField();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (index != -1) {
|
|
|
|
|
|
|
|
switch (target.getText()) {
|
|
|
|
|
|
|
|
case "删除":
|
|
|
|
|
|
|
|
subField();
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case "向上调整":
|
|
|
|
|
|
|
|
if (index > 0) {
|
|
|
|
|
|
|
|
fields.add(index - 1, fields.get(index));
|
|
|
|
|
|
|
|
fields.add(index + 1, fields.get(index));
|
|
|
|
|
|
|
|
fields.remove(index);
|
|
|
|
|
|
|
|
fields.remove(index + 1);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
});
|
|
|
|
case "向下调整":
|
|
|
|
} else if (field.getFieldType().equals(FieldType.Select.name())) {
|
|
|
|
if (index < fields.size() - 1) {
|
|
|
|
builder.add("编辑选项", new EventHandler<ActionEvent>() {
|
|
|
|
fields.add(index, fields.get(index + 1));
|
|
|
|
@Override
|
|
|
|
fields.add(index + 2, fields.get(index + 1));
|
|
|
|
public void handle(ActionEvent event) {
|
|
|
|
fields.remove(index + 1);
|
|
|
|
int index = mFields.getSelectionModel().getSelectedIndex();
|
|
|
|
fields.remove(index + 2);
|
|
|
|
List<Field> fields = currentTable.getFields();
|
|
|
|
|
|
|
|
Field field = fields.get(index);
|
|
|
|
|
|
|
|
Dialog.showSelectEdit(field);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
});
|
|
|
|
case "编辑是否": {
|
|
|
|
} 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);
|
|
|
|
Field field = fields.get(index);
|
|
|
|
if (field.getSelectItems().size() == 2) {
|
|
|
|
if (field.getSelectItems().size() == 2) {
|
|
|
|
|
|
|
|
|
|
|
@ -239,34 +216,39 @@ public class JavaFxApplication extends Application {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
Dialog.showSelectEdit(field);
|
|
|
|
Dialog.showSelectEdit(field);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
});
|
|
|
|
case "编辑字典": {
|
|
|
|
|
|
|
|
Field field = fields.get(index);
|
|
|
|
|
|
|
|
Dialog.showSelectEdit(field);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
builder.add("向上调整", new EventHandler<ActionEvent>() {
|
|
|
|
case "编辑选项": {
|
|
|
|
@Override
|
|
|
|
Field field = fields.get(index);
|
|
|
|
public void handle(ActionEvent event) {
|
|
|
|
Dialog.showSelectEdit(field);
|
|
|
|
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);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
JavaFxApplication.this.mFields.getSelectionModel().clearSelection();
|
|
|
|
});
|
|
|
|
|
|
|
|
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);
|
|
|
|
mFields.setContextMenu(con);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
project_menu = new ContextMenu(new MenuItem("新增模块"));
|
|
|
|
|
|
|
|
md_right_menu = new ContextMenu(new MenuItem("新增对象"), new MenuItem("删除模块"), new MenuItem("向上调整"), new MenuItem("向下调整"));
|
|
|
|
|
|
|
|
table_right_menu = new ContextMenu(new MenuItem("删除对象"));
|
|
|
|
|
|
|
|
project_menu.setOnAction(xEventHandler);
|
|
|
|
|
|
|
|
md_right_menu.setOnAction(xEventHandler);
|
|
|
|
|
|
|
|
table_right_menu.setOnAction(xEventHandler);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
URL projectdetail = JavaFxApplication.class.getClassLoader().getResource("fxml/DetailProject.fxml");
|
|
|
|
URL projectdetail = JavaFxApplication.class.getClassLoader().getResource("fxml/DetailProject.fxml");
|
|
|
|
if (projectdetail == null) {
|
|
|
|
if (projectdetail == null) {
|
|
|
|
projectdetail = getClass().getResource("../../../fxml/DetailProject.fxml");
|
|
|
|
projectdetail = getClass().getResource("../../../fxml/DetailProject.fxml");
|
|
|
@ -384,20 +366,19 @@ public class JavaFxApplication extends Application {
|
|
|
|
|
|
|
|
|
|
|
|
} else if (event.getTransferMode().equals(TransferMode.MOVE)) {//交换
|
|
|
|
} else if (event.getTransferMode().equals(TransferMode.MOVE)) {//交换
|
|
|
|
Tool.exchange(mds, i1, i2);
|
|
|
|
Tool.exchange(mds, i1, i2);
|
|
|
|
Tool.exchange(currentProject.getChildren(), i1, i2);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
if (currentMD != null) {
|
|
|
|
if (currentModule != null) {
|
|
|
|
int i1 = 0, i2 = 0;
|
|
|
|
int i1 = 0, i2 = 0;
|
|
|
|
Table t1 = null, t2 = null;
|
|
|
|
Table t1 = null, t2 = null;
|
|
|
|
for (int i = 0; i < currentMD.getTables().size(); i++) {
|
|
|
|
for (int i = 0; i < currentModule.getTables().size(); i++) {
|
|
|
|
if (currentMD.getTables().get(i).getTableName().equals(m1)) {
|
|
|
|
if (currentModule.getTables().get(i).getTableName().equals(m1)) {
|
|
|
|
i1 = i;
|
|
|
|
i1 = i;
|
|
|
|
t1 = currentMD.getTables().get(i);
|
|
|
|
t1 = currentModule.getTables().get(i);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (currentMD.getTables().get(i).getTableName().equals(m2)) {
|
|
|
|
if (currentModule.getTables().get(i).getTableName().equals(m2)) {
|
|
|
|
i2 = i;
|
|
|
|
i2 = i;
|
|
|
|
t2 = currentMD.getTables().get(i);
|
|
|
|
t2 = currentModule.getTables().get(i);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (t1 == null || t2 == null) {
|
|
|
|
if (t1 == null || t2 == null) {
|
|
|
@ -408,23 +389,18 @@ public class JavaFxApplication extends Application {
|
|
|
|
double y = event.getY();
|
|
|
|
double y = event.getY();
|
|
|
|
double height = textFieldTreeCell.getHeight();
|
|
|
|
double height = textFieldTreeCell.getHeight();
|
|
|
|
if (y < height / 2) {
|
|
|
|
if (y < height / 2) {
|
|
|
|
currentMD.getTables().add(i2, t1);
|
|
|
|
currentModule.getTables().add(i2, t1);
|
|
|
|
currentMD.getChildren().add(i2, t1);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
currentMD.getTables().add(i2 + 1, t1);
|
|
|
|
currentModule.getTables().add(i2 + 1, t1);
|
|
|
|
currentMD.getChildren().add(i2 + 1, t1);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (i1 < i2) {
|
|
|
|
if (i1 < i2) {
|
|
|
|
currentMD.getTables().remove(i1);
|
|
|
|
currentModule.getTables().remove(i1);
|
|
|
|
currentMD.getChildren().remove(i1);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
currentMD.getTables().remove(i1 + 1);
|
|
|
|
currentModule.getTables().remove(i1 + 1);
|
|
|
|
currentMD.getChildren().remove(i1 + 1);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
} else if (event.getTransferMode().equals(TransferMode.MOVE)) {//交换
|
|
|
|
} else if (event.getTransferMode().equals(TransferMode.MOVE)) {//交换
|
|
|
|
Tool.exchange(currentMD.getTables(), i1, i2);
|
|
|
|
Tool.exchange(currentModule.getTables(), i1, i2);
|
|
|
|
Tool.exchange(currentMD.getChildren(), i1, i2);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -438,54 +414,13 @@ public class JavaFxApplication extends Application {
|
|
|
|
return textFieldTreeCell;
|
|
|
|
return textFieldTreeCell;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
mTree.setOnEditCommit(new YEventHandler());
|
|
|
|
|
|
|
|
mTree.setOnMouseClicked(new EventHandler<MouseEvent>() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void handle(MouseEvent event) {
|
|
|
|
|
|
|
|
TreeItem targetItem = (TreeItem) mTree.getSelectionModel().getSelectedItem();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (targetItem == null)
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int level = getLevel(targetItem);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
switch (level) {
|
|
|
|
|
|
|
|
case 0: {//查看模块
|
|
|
|
|
|
|
|
mTree.setContextMenu(project_menu);
|
|
|
|
|
|
|
|
loadProject();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 1: {//查看模块
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mTree.setContextMenu(md_right_menu);
|
|
|
|
|
|
|
|
currentMD = projectManager.findDBByDBName((String) targetItem.getValue());
|
|
|
|
|
|
|
|
currentTable = null;
|
|
|
|
|
|
|
|
loadingModule();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 2: {//查看对象
|
|
|
|
|
|
|
|
mTree.setContextMenu(table_right_menu);
|
|
|
|
|
|
|
|
TreeItem parent = targetItem.getParent();
|
|
|
|
|
|
|
|
currentMD = projectManager.findDBByDBName((String) parent.getValue());
|
|
|
|
|
|
|
|
if (currentMD != null) {
|
|
|
|
|
|
|
|
currentTable = projectManager.findTableByTableName(currentMD, (String) targetItem.getValue());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
initTable();
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{//初始化模块面板
|
|
|
|
{//初始化模块面板
|
|
|
|
detailModuleController.getModuleComment().textProperty().addListener(new ChangeListener<String>() {
|
|
|
|
detailModuleController.getModuleComment().textProperty().addListener(new ChangeListener<String>() {
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
|
|
|
|
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
|
|
|
|
if (currentMD != null) {
|
|
|
|
if (currentModule != null) {
|
|
|
|
currentMD.setModuleComment(newValue);
|
|
|
|
currentModule.setModuleComment(newValue);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
@ -493,8 +428,8 @@ public class JavaFxApplication extends Application {
|
|
|
|
detailModuleController.getModulePrefix().textProperty().addListener(new ChangeListener<String>() {
|
|
|
|
detailModuleController.getModulePrefix().textProperty().addListener(new ChangeListener<String>() {
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
|
|
|
|
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
|
|
|
|
if (currentMD != null) {
|
|
|
|
if (currentModule != null) {
|
|
|
|
currentMD.setModulePrefix(newValue);
|
|
|
|
currentModule.setModulePrefix(newValue);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
@ -502,8 +437,8 @@ public class JavaFxApplication extends Application {
|
|
|
|
detailModuleController.getModuleName().textProperty().addListener(new ChangeListener<String>() {
|
|
|
|
detailModuleController.getModuleName().textProperty().addListener(new ChangeListener<String>() {
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
|
|
|
|
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
|
|
|
|
if (currentMD != null) {
|
|
|
|
if (currentModule != null) {
|
|
|
|
currentMD.setModuleName(newValue);
|
|
|
|
currentModule.setModuleName(newValue);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
@ -511,8 +446,8 @@ public class JavaFxApplication extends Application {
|
|
|
|
detailModuleController.getIsGenerate().selectedProperty().addListener(new ChangeListener<Boolean>() {
|
|
|
|
detailModuleController.getIsGenerate().selectedProperty().addListener(new ChangeListener<Boolean>() {
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
|
|
|
|
public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
|
|
|
|
if (currentMD != null) {
|
|
|
|
if (currentModule != null) {
|
|
|
|
currentMD.setNeedGenerate(newValue);
|
|
|
|
currentModule.setNeedGenerate(newValue);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
@ -735,7 +670,7 @@ public class JavaFxApplication extends Application {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
ManagerFactory.getReflashManager(this).start();
|
|
|
|
ManagerFactory.getReflashManager(this).start();
|
|
|
|
|
|
|
|
|
|
|
|
loadProjectTree();
|
|
|
|
initProjectTree();
|
|
|
|
super.init();
|
|
|
|
super.init();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -761,48 +696,208 @@ public class JavaFxApplication extends Application {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void loadProjectTree() {
|
|
|
|
public void initProjectTree() {
|
|
|
|
currentProject = projectManager.getProject();
|
|
|
|
currentProject = projectManager.getProject();
|
|
|
|
currentProject.setValue(currentProject.getName());
|
|
|
|
TreeItem<Project> projectTreeItem = new TreeItem<Project>(currentProject);
|
|
|
|
currentProject.setExpanded(true);
|
|
|
|
mTree.setRoot(projectTreeItem);
|
|
|
|
|
|
|
|
projectTreeItem.setExpanded(true);
|
|
|
|
|
|
|
|
for (Module module : currentProject.getModules()) {
|
|
|
|
|
|
|
|
TreeItem moduleTreeItem = new TreeItem(module);
|
|
|
|
|
|
|
|
moduleTreeItem.setExpanded(true);
|
|
|
|
|
|
|
|
projectTreeItem.getChildren().add(moduleTreeItem);
|
|
|
|
|
|
|
|
for (Table table : module.getTables()) {
|
|
|
|
|
|
|
|
TreeItem tableTreeItem = new TreeItem(table);
|
|
|
|
|
|
|
|
moduleTreeItem.getChildren().add(tableTreeItem);
|
|
|
|
|
|
|
|
tableTreeItem.setExpanded(true);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
mTree.setOnMouseClicked(new EventHandler<MouseEvent>() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void handle(MouseEvent event) {
|
|
|
|
|
|
|
|
Object value = ((TreeItem) mTree.getSelectionModel().getSelectedItem()).getValue();
|
|
|
|
|
|
|
|
if (value instanceof Project) {
|
|
|
|
|
|
|
|
loadProject();
|
|
|
|
|
|
|
|
} else if (value instanceof Module) {
|
|
|
|
|
|
|
|
currentModule = (Module) value;
|
|
|
|
|
|
|
|
loadingModule();
|
|
|
|
|
|
|
|
} else if (value instanceof Table) {
|
|
|
|
|
|
|
|
currentTable = (Table) value;
|
|
|
|
|
|
|
|
initTable();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
mTree.setRoot(currentProject);
|
|
|
|
mTree.setCellFactory(new Callback<TreeView, TreeCell>() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public TreeCell call(TreeView param) {
|
|
|
|
|
|
|
|
return new TreeCell() {
|
|
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < currentProject.getModules().size(); i++) {
|
|
|
|
|
|
|
|
Module module = currentProject.getModules().get(i);
|
|
|
|
|
|
|
|
module.setExpanded(true);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (Table table : module.getTables()) {
|
|
|
|
@Override
|
|
|
|
table.setExpanded(true);
|
|
|
|
protected void updateItem(Object item, boolean empty) {
|
|
|
|
module.getChildren().add(table);
|
|
|
|
super.updateItem(item, empty);
|
|
|
|
|
|
|
|
if (empty) {
|
|
|
|
|
|
|
|
setText(null);
|
|
|
|
|
|
|
|
setGraphic(null);
|
|
|
|
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (isEditing()) {
|
|
|
|
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (item instanceof Project) {
|
|
|
|
|
|
|
|
Project ex = (Project) item;
|
|
|
|
|
|
|
|
setText(ex.getName());
|
|
|
|
|
|
|
|
ex.nameProperty().addListener(new ChangeListener<String>() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
|
|
|
|
|
|
|
|
setText(ex.getName());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
private int getLevel(TreeItem treeItem) {
|
|
|
|
setContextMenu(new ContextMenuBuilder()
|
|
|
|
TreeItem root = mTree.getRoot();
|
|
|
|
.add("新增模块", new EventHandler<ActionEvent>() {
|
|
|
|
int level = 0;
|
|
|
|
@Override
|
|
|
|
if (treeItem == root) {
|
|
|
|
public void handle(ActionEvent event) {
|
|
|
|
level = 0;
|
|
|
|
Module module = projectManager.newModule();
|
|
|
|
} else if (treeItem.getParent() == root) {
|
|
|
|
TreeItem moduleTreeItem = new TreeItem(module);
|
|
|
|
level = 1;
|
|
|
|
moduleTreeItem.setExpanded(true);
|
|
|
|
} else if (treeItem.getParent().getParent() == root) {
|
|
|
|
getTreeItem().getChildren().add(moduleTreeItem);
|
|
|
|
level = 2;
|
|
|
|
System.out.println("新增模块" + module.getModuleName());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}).build());
|
|
|
|
|
|
|
|
} else if (item instanceof Module) {
|
|
|
|
|
|
|
|
Module mo = (Module) item;
|
|
|
|
|
|
|
|
setText(mo.getModuleName());
|
|
|
|
|
|
|
|
mo.moduleNameProperty().addListener(new ChangeListener<String>() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
|
|
|
|
|
|
|
|
setText(mo.getModuleName());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
//region 模块右击菜单
|
|
|
|
|
|
|
|
setContextMenu(new ContextMenuBuilder()
|
|
|
|
|
|
|
|
.add("新增对象", new EventHandler<ActionEvent>() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void handle(ActionEvent event) {
|
|
|
|
|
|
|
|
Module module = (Module) getTreeItem().getValue();
|
|
|
|
|
|
|
|
Table table = projectManager.newTable(module);
|
|
|
|
|
|
|
|
TreeItem tableTreeItem = new TreeItem(table);
|
|
|
|
|
|
|
|
tableTreeItem.setExpanded(true);
|
|
|
|
|
|
|
|
getTreeItem().getChildren().add(tableTreeItem);
|
|
|
|
|
|
|
|
System.out.println("新增对象" + table.getTableName());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
.add("删除模块", new EventHandler<ActionEvent>() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void handle(ActionEvent event) {
|
|
|
|
|
|
|
|
TreeItem projectTreeItem = getTreeItem().getParent();
|
|
|
|
|
|
|
|
Project project = (Project) getTreeItem().getParent().getValue();
|
|
|
|
|
|
|
|
TreeItem moduleTreeItem = getTreeItem();
|
|
|
|
|
|
|
|
Module module = (Module) getTreeItem().getValue();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
projectTreeItem.getChildren().remove(moduleTreeItem);
|
|
|
|
|
|
|
|
project.getChildren().remove(module);
|
|
|
|
|
|
|
|
System.out.println("删除模块" + mo.getModuleName());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
.add("向上调整", new EventHandler<ActionEvent>() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void handle(ActionEvent event) {
|
|
|
|
|
|
|
|
TreeItem projectTreeItem = getTreeItem().getParent();
|
|
|
|
|
|
|
|
Project project = (Project) getTreeItem().getParent().getValue();
|
|
|
|
|
|
|
|
Module module = (Module) getTreeItem().getValue();
|
|
|
|
|
|
|
|
int indexOf = project.getModules().indexOf(module);
|
|
|
|
|
|
|
|
if (indexOf > 0) {
|
|
|
|
|
|
|
|
Tool.exchange(projectTreeItem.getChildren(), indexOf - 1, indexOf);
|
|
|
|
|
|
|
|
Tool.exchange(project.getModules(), indexOf - 1, indexOf);
|
|
|
|
|
|
|
|
System.out.println("向上调整" + mo.getModuleName());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
.add("向下调整", new EventHandler<ActionEvent>() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void handle(ActionEvent event) {
|
|
|
|
|
|
|
|
TreeItem projectTreeItem = getTreeItem().getParent();
|
|
|
|
|
|
|
|
Project project = (Project) getTreeItem().getParent().getValue();
|
|
|
|
|
|
|
|
Module module = (Module) getTreeItem().getValue();
|
|
|
|
|
|
|
|
int indexOf = project.getModules().indexOf(module);
|
|
|
|
|
|
|
|
if (indexOf < project.getModules().size() - 1) {
|
|
|
|
|
|
|
|
Tool.exchange(projectTreeItem.getChildren(), indexOf, indexOf + 1);
|
|
|
|
|
|
|
|
Tool.exchange(project.getModules(), indexOf, indexOf + 1);
|
|
|
|
|
|
|
|
System.out.println("向下调整" + mo.getModuleName());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}).build());
|
|
|
|
|
|
|
|
//endregion
|
|
|
|
|
|
|
|
} else if (item instanceof Table) {
|
|
|
|
|
|
|
|
Table ta = (Table) item;
|
|
|
|
|
|
|
|
setText(ta.getTableName());
|
|
|
|
|
|
|
|
ta.tableNameProperty().addListener(new ChangeListener<String>() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
|
|
|
|
|
|
|
|
setText(ta.getTableName());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
setContextMenu(new ContextMenuBuilder()
|
|
|
|
|
|
|
|
.add("删除对象", new EventHandler<ActionEvent>() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void handle(ActionEvent event) {
|
|
|
|
|
|
|
|
Module module = (Module) getTreeItem().getParent().getValue();
|
|
|
|
|
|
|
|
Table table = (Table) getTreeItem().getValue();
|
|
|
|
|
|
|
|
int indexOf = module.getTables().indexOf(table);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
getTreeItem().getParent().getChildren().remove(indexOf);
|
|
|
|
|
|
|
|
module.getTables().remove(indexOf);
|
|
|
|
|
|
|
|
System.out.println("删除对象" + table.getTableName());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
.add("向上调整", new EventHandler<ActionEvent>() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void handle(ActionEvent event) {
|
|
|
|
|
|
|
|
TreeItem moduleTreeItem = getTreeItem().getParent();
|
|
|
|
|
|
|
|
Module module = (Module) getTreeItem().getParent().getValue();
|
|
|
|
|
|
|
|
Table table = (Table) getTreeItem().getValue();
|
|
|
|
|
|
|
|
int indexOf = module.getTables().indexOf(table);
|
|
|
|
|
|
|
|
if (indexOf > 0) {
|
|
|
|
|
|
|
|
Tool.exchange(moduleTreeItem.getChildren(), indexOf - 1, indexOf);
|
|
|
|
|
|
|
|
Tool.exchange(module.getTables(), indexOf - 1, indexOf);
|
|
|
|
|
|
|
|
System.out.println("向上调整" + table.getTableName());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
.add("向下调整", new EventHandler<ActionEvent>() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void handle(ActionEvent event) {
|
|
|
|
|
|
|
|
TreeItem moduleTreeItem = getTreeItem().getParent();
|
|
|
|
|
|
|
|
Module module = (Module) getTreeItem().getParent().getValue();
|
|
|
|
|
|
|
|
Table table = (Table) getTreeItem().getValue();
|
|
|
|
|
|
|
|
int indexOf = module.getTables().indexOf(table);
|
|
|
|
|
|
|
|
if (indexOf < module.getTables().size() - 1) {
|
|
|
|
|
|
|
|
Tool.exchange(moduleTreeItem.getChildren(), indexOf, indexOf + 1);
|
|
|
|
|
|
|
|
Tool.exchange(module.getTables(), indexOf, indexOf + 1);
|
|
|
|
|
|
|
|
System.out.println("向下调整" + table.getTableName());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return level;
|
|
|
|
}
|
|
|
|
|
|
|
|
}).build());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void loadingModule() {
|
|
|
|
private void loadingModule() {
|
|
|
|
if (currentMD == null) {
|
|
|
|
if (currentModule == null) {
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
GridPane gridPane = mModuleLoader.getRoot();
|
|
|
|
GridPane gridPane = mModuleLoader.getRoot();
|
|
|
|
detailModuleController.getModuleComment().setText(currentMD.getModuleComment());
|
|
|
|
detailModuleController.getModuleComment().setText(currentModule.getModuleComment());
|
|
|
|
detailModuleController.getModulePrefix().setText(currentMD.getModulePrefix());
|
|
|
|
detailModuleController.getModulePrefix().setText(currentModule.getModulePrefix());
|
|
|
|
detailModuleController.getModuleName().setText(currentMD.getModuleName());
|
|
|
|
detailModuleController.getModuleName().setText(currentModule.getModuleName());
|
|
|
|
detailModuleController.getIsGenerate().setSelected(currentMD.getNeedGenerate());
|
|
|
|
detailModuleController.getIsGenerate().setSelected(currentModule.getNeedGenerate());
|
|
|
|
|
|
|
|
|
|
|
|
if (gridPane != null) {
|
|
|
|
if (gridPane != null) {
|
|
|
|
mDetail.getChildren().clear();
|
|
|
|
mDetail.getChildren().clear();
|
|
|
@ -813,9 +908,6 @@ public class JavaFxApplication extends Application {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 加载表项目面板
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
public void loadProject() {
|
|
|
|
public void loadProject() {
|
|
|
|
GridPane gridPane = mProjectLoader.getRoot();
|
|
|
|
GridPane gridPane = mProjectLoader.getRoot();
|
|
|
|
detailProjectController.getName().setText(currentProject.getName());
|
|
|
|
detailProjectController.getName().setText(currentProject.getName());
|
|
|
@ -902,36 +994,52 @@ public class JavaFxApplication extends Application {
|
|
|
|
mDetail.getChildren().add(gridPane);
|
|
|
|
mDetail.getChildren().add(gridPane);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
ObservableList<TableColumn> columns = mFields.getColumns();
|
|
|
|
ObservableList<TableColumn> columns = mFields.getColumns();
|
|
|
|
|
|
|
|
|
|
|
|
columns.get(0).setCellValueFactory(new PropertyValueFactory<Field, String>("fieldName"));
|
|
|
|
columns.get(0).setCellValueFactory(new PropertyValueFactory<Field, String>("fieldName"));
|
|
|
|
columns.get(0).setCellFactory(new Callback<TableColumn, TableCell>() {
|
|
|
|
columns.get(0).setCellFactory(new Callback<TableColumn, TableCell>() {
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public TableCell call(TableColumn param) {
|
|
|
|
public TableCell call(TableColumn param) {
|
|
|
|
|
|
|
|
TextFieldTableCell textFieldTableCell = new TextFieldTableCell(new DefaultStringConverter()) {
|
|
|
|
|
|
|
|
|
|
|
|
param.setOnEditCommit(new EventHandler<TableColumn.CellEditEvent>() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public void handle(TableColumn.CellEditEvent event) {
|
|
|
|
public void commitEdit(Object newValue) {
|
|
|
|
int row = event.getTablePosition().getRow();
|
|
|
|
int row = this.getTableRow().getIndex();
|
|
|
|
Field field = currentTable.getFields().get(row);
|
|
|
|
Field field = currentTable.getFields().get(row);
|
|
|
|
|
|
|
|
|
|
|
|
String newValue = (String) event.getNewValue();
|
|
|
|
// 驼峰转下划线
|
|
|
|
|
|
|
|
String newValue_ = (String) newValue;
|
|
|
|
if (mainController.getMcdx().isSelected()) {
|
|
|
|
if (mainController.getMcdx().isSelected()) {
|
|
|
|
newValue = Tool.any2Underline(newValue);
|
|
|
|
newValue_ = Tool.any2Underline(newValue_);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 检查是否重复
|
|
|
|
|
|
|
|
List<Integer> integers = new ArrayList<>();
|
|
|
|
|
|
|
|
for (int i = 0; i < currentTable.getFields().size(); i++) {
|
|
|
|
|
|
|
|
if (currentTable.getFields().get(i).getFieldName().equals(newValue)) {
|
|
|
|
|
|
|
|
integers.add(i);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (integers.size() > 1) {
|
|
|
|
|
|
|
|
Dialog.showYesNo("警告", String.format(Locale.CHINA, "存在多个[%s]", newValue));
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
} else if (integers.size() == 1 && row != integers.get(0)) {
|
|
|
|
|
|
|
|
Dialog.showYesNo("警告", String.format(Locale.CHINA, "已经存在[%s]", newValue));
|
|
|
|
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
field.setFieldName(newValue);
|
|
|
|
// 字典类型智能关联
|
|
|
|
if (newValue.toUpperCase().endsWith("_ID")) {
|
|
|
|
field.setFieldName(newValue_);
|
|
|
|
|
|
|
|
if (newValue_.toUpperCase().endsWith("_ID")) {
|
|
|
|
field.setFieldType(FieldType.Long.name());
|
|
|
|
field.setFieldType(FieldType.Long.name());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (newValue.toUpperCase().endsWith("_TIME") || newValue.toUpperCase().endsWith("_DATE")) {
|
|
|
|
if (newValue_.toUpperCase().endsWith("_TIME") || newValue_.toUpperCase().endsWith("_DATE")) {
|
|
|
|
field.setFieldType(FieldType.Date.name());
|
|
|
|
field.setFieldType(FieldType.Date.name());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (newValue.toUpperCase().endsWith("_TYPE")) {
|
|
|
|
if (newValue_.toUpperCase().endsWith("_TYPE")) {
|
|
|
|
field.setFieldType(FieldType.Select.name());
|
|
|
|
field.setFieldType(FieldType.Select.name());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
super.commitEdit(newValue_);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TextFieldTableCell textFieldTableCell = new TextFieldTableCell(new DefaultStringConverter()) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public void updateItem(Object item, boolean empty) {
|
|
|
|
public void updateItem(Object item, boolean empty) {
|
|
|
@ -951,7 +1059,6 @@ public class JavaFxApplication extends Application {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
textFieldTableCell.setOnDragDetected(new EventHandler<MouseEvent>() {
|
|
|
|
textFieldTableCell.setOnDragDetected(new EventHandler<MouseEvent>() {
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public void handle(MouseEvent event) {
|
|
|
|
public void handle(MouseEvent event) {
|
|
|
@ -960,7 +1067,6 @@ public class JavaFxApplication extends Application {
|
|
|
|
ClipboardContent content = new ClipboardContent();
|
|
|
|
ClipboardContent content = new ClipboardContent();
|
|
|
|
content.putString((String) source.getItem());
|
|
|
|
content.putString((String) source.getItem());
|
|
|
|
md.setContent(content);
|
|
|
|
md.setContent(content);
|
|
|
|
// System.out.println("Dragging: " + db.getString());
|
|
|
|
|
|
|
|
event.consume();
|
|
|
|
event.consume();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
@ -979,8 +1085,6 @@ public class JavaFxApplication extends Application {
|
|
|
|
event.acceptTransferModes(TransferMode.COPY);
|
|
|
|
event.acceptTransferModes(TransferMode.COPY);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// System.out.println("DragOver: " + db.getString());
|
|
|
|
|
|
|
|
event.consume();
|
|
|
|
event.consume();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
@ -1097,7 +1201,12 @@ public class JavaFxApplication extends Application {
|
|
|
|
public void handle(TableColumn.CellEditEvent event) {
|
|
|
|
public void handle(TableColumn.CellEditEvent event) {
|
|
|
|
int row = event.getTablePosition().getRow();
|
|
|
|
int row = event.getTablePosition().getRow();
|
|
|
|
Field field = currentTable.getFields().get(row);
|
|
|
|
Field field = currentTable.getFields().get(row);
|
|
|
|
if ("String_var".equals(field.getFieldType().toString()) || "String_super".equals(field.getFieldType().toString())) {
|
|
|
|
Set<String> set = new HashSet<>();
|
|
|
|
|
|
|
|
set.add("String_var");
|
|
|
|
|
|
|
|
set.add("String_super");
|
|
|
|
|
|
|
|
set.add("Dict");
|
|
|
|
|
|
|
|
set.add("Select");
|
|
|
|
|
|
|
|
if (set.contains(field.getFieldType())) {
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
field.setFieldLength((Integer) event.getNewValue());
|
|
|
|
field.setFieldLength((Integer) event.getNewValue());
|
|
|
|
} catch (Exception e) {
|
|
|
|
} catch (Exception e) {
|
|
|
@ -1118,6 +1227,9 @@ public class JavaFxApplication extends Application {
|
|
|
|
if (field.getIsSystem()) {
|
|
|
|
if (field.getIsSystem()) {
|
|
|
|
ignoreField(this);
|
|
|
|
ignoreField(this);
|
|
|
|
this.setDisable(true);
|
|
|
|
this.setDisable(true);
|
|
|
|
|
|
|
|
} else if (FieldType.parse(field.getFieldType()).isFix()) {
|
|
|
|
|
|
|
|
ignoreField(this);
|
|
|
|
|
|
|
|
this.setDisable(true);
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
recoveryField(this);
|
|
|
|
recoveryField(this);
|
|
|
|
this.setDisable(false);
|
|
|
|
this.setDisable(false);
|
|
|
@ -1388,182 +1500,6 @@ public class JavaFxApplication extends Application {
|
|
|
|
tableCell.setTextFill(Color.BLACK);
|
|
|
|
tableCell.setTextFill(Color.BLACK);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 双击目录树编辑处理器
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
private class YEventHandler implements EventHandler<TreeView.EditEvent> {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void handle(TreeView.EditEvent event) {
|
|
|
|
|
|
|
|
TreeItem treeItem = event.getTreeItem();
|
|
|
|
|
|
|
|
int level = getLevel(treeItem);
|
|
|
|
|
|
|
|
System.out.println("原值:" + event.getOldValue());
|
|
|
|
|
|
|
|
System.out.println("现值:" + event.getNewValue());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
switch (level) {
|
|
|
|
|
|
|
|
case 0: {//编辑项目名称
|
|
|
|
|
|
|
|
projectManager.getProject().setName((String) event.getNewValue());
|
|
|
|
|
|
|
|
loadProject();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 1: {//编辑模块
|
|
|
|
|
|
|
|
Module md = projectManager.findDBByDBName((String) event.getOldValue());
|
|
|
|
|
|
|
|
md.setModuleName((String) event.getNewValue());
|
|
|
|
|
|
|
|
loadingModule();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 2: {//编辑对象
|
|
|
|
|
|
|
|
TreeItem parent = treeItem.getParent();
|
|
|
|
|
|
|
|
Module md = projectManager.findDBByDBName((String) parent.getValue());
|
|
|
|
|
|
|
|
Table table = projectManager.findTableByTableName(md, (String) event.getOldValue());
|
|
|
|
|
|
|
|
if (table != null) {
|
|
|
|
|
|
|
|
table.setTableName((String) event.getNewValue());
|
|
|
|
|
|
|
|
initTable();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 目录树右击菜单处理器
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
private class XEventHandler implements EventHandler {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void handle(Event event) {
|
|
|
|
|
|
|
|
MenuItem target = (MenuItem) event.getTarget();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
String text = target.getText();
|
|
|
|
|
|
|
|
Project project = (Project) mTree.getRoot();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TreeItem targetItem = (TreeItem) mTree.getFocusModel().getFocusedItem();
|
|
|
|
|
|
|
|
int index = -1;
|
|
|
|
|
|
|
|
index = mTree.getFocusModel().getFocusedIndex();
|
|
|
|
|
|
|
|
if (targetItem == null) {
|
|
|
|
|
|
|
|
targetItem = (TreeItem) mTree.getSelectionModel().getSelectedItem();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (index == -1) {
|
|
|
|
|
|
|
|
index = mTree.getSelectionModel().getSelectedIndex();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (text != null && targetItem != null) {
|
|
|
|
|
|
|
|
switch (text) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
case "向上调整":
|
|
|
|
|
|
|
|
if (index > 0) {
|
|
|
|
|
|
|
|
Tool.exchange(projectManager.getProject().getModules(), index - 1, index);
|
|
|
|
|
|
|
|
Tool.exchange(projectManager.getProject().getChildren(), index - 1, index);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case "向下调整":
|
|
|
|
|
|
|
|
List<Module> mds = projectManager.getMds();
|
|
|
|
|
|
|
|
if (index < mds.size() - 1) {
|
|
|
|
|
|
|
|
Tool.exchange(projectManager.getProject().getModules(), index, index + 1);
|
|
|
|
|
|
|
|
Tool.exchange(projectManager.getProject().getChildren(), index, index + 1);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case "新增模块":
|
|
|
|
|
|
|
|
projectManager.getNewModuleName();
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case "删除模块":
|
|
|
|
|
|
|
|
if (targetItem != null && targetItem.getParent() == project) {
|
|
|
|
|
|
|
|
currentProject.getChildren().remove(targetItem);
|
|
|
|
|
|
|
|
boolean b = projectManager.removeDBByDBName((String) targetItem.getValue());
|
|
|
|
|
|
|
|
if (b) {
|
|
|
|
|
|
|
|
System.out.println("删除模块" + targetItem.getValue() + "成功!");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case "新增对象":
|
|
|
|
|
|
|
|
int level = getLevel(targetItem);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
switch (level) {
|
|
|
|
|
|
|
|
case 1: {//对模块右击
|
|
|
|
|
|
|
|
System.out.println("模块:" + targetItem.getValue());
|
|
|
|
|
|
|
|
Module md = projectManager.findDBByDBName((String) targetItem.getValue());
|
|
|
|
|
|
|
|
if (md != null) {
|
|
|
|
|
|
|
|
Table newTableName = projectManager.getNewTableName(md);
|
|
|
|
|
|
|
|
targetItem.getChildren().add(newTableName);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 2: {//对对象右击
|
|
|
|
|
|
|
|
TreeItem parent = targetItem.getParent();
|
|
|
|
|
|
|
|
System.out.println("对象:" + parent.getValue());
|
|
|
|
|
|
|
|
Module md = projectManager.findDBByDBName((String) parent.getValue());
|
|
|
|
|
|
|
|
Table newTableName = projectManager.getNewTableName(md);
|
|
|
|
|
|
|
|
parent.getChildren().add(new TreeItem<>(newTableName.getTableName()));
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case "删除对象":
|
|
|
|
|
|
|
|
level = 0;
|
|
|
|
|
|
|
|
if (targetItem != null && targetItem.getParent() == project) {
|
|
|
|
|
|
|
|
level = 0;
|
|
|
|
|
|
|
|
} else if (targetItem != null && targetItem.getParent().getParent() == project) {
|
|
|
|
|
|
|
|
level = 1;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
switch (level) {
|
|
|
|
|
|
|
|
case 0: {//对模块右击
|
|
|
|
|
|
|
|
System.out.println("模块:" + targetItem.getValue());
|
|
|
|
|
|
|
|
Module md = projectManager.findDBByDBName((String) targetItem.getValue());
|
|
|
|
|
|
|
|
Table newTableName = projectManager.getNewTableName(md);
|
|
|
|
|
|
|
|
targetItem.getChildren().add(new TreeItem<>(newTableName.getTableName()));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 1: {//对对象右击
|
|
|
|
|
|
|
|
TreeItem parent = targetItem.getParent();
|
|
|
|
|
|
|
|
System.out.println("对象:" + parent.getValue());
|
|
|
|
|
|
|
|
Module md = projectManager.findDBByDBName((String) parent.getValue());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (Table table : md.getTables()) {
|
|
|
|
|
|
|
|
if (table.getTableName().equals(targetItem.getValue())) {
|
|
|
|
|
|
|
|
md.getTables().remove(table);
|
|
|
|
|
|
|
|
md.getChildren().remove(targetItem);
|
|
|
|
|
|
|
|
System.out.println("移除'" + targetItem.getValue() + "'对象成功!");
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} else if (text != null && targetItem == null) {
|
|
|
|
|
|
|
|
switch (text) {
|
|
|
|
|
|
|
|
case "新增模块":
|
|
|
|
|
|
|
|
projectManager.getNewModuleName();
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void updateDbTree(List<Module> mds) {
|
|
|
|
|
|
|
|
TreeItem root = mTree.getRoot();
|
|
|
|
|
|
|
|
for (Module md : mds) {
|
|
|
|
|
|
|
|
TreeItem<String> treeItem = new TreeItem<>(md.getModuleName());
|
|
|
|
|
|
|
|
treeItem.setExpanded(true);
|
|
|
|
|
|
|
|
for (Table table : md.getTables()) {
|
|
|
|
|
|
|
|
TreeItem<String> tree = new TreeItem<>(table.getTableName());
|
|
|
|
|
|
|
|
treeItem.getChildren().add(tree);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
root.getChildren().add(treeItem);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static void main(String[] args) {
|
|
|
|
public static void main(String[] args) {
|
|
|
|
launch(args);
|
|
|
|
launch(args);
|
|
|
|
}
|
|
|
|
}
|
|
|
|