diff options
author | Dmytro Ovcharov <dmytro.ovcharov@globallogic.com> | 2017-08-01 14:05:34 +0300 |
---|---|---|
committer | Dmytro Ovcharov <dmytro.ovcharov@globallogic.com> | 2017-08-01 14:05:34 +0300 |
commit | 36954fe0be8e0ece65bed215e5036d5e300a0319 (patch) | |
tree | d2f1a8ef15f9b0ffff528d1e8a98ff91d3fbaa17 /main/src/core | |
parent | 2921c7a8cc0ade9d9b4e6a9aebd354fe88a8f6c6 (diff) |
#53783
Diffstat (limited to 'main/src/core')
3 files changed, 34 insertions, 23 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkNewProjectDialogBackend.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkNewProjectDialogBackend.cs index abff34f36a..f8be581b11 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkNewProjectDialogBackend.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkNewProjectDialogBackend.cs @@ -37,6 +37,8 @@ using MonoDevelop.Ide.Gui; using AppKit;
using Foundation;
using MonoDevelop.Core; +using System.Threading.Tasks;
+using MonoDevelop.Ide.Projects; namespace MonoDevelop.Ide.Projects
{
@@ -73,16 +75,18 @@ namespace MonoDevelop.Ide.Projects actionHandler.PerformShowMenu += PerformShowMenu;
} - void NextButtonClicked (object sender, EventArgs e)
+ void ProjectCreationFailed (object obj, EventArgs args) => ShowProjectCreationAccessibityNotification (true);
+ void ProjectCreationSucceed (object obj, EventArgs args) => ShowProjectCreationAccessibityNotification (false);
+ async void NextButtonClicked (object sender, EventArgs e) => await MoveToNextPage ();
+
+ void ShowProjectCreationAccessibityNotification (bool hasError)
{
- bool isLastPage = controller.IsLastPage;
- MoveToNextPage ();
- if (isLastPage) {
- var message = GenerateProjectCreatedMessage ();
- ShowAccessibityNotification (message);
- }
+ var projectTemplate = controller.SelectedTemplate; + var messageText = GettextCatalog.GetString (hasError ? "{0} creation fail" : "{0} successfully created",
+ projectTemplate.Name); + ShowAccessibityNotification (messageText);
}
-
+ void ShowAccessibityNotification (string message)
{
var accessibleObject = this.Accessible;
@@ -97,13 +101,6 @@ namespace MonoDevelop.Ide.Projects NSAccessibility.PostNotification (nsObject, NSAccessibilityNotifications.AnnouncementRequestedNotification, dictionary);
}
- string GenerateProjectCreatedMessage ()
- {
- var message = GettextCatalog.GetString ("{0} successfully created");
- var template = controller.SelectedTemplate;
- return String.Format (message, template.Name);
- }
-
public void ShowDialog ()
{
MessageService.ShowCustomDialog (this);
@@ -122,16 +119,17 @@ namespace MonoDevelop.Ide.Projects public void RegisterController (INewProjectDialogController controller)
{
this.controller = controller;
+ controller.ProjectCreationFailed += ProjectCreationFailed;
+ controller.ProjectCreationSucceed += ProjectCreationSucceed;
languageCellRenderer.SelectedLanguage = controller.SelectedLanguage;
topBannerLabel.Text = controller.BannerText;
-
LoadTemplates ();
SelectTemplateDefinedbyController ();
if (CanMoveToNextPage && !controller.ShowTemplateSelection)
MoveToNextPage ();
}
- static void SetTemplateCategoryCellData (TreeViewColumn col, CellRenderer renderer, TreeModel model, TreeIter it)
+ void SetTemplateCategoryCellData (TreeViewColumn col, CellRenderer renderer, TreeModel model, TreeIter it)
{
var categoryTextRenderer = (GtkTemplateCategoryCellRenderer)renderer;
categoryTextRenderer.Category = (TemplateCategory)model.GetValue (it, TemplateCategoryColumn);
@@ -541,12 +539,14 @@ namespace MonoDevelop.Ide.Projects }
}
- async void MoveToNextPage ()
+ async Task MoveToNextPage ()
{
if (controller.IsLastPage) {
try {
CanMoveToNextPage = false;
await controller.Create ();
+ } catch {
+ throw;
} finally {
CanMoveToNextPage = true;
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/INewProjectController.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/INewProjectController.cs index ebf0154203..76b58d7a69 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/INewProjectController.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/INewProjectController.cs @@ -29,11 +29,14 @@ using System.Collections.Generic; using MonoDevelop.Ide.Templates;
using Xwt.Drawing;
using System.Threading.Tasks;
-
+using System; + namespace MonoDevelop.Ide.Projects
{
interface INewProjectDialogController
- {
+ { + event EventHandler ProjectCreationFailed;
+ event EventHandler ProjectCreationSucceed;
IEnumerable<TemplateCategory> TemplateCategories { get; }
List<SolutionTemplate> RecentTemplates { get; }
TemplateCategory SelectedSecondLevelCategory { get; }
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectController.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectController.cs index b1309458b6..d13c0b1cbe 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectController.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectController.cs @@ -1,4 +1,4 @@ -//
+//
// NewProjectDialogController.cs
//
// Author:
@@ -43,6 +43,7 @@ using MonoDevelop.Ide.Templates; using MonoDevelop.Projects;
using Xwt.Drawing;
using System.Threading.Tasks;
+using System.Threading;
namespace MonoDevelop.Ide.Projects
{
@@ -50,7 +51,10 @@ namespace MonoDevelop.Ide.Projects /// To be renamed to NewProjectDialog
/// </summary>
class NewProjectDialogController : INewProjectDialogController
- {
+ { + public event EventHandler ProjectCreationFailed;
+ public event EventHandler ProjectCreationSucceed;
+ string chooseTemplateBannerText = GettextCatalog.GetString ("Choose a template for your new project");
string configureYourWorkspaceBannerText = GettextCatalog.GetString ("Configure your new workspace");
string configureYourSolutionBannerText = GettextCatalog.GetString ("Configure your new solution");
@@ -610,8 +614,10 @@ namespace MonoDevelop.Ide.Projects if (wizardProvider.HasWizard)
wizardProvider.BeforeProjectIsCreated ();
- if (!await CreateProject ())
+ if (!await CreateProject ()) {
+ ProjectCreationFailed?.Invoke (this, new EventArgs ());
return;
+ }
Solution parentSolution = null;
@@ -697,6 +703,8 @@ namespace MonoDevelop.Ide.Projects IsNewItemCreated = true;
UpdateDefaultSettings ();
+ var result = ProjectCreationSucceed?.BeginInvoke(this, new EventArgs (), new AsyncCallback ((_) => {} ),null);
+ result.AsyncWaitHandle.WaitOne (); dialog.CloseDialog ();
}
|