Former-commit-id: 993fa6c5b4db56bcee0c5f34006828cc4f570053
master
王兵 5 years ago
parent 45caabbd3f
commit 29db1463ad

@ -5,6 +5,7 @@ import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.value.ChangeListener; import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue; import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections; import javafx.collections.FXCollections;
import javafx.collections.ListChangeListener;
import javafx.collections.ObservableList; import javafx.collections.ObservableList;
import javafx.event.ActionEvent; import javafx.event.ActionEvent;
import javafx.event.Event; import javafx.event.Event;
@ -17,6 +18,7 @@ import javafx.scene.control.MenuItem;
import javafx.scene.control.TableCell; import javafx.scene.control.TableCell;
import javafx.scene.control.TableColumn; import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView; import javafx.scene.control.TableView;
import javafx.scene.control.Toggle;
import javafx.scene.control.TreeCell; import javafx.scene.control.TreeCell;
import javafx.scene.control.TreeItem; import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeView; import javafx.scene.control.TreeView;
@ -456,6 +458,13 @@ public class JavaFxApplication extends Application {
currentProject.setSysMD(newValue); currentProject.setSysMD(newValue);
} }
}); });
detailProjectController.getCloud().selectedProperty().addListener(new ChangeListener<Boolean>() {
@Override
public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
currentProject.setCloud(newValue);
}
});
detailProjectController.getDatabase().getToggles()
} }
{//初始化表面板 {//初始化表面板

@ -0,0 +1,17 @@
package xyz.wbsite.dbtool.javafx.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Property {
String value();
String defautValue() default "";
}

@ -3,6 +3,7 @@ package xyz.wbsite.dbtool.javafx.ctrl;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.scene.control.CheckBox; import javafx.scene.control.CheckBox;
import javafx.scene.control.TextField; import javafx.scene.control.TextField;
import javafx.scene.control.ToggleGroup;
public class DetailProjectController { public class DetailProjectController {
@ -16,6 +17,10 @@ public class DetailProjectController {
private CheckBox multiDB; private CheckBox multiDB;
@FXML @FXML
private CheckBox sysMD; private CheckBox sysMD;
@FXML
private ToggleGroup database;
@FXML
private CheckBox cloud;
public CheckBox getSysMD() { public CheckBox getSysMD() {
return sysMD; return sysMD;
@ -56,4 +61,20 @@ public class DetailProjectController {
public void setProjectAuthor(TextField projectAuthor) { public void setProjectAuthor(TextField projectAuthor) {
this.projectAuthor = projectAuthor; this.projectAuthor = projectAuthor;
} }
public ToggleGroup getDatabase() {
return database;
}
public void setDatabase(ToggleGroup database) {
this.database = database;
}
public CheckBox getCloud() {
return cloud;
}
public void setCloud(CheckBox cloud) {
this.cloud = cloud;
}
} }

@ -3,6 +3,7 @@ package xyz.wbsite.dbtool.javafx.manger;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.Element; import org.w3c.dom.Element;
import org.w3c.dom.NodeList; import org.w3c.dom.NodeList;
import xyz.wbsite.dbtool.javafx.annotation.Property;
import xyz.wbsite.dbtool.javafx.enums.FieldType; import xyz.wbsite.dbtool.javafx.enums.FieldType;
import xyz.wbsite.dbtool.javafx.po.Field; import xyz.wbsite.dbtool.javafx.po.Field;
import xyz.wbsite.dbtool.javafx.po.Module; import xyz.wbsite.dbtool.javafx.po.Module;
@ -44,31 +45,30 @@ public class XmlManager {
if ("project".endsWith(dbElement.getNodeName())) { if ("project".endsWith(dbElement.getNodeName())) {
System.out.println("加载模型[" + xmlFile.getName() + "]"); System.out.println("加载模型[" + xmlFile.getName() + "]");
NodeList projectName = dbElement.getElementsByTagName("projectName"); java.lang.reflect.Field[] declaredFields = project.getClass().getDeclaredFields();
if (projectName.getLength() == 1) {
project.setProjectName(projectName.item(0).getTextContent());
}
NodeList projectBasePackage = dbElement.getElementsByTagName("projectBasePackage"); for (java.lang.reflect.Field declaredField : declaredFields) {
if (projectBasePackage.getLength() == 1) { boolean annotationPresent = declaredField.isAnnotationPresent(Property.class);
project.setProjectBasePackage(projectBasePackage.item(0).getTextContent()); if (annotationPresent) {
} Property annotation = declaredField.getAnnotation(Property.class);
String value = annotation.value();
NodeList projectAuthor = dbElement.getElementsByTagName("projectAuthor"); NodeList nodeName = dbElement.getElementsByTagName(value);
if (projectAuthor.getLength() == 1) { if (nodeName.getLength() == 1) {
project.setProjectAuthor(projectAuthor.item(0).getTextContent()); String textContent = nodeName.item(0).getTextContent();
}
NodeList multiDB = dbElement.getElementsByTagName("multiDB"); declaredField.setAccessible(true);
if (multiDB.getLength() == 1) { if (declaredField.getType() == String.class) {
project.setMultiDB(getBoolean(multiDB.item(0).getTextContent())); declaredField.set(project, textContent);
} else if (declaredField.getType() == Boolean.class || declaredField.getType() == boolean.class) {
declaredField.setBoolean(project, getBoolean(textContent));
}
System.out.println("读取" + value + "=" + textContent);
}
} }
NodeList sysMD = dbElement.getElementsByTagName("sysMD");
if (sysMD.getLength() == 1) {
project.setSysMD(getBoolean(sysMD.item(0).getTextContent()));
} }
NodeList modules = dbElement.getElementsByTagName("module"); NodeList modules = dbElement.getElementsByTagName("module");
if (modules.getLength() > 0) { if (modules.getLength() > 0) {
@ -168,21 +168,25 @@ public class XmlManager {
Element rootProject = doc.createElement("project"); Element rootProject = doc.createElement("project");
doc.appendChild(rootProject); doc.appendChild(rootProject);
Element projectName = doc.createElement("projectName"); java.lang.reflect.Field[] declaredFields = project.getClass().getDeclaredFields();
projectName.setTextContent(project.getProjectName());
Element projectBasePackage = doc.createElement("projectBasePackage"); for (java.lang.reflect.Field declaredField : declaredFields) {
projectBasePackage.setTextContent(project.getProjectBasePackage()); try {
Element projectAuthor = doc.createElement("projectAuthor"); boolean annotationPresent = declaredField.isAnnotationPresent(Property.class);
projectAuthor.setTextContent(project.getProjectAuthor()); if (annotationPresent) {
Element multiDB = doc.createElement("multiDB"); Property annotation = declaredField.getAnnotation(Property.class);
multiDB.setTextContent(String.valueOf(project.getMultiDB())); String value = annotation.value();
Element sysMD = doc.createElement("sysMD"); Element element = doc.createElement(value);
sysMD.setTextContent(String.valueOf(project.getSysMD())); declaredField.setAccessible(true);
rootProject.appendChild(projectName); Object valuer = declaredField.get(project);
rootProject.appendChild(projectBasePackage); element.setTextContent(String.valueOf(valuer));
rootProject.appendChild(projectAuthor); rootProject.appendChild(element);
rootProject.appendChild(multiDB); System.out.println("写入" + value + "=" + String.valueOf(valuer));
rootProject.appendChild(sysMD); }
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
Element modules = doc.createElement("modules"); Element modules = doc.createElement("modules");
rootProject.appendChild(modules); rootProject.appendChild(modules);

@ -1,6 +1,7 @@
package xyz.wbsite.dbtool.javafx.po; package xyz.wbsite.dbtool.javafx.po;
import javafx.scene.control.TreeItem; import javafx.scene.control.TreeItem;
import xyz.wbsite.dbtool.javafx.annotation.Property;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -20,11 +21,20 @@ public class Project extends TreeItem {
setExpanded(true); setExpanded(true);
} }
@Property("projectName")
private String projectName; private String projectName;
@Property("projectBasePackage")
private String projectBasePackage; private String projectBasePackage;
@Property("projectAuthor")
private String projectAuthor; private String projectAuthor;
@Property("multiDB")
private boolean multiDB; private boolean multiDB;
@Property("sysMD")
private boolean sysMD; private boolean sysMD;
@Property("cloud")
private boolean cloud;
@Property(value = "database",defautValue = "MySQL")
private String database;
/** /**
* *
@ -85,4 +95,20 @@ public class Project extends TreeItem {
public void setSysMD(boolean sysMD) { public void setSysMD(boolean sysMD) {
this.sysMD = sysMD; this.sysMD = sysMD;
} }
public boolean isCloud() {
return cloud;
}
public void setCloud(boolean cloud) {
this.cloud = cloud;
}
public String getDatabase() {
return database;
}
public void setDatabase(String database) {
this.database = database;
}
} }

@ -4,6 +4,8 @@
<?import javafx.scene.control.Label?> <?import javafx.scene.control.Label?>
<?import javafx.scene.control.TextField?> <?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.*?> <?import javafx.scene.layout.*?>
<?import javafx.scene.control.RadioButton?>
<?import javafx.scene.control.ToggleGroup?>
<GridPane fx:controller="xyz.wbsite.dbtool.javafx.ctrl.DetailProjectController" maxHeight="-Infinity" <GridPane fx:controller="xyz.wbsite.dbtool.javafx.ctrl.DetailProjectController" maxHeight="-Infinity"
maxWidth="-Infinity" maxWidth="-Infinity"
minHeight="-Infinity" minWidth="-Infinity" xmlns="http://javafx.com/javafx/8.0.65" minHeight="-Infinity" minWidth="-Infinity" xmlns="http://javafx.com/javafx/8.0.65"
@ -45,15 +47,34 @@
<TextField GridPane.rowIndex="1" GridPane.columnIndex="2" fx:id="projectBasePackage"/> <TextField GridPane.rowIndex="1" GridPane.columnIndex="2" fx:id="projectBasePackage"/>
<!-- ROW --> <!-- ROW -->
<Label GridPane.rowIndex="2" GridPane.columnIndex="1" text="其他配置" GridPane.halignment="CENTER" <Label GridPane.rowIndex="2" GridPane.columnIndex="1" text="数据库类" GridPane.halignment="CENTER"
GridPane.valignment="CENTER"/> GridPane.valignment="CENTER"/>
<HBox GridPane.rowIndex="2" GridPane.columnIndex="2" GridPane.columnSpan="2" alignment="CENTER_LEFT" <HBox GridPane.rowIndex="2" GridPane.columnIndex="2" GridPane.columnSpan="4" alignment="CENTER_LEFT"
GridPane.halignment="CENTER"
GridPane.valignment="CENTER">
<children>
<RadioButton mnemonicParsing="false" text="MySQL" selected="true">
<toggleGroup>
<ToggleGroup fx:id="database"/>
</toggleGroup>
</RadioButton>
<RadioButton mnemonicParsing="false" text="Oracle" toggleGroup="$database"/>
<RadioButton mnemonicParsing="false" text="SQLite" toggleGroup="$database"/>
</children>
</HBox>
<!-- ROW -->
<Label GridPane.rowIndex="3" GridPane.columnIndex="1" text="其他配置" GridPane.halignment="CENTER"
GridPane.valignment="CENTER"/>
<HBox GridPane.rowIndex="3" GridPane.columnIndex="2" GridPane.columnSpan="4" alignment="CENTER_LEFT"
GridPane.halignment="CENTER" GridPane.halignment="CENTER"
GridPane.valignment="CENTER"> GridPane.valignment="CENTER">
<children> <children>
<CheckBox fx:id="sysMD" selected="true" GridPane.rowIndex="4" GridPane.columnIndex="2" text="系统模块"/> <CheckBox fx:id="sysMD" selected="true" GridPane.rowIndex="4" GridPane.columnIndex="2" text="系统模块"/>
<CheckBox fx:id="multiDB" GridPane.rowIndex="4" GridPane.columnIndex="2" text="多数据库"/> <CheckBox fx:id="multiDB" GridPane.rowIndex="4" GridPane.columnIndex="2" text="多数据库"/>
<CheckBox fx:id="cloud" selected="true" GridPane.rowIndex="4" GridPane.columnIndex="2" text="添加Cloud"/>
</children> </children>
</HBox> </HBox>
</children> </children>

Loading…
Cancel
Save

Powered by TurnKey Linux.