### Eclipse Workspace Patch 1.0
#P sophie
|
|
|
4 | 4 | import java.awt.Dimension; |
5 | 5 | import java.awt.Insets; |
6 | 6 | import java.io.File; |
| 7 | import java.io.IOException; |
7 | 8 | |
8 | 9 | import javax.swing.Icon; |
9 | 10 | import javax.swing.JButton; |
… |
… |
|
13 | 14 | import javax.swing.filechooser.FileFilter; |
14 | 15 | import javax.swing.filechooser.FileView; |
15 | 16 | |
| 17 | import org.sophie2.base.commons.util.OSUtil; |
16 | 18 | import org.sophie2.base.dialogs.Dialog; |
17 | 19 | import org.sophie2.base.dialogs.DialogManager; |
| 20 | import org.sophie2.core.logging.SophieLog; |
18 | 21 | import org.sophie2.main.dialogs.input.ConfirmDialogInput; |
19 | 22 | import org.sophie2.main.dialogs.input.DialogUtils; |
20 | 23 | import org.sophie2.main.dialogs.input.file.AccessoryData; |
… |
… |
|
120 | 123 | |
121 | 124 | if (inputKind.equals(FileDialogInput.Kind.SAVE)) { |
122 | 125 | 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 | |
123 | 150 | if (files[0].exists()) { |
124 | 151 | ConfirmDialogInput confirmInput = new ConfirmDialogInput(this.fileChooser |
125 | 152 | .getParent(), |