Java Code Examples for javax.swing.filechooser.FileSystemView#isParent()

The following examples show how to use javax.swing.filechooser.FileSystemView#isParent() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: DarkFilePaneUIBridge.java    From darklaf with MIT License 4 votes vote down vote up
protected void applyEdit() {
    if (editFile != null && editFile.exists()) {
        JFileChooser chooser = getFileChooser();
        String oldDisplayName = chooser.getName(editFile);
        String oldFileName = editFile.getName();
        String newDisplayName = editCell.getText().trim();
        String newFileName;

        if (!newDisplayName.equals(oldDisplayName)) {
            newFileName = newDisplayName;
            // Check if extension is hidden from user
            int i1 = oldFileName.length();
            int i2 = oldDisplayName.length();
            if (i1 > i2 && oldFileName.charAt(i2) == '.') {
                newFileName = newDisplayName + oldFileName.substring(i2);
            }

            // rename
            FileSystemView fsv = chooser.getFileSystemView();
            File f2 = fsv.createFileObject(editFile.getParentFile(), newFileName);
            if (f2.exists()) {
                JOptionPane.showMessageDialog(chooser, MessageFormat.format(renameErrorFileExistsText, oldFileName),
                                              renameErrorTitleText, JOptionPane.ERROR_MESSAGE);
            } else {
                if (getModel().renameFile(editFile, f2)) {
                    if (fsv.isParent(chooser.getCurrentDirectory(), f2)) {
                        if (chooser.isMultiSelectionEnabled()) {
                            chooser.setSelectedFiles(new File[]{f2});
                        } else {
                            chooser.setSelectedFile(f2);
                        }
                    } else {
                        // Could be because of delay in updating Desktop folder
                        // chooser.setSelectedFile(null);
                    }
                } else {
                    JOptionPane.showMessageDialog(chooser, MessageFormat.format(renameErrorText, oldFileName),
                                                  renameErrorTitleText, JOptionPane.ERROR_MESSAGE);
                }
            }
        }
    }
    if (detailsTable != null && detailsTable.isEditing()) {
        detailsTable.getCellEditor().stopCellEditing();
    }
    cancelEdit();
}
 
Example 2
Source File: DarkFilePaneUIBridge.java    From darklaf with MIT License 4 votes vote down vote up
public void setValueAt(final Object value, final int row, final int col) {
    if (col == COLUMN_FILENAME) {
        final JFileChooser chooser = getFileChooser();
        File f = (File) getValueAt(row, col);
        if (f != null) {
            String oldDisplayName = chooser.getName(f);
            String oldFileName = f.getName();
            String newDisplayName = ((String) value).trim();
            String newFileName;

            if (!newDisplayName.equals(oldDisplayName)) {
                newFileName = newDisplayName;
                // Check if extension is hidden from user
                int i1 = oldFileName.length();
                int i2 = oldDisplayName.length();
                if (i1 > i2 && oldFileName.charAt(i2) == '.') {
                    newFileName = newDisplayName + oldFileName.substring(i2);
                }

                // rename
                FileSystemView fsv = chooser.getFileSystemView();
                final File f2 = fsv.createFileObject(f.getParentFile(), newFileName);
                if (f2.exists()) {
                    JOptionPane.showMessageDialog(chooser, MessageFormat.format(renameErrorFileExistsText,
                                                                                oldFileName),
                                                  renameErrorTitleText,
                                                  JOptionPane.ERROR_MESSAGE);
                } else {
                    if (DarkFilePaneUIBridge.this.getModel().renameFile(f, f2)) {
                        if (fsv.isParent(chooser.getCurrentDirectory(), f2)) {
                            // The setSelectedFile method produces a new setValueAt invocation while the JTable
                            // is editing. Postpone file selection to be sure that edit mode of the JTable
                            // is completed
                            SwingUtilities.invokeLater(() -> {
                                if (chooser.isMultiSelectionEnabled()) {
                                    chooser.setSelectedFiles(new File[]{f2});
                                } else {
                                    chooser.setSelectedFile(f2);
                                }
                            });
                        } else {
                            // Could be because of delay in updating Desktop folder
                            // chooser.setSelectedFile(null);
                        }
                    } else {
                        JOptionPane.showMessageDialog(chooser,
                                                      MessageFormat.format(renameErrorText, oldFileName),
                                                      renameErrorTitleText, JOptionPane.ERROR_MESSAGE);
                    }
                }
            }
        }
    }
}