⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 projectdirectoryinputdialog.java

📁 Contiki是一个开源
💻 JAVA
字号:
package se.sics.cooja.dialogs;import java.beans.*;import java.io.File;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;import org.apache.log4j.Logger;class ProjectDirectoryInputDialog extends JDialog implements ActionListener, PropertyChangeListener {  private static Logger logger = Logger.getLogger(ProjectDirectoryInputDialog.class);  private File projectDirectoryPath = null;  private JTextField textField;  private JOptionPane optionPane;  private String buttonAdd = "Add";  private String buttonCancel = "Cancel";  public ProjectDirectoryInputDialog(Window window) {    super(window, ModalityType.APPLICATION_MODAL);    setupDialog();  }  public ProjectDirectoryInputDialog(Dialog dialog) {    super(dialog, ModalityType.APPLICATION_MODAL);    setupDialog();  }  public ProjectDirectoryInputDialog(Frame frame) {    super(frame, ModalityType.APPLICATION_MODAL);    setupDialog();  }  public void setupDialog() {    setTitle("Enter path");    textField = new JTextField(10);    textField.getDocument().addDocumentListener(new DocumentListener() {      public void insertUpdate(DocumentEvent e) {        pathChanged();      }      public void removeUpdate(DocumentEvent e) {        pathChanged();      }      public void changedUpdate(DocumentEvent e) {        pathChanged();      }    });    Object[] objects = {"Enter path to project directory", textField};    Object[] options = {buttonAdd, buttonCancel};    optionPane = new JOptionPane(objects,        JOptionPane.QUESTION_MESSAGE,        JOptionPane.YES_NO_OPTION,        null,        options,        options[0]);    setContentPane(optionPane);    setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);    addWindowListener(new WindowAdapter() {      public void windowClosing(WindowEvent we) {        optionPane.setValue(new Integer(            JOptionPane.CLOSED_OPTION));      }    });    addComponentListener(new ComponentAdapter() {      public void componentShown(ComponentEvent ce) {        textField.requestFocusInWindow();      }    });    textField.addActionListener(this);    optionPane.addPropertyChangeListener(this);    SwingUtilities.invokeLater(new Runnable() {      public void run() {        pathChanged();      }    });  }  public File getProjectDirectory() {    return projectDirectoryPath;  }  private void pathChanged() {    String newPath = textField.getText();    File projectDir = new File(newPath);    if (!projectDir.exists()) {      textField.setBackground(Color.RED);      textField.setToolTipText("Directory does not exist");      return;    }    if (!projectDir.isDirectory()) {      textField.setBackground(Color.RED);      textField.setToolTipText("Not a directory");      return;    }//    if (!new File(projectDir, GUI.PROJECT_CONFIG_FILENAME).exists()) {//      textField.setBackground(Color.LIGHT_GRAY);//      textField.setToolTipText("No configuration file found");//      return;//    }    textField.setBackground(Color.WHITE);    textField.setToolTipText("");  }  public void actionPerformed(ActionEvent e) {    optionPane.setValue(buttonAdd);  }  public void propertyChange(PropertyChangeEvent e) {    String prop = e.getPropertyName();    if (isVisible() && (e.getSource() == optionPane)        && (JOptionPane.VALUE_PROPERTY.equals(prop) ||            JOptionPane.INPUT_VALUE_PROPERTY.equals(prop))) {      Object value = optionPane.getValue();      if (value == JOptionPane.UNINITIALIZED_VALUE) {        return;      }      optionPane.setValue(          JOptionPane.UNINITIALIZED_VALUE);      if (buttonAdd.equals(value)) {        projectDirectoryPath = new File(textField.getText());        close();      } else {        projectDirectoryPath = null;        close();      }    }  }  public void close() {    textField.setText(null);    setVisible(false);  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -