Exemplo n.º 1
0
        /// <summary>
        /// Rollback all changes and close this form
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void cancelButton_Click(object sender, EventArgs e)
        {
            if (m_transCount > 0)
            {
                if (TaskDialogResult.No ==
                    TaskDialog.Show("Warning", "By canceling this dialog, all modifications to the model will be discarded."
                                    + " Do you want to proceed?", TaskDialogCommonButtons.Yes | TaskDialogCommonButtons.No))
                {
                    this.DialogResult = DialogResult.None;
                    return;
                }
            }

            // if there is still an active transaction, roll it back now, silently
            if ((null != m_transaction) && (m_transaction.GetStatus() == TransactionStatus.Started))
            {
                m_transaction.RollBack();
            }

            // if there are still transaction groups open, roll them back now, silently
            if ((null != m_transactionGroup) && (m_transactionGroup.GetStatus() == TransactionStatus.Started))
            {
                HandleNestedTransactionGroups(OperationType.RollbackTransactionGroup);
            }

            // silently roll back the main (hidden) transaction group
            if ((null != m_mainTtransactionGroup) && (m_mainTtransactionGroup.GetStatus() == TransactionStatus.Started))
            {
                m_mainTtransactionGroup.RollBack();
            }

            this.DialogResult = DialogResult.Cancel;
            this.Close();
        }
Exemplo n.º 2
0
        public static TResult InvokeGroup <TResult>(this Document doc, Func <TransactionGroup, TResult> func, string name = "default")
        {
            using (var tr = new TransactionGroup(doc, name))
            {
                tr.Start();

                var result = func(tr);

                var status = tr.GetStatus();
                switch (status)
                {
                case TransactionStatus.Started:
                    tr.Commit();
                    return(result);

                case TransactionStatus.Committed:
                case TransactionStatus.RolledBack:
                    return(result);

                case TransactionStatus.Error:
                    tr.RollBack();
                    return(result);

                default:
                    return(result);
                }
            }
        }
Exemplo n.º 3
0
        public Result Execute(
            ExternalCommandData commandData,
            ref string message, ElementSet elements)
        {
            UIApplication uiApp = commandData.Application;

            _uiDoc = uiApp.ActiveUIDocument;
            _doc   = _uiDoc.Document;

            SettingsUsr.Init();

            // this cleaned up the text display problem
            //			Application.SetCompatibleTextRenderingDefault(false);

            using (TransactionGroup tg = new TransactionGroup(_doc, "measure points"))
            {
                tg.Start();
                Process(_uiDoc, _doc);

                if (tg.GetStatus() == TransactionStatus.Started)
                {
                    tg.RollBack();
                }
            }

            return(Result.Succeeded);
        }
Exemplo n.º 4
0
        public static void InvokeGroup(this Document doc, Action <TransactionGroup> action, string name = "default")
        {
            using (var tr = new TransactionGroup(doc, name))
            {
                tr.Start();

                action(tr);

                var status = tr.GetStatus();
                switch (status)
                {
                case TransactionStatus.Started:
                    tr.Commit();
                    return;

                case TransactionStatus.Committed:
                case TransactionStatus.RolledBack:
                    break;

                case TransactionStatus.Error:
                    tr.RollBack();
                    return;

                default:
                    return;
                }
            }
        }
Exemplo n.º 5
0
        /// <summary>
        /// Accept the changes and and close this form
        /// </summary>
        /// <remarks>If any transaction group or the active transaction is still open
        /// give the user the option to either commit them or roll them back first.</remarks>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void okButton_Click(object sender, EventArgs e)
        {
            //if any transaction or transaction group is not finished, notify user to deal with it
            if (null != m_transaction || null != m_transactionGroup)
            {
                TaskDialogResult dialogResult =
                    TaskDialog.Show("Warning", "Some transaction groups or the active transaction is not committed."
                                    + " Choose Yes to commit them, or No to roll them back.", TaskDialogCommonButtons.Yes | TaskDialogCommonButtons.No | TaskDialogCommonButtons.Cancel);

                if (TaskDialogResult.Cancel == dialogResult)
                {
                    return;
                }
                else if (TaskDialogResult.Yes == dialogResult)
                {
                    if (m_transaction != null && (m_transaction.GetStatus() == TransactionStatus.Started))
                    {
                        m_transaction.Commit();
                    }
                    HandleNestedTransactionGroups(OperationType.CommitTransactionGroup);
                }
                else
                {
                    if (m_transaction != null && (m_transaction.GetStatus() == TransactionStatus.Started))
                    {
                        m_transaction.RollBack();
                    }
                    HandleNestedTransactionGroups(OperationType.RollbackTransactionGroup);
                }
            }

            // silently commit the main (hidden) transaction group
            if ((null != m_mainTtransactionGroup) && (m_mainTtransactionGroup.GetStatus() == TransactionStatus.Started))
            {
                m_mainTtransactionGroup.SetName("SDK Transaction Sample");
                m_mainTtransactionGroup.Assimilate();
            }

            this.DialogResult = DialogResult.OK;
            this.Close();
        }