/** * 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; }
/* * 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(); }
/** * 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())); } }
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())); } }
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(); }
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(); }
/* * when the remove all button was pressed */ private void onRemoveAll() { m_selectedFileListModel.removeAll(); fireSelectionChangedEvent(); }
/** * 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); }
@SuppressWarnings("unused") private void appendDataVector(Vector<PBFile> newData) { FileListModel m = (FileListModel) ui.listView.model(); m.addpendRows(newData); }