Index: uspace/app/edit/edit.c
===================================================================
--- uspace/app/edit/edit.c	(revision 45b7d4d3e73f38eb7328f0045f56ce919a4759a9)
+++ uspace/app/edit/edit.c	(revision 8e253ac57c7b77b12475a4f7112edce75b62897d)
@@ -55,4 +55,5 @@
 #include <types/common.h>
 #include <ui/control.h>
+#include <ui/filedialog.h>
 #include <ui/fixed.h>
 #include <ui/label.h>
@@ -255,4 +256,14 @@
 	.paint = pane_ctl_paint,
 	.pos_event = pane_ctl_pos_event
+};
+
+static void save_as_dialog_bok(ui_file_dialog_t *, void *, const char *);
+static void save_as_dialog_bcancel(ui_file_dialog_t *, void *);
+static void save_as_dialog_close(ui_file_dialog_t *, void *);
+
+static ui_file_dialog_cb_t save_as_dialog_cb = {
+	.bok = save_as_dialog_bok,
+	.bcancel = save_as_dialog_bcancel,
+	.close = save_as_dialog_close
 };
 
@@ -783,23 +794,23 @@
 }
 
-/** Change document name and save. */
+/** Open Save As dialog. */
 static void file_save_as(void)
 {
-	const char *old_fname = (doc.file_name != NULL) ? doc.file_name : "";
-	char *fname;
-
-	fname = prompt("Save As", old_fname);
-	if (fname == NULL) {
-		status_display("Save cancelled.");
+//	const char *old_fname = (doc.file_name != NULL) ? doc.file_name : "";
+	ui_file_dialog_params_t fdparams;
+	ui_file_dialog_t *dialog;
+	errno_t rc;
+
+	ui_file_dialog_params_init(&fdparams);
+	fdparams.caption = "Save As";
+	// TODO: Set initial file name to old_fname
+
+	rc = ui_file_dialog_create(edit.ui, &fdparams, &dialog);
+	if (rc != EOK) {
+		printf("Error creating message dialog.\n");
 		return;
 	}
 
-	errno_t rc = file_save(fname);
-	if (rc != EOK)
-		return;
-
-	if (doc.file_name != NULL)
-		free(doc.file_name);
-	doc.file_name = fname;
+	ui_file_dialog_set_cb(dialog, &save_as_dialog_cb, &edit);
 }
 
@@ -2111,4 +2122,60 @@
 }
 
+/** Save As dialog OK button press.
+ *
+ * @param dialog Save As dialog
+ * @param arg Argument (ui_demo_t *)
+ * @param fname File name
+ */
+static void save_as_dialog_bok(ui_file_dialog_t *dialog, void *arg,
+    const char *fname)
+{
+	char *cname;
+	errno_t rc;
+
+	ui_file_dialog_destroy(dialog);
+
+	cname = str_dup(fname);
+	if (cname == NULL) {
+		printf("Out of memory.\n");
+		return;
+	}
+
+	rc = file_save(fname);
+	if (rc != EOK)
+		return;
+
+	if (doc.file_name != NULL)
+		free(doc.file_name);
+	doc.file_name = cname;
+
+}
+
+/** Save As dialog cancel button press.
+ *
+ * @param dialog File dialog
+ * @param arg Argument (ui_demo_t *)
+ */
+static void save_as_dialog_bcancel(ui_file_dialog_t *dialog, void *arg)
+{
+	edit_t *edit = (edit_t *)arg;
+
+	(void)edit;
+	ui_file_dialog_destroy(dialog);
+}
+
+/** Save As dialog close request.
+ *
+ * @param dialog File dialog
+ * @param arg Argument (ui_demo_t *)
+ */
+static void save_as_dialog_close(ui_file_dialog_t *dialog, void *arg)
+{
+	edit_t *edit = (edit_t *)arg;
+
+	(void)edit;
+	ui_file_dialog_destroy(dialog);
+}
+
 /** @}
  */
