1
0
Fork 0

Add other files

master
Ambrose Chua 2017-04-16 21:12:59 +08:00
parent 1bc2fe1f6f
commit f0a4a6d16d
15 changed files with 575 additions and 0 deletions

7
.idea/ant.xml Normal file
View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="AntConfiguration">
<defaultAnt bundledAnt="true" />
</component>
</project>

23
.idea/compiler.xml Normal file
View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<option name="DEFAULT_COMPILER" value="Javac" />
<resourceExtensions />
<wildcardResourcePatterns>
<entry name="!?*.java" />
<entry name="!?*.form" />
<entry name="!?*.class" />
<entry name="!?*.groovy" />
<entry name="!?*.scala" />
<entry name="!?*.flex" />
<entry name="!?*.kt" />
<entry name="!?*.clj" />
</wildcardResourcePatterns>
<annotationProcessing>
<profile default="true" name="Default" enabled="false">
<processorPath useClasspath="true" />
</profile>
</annotationProcessing>
</component>
</project>

2
.idea/description.html Normal file
View File

@ -0,0 +1,2 @@
<html>Simple <b>JavaFX 2.0</b> application that includes simple .fxml file with attached controller and Main class to quick start. Artifact to build JavaFX application is provided.
</html>

5
.idea/encodings.xml Normal file
View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false" />
</project>

7
.idea/gradle.xml Normal file
View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GradleSettings">
<option name="gradleHome" value="C:/Program Files (x86)/Gradle/gradle-1.0-rc-3" />
</component>
</project>

7
.idea/kotlinc.xml Normal file
View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="KotlinCommonCompilerArguments">
<option name="languageVersion" value="1.1" />
<option name="apiVersion" value="1.1" />
</component>
</project>

View File

@ -0,0 +1,9 @@
<component name="libraryTable">
<library name="mysql-connector-java-5.1.41-bin">
<CLASSES>
<root url="jar://$PROJECT_DIR$/lib/mysql-connector-java-5.1.41-bin.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>

12
.idea/misc.xml Normal file
View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="EntryPointsManager">
<entry_points version="2.0" />
</component>
<component name="ProjectKey">
<option name="state" value="project://e79810c8-c5c8-43b1-b19c-90c1f4095425" />
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

8
.idea/modules.xml Normal file
View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/chronos-admin.iml" filepath="$PROJECT_DIR$/chronos-admin.iml" />
</modules>
</component>
</project>

125
.idea/uiDesigner.xml Normal file
View File

@ -0,0 +1,125 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Palette2">
<group name="Swing">
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
</item>
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
</item>
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true">
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
</item>
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
<initial-values>
<property name="text" value="Button" />
</initial-values>
</item>
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="RadioButton" />
</initial-values>
</item>
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="CheckBox" />
</initial-values>
</item>
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
<initial-values>
<property name="text" value="Label" />
</initial-values>
</item>
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
</item>
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
</item>
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
<preferred-size width="-1" height="20" />
</default-constraints>
</item>
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
</item>
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
</item>
</group>
</component>
</project>

6
.idea/vcs.xml Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

Binary file not shown.

View File

@ -0,0 +1,225 @@
package io.chronos.admin;
import javafx.beans.property.ReadOnlyStringWrapper;
import javafx.beans.value.ObservableValue;
import javafx.event.ActionEvent;
import javafx.event.Event;
import javafx.scene.control.*;
import javafx.util.Callback;
import javax.print.DocFlavor;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import static io.chronos.admin.Controller.alertBadInput;
public class Controller {
public TextField connect_host;
public TextField connect_port;
public TextField connect_user;
public TextField connect_pass;
public Button connect_go;
public Label connect_status;
public TableView<List<String>> schools_table;
public TextField schools_search;
public TextField add_school_name;
public TextField add_school_domain;
public Button add_school_go;
public TextField delete_school_id;
public Button delete_school_go;
public TextField users_school;
public TableView<List<String>> users_table;
public Button users_go;
public TextField modify_user_school;
public TextField modify_user_id;
public Button modify_user_load;
public TextField modify_user_name;
public TextField modify_user_email;
public TextField modify_user_role;
public Button modify_user_go;
public TextField connect_database;
private Connection c;
public void initialize() {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public void connect(ActionEvent actionEvent) {
try {
String url = "jdbc:mysql://" + connect_host.getText() + ":" + connect_port.getText() + "/" + connect_database.getText();
c = DriverManager.getConnection(url, connect_user.getText(), connect_pass.getText());
connect_status.setText("Connected to " + url);
} catch (SQLException e) {
e.printStackTrace();
connect_status.setText("Unable to connect");
}
}
private static void loadResultsIntoTable(ResultSet rs, ResultSetMetaData md, TableView tv) throws SQLException {
tv.getColumns().clear();
TableColumn[] cols = new TableColumn[md.getColumnCount()];
for (int i = 0; i < md.getColumnCount(); i++) {
cols[i] = new TableColumn(md.getColumnName(i + 1));
int finalI = i;
cols[i].setCellValueFactory(new Callback<TableColumn.CellDataFeatures<ArrayList<String>, String>, ObservableValue>() {
@Override
public ObservableValue call(TableColumn.CellDataFeatures<ArrayList<String>, String> data) {
return new ReadOnlyStringWrapper(data.getValue().get(finalI));
}
});
}
tv.getColumns().addAll(cols);
tv.getItems().clear();
ArrayList<ArrayList<String>> rows = new ArrayList<>();
while (rs.next()) {
ArrayList<String> row = new ArrayList<>();
for (int i = 0; i < md.getColumnCount(); i++) {
row.add(rs.getString(i + 1));
}
rows.add(row);
}
tv.getItems().addAll(rows);
}
public void queryUsers(ActionEvent actionEvent) {
try {
PreparedStatement ps = null;
if (users_school.getText().length() > 0) {
ps = c.prepareStatement("SELECT * FROM user WHERE user.school = ?");
ps.setInt(1, Integer.parseInt(users_school.getText()));
} else {
ps = c.prepareStatement("SELECT * FROM user");
}
ps.execute();
loadResultsIntoTable(ps.getResultSet(), ps.getMetaData(), users_table);
} catch (NumberFormatException e) {
alertBadInput();
} catch (SQLException e) {
e.printStackTrace();
}
}
public void modifyUserLoad(ActionEvent actionEvent) {
try {
PreparedStatement ps = c.prepareStatement("SELECT * FROM user WHERE user.school = ? AND user.id = ?");
ps.setInt(1, Integer.parseInt(modify_user_school.getText()));
ps.setInt(2, Integer.parseInt(modify_user_id.getText()));
ps.execute();
ResultSet rs = ps.getResultSet();
if (rs.next()) {
modify_user_name.setText(rs.getString("name"));
modify_user_email.setText(rs.getString("email"));
modify_user_role.setText(rs.getString("role"));
}
} catch (NumberFormatException e) {
alertBadInput();
} catch (SQLException e) {
e.printStackTrace();
}
}
public void modifyUser(ActionEvent actionEvent) {
try {
PreparedStatement ps = c.prepareStatement("UPDATE user SET user.name = ?, user.email = ?, user.role = ? WHERE user.school = ? AND user.id = ?");
ps.setString(1, modify_user_name.getText());
ps.setString(2, modify_user_email.getText());
ps.setString(3, modify_user_role.getText());
ps.setInt(4, Integer.parseInt(modify_user_school.getText()));
ps.setInt(5, Integer.parseInt(modify_user_id.getText()));
ps.execute();
alertUpdateDone();
} catch (NumberFormatException e) {
alertBadInput();
} catch (SQLException e) {
e.printStackTrace();
alertBadInput();
}
}
public void querySchools(ActionEvent actionEvent) {
try {
PreparedStatement ps = c.prepareStatement("SELECT * FROM school WHERE school.name LIKE ?");
ps.setString(1,
"%" +
schools_search.getText()
.replace("!", "!!")
.replace("%", "!%")
.replace("_", "!_")
.replace("[", "![")
+ "%"
);
ps.execute();
loadResultsIntoTable(ps.getResultSet(), ps.getMetaData(), schools_table);
} catch (SQLException e) {
e.printStackTrace();
}
}
public void addSchool(ActionEvent actionEvent) {
try {
PreparedStatement ps = c.prepareStatement("INSERT INTO school (name, domain) VALUES (?, ?)");
ps.setString(1, add_school_name.getText());
ps.setString(2, add_school_domain.getText());
ps.execute();
alertInsertDone();
} catch (SQLException e) {
e.printStackTrace();
alertBadInput();
}
}
public void deleteSchool(Event event) {
try {
PreparedStatement ps = c.prepareStatement("DELETE FROM school WHERE school.id = ?");
ps.setInt(1, Integer.parseInt(delete_school_id.getText()));
ps.execute();
alertDeleteDone();
} catch (NumberFormatException e) {
alertBadInput();
} catch (SQLException e) {
e.printStackTrace();
alertBadInput();
}
}
public static void alertBadInput() {
Alert alert = new Alert(Alert.AlertType.ERROR);
alert.setTitle("Woof!");
alert.setHeaderText("Woof!");
alert.setContentText("Bad input");
alert.showAndWait();
}
public static void alertInsertDone() {
Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setTitle("Woof!");
alert.setHeaderText("Woof!");
alert.setContentText("Insert done!");
alert.showAndWait();
}
public static void alertUpdateDone() {
Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setTitle("Woof!");
alert.setHeaderText("Woof!");
alert.setContentText("Update done!");
alert.showAndWait();
}
public static void alertDeleteDone() {
Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setTitle("Woof!");
alert.setHeaderText("Woof!");
alert.setContentText("Delete done!");
alert.showAndWait();
}
}

View File

@ -0,0 +1,23 @@
package io.chronos.admin;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
Parent root = FXMLLoader.load(getClass().getResource("interface.fxml"));
primaryStage.setTitle("Hello World");
primaryStage.setScene(new Scene(root, 640, 480));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}

View File

@ -0,0 +1,116 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.Tab?>
<?import javafx.scene.control.TabPane?>
<?import javafx.scene.control.TableView?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.control.ToolBar?>
<?import javafx.scene.layout.AnchorPane?>
<AnchorPane maxHeight="480.0" maxWidth="640.0" minHeight="480.0" minWidth="640.0" prefHeight="480.0" prefWidth="640.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="io.chronos.admin.Controller">
<children>
<TabPane prefHeight="200.0" prefWidth="200.0" tabClosingPolicy="UNAVAILABLE" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<tabs>
<Tab text="connect">
<content>
<AnchorPane>
<children>
<ToolBar prefHeight="40.0" prefWidth="200.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<items>
<TextField fx:id="connect_host" prefHeight="27.0" prefWidth="100.0" promptText="server" text="localhost" />
<TextField fx:id="connect_port" prefHeight="27.0" prefWidth="60.0" promptText="port" text="3306" />
<TextField fx:id="connect_user" prefHeight="27.0" prefWidth="120.0" promptText="username" text="root" />
<TextField fx:id="connect_pass" layoutX="174.0" layoutY="11.0" prefHeight="27.0" prefWidth="120.0" promptText="password" />
<TextField fx:id="connect_database" layoutX="302.0" layoutY="11.0" prefHeight="27.0" prefWidth="120.0" promptText="database" text="chronos" />
<Button fx:id="connect_go" mnemonicParsing="false" onAction="#connect" text="go" />
</items>
</ToolBar>
<Label fx:id="connect_status" alignment="CENTER" layoutX="4.0" layoutY="214.0" text="not connected" textAlignment="CENTER" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="214.0" />
</children>
</AnchorPane>
</content>
</Tab>
<Tab text="schools">
<content>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0">
<children>
<TableView fx:id="schools_table" layoutY="44.0" prefHeight="403.0" prefWidth="640.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="40.0" />
<ToolBar layoutX="17.0" layoutY="3.0" prefHeight="40.0" prefWidth="200.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<items>
<TextField fx:id="schools_search" promptText="simple search" />
<Button fx:id="schools_go" mnemonicParsing="false" onAction="#querySchools" text="go" />
</items>
</ToolBar>
</children>
</AnchorPane>
</content>
</Tab>
<Tab text="add school">
<content>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0">
<children>
<ToolBar prefHeight="40.0" prefWidth="200.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<items>
<TextField fx:id="add_school_name" prefHeight="27.0" prefWidth="99.0" promptText="name" />
<TextField fx:id="add_school_domain" prefHeight="27.0" prefWidth="195.0" promptText="domain" />
<Button fx:id="add_school_go" mnemonicParsing="false" onAction="#addSchool" text="go" />
</items>
</ToolBar>
</children>
</AnchorPane>
</content>
</Tab>
<Tab text="delete school">
<content>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0">
<children>
<ToolBar prefHeight="40.0" prefWidth="200.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<items>
<TextField fx:id="delete_school_id" prefHeight="27.0" prefWidth="99.0" promptText="id" />
<Button fx:id="delete_school_go" mnemonicParsing="false" onAction="#deleteSchool" text="go" />
</items>
</ToolBar>
</children>
</AnchorPane>
</content>
</Tab>
<Tab text="users">
<content>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0">
<children>
<TableView fx:id="users_table" layoutY="44.0" prefHeight="403.0" prefWidth="640.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="40.0" />
<ToolBar layoutX="17.0" layoutY="3.0" prefHeight="40.0" prefWidth="200.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<items>
<TextField fx:id="users_school" prefHeight="27.0" prefWidth="113.0" promptText="school id" />
<Button fx:id="users_go" mnemonicParsing="false" onAction="#queryUsers" text="go" />
</items>
</ToolBar>
</children>
</AnchorPane>
</content>
</Tab>
<Tab text="modify user">
<content>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0">
<children>
<ToolBar layoutX="17.0" layoutY="3.0" prefHeight="40.0" prefWidth="200.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<items>
<TextField fx:id="modify_user_school" prefHeight="27.0" prefWidth="83.0" promptText="school id" />
<TextField fx:id="modify_user_id" layoutX="10.0" layoutY="11.0" prefHeight="27.0" prefWidth="74.0" promptText="user id" />
<Button fx:id="modify_user_load" mnemonicParsing="false" onAction="#modifyUserLoad" text="load" />
<TextField fx:id="modify_user_name" layoutX="10.0" layoutY="11.0" prefHeight="27.0" prefWidth="132.0" promptText="name" />
<TextField fx:id="modify_user_email" layoutX="100.0" layoutY="11.0" prefHeight="27.0" prefWidth="112.0" promptText="email" />
<TextField fx:id="modify_user_role" prefHeight="27.0" prefWidth="65.0" promptText="role" />
<Button fx:id="modify_user_go" mnemonicParsing="false" onAction="#modifyUser" text="go" />
</items>
</ToolBar>
</children>
</AnchorPane>
</content>
</Tab>
</tabs>
</TabPane>
</children>
</AnchorPane>