Ticket #2361: 2361_de_fi.patch

File 2361_de_fi.patch, 2.1 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.IOException; 
    78 
    89import javax.swing.Icon; 
    910import javax.swing.JButton; 
     
    1314import javax.swing.filechooser.FileFilter; 
    1415import javax.swing.filechooser.FileView; 
    1516 
     17import org.sophie2.base.commons.util.OSUtil; 
    1618import org.sophie2.base.dialogs.Dialog; 
    1719import org.sophie2.base.dialogs.DialogManager; 
     20import org.sophie2.core.logging.SophieLog; 
    1821import org.sophie2.main.dialogs.input.ConfirmDialogInput; 
    1922import org.sophie2.main.dialogs.input.DialogUtils; 
    2023import org.sophie2.main.dialogs.input.file.AccessoryData; 
     
    120123 
    121124                if (inputKind.equals(FileDialogInput.Kind.SAVE)) { 
    122125                        assert input.isMultiSelectEnabled() == false : "Cannot save in multiple resouces!"; 
     126 
     127                        boolean writable = true; 
     128                        if (OSUtil.isWindows() || OSUtil.isMacOS()) { 
     129                                try { 
     130                                        File file = new File(files[0].getParent()+"/file.tmp"); 
     131                                        boolean created = file.createNewFile(); 
     132                                        if (created) { 
     133                                                file.delete(); 
     134                                        } 
     135                                } catch (IOException e) { 
     136                                        SophieLog.info("File doesn't seem writable", e); 
     137                                        writable = false; 
     138                                } 
     139                        } else { 
     140                                writable = files[0].getParentFile().canWrite(); 
     141                                writable = writable && (files[0].exists() && files[0].canWrite()); 
     142                        } 
     143                        if (!writable) { 
     144                                DialogUtils.showErrorDialog(this.fileChooser.getParent(), 
     145                                                                "You don't have permissions to write in this directory.", 
     146                                                                "Permission denied"); 
     147                                return null; 
     148                        }  
     149                         
    123150                        if (files[0].exists()) { 
    124151                                ConfirmDialogInput confirmInput = new ConfirmDialogInput(this.fileChooser 
    125152                                                .getParent(),