FlatRedBall.Glue.Controls.ListBoxWindow.AddButton C# (CSharp) Method

AddButton() public method

public AddButton ( string message, DialogResult result ) : void
message string
result DialogResult
return void
        public void AddButton(string message, DialogResult result)
        {
            Button button = new Button();

            button.Text = message;
            button.DialogResult = result;
            button.Size = new Size(
                flowLayoutPanel1.Width - 3, button.Size.Height);

            this.flowLayoutPanel1.Controls.Add(button);
            mButtons.Add(button);
        }

Usage Example

        private static void RemoveFromProjectOptionalSaveAndRegenerate(bool saveAndRegenerate, bool askAreYouSure, bool askToDelete)
        {
            // delete object, remove object, DeleteObject, RemoveObject, remove from project, 
            // remove from screen, remove from entity, remove file
            ///////////////////////////////EARLY OUT///////////////////////////////////////
            // This can now be called by pushing Delete, so we should check if deleting is valid
            if (EditorLogic.CurrentTreeNode == null || EditorLogic.CurrentTreeNode.Parent == null ||
                EditorLogic.CurrentTreeNode.Text.EndsWith(".cs") || EditorLogic.CurrentTreeNode.Tag == null)
            {
                return;
            }
            //////////////////////////////END EARLY OUT/////////////////////////////////////

            lock (FileWatchManager.LockObject)
            {
                // Search terms: removefromproject, remove from project, remove file, remove referencedfilesave
                List<string> filesToRemove = new List<string>();

                if (ProjectManager.StatusCheck() == ProjectManager.CheckResult.Passed)
                {
                    #region Find out if the user really wants to remove this - don't ask if askAreYouSure is false
                    DialogResult reallyRemoveResult = DialogResult.Yes;

                    if (askAreYouSure)
                    {
                        string message = "Are you sure you want to remove this:\n\n" + EditorLogic.CurrentTreeNode.Tag.ToString();

                        reallyRemoveResult =
                            MessageBox.Show(message, "Remove?", MessageBoxButtons.YesNo);
                    }
                    #endregion

                    if (reallyRemoveResult == DialogResult.Yes)
                    {
                        #region If is NamedObjectSave
                        // test deep first
                        if (EditorLogic.CurrentNamedObject != null)
                        {
                            ProjectManager.RemoveNamedObject(EditorLogic.CurrentNamedObject, true, true, filesToRemove);
                            //ProjectManager.RemoveNamedObject(EditorLogic.CurrentNamedObject);
                        }
                        #endregion

                        #region Else if is StateSave
                        else if (EditorLogic.CurrentStateSave != null)
                        {
                            var name = EditorLogic.CurrentStateSave.Name;

                            EditorLogic.CurrentElement.RemoveState(EditorLogic.CurrentStateSave);

                            AskToRemoveCustomVariablesWithoutState(EditorLogic.CurrentElement);

                            EditorLogic.CurrentElementTreeNode.UpdateReferencedTreeNodes();

                            PluginManager.ReactToStateRemoved(EditorLogic.CurrentElement, name);

                            


                            GluxCommands.Self.SaveGlux();
                        }

                        #endregion

                        #region Else if is StateSaveCategory

                        else if (EditorLogic.CurrentStateSaveCategory != null)
                        {
                            EditorLogic.CurrentElement.StateCategoryList.Remove(EditorLogic.CurrentStateSaveCategory);

                            EditorLogic.CurrentElementTreeNode.UpdateReferencedTreeNodes();

                            GluxCommands.Self.SaveGlux();
                        }

                        #endregion

                        #region Else if is ReferencedFileSave

                        else if (EditorLogic.CurrentReferencedFile != null)
                        {
                            var toRemove = EditorLogic.CurrentReferencedFile;
                            // this could happen at the same time as file flushing, which can cause locks.  Therefore we need to add this as a task:
                            TaskManager.Self.AddSync(() =>
                            {
                                GluxCommands.Self.RemoveReferencedFile(toRemove, filesToRemove, saveAndRegenerate);
                            },
                            "Remove file " + toRemove.ToString());
                            //ProjectManager.RemoveReferencedFile(EditorLogic.CurrentReferencedFile);
                        }
                        #endregion

                        #region Else if is CustomVariable

                        else if (EditorLogic.CurrentCustomVariable != null)
                        {
                            ProjectManager.RemoveCustomVariable(EditorLogic.CurrentCustomVariable, filesToRemove);
                            //ProjectManager.RemoveCustomVariable(EditorLogic.CurrentCustomVariable);
                        }

                        #endregion

                        #region Else if is EventSave
                        else if (EditorLogic.CurrentEventResponseSave != null)
                        {
                            EditorLogic.CurrentElement.Events.Remove(EditorLogic.CurrentEventResponseSave);
                            GlueCommands.Self.RefreshCommands.RefreshUiForSelectedElement();
                        }
                        #endregion

                        #region Else if is ScreenSave

                        // Then test higher if deep didn't get removed
                        else if (EditorLogic.CurrentScreenSave != null)
                        {
                            var screenToRemove = EditorLogic.CurrentScreenSave;
                            TaskManager.Self.AddSync(() =>
                            {
                                RemoveScreen(screenToRemove, filesToRemove);
                            },
                            "Remove screen");
                        }

                        #endregion

                        #region Else if is EntitySave

                        else if (EditorLogic.CurrentEntitySave != null)
                        {
                            RemoveEntity(EditorLogic.CurrentEntitySave, filesToRemove);
                            //ProjectManager.RemoveEntity(EditorLogic.CurrentEntitySave);
                        }

                        #endregion


                        #region Files were deleted and the user wants to be asked to delete

                        if (filesToRemove.Count != 0 && askToDelete)
                        {

                            for (int i = 0; i < filesToRemove.Count; i++)
                            {
                                if (FileManager.IsRelative(filesToRemove[i]))
                                {
                                    filesToRemove[i] = ProjectManager.MakeAbsolute(filesToRemove[i]);
                                }
                                filesToRemove[i] = filesToRemove[i].Replace("\\", "/");
                            }

                            StringFunctions.RemoveDuplicates(filesToRemove, true);

                            ListBoxWindow lbw = new ListBoxWindow();
                            
                            string messageString = "What would you like to do with the following files:\n";
                            lbw.Message = messageString;

                            foreach (string s in filesToRemove)
                            {
                                
                                lbw.AddItem(s);
                            }
                            lbw.ClearButtons();
                            lbw.AddButton("Nothing - leave them as part of the game project", DialogResult.No);
                            lbw.AddButton("Remove them from the project but keep the files", DialogResult.OK);
                            lbw.AddButton("Remove and delete the files", DialogResult.Yes);


                            DialogResult result = lbw.ShowDialog();

                            if (result == DialogResult.OK || result == DialogResult.Yes)
                            {
                                foreach (string file in filesToRemove)
                                {
                                    string fileName = ProjectManager.MakeAbsolute(file);
                                    // This file may have been removed
                                    // in windows explorer, and now removed
                                    // from Glue.  Check to prevent a crash.

                                    ProjectManager.RemoveItemFromAllProjects(fileName, false);
                                }
                            }

                            if (result == DialogResult.Yes)
                            {
                                foreach (string file in filesToRemove)
                                {
                                    string fileName = ProjectManager.MakeAbsolute(file);
                                    // This file may have been removed
                                    // in windows explorer, and now removed
                                    // from Glue.  Check to prevent a crash.
                                    if (File.Exists(fileName))
                                    {
                                        FileHelper.DeleteFile(fileName);
                                    }
                                }
                            }
                        }

                        #endregion

                        if (saveAndRegenerate)
                        {

                            Action regenerateAction = null;

                            if (EditorLogic.CurrentScreenTreeNode != null)
                            {
                                var screen = EditorLogic.CurrentScreenSave;
                                regenerateAction = () =>
                                    FlatRedBall.Glue.CodeGeneration.CodeGeneratorIElement.GenerateElementAndDerivedCode(screen);
                            }
                            else if (EditorLogic.CurrentEntityTreeNode != null)
                            {
                                var entity = EditorLogic.CurrentEntitySave;
                                regenerateAction = () =>
                                    FlatRedBall.Glue.CodeGeneration.CodeGeneratorIElement.GenerateElementAndDerivedCode(entity);
                            }
                            else if (EditorLogic.CurrentReferencedFile != null)
                            {
                                regenerateAction = ContentLoadWriter.UpdateLoadGlobalContentCode;

                                // Vic asks - do we have to do anything else here?  I don't think so...
                            }



                            TaskManager.Self.AddSync(() =>
                                {
                                    if (regenerateAction != null)
                                    {
                                        regenerateAction();
                                    }
                                    ProjectManager.SaveProjects();
                                    GluxCommands.Self.SaveGlux();
                                },
                                "Save and regenerate after removal");
                            
                        }
                    }
                }
            }
        }
All Usage Examples Of FlatRedBall.Glue.Controls.ListBoxWindow::AddButton