예제 #1
0
 /**
  * The list of the selected files
  *
  * @return files
  */
 public String[] getSelectedFiles() {
   final String[] values = new String[m_selectedFileListModel.getSize()];
   for (int i = 0; i < values.length; i++) {
     values[i] = m_selectedFileListModel.getAbsolutePathAt(i);
   }
   return values;
 }
예제 #2
0
  /*
   * when the remove button was pressed
   */
  private void onRemove() {
    if (m_selectedFileListModel.getSize() == 0) {

      JOptionPane.showMessageDialog(
          this, "No files in list to Remove", "Error", JOptionPane.ERROR_MESSAGE);

      return;
    }
    m_selectedFileListModel.remove(m_selectedFileList.getSelectedIndices());
    m_selectedFileList.clearSelection();
    fireSelectionChangedEvent();
  }
예제 #3
0
  /**
   * Updates the selected files list after removing or adding files
   *
   * @param selectedFiles
   */
  public void update(final String[] selectedFiles) {
    // applying the model settings to the components
    if (selectedFiles.length > 0) {
      final File[] files = new File[selectedFiles.length];
      for (int i = 0; i < selectedFiles.length; i++) {
        files[i] = new File(selectedFiles[i]);
      }
      m_selectedFileListModel.removeAll();
      m_selectedFileListModel.addFiles(files, m_fileFilter);
    }

    if (m_eventService != null) {
      m_eventService.publish(new FileChooserSelectedFilesChgEvent(getSelectedFiles()));
    }
  }
예제 #4
0
  private void fireSelectionChangedEvent() {
    if (m_listeners != null) {
      for (final ChangeListener listener : m_listeners) {
        listener.stateChanged(new ChangeEvent(this));
      }
    }
    m_selectedFileListBorder.setTitle("Selected files (" + m_selectedFileListModel.getSize() + ")");
    repaint();

    if (m_eventService != null) {
      m_eventService.publish(new FileChooserSelectedFilesChgEvent(getSelectedFiles()));
    }
  }
예제 #5
0
  private void onAddAllTopLevelFiles() {
    final File[] files = m_fileChooser.getCurrentDirectory().listFiles();
    final ArrayList<File> topLevelFiles = new ArrayList<File>();

    // remove directories
    for (final File f : files) {
      if (!f.isDirectory() && m_fileChooser.getFileFilter().accept(f)) {
        topLevelFiles.add(f);
      }
    }

    m_selectedFileListModel.addFiles(topLevelFiles.toArray(new File[] {}), m_fileFilter);
    m_filePref.put("Path", m_fileChooser.getCurrentDirectory().toString());
    fireSelectionChangedEvent();
  }
예제 #6
0
  public void onAdd() {
    final FileFilter ff = m_fileChooser.getFileFilter();
    if (m_fileChooser.getSelectedFiles().length == 0) {

      JOptionPane.showMessageDialog(
          this,
          "No files selected. Please select at least one file or directory.",
          "Warning",
          JOptionPane.ERROR_MESSAGE);

      return;
    }

    m_selectedFileListModel.addFiles(m_fileChooser.getSelectedFiles(), ff);

    m_filePref.put("Path", m_fileChooser.getCurrentDirectory().toString());
    fireSelectionChangedEvent();
  }
예제 #7
0
 /*
  * when the remove all button was pressed
  */
 private void onRemoveAll() {
   m_selectedFileListModel.removeAll();
   fireSelectionChangedEvent();
 }
예제 #8
0
  /**
   * Creates a new file chooser panel
   *
   * @param fileFilter available file name extension filters
   */
  @SuppressWarnings("unchecked")
  public FileChooserPanel(final FileFilter fileFilter) {
    final String prefDir = m_filePref.get("Path", "null");
    this.m_fileFilter = fileFilter;

    m_defDir = new File(prefDir);
    // System.out.println(defDir.toString());
    // create instances

    // mac hack to get the file name text field in the jfilechooser dialog.
    m_fileChooser = getFileChooserWithLookAndFeel();

    m_addButton =
        new JButton("Add Selected", new ImageIcon(getClass().getResource("button_ok.png")));
    m_addAllButton =
        new JButton("Add all visible files", new ImageIcon(getClass().getResource("edit_add.png")));
    m_remButton =
        new JButton("Remove selected", new ImageIcon(getClass().getResource("editdelete.png")));
    m_remAllButton =
        new JButton("Remove all Files", new ImageIcon(getClass().getResource("edit_remove.png")));
    m_selectedFileList = new JList<>();
    m_selectedFileListModel = new FileListModel();
    m_selectedFileListBorder = BorderFactory.createTitledBorder("Selected files");
    final JScrollPane jspSelFileList = new JScrollPane(m_selectedFileList);

    m_selectedFileList.setModel(m_selectedFileListModel);

    if (m_selectedFileListModel.getSize() > 0) {
      m_fileChooser.setCurrentDirectory(new File(m_selectedFileListModel.getAbsolutePathAt(0)));
    }
    // arrange the components
    final JPanel left = new JPanel();
    left.setBorder(BorderFactory.createTitledBorder("File browser"));
    final JPanel right = new JPanel();
    right.setBorder(m_selectedFileListBorder);
    final JPanel center = new JPanel();
    center.setBorder(BorderFactory.createTitledBorder("Selection"));

    left.setLayout(new BorderLayout());
    right.setLayout(new BorderLayout());
    center.setLayout(new BoxLayout(center, BoxLayout.Y_AXIS));

    final JPanel buttonPane = new JPanel();
    buttonPane.setLayout(new BoxLayout(buttonPane, BoxLayout.X_AXIS));
    buttonPane.add(Box.createVerticalStrut(20));
    final JPanel delButtonPan = new JPanel();
    delButtonPan.setLayout(new BoxLayout(delButtonPan, BoxLayout.X_AXIS));
    delButtonPan.add(Box.createVerticalStrut(20));
    m_addButton.setMaximumSize(new Dimension(150, 25));
    m_addButton.setAlignmentX(Component.CENTER_ALIGNMENT);
    buttonPane.add(m_addButton);
    buttonPane.add(Box.createVerticalStrut(20));
    m_addAllButton.setMaximumSize(new Dimension(150, 25));
    m_addAllButton.setAlignmentX(Component.CENTER_ALIGNMENT);
    buttonPane.add(m_addAllButton);
    buttonPane.add(Box.createVerticalStrut(20));
    m_remButton.setMaximumSize(new Dimension(150, 25));
    m_remButton.setAlignmentX(Component.CENTER_ALIGNMENT);
    delButtonPan.add(m_remButton);
    delButtonPan.add(Box.createVerticalStrut(20));
    m_remAllButton.setMaximumSize(new Dimension(150, 25));
    m_remAllButton.setAlignmentX(Component.CENTER_ALIGNMENT);
    delButtonPan.add(m_remAllButton);
    delButtonPan.add(Box.createVerticalStrut(20));

    m_imagePreviewPanel = new ImagePreviewPanel();

    final ApplyFileView view = new ApplyFileView();
    m_fileChooser.setFileView(view);

    // buttonPan.add(m_imagePreviewPanel);
    // buttonPan.add(Box.createGlue());
    m_fileChooser.setPreferredSize(new Dimension(300, 100));
    final JPanel browsePane = new JPanel();
    browsePane.setLayout(new BoxLayout(browsePane, BoxLayout.Y_AXIS));

    browsePane.add(m_fileChooser);

    if (fileFilter != null) {
      // m_fileChooser.setFileFilter(fileFilter);
      m_fileChooser.setFileFilter(fileFilter);
    }

    final JTabbedPane rightTab = new JTabbedPane();
    m_fileChooser.setMultiSelectionEnabled(true);
    m_fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
    m_fileChooser.setControlButtonsAreShown(false);
    m_fileChooser.setPreferredSize(new Dimension(450, 340));
    // center.add(buttonPan);
    // rightTab.setPreferredSize(new Dimension(400, 300));
    // browsePane.setPreferredSize(new Dimension(600, 500));
    enterHack(m_fileChooser.getComponents());
    right.add(rightTab);
    left.add(browsePane);
    browsePane.add(buttonPane);

    final JPanel selectedPane = new JPanel();
    selectedPane.setLayout(new BoxLayout(selectedPane, BoxLayout.Y_AXIS));
    selectedPane.add(jspSelFileList);
    selectedPane.add(delButtonPan);

    // browsePane.add(m_addAllButton);
    rightTab.add("Selected Files", selectedPane);
    rightTab.add("Preview/Meta-Data", m_imagePreviewPanel);

    setLayout(new BoxLayout(this, BoxLayout.X_AXIS));
    add(left);
    // add(center);
    add(right);
    m_fileChooser.setComponentPopupMenu(popup);

    final JMenuItem add =
        new JMenuItem("Add Selected File", new ImageIcon(getClass().getResource("button_ok.png")));
    add.addActionListener(
        new ActionListener() {

          @Override
          public void actionPerformed(final ActionEvent e) {
            onAdd();
            fireSelectionChangedEvent();
          }
        });

    final JMenuItem addAll =
        new JMenuItem(
            "Add all Visible Files", new ImageIcon(getClass().getResource("edit_add.png")));
    addAll.addActionListener(
        new ActionListener() {

          @Override
          public void actionPerformed(final ActionEvent e) {
            onAddAllTopLevelFiles();
            fireSelectionChangedEvent();
          }
        });

    final JMenuItem clearSelection =
        new JMenuItem("Remove All", new ImageIcon(getClass().getResource("edit_remove.png")));
    clearSelection.addActionListener(
        new ActionListener() {

          @Override
          public void actionPerformed(final ActionEvent e) {
            m_selectedFileListModel.removeAll();
            fireSelectionChangedEvent();
          }
        });

    final JMenuItem remove =
        new JMenuItem("Remove Selected", new ImageIcon(getClass().getResource("editdelete.png")));
    remove.addActionListener(
        new ActionListener() {

          @Override
          public void actionPerformed(final ActionEvent e) {
            m_selectedFileListModel.removeMenu(m_fileChooser.getSelectedFiles());

            fireSelectionChangedEvent();
          }
        });
    final JSeparator sep = new JSeparator();

    popup.add(sep);
    popup.add(add);
    popup.add(addAll);
    popup.add(sep);
    popup.add(remove);
    popup.add(clearSelection);

    // Show preview and metadata from the selected file
    m_previewListener = new ImagePreviewListener(m_imagePreviewPanel);
    m_fileChooser.addPropertyChangeListener(m_previewListener);

    m_addButton.addActionListener(
        new ActionListener() {
          @Override
          public void actionPerformed(final ActionEvent e) {
            onAdd();
          }
        });

    m_addAllButton.addActionListener(
        new ActionListener() {
          @Override
          public void actionPerformed(final ActionEvent e) {
            onAddAllTopLevelFiles();
          }
        });

    m_remButton.addActionListener(
        new ActionListener() {
          @Override
          public void actionPerformed(final ActionEvent e) {

            onRemove();
          }
        });

    m_remAllButton.addActionListener(
        new ActionListener() {
          @Override
          public void actionPerformed(final ActionEvent e) {
            onRemoveAll();
          }
        });

    m_fileChooser.addActionListener(
        new ActionListener() {

          @Override
          public void actionPerformed(final ActionEvent e) {
            onAdd();
          }
        });

    m_selectedFileList.addMouseListener(
        new MouseListener() {

          @Override
          public void mouseClicked(final MouseEvent arg0) {
            // Special shortcut to go to directory
            if (arg0.isControlDown()) {

              if (m_selectedFileList.getSelectedIndices().length == 0) {
                return;
              }
              final File dir =
                  new File(
                      m_selectedFileListModel.getAbsolutePathAt(
                          m_selectedFileList.getSelectedIndices()[0]));
              m_fileChooser.setCurrentDirectory(dir);
              m_selectedFileList.clearSelection();

            } else if (arg0.getClickCount() == 2) {
              onRemove();
            }
          }

          @Override
          public void mouseEntered(final MouseEvent arg0) {
            // Nothing to do here
          }

          @Override
          public void mouseExited(final MouseEvent arg0) {
            // Nothing to do here
          }

          @Override
          public void mousePressed(final MouseEvent arg0) {
            // Nothing to do here
          }

          @Override
          public void mouseReleased(final MouseEvent arg0) {
            // Nothing to do here
          }
        });

    m_fileChooser.setCurrentDirectory(m_defDir);
    // m_fileChooser.setVisible(false);
    // m_fileChooser.setVisible(true);
  }
예제 #9
0
파일: List1.java 프로젝트: ibre5041/PBM
 @SuppressWarnings("unused")
 private void appendDataVector(Vector<PBFile> newData) {
   FileListModel m = (FileListModel) ui.listView.model();
   m.addpendRows(newData);
 }