Advertisement
Guest User

Untitled

a guest
Mar 12th, 2017
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 10.50 KB | None | 0 0
  1. package sample;
  2.  
  3. import javafx.application.Application;
  4. import javafx.collections.FXCollections;
  5. import javafx.collections.ObservableList;
  6. import javafx.geometry.Insets;
  7. import javafx.geometry.Pos;
  8. import javafx.scene.Scene;
  9. import javafx.scene.control.*;
  10. import javafx.scene.control.cell.PropertyValueFactory;
  11. import javafx.scene.layout.AnchorPane;
  12. import javafx.scene.layout.GridPane;
  13. import javafx.scene.layout.HBox;
  14. import javafx.scene.layout.VBox;
  15. import javafx.scene.paint.Color;
  16. import javafx.scene.text.Text;
  17. import javafx.stage.Stage;
  18. import org.apache.log4j.BasicConfigurator;
  19.  
  20. public class Main extends Application {
  21.  
  22.     private static String currUser = "";
  23.  
  24.     private static final String ADMIN_EMAIL = "admin";
  25.     private static final String ADMIN_PASS = "admin";
  26.  
  27.     private static String rootPath;
  28.  
  29.     private static String currPath;
  30.  
  31.     private TableView<TableItem> table = new TableView<>();
  32.  
  33.     private final static ObservableList<TableItem> data = FXCollections.observableArrayList();
  34.  
  35.     private static Text info = new Text(currPath);
  36.  
  37.     private static int index = -1;
  38.  
  39.     DataBase db = new DataBase();
  40.  
  41.     /**
  42.      * Метод отрисовывающий интерфейс
  43.      * @param primaryStage Главный стэйдж
  44.      */
  45.     @Override
  46.     public void start(Stage primaryStage) {
  47.  
  48.         Stage regStage = new Stage();
  49.  
  50.         Files.createRoot();
  51.         Files.showFiles(currPath);
  52.  
  53.         primaryStage.setTitle("Catalog");
  54.         primaryStage.setResizable(true);
  55.         primaryStage.setMinWidth(300);
  56.         primaryStage.setMinHeight(250);
  57.  
  58.         VBox vertical = new VBox();
  59.         vertical.setAlignment(Pos.TOP_CENTER);
  60.  
  61.         MenuBar menuBar = new MenuBar();
  62.         Menu fileMenu = new Menu("File");
  63.         fileMenu.setVisible(false);
  64.         MenuItem addFile = new MenuItem("Add file");
  65.         addFile.setOnAction((event -> {
  66.             Files.addFile(primaryStage, currUser);
  67.         }));
  68.         MenuItem createFolder = new MenuItem("Create folder");
  69.         createFolder.setOnAction(event -> {
  70.             Files.createFolder(currPath);
  71.         });
  72.         MenuItem deleteFile = new MenuItem("Delete");
  73.         deleteFile.setOnAction(event -> {
  74.             if (index != -1) {
  75.                 String name = table.getSelectionModel().getSelectedItem().getName();
  76.                 Files.deleteFile(currPath + "\\" + name);
  77.                 data.remove(index);
  78.             } else {
  79.  
  80.             }
  81.         });
  82.         fileMenu.getItems().addAll(addFile, createFolder, deleteFile);
  83.         Menu exitMenu = new Menu("Exit");
  84.         MenuItem exit = new MenuItem("Exit");
  85.         exitMenu.getItems().add(exit);
  86.         exit.setOnAction(event -> {
  87.             primaryStage.close();
  88.             regStage.show();
  89.         });
  90.         menuBar.getMenus().addAll(fileMenu, exitMenu);
  91.         vertical.getChildren().add(menuBar);
  92.  
  93.         AnchorPane APath = new AnchorPane();
  94.         HBox HPath = new HBox();
  95.         TextField path = new TextField();
  96.         Button openBtn = new Button("Search");
  97.         openBtn.setOnAction(event -> {
  98.             Files.searchFile(path.getText());
  99.             path.clear();
  100.         });
  101.         openBtn.setMinWidth(70);
  102.         path.setPrefWidth(2000);
  103.         HPath.getChildren().addAll(path, openBtn);
  104.         APath.getChildren().addAll(HPath);
  105.         AnchorPane.setRightAnchor(HPath, 0.0);
  106.         AnchorPane.setLeftAnchor(HPath, 0.0);
  107.         vertical.getChildren().add(APath);
  108.  
  109.         AnchorPane ATable = new AnchorPane(table);
  110.         table.setPrefSize(2000, 2000);
  111.  
  112.         TableColumn<TableItem, String> typeCol = new TableColumn<>("Type");
  113.         typeCol.setMinWidth(55);
  114.         typeCol.setCellValueFactory(
  115.                 new PropertyValueFactory<>("type"));
  116.  
  117.         TableColumn<TableItem, String> nameCol = new TableColumn<>("Name");
  118.         nameCol.setMinWidth(400);
  119.         nameCol.setCellValueFactory(
  120.                 new PropertyValueFactory<>("name"));
  121.  
  122.         TableColumn<TableItem, String> sizeCol = new TableColumn<>("Size");
  123.         sizeCol.setMinWidth(100);
  124.         sizeCol.setCellValueFactory(
  125.                 new PropertyValueFactory<>("size"));
  126.  
  127.         table.setItems(data);
  128.         table.getColumns().addAll(typeCol, nameCol, sizeCol);
  129.  
  130.         table.setOnMouseClicked((event -> {
  131.             index = table.getSelectionModel().getSelectedIndex();
  132.             System.out.println(index);
  133.             if (event.getClickCount() == 2) {
  134.                 String fileName = table.getSelectionModel().getSelectedItem().getName();
  135.                 if (fileName != null) {
  136.                     Files.openFile(currPath + "\\" + fileName);
  137.                 }
  138.             }
  139.         }));
  140.  
  141.         AnchorPane.setBottomAnchor(table, 0.0);
  142.         AnchorPane.setTopAnchor(table, 0.0);
  143.         AnchorPane.setRightAnchor(table, 0.0);
  144.         AnchorPane.setLeftAnchor(table, 0.0);
  145.         vertical.getChildren().add(table);
  146.  
  147.         AnchorPane AInfo = new AnchorPane();
  148.         AInfo.getChildren().add(info);
  149.         AnchorPane.setBottomAnchor(info, 0.0);
  150.         AnchorPane.setLeftAnchor(info, 0.0);
  151.         vertical.getChildren().add(AInfo);
  152.  
  153.  
  154.         AnchorPane AVertical = new AnchorPane(vertical);
  155.         AnchorPane.setBottomAnchor(vertical, 0.0);
  156.         AnchorPane.setTopAnchor(vertical, 0.0);
  157.         AnchorPane.setRightAnchor(vertical, 0.0);
  158.         AnchorPane.setLeftAnchor(vertical, 0.0);
  159.  
  160.         primaryStage.setScene(new Scene(AVertical, 700, 500));
  161.  
  162.         // Окно входа и регистрации
  163.  
  164.         GridPane loginGrid = new GridPane();
  165.         loginGrid.setPadding(new Insets(25));
  166.         loginGrid.setVgap(10);
  167.         loginGrid.setHgap(10);
  168.         Text emailLabel = new Text("Email: ");
  169.         loginGrid.add(emailLabel, 0, 0);
  170.         TextField emailLogin = new TextField();
  171.         loginGrid.add(emailLogin, 1, 0);
  172.         Text passLabel = new Text("Password: ");
  173.         loginGrid.add(passLabel, 0, 1);
  174.         PasswordField passLogin = new PasswordField();
  175.         loginGrid.add(passLogin, 1, 1);
  176.         Button guestBtn = new Button("Guest");
  177.         guestBtn.setOnAction(event -> {
  178.             regStage.close();
  179.             primaryStage.show();
  180.         });
  181.         guestBtn.setPrefSize(80, 20);
  182.         Text infoLogin = new Text("");
  183.         loginGrid.add(infoLogin, 1, 3);
  184.         Button enterBtn = new Button("Enter");
  185.         enterBtn.setOnAction(event -> {
  186.             if (emailLogin.getText().equals(ADMIN_EMAIL) && passLogin.getText().equals(ADMIN_PASS)) {
  187.                 regStage.close();
  188.                 primaryStage.show();
  189.                 Main.currUser = "admin";
  190.                 fileMenu.setVisible(true);
  191.             } else if (!(emailLogin.getText().equals("") || passLogin.getText().equals(""))) {
  192.                 db.connectToDataBase();
  193.                 if (db.enter(emailLogin.getText(), passLogin.getText())) {
  194.                     regStage.close();
  195.                     primaryStage.show();
  196.                     Main.currUser = emailLogin.getText();
  197.                     fileMenu.setVisible(true);
  198.                 } else {
  199.                     infoLogin.setText("Incorrect login or password");
  200.                     infoLogin.setFill(Color.RED);
  201.                 }
  202.                 db.closeDataBase();
  203.             } else {
  204.                 infoLogin.setText("Empty field");
  205.                 infoLogin.setFill(Color.RED);
  206.             }
  207.         });
  208.         enterBtn.setPrefSize(80,20);
  209.         HBox hBox = new HBox(guestBtn, enterBtn);
  210.         hBox.setSpacing(5);
  211.         hBox.setAlignment(Pos.BOTTOM_RIGHT);
  212.         loginGrid.add(hBox, 1, 2);
  213.  
  214.         Tab login = new Tab("Login", loginGrid);
  215.         login.setClosable(false);
  216.  
  217.         GridPane registerGrid = new GridPane();
  218.         registerGrid.setPadding(new Insets(25));
  219.         registerGrid.setVgap(10);
  220.         registerGrid.setHgap(10);
  221.         Text emailLabelR = new Text("Email: ");
  222.         registerGrid.add(emailLabelR, 0, 0);
  223.         TextField emailReg = new TextField();
  224.         registerGrid.add(emailReg, 1, 0);
  225.         Text passLabelR = new Text("Password: ");
  226.         registerGrid.add(passLabelR, 0, 1);
  227.         PasswordField passReg = new PasswordField();
  228.         registerGrid.add(passReg, 1, 1);
  229.         Text confirmLabel = new Text("Confirm\npassword");
  230.         registerGrid.add(confirmLabel,0, 3);
  231.         PasswordField confirmReg = new PasswordField();
  232.         registerGrid.add(confirmReg, 1, 3);
  233.         Text infoReg = new Text();
  234.         registerGrid.add(infoReg, 1, 5);
  235.         Button registerBtn = new Button("Register");
  236.         registerBtn.setOnAction(event -> {
  237.             if (!(emailReg.getText().equals("") || passReg.getText().equals("") || confirmReg.getText().equals(""))) {
  238.                 if (passReg.getText().equals(confirmReg.getText())) {
  239.                     db.connectToDataBase();
  240.                     if (!db.isRegistered(emailReg.getText())) {
  241.                         db.insertIntoUsers(emailReg.getText(), passReg.getText());
  242.                         infoReg.setText("Success");
  243.                         infoReg.setFill(Color.GREEN);
  244.                     } else {
  245.                         infoReg.setText("User is registered");
  246.                         infoReg.setFill(Color.RED);
  247.                     }
  248.                     db.closeDataBase();
  249.                 } else {
  250.                     infoReg.setText("Password not confirmed");
  251.                     infoReg.setFill(Color.RED);
  252.                 }
  253.             } else {
  254.                 infoReg.setText("Empty field");
  255.                 infoReg.setFill(Color.RED);
  256.             }
  257.         });
  258.         registerBtn.setPrefSize(80,20);
  259.         registerGrid.add(registerBtn,1,4);
  260.         Tab register = new Tab("Register", registerGrid);
  261.         register.setClosable(false);
  262.  
  263.         TabPane tabPane = new TabPane(login, register);
  264.         regStage.setScene(new Scene(tabPane, 300, 250));
  265.         regStage.show();
  266.     }
  267.  
  268.     public static void main(String[] args) {
  269.         BasicConfigurator.configure();
  270.         launch(args);
  271.     }
  272.  
  273.     public static String getCurrPath() {
  274.         return currPath;
  275.     }
  276.  
  277.     public static void setCurrPath(String currPath) {
  278.         Main.currPath = currPath;
  279.         Main.info.setText(currPath);
  280.     }
  281.  
  282.     public static ObservableList<TableItem> getData() {
  283.         return data;
  284.     }
  285.  
  286.     public static void setRootPath(String rootPath) {
  287.         Main.rootPath = rootPath;
  288.     }
  289.  
  290.     public static String getRootPath() {
  291.         return rootPath;
  292.     }
  293. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement