예제 #1
0
        bool ButtonCommitClicked()
        {
            changeSet.GlobalComment = Message;

            // Perform the commit
            int n;

            for (n = 0; n < extensions.Count; n++)
            {
                CommitDialogExtension ext = extensions [n];
                bool res;
                try {
                    res = ext.OnBeginCommit(changeSet);
                } catch (Exception ex) {
                    LoggingService.LogInternalError(ex);
                    res = false;
                }
                if (!res)
                {
                    // Commit failed. Rollback the previous extensions
                    for (int m = 0; m < n; m++)
                    {
                        ext = extensions [m];
                        try {
                            ext.OnEndCommit(changeSet, false);
                        } catch (Exception ex) {
                            LoggingService.LogInternalError("Commit operation failed.", ex);
                        }
                    }
                    return(false);
                }
            }
            return(true);
        }
예제 #2
0
        protected override void OnResponse(Gtk.ResponseType type)
        {
            if (type == Gtk.ResponseType.Ok)
            {
                // Update the change set
                ArrayList todel = new ArrayList();
                foreach (ChangeSetItem it in changeSet.Items)
                {
                    if (!selected.Contains(it.LocalPath))
                    {
                        todel.Add(it.LocalPath);
                    }
                }
                foreach (string file in todel)
                {
                    changeSet.RemoveFile(file);
                }
                changeSet.GlobalComment = Message;

                // Perform the commit

                int n;
                for (n = 0; n < extensions.Count; n++)
                {
                    CommitDialogExtension ext = (CommitDialogExtension)extensions [n];
                    bool res;
                    try {
                        res = ext.OnBeginCommit(changeSet);
                    } catch (Exception ex) {
                        MessageService.ShowException(ex);
                        res = false;
                    }
                    System.Console.WriteLine("RES: " + res);
                    if (!res)
                    {
                        // Commit failed. Rollback the previous extensions
                        for (int m = 0; m < n; m++)
                        {
                            ext = (CommitDialogExtension)extensions [m];
                            try {
                                ext.OnEndCommit(changeSet, false);
                            } catch {}
                        }
                        return;
                    }
                    Hide();
                }
            }
            else
            {
                changeSet.GlobalComment = oldMessage;
            }
            base.OnResponse(type);
        }
예제 #3
0
        protected void OnButtonCommitClicked(object sender, System.EventArgs e)
        {
            // In case we have local unsaved files with changes, throw a dialog for the user.
            System.Collections.Generic.List <Document> docList = new System.Collections.Generic.List <Document> ();
            foreach (var item in IdeApp.Workbench.Documents)
            {
                if (!item.IsDirty || !selected.Contains(item.FileName))
                {
                    continue;
                }
                docList.Add(item);
            }

            if (docList.Count != 0)
            {
                AlertButton response = MessageService.GenericAlert(
                    MonoDevelop.Ide.Gui.Stock.Question,
                    GettextCatalog.GetString("You are trying to commit files which have unsaved changes."),
                    GettextCatalog.GetString("Do you want to save the changes before committing?"),
                    new AlertButton[] {
                    AlertButton.Cancel,
                    new AlertButton("Don't Save"),
                    AlertButton.Save
                }
                    );

                if (response == AlertButton.Cancel)
                {
                    return;
                }

                if (response == AlertButton.Save)
                {
                    // Go through all the items and save them.
                    foreach (var item in docList)
                    {
                        item.Save();
                    }

                    // Check if save failed on any item and abort.
                    foreach (var item in docList)
                    {
                        if (item.IsDirty)
                        {
                            MessageService.ShowMessage(GettextCatalog.GetString(
                                                           "Some files could not be saved. Commit operation aborted"));
                            return;
                        }
                    }
                }

                docList.Clear();
            }

            // Update the change set
            ArrayList todel = new ArrayList();

            foreach (ChangeSetItem it in changeSet.Items)
            {
                if (!selected.Contains(it.LocalPath))
                {
                    todel.Add(it.LocalPath);
                }
            }
            foreach (string file in todel)
            {
                changeSet.RemoveFile(file);
            }
            changeSet.GlobalComment = Message;

            // Perform the commit

            int n;

            for (n = 0; n < extensions.Count; n++)
            {
                CommitDialogExtension ext = (CommitDialogExtension)extensions [n];
                bool res;
                try {
                    res = ext.OnBeginCommit(changeSet);
                } catch (Exception ex) {
                    MessageService.ShowException(ex);
                    res = false;
                }
                if (!res)
                {
                    // Commit failed. Rollback the previous extensions
                    for (int m = 0; m < n; m++)
                    {
                        ext = (CommitDialogExtension)extensions [m];
                        try {
                            ext.OnEndCommit(changeSet, false);
                        } catch {}
                    }
                    return;
                }
                Hide();
            }
            Respond(Gtk.ResponseType.Ok);
        }