diff --git a/libanjuta/anjuta-utils.c b/libanjuta/anjuta-utils.c
index 36a31db..0e5b996 100644
--- a/libanjuta/anjuta-utils.c
+++ b/libanjuta/anjuta-utils.c
@@ -344,6 +344,7 @@ anjuta_util_dialog_info (GtkWindow *parent, const gchar * mesg, ...)
 	g_free (message);
 }
 
+
 void
 anjuta_util_dialog_error_system (GtkWindow* parent, gint errnum,
 								 const gchar * mesg, ... )
@@ -423,6 +424,120 @@ anjuta_util_dialog_boolean_question (GtkWindow *parent, gboolean default_to_yes,
 }
 
 gboolean
+anjuta_util_dialog_boolean_question_with_details (GtkWindow *parent,
+													gboolean default_to_yes,
+													const gchar * mesg, ...) {
+	gchar* message;
+	va_list args;
+	GtkWidget *dialog;
+	gint ret;
+	GtkWindow *real_parent;
+
+	va_start (args, mesg);
+	message = g_strdup_vprintf (mesg, args);
+	va_end (args);
+	if (parent && GTK_IS_WINDOW (parent))
+	{
+		real_parent = parent;
+	}
+	else
+	{
+		real_parent = NULL;
+	}
+
+	dialog = gtk_message_with_details_dialog_new (real_parent,
+									 GTK_DIALOG_MODAL |
+	                                 GTK_DIALOG_DESTROY_WITH_PARENT, message);
+	if (default_to_yes)
+		gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_YES);
+
+	ret = gtk_dialog_run (GTK_DIALOG (dialog));
+	gtk_widget_destroy (dialog);
+	g_free (message);
+
+	return (ret == GTK_RESPONSE_YES);
+}
+
+
+GtkWidget * gtk_message_with_details_dialog_new		(GtkWindow *parent,
+													GtkDialogFlags flags,
+													const gchar *message) {
+	gchar ** vectMessg = g_strsplit(message, "\n\n\n", 2) ;
+	/*Create and define correctly the dialog */
+	GtkWidget * win = gtk_dialog_new_with_buttons(NULL, parent,
+                                                  flags,
+	                                              GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, 
+	                                              GTK_STOCK_YES, GTK_RESPONSE_YES, NULL);
+	gtk_window_set_resizable(GTK_WINDOW(win), FALSE);
+	gtk_window_set_position(GTK_WINDOW(win), GTK_WIN_POS_CENTER) ;
+		
+	/* We get the area to print our content */
+	GtkWidget * content = gtk_dialog_get_content_area (GTK_DIALOG(win));
+	GtkWidget * expander = gtk_expander_new(_("Details"));
+	/* We create the info icon */
+	GtkWidget * infoImage = gtk_image_new_from_stock(GTK_STOCK_DIALOG_QUESTION,
+                                                         GTK_ICON_SIZE_DIALOG) ;
+	gtk_widget_set_valign(GTK_WIDGET(infoImage), GTK_ALIGN_START);
+
+	/* We create the grid who contain the image and and the text */
+	GtkWidget * mainGrid = gtk_grid_new();
+	gtk_grid_insert_column(GTK_GRID(mainGrid), 1);
+	gtk_grid_insert_column(GTK_GRID(mainGrid), 1);
+	gtk_widget_set_valign(GTK_WIDGET(mainGrid), GTK_ALIGN_START);
+	
+	gtk_container_add(GTK_CONTAINER(content), mainGrid) ;
+
+
+	/* Adding the stock image */
+	gtk_container_add(GTK_CONTAINER(mainGrid), infoImage) ;
+
+	/* Counting how many details lines */
+	gchar ** vectDetails = g_strsplit(vectMessg[1], "\n", 0) ;
+	int linesNumber = g_strv_length(vectDetails) ;
+	g_strfreev(vectDetails) ;
+
+	/* Adding main label */
+	GtkWidget * messLabel = gtk_label_new(vectMessg[0]);
+	gtk_grid_attach_next_to(GTK_GRID(mainGrid), messLabel, infoImage,
+							GTK_POS_RIGHT,1,1) ;
+	/* We decide to block to 7 lines */
+	if(linesNumber < 7) {
+		GtkWidget * detailsLabel = gtk_label_new(vectMessg[1]);
+		gtk_widget_set_halign(GTK_WIDGET(detailsLabel), GTK_ALIGN_START);
+		gtk_grid_attach_next_to(GTK_GRID(mainGrid), detailsLabel, messLabel,
+								GTK_POS_BOTTOM,1,1) ;
+	}
+	else {
+	
+		GtkWidget * scrolled_window = gtk_scrolled_window_new (NULL, NULL);
+		/* Set the border width */
+		gtk_container_set_border_width (GTK_CONTAINER (scrolled_window), 10);
+		/* And add it to the scrolled window */
+		/* Set the policy of the horizontal and vertical scrollbars to automatic.
+		* What this means is that the scrollbars are only present if needed.
+		*/
+		gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
+				                          GTK_POLICY_AUTOMATIC,
+				                          GTK_POLICY_AUTOMATIC);
+
+		gtk_container_add(GTK_CONTAINER(expander), scrolled_window) ;
+
+		/*Adding the expander under the main label */
+		gtk_grid_attach_next_to(GTK_GRID(mainGrid), expander, messLabel,
+		                        GTK_POS_BOTTOM,1,1);
+	
+		GtkWidget * detailsLabel = gtk_label_new(vectMessg[1]);
+		gtk_widget_set_halign(GTK_WIDGET(detailsLabel), GTK_ALIGN_START);
+		gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolled_window), detailsLabel);
+	}
+
+	gtk_widget_show_all (win);
+	
+	g_strfreev(vectMessg) ;
+	return win ;
+}  
+
+gboolean
 anjuta_util_dialog_input (GtkWindow *parent, const gchar *prompt,
 						  const gchar *default_value, gchar **return_value)
 {
diff --git a/libanjuta/anjuta-utils.h b/libanjuta/anjuta-utils.h
index 27b68d9..baabcac 100644
--- a/libanjuta/anjuta-utils.h
+++ b/libanjuta/anjuta-utils.h
@@ -59,6 +59,15 @@ void		anjuta_util_dialog_error_system			(GtkWindow* parent, gint errnum,
 gboolean	anjuta_util_dialog_boolean_question		(GtkWindow *parent,
 													gboolean default_to_yes,
 													const gchar * mesg, ...);
+gboolean	anjuta_util_dialog_boolean_question_with_details
+													(GtkWindow *parent,
+													gboolean default_to_yes,
+													const gchar * mesg, ...);
+/* use "\n\n\n" mark for separate main message and details */ 
+GtkWidget * gtk_message_with_details_dialog_new		(GtkWindow *parent,
+													GtkDialogFlags flags,
+													const gchar *message);
+
 gboolean	anjuta_util_dialog_input				(GtkWindow *parent,
 					                                 const gchar *label,
 													 const gchar *default_value,
diff --git a/plugins/project-manager/plugin.c b/plugins/project-manager/plugin.c
index 38340a9..f675d48 100644
--- a/plugins/project-manager/plugin.c
+++ b/plugins/project-manager/plugin.c
@@ -708,6 +708,19 @@ confirm_removal (ProjectManagerPlugin *plugin, GList *selected)
 		return FALSE;
 	}
 
+	if (group || source)
+	{
+		if (remove_group_file)
+			g_string_append (mesg, _("The group will be deleted from the file system."));
+		else if (group)
+			g_string_append (mesg, _("The group will not be deleted from the file system."));
+		if (remove_source_file)
+			g_string_append (mesg, _("The source file will be deleted from the file system."));
+		else if (source)
+			g_string_append (mesg, _("The source file will not be deleted from the file system."));
+		g_string_append (mesg, "\n\n\n\n");
+	}
+
 	for (item = g_list_first (selected); item != NULL; item = g_list_next (item))
 	{
 		GbfTreeData *data = (GbfTreeData *)item->data;
@@ -738,21 +751,10 @@ confirm_removal (ProjectManagerPlugin *plugin, GList *selected)
 		}
 	}
 
-	if (group || source)
-	{
-		g_string_append (mesg, "\n");
-		if (remove_group_file)
-			g_string_append (mesg, _("The group will be deleted from the file system."));
-		else if (group)
-			g_string_append (mesg, _("The group will not be deleted from the file system."));
-		if (remove_source_file)
-			g_string_append (mesg, _("The source file will be deleted from the file system."));
-		else if (source)
-			g_string_append (mesg, _("The source file will not be deleted from the file system."));
-	}
+	
 
 	answer =
-		anjuta_util_dialog_boolean_question (get_plugin_parent_window (plugin), FALSE,
+		anjuta_util_dialog_boolean_question_with_details (get_plugin_parent_window (plugin), FALSE,
 											 mesg->str, _("Confirm remove"));
 	g_string_free (mesg, TRUE);
 
