### Eclipse Workspace Patch 1.0
#P sophie
Index: modules/org.sophie2.main.func.file/src/main/java/org/sophie2/main/func/file/dialogs/FileDialog.java
===================================================================
--- modules/org.sophie2.main.func.file/src/main/java/org/sophie2/main/func/file/dialogs/FileDialog.java	(revision 9183)
+++ modules/org.sophie2.main.func.file/src/main/java/org/sophie2/main/func/file/dialogs/FileDialog.java	(working copy)
@@ -4,6 +4,8 @@
 import java.awt.Dimension;
 import java.awt.Insets;
 import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
 
 import javax.swing.Icon;
 import javax.swing.JButton;
@@ -13,8 +15,10 @@
 import javax.swing.filechooser.FileFilter;
 import javax.swing.filechooser.FileView;
 
+import org.sophie2.base.commons.util.OSUtil;
 import org.sophie2.base.dialogs.Dialog;
 import org.sophie2.base.dialogs.DialogManager;
+import org.sophie2.core.logging.SophieLog;
 import org.sophie2.main.dialogs.input.ConfirmDialogInput;
 import org.sophie2.main.dialogs.input.DialogUtils;
 import org.sophie2.main.dialogs.input.file.AccessoryData;
@@ -120,6 +124,32 @@
 
 		if (inputKind.equals(FileDialogInput.Kind.SAVE)) {
 			assert input.isMultiSelectEnabled() == false : "Cannot save in multiple resouces!";
+
+			boolean writable = true;
+			if (OSUtil.isWindows() || OSUtil.isMacOS()) {
+				try {
+					boolean created = files[0].createNewFile();
+					if (created) {
+						files[0].delete();
+					} else if (files[0].exists()) {
+						FileOutputStream fo = new FileOutputStream(files[0], true);
+						fo.close();
+					}
+				} catch (IOException e) {
+					SophieLog.info("File doesn't seem writable", e);
+					writable = false;
+				}
+			} else {
+				writable = files[0].getParentFile().canWrite();
+				writable = writable && (files[0].exists() && files[0].canWrite());
+			}
+			if (!writable) {
+				DialogUtils.showErrorDialog(this.fileChooser.getParent(),
+								"You don't have permissions to write in this directory or file.",
+								"Permission denied");
+				return null;
+			} 
+			
 			if (files[0].exists()) {
 				ConfirmDialogInput confirmInput = new ConfirmDialogInput(this.fileChooser
 						.getParent(),

