Ticket #2361: 2361_de_fi.2.patch

File 2361_de_fi.2.patch, 2.2 KB (added by stefan, 15 years ago)
  • modules/org.sophie2.main.func.file/src/main/java/org/sophie2/main/func/file/dialogs/FileDialog.java

    ### Eclipse Workspace Patch 1.0
    #P sophie
     
    44import java.awt.Dimension; 
    55import java.awt.Insets; 
    66import java.io.File; 
     7import java.io.FileOutputStream; 
     8import java.io.IOException; 
    79 
    810import javax.swing.Icon; 
    911import javax.swing.JButton; 
     
    1315import javax.swing.filechooser.FileFilter; 
    1416import javax.swing.filechooser.FileView; 
    1517 
     18import org.sophie2.base.commons.util.OSUtil; 
    1619import org.sophie2.base.dialogs.Dialog; 
    1720import org.sophie2.base.dialogs.DialogManager; 
     21import org.sophie2.core.logging.SophieLog; 
    1822import org.sophie2.main.dialogs.input.ConfirmDialogInput; 
    1923import org.sophie2.main.dialogs.input.DialogUtils; 
    2024import org.sophie2.main.dialogs.input.file.AccessoryData; 
     
    120124 
    121125                if (inputKind.equals(FileDialogInput.Kind.SAVE)) { 
    122126                        assert input.isMultiSelectEnabled() == false : "Cannot save in multiple resouces!"; 
     127 
     128                        boolean writable = true; 
     129                        if (OSUtil.isWindows() || OSUtil.isMacOS()) { 
     130                                try { 
     131                                        boolean created = files[0].createNewFile(); 
     132                                        if (created) { 
     133                                                files[0].delete(); 
     134                                        } else if (files[0].exists()) { 
     135                                                FileOutputStream fo = new FileOutputStream(files[0], true); 
     136                                                fo.close(); 
     137                                        } 
     138                                } catch (IOException e) { 
     139                                        SophieLog.info("File doesn't seem writable", e); 
     140                                        writable = false; 
     141                                } 
     142                        } else { 
     143                                writable = files[0].getParentFile().canWrite(); 
     144                                writable = writable && (files[0].exists() && files[0].canWrite()); 
     145                        } 
     146                        if (!writable) { 
     147                                DialogUtils.showErrorDialog(this.fileChooser.getParent(), 
     148                                                                "You don't have permissions to write in this directory or file.", 
     149                                                                "Permission denied"); 
     150                                return null; 
     151                        }  
     152                         
    123153                        if (files[0].exists()) { 
    124154                                ConfirmDialogInput confirmInput = new ConfirmDialogInput(this.fileChooser 
    125155                                                .getParent(),