Advertisement
Guest User

Untitled

a guest
Oct 28th, 2016
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.60 KB | None | 0 0
  1. package com.projectbronze.botlauncher.gui;
  2.  
  3. import java.awt.Color;
  4. import java.awt.event.ActionListener;
  5. import java.awt.event.ContainerListener;
  6. import java.awt.event.InputMethodEvent;
  7. import java.awt.event.InputMethodListener;
  8. import java.beans.PropertyChangeEvent;
  9. import java.beans.PropertyChangeListener;
  10. import java.io.File;
  11. import javax.swing.JButton;
  12. import javax.swing.JCheckBox;
  13. import javax.swing.JComboBox;
  14. import javax.swing.JFileChooser;
  15. import javax.swing.JLabel;
  16. import javax.swing.JTextField;
  17. import javax.swing.event.CaretEvent;
  18. import javax.swing.event.CaretListener;
  19. import javax.swing.event.DocumentEvent;
  20. import javax.swing.event.DocumentListener;
  21. import com.projectbronze.botlauncher.gui.misc.DirectoryChooser;
  22. import com.projectbronze.botlauncher.json.BotJson.Mode;
  23.  
  24. public class InitPanel extends PanelBase
  25. {
  26.     private MainPanel parrent;
  27.     private JTextField name, author, mainClass, path;
  28.     private JComboBox<String> mode;
  29.     private JCheckBox autoRestart;
  30.     private JFileChooser dirSelector, pathSelector;
  31.     private JButton create, selectDir, selectPath;
  32.     private JLabel dir, dirL, nameL, authorL, mainClassL, pathL, modeL, autoRestartL, error;
  33.     public InitPanel(MainPanel parrent)
  34.     {
  35.         this.parrent = parrent;
  36.         initComponents();
  37.         initMisc();
  38.     }
  39.    
  40.     private void initComponents()
  41.     {
  42.         add(dirL = new JLabel("Директория бота:"), 0, 0);
  43.         add(nameL = new JLabel("Название бота:"), 0, 1);
  44.         add(authorL = new JLabel("Имя автора:"), 0, 2);
  45.         add(mainClassL = new JLabel("Главный класс:"), 0, 3);
  46.         add(modeL = new JLabel("Режим запуска бота:"), 0, 4);
  47.         add(pathL = new JLabel("Путь для запуска бота:"), 0, 5);
  48.         add(autoRestartL = new JLabel("Использовать авто-перезапуск:"), 0, 6);
  49.         add(dir = new JLabel(), 3, 0);
  50.         add(selectDir = new JButton("Выбрать директорию"), 4, 0);
  51.         add(name = new JTextField(10), 3, 1);
  52.         add(author = new JTextField(System.getProperty("user.name"), 10), 3, 2);
  53.         add(mainClass = new JTextField(10), 3, 3);
  54.         add(mode = new JComboBox<String>(new String[] {"jar", "class", "src"}), 3, 4);
  55.         add(path = new JTextField(10), 3, 5);
  56.         add(selectPath = new JButton("Выбрать путь"), 4, 5);
  57.         add(autoRestart = new JCheckBox(), 3, 6);
  58.         add(create = new JButton("Создать бота"), 1, 7);
  59.         add(error = new JLabel(""), 1, 8);
  60.         dirSelector = new DirectoryChooser();
  61.         pathSelector = new JFileChooser(new File("."));
  62.         pathSelector.setFileSelectionMode(JFileChooser.FILES_ONLY);
  63.     }
  64.     private Runnable updateMainClass = () -> mainClass.setText(String.format("com.%s.%s.Core", author.getText(), name.getText()));
  65.     private DocumentListener updMCListner = new DocumentListener()
  66.     {
  67.         @Override
  68.         public void removeUpdate(DocumentEvent e)
  69.         {
  70.             updateMainClass.run();
  71.         }
  72.        
  73.         @Override
  74.         public void insertUpdate(DocumentEvent e)
  75.         {
  76.             updateMainClass.run();
  77.         }
  78.        
  79.         @Override
  80.         public void changedUpdate(DocumentEvent e)
  81.         {
  82.             updateMainClass.run();
  83.         }
  84.     };
  85.     private void initMisc()
  86.     {
  87.         selectDir.addActionListener(e -> dirSelector.showOpenDialog(InitPanel.this));
  88.         selectPath.addActionListener(e -> pathSelector.showOpenDialog(InitPanel.this));
  89.         name.getDocument().addDocumentListener(updMCListner);
  90.         author.getDocument().addDocumentListener(updMCListner);
  91.         dirSelector.addActionListener(e -> {
  92.             File f = dirSelector.getSelectedFile();
  93.             dir.setText(f.getAbsolutePath());
  94.             name.setText(f.getName());
  95.             pathSelector.setCurrentDirectory(f);
  96.         });
  97.         pathSelector.addActionListener(e -> {
  98.             path.setText(pathSelector.getSelectedFile().getAbsolutePath());
  99.         });
  100.         mode.addActionListener(e -> {
  101.             Mode mode = Mode.valueOf(((String) this.mode.getSelectedItem()).toUpperCase());
  102.             switch(mode)
  103.             {
  104.                 case SRC:
  105.                 case CLASS:
  106.                 {
  107.                     pathSelector.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
  108.                     break;
  109.                 }
  110.                 case JAR:
  111.                 {
  112.                     pathSelector.setFileSelectionMode(JFileChooser.FILES_ONLY);
  113.                     break;
  114.                 }
  115.             }
  116.         });
  117.         create.addActionListener(e -> {
  118.             error.setForeground(Color.RED);
  119.             if(name.getText().equals("") || author.getText().equals("") || mainClass.getText().equals("") || path.getText().equals("") || dirSelector.getSelectedFile() == null)
  120.             {
  121.                 error.setText("Все параметры обязательны");
  122.                 return;
  123.             }
  124.             File dir = dirSelector.getSelectedFile();
  125.             File bot = new File(dir, "bot.json");
  126.             if(bot.exists())
  127.             {
  128.                 error.setText("В данной директории уже создан бот");
  129.             }
  130.            
  131.         });
  132.     }
  133. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement