/////////////////////////////////////////////////////////// public static void PopulateRightClickItems(TreeNode node, MenuShowingAction menuShowingAction = MenuShowingAction.RegularRightClick) { MainGlueWindow.Self.ElementTreeView.SelectedNode = node; MainGlueWindow form = MainGlueWindow.Self; ContextMenuStrip menu = MainGlueWindow.Self.mElementContextMenu; menu.Items.Clear(); #region IsScreenNode if (node.IsScreenNode()) { if (menuShowingAction == MenuShowingAction.RightButtonDrag) { menu.Items.Add(mAddEntityInstance); menu.Items.Add(mAddEntityList); } else { menu.Items.Add(form.setAsStartUpScreenToolStripMenuItem); menu.Items.Add(mMakeRequiredAtStartup); mExportElement.Text = "Export Screen"; menu.Items.Add(mExportElement); AddRemoveFromProjectItems(form, menu); if (EditorLogic.CurrentScreenSave.IsRequiredAtStartup) { mMakeRequiredAtStartup.Text = "Remove StartUp Requirement"; } else { mMakeRequiredAtStartup.Text = "Make Required at StartUp"; } menu.Items.Add("-"); menu.Items.Add(mFindAllReferences); menu.Items.Add(mRefreshTreeNodesMenuItem); } } #endregion #region IsEntityNode else if (node.IsEntityNode()) { if (menuShowingAction == MenuShowingAction.RightButtonDrag) { menu.Items.Add(mAddEntityInstance); menu.Items.Add(mAddEntityList); } else { AddRemoveFromProjectItems(form, menu); menu.Items.Add("-"); mExportElement.Text = "Export Entity"; menu.Items.Add(mExportElement); menu.Items.Add(mFindAllReferences); EntitySave entitySave = ((EntityTreeNode)node).EntitySave; if (entitySave.PooledByFactory) { menu.Items.Add(mAddResetVariablesForPooling); } menu.Items.Add(mRefreshTreeNodesMenuItem); } } #endregion #region IsFileContainerNode OR IsFolderInFilesContainerNode else if (node.IsFilesContainerNode() || node.IsFolderInFilesContainerNode()) { menu.Items.Add(form.addFileToolStripMenuItem); menu.Items.Add(form.addFolderToolStripMenuItem); menu.Items.Add("-"); menu.Items.Add(form.viewInExplorerToolStripMenuItem); if (node.IsFolderInFilesContainerNode()) { menu.Items.Add(mDeleteFolder); } } #endregion #region IsScreenObjectContainerNode else if (node.IsRootObjectNode()) { if (menuShowingAction == MenuShowingAction.RightButtonDrag) { menu.Items.Add(mAddEntityInstance); menu.Items.Add(mAddEntityList); } else { menu.Items.Add(form.addObjectToolStripMenuItem); } } #endregion #region IsGlobalContentContainerNode else if (node.IsGlobalContentContainerNode()) { menu.Items.Add(form.addFileToolStripMenuItem); menu.Items.Add(form.addFolderToolStripMenuItem); menu.Items.Add(form.reGenerateCodeToolStripMenuItem); menu.Items.Add(form.viewInExplorerToolStripMenuItem); menu.Items.Add(mViewFileLoadOrder); } #endregion #region IsRootEntityNode else if (node.IsRootEntityNode()) { menu.Items.Add(form.addEntityToolStripMenuItem); mImportElement.Text = "Import Entity"; menu.Items.Add(mImportElement); menu.Items.Add(form.addFolderToolStripMenuItem); } #endregion #region IsRootScreenNode else if (node.IsRootScreenNode()) { menu.Items.Add(form.addScreenToolStripMenuItem); mImportElement.Text = "Import Screen"; menu.Items.Add(mImportElement); } #endregion #region IsRootBehaviorsNode else if (node.IsRootBehaviorsNode()) { menu.Items.Add(form.addBehaviorToolStripMenuItem); menu.Items.Add(form.openBehaviorFolderToolStripMenuItem); menu.Items.Add(form.importBehaviorToolStripMenuItem); } #endregion #region IsRootCustomVariables else if (node.IsRootCustomVariablesNode()) { menu.Items.Add(form.addVariableToolStripMenuItem); } #endregion #region IsRootEventNode else if (node.IsRootEventsNode()) { menu.Items.Add(mAddEventMenuItem); } #endregion #region IsNamedObjectNode else if (node.IsNamedObjectNode()) { AddRemoveFromProjectItems(form, menu); menu.Items.Add(form.editResetVariablesToolStripMenuItem); menu.Items.Add(mFindAllReferences); menu.Items.Add("-"); menu.Items.Add(mDuplicate); menu.Items.Add("-"); menu.Items.Add(mMoveToTop); menu.Items.Add(mMoveUp); menu.Items.Add(mMoveDown); menu.Items.Add(mMoveToBottom); menu.Items.Add("-"); NamedObjectSave currentNamedObject = EditorLogic.CurrentNamedObject; if (currentNamedObject.SourceType == SourceType.FlatRedBallType && currentNamedObject.SourceClassType == "PositionedObjectList<T>" && !string.IsNullOrEmpty(currentNamedObject.SourceClassGenericType) && !currentNamedObject.SetByDerived) { menu.Items.Add(form.addObjectToolStripMenuItem); } } #endregion #region IsReferencedFileNode else if (node.IsReferencedFile()) { menu.Items.Add(form.viewInExplorerToolStripMenuItem); menu.Items.Add(mFindAllReferences); menu.Items.Add("Copy path to clipboard", null, HandleCopyToClipboardClick); menu.Items.Add("-"); menu.Items.Add(mCreateZipPackage); menu.Items.Add(mRecreateCompanionFiles); menu.Items.Add("-"); AddRemoveFromProjectItems(form, menu); menu.Items.Add(mUseContentPipeline); //menu.Items.Add(form.openWithDEFAULTToolStripMenuItem); ReferencedFileSave rfs = (ReferencedFileSave)node.Tag; if (FileManager.GetExtension(rfs.Name) == "csv" || rfs.TreatAsCsv) { menu.Items.Add("-"); menu.Items.Add(form.setCreatedClassToolStripMenuItem); menu.Items.Add(form.reGenerateCodeToolStripMenuItem); } if (!string.IsNullOrEmpty(rfs.SourceFile) || rfs.SourceFileCache.Count != 0) { menu.Items.Add("-"); menu.Items.Add(mViewSourceInExplorer); menu.Items.Add(mRebuildFile); } menu.Items.Add(mCopyToBuildFolder); if (!File.Exists(ProjectManager.MakeAbsolute(rfs.Name, true))) { menu.Items.Add(mCreateNewFileForMissingFile); } } #endregion #region IsCustomVariable else if (node.IsCustomVariable()) { AddRemoveFromProjectItems(form, menu); menu.Items.Add("-"); menu.Items.Add(mFindAllReferences); menu.Items.Add("-"); menu.Items.Add(mMoveToTop); menu.Items.Add(mMoveUp); menu.Items.Add(mMoveDown); menu.Items.Add(mMoveToBottom); } #endregion #region IsBehaviorNode else if (node.IsBehaviorNode()) { AddRemoveFromProjectItems(form, menu); } #endregion #region IsCodeNode else if (node.IsCodeNode()) { menu.Items.Add(form.viewInExplorerToolStripMenuItem); menu.Items.Add(form.reGenerateCodeToolStripMenuItem); } #endregion #region IsRootCodeNode else if (node.IsRootCodeNode()) { menu.Items.Add(form.reGenerateCodeToolStripMenuItem); } #endregion #region IsDirectoryNode else if (node.IsDirectoryNode()) { //menu.Items.Add(form.viewInExplorerToolStripMenuItem); menu.Items.Add(mViewContentFilesInExplorer); menu.Items.Add(mViewCodeFolderInExplorer); menu.Items.Add("-"); menu.Items.Add(form.addFolderToolStripMenuItem); if (node.Root().IsRootEntityNode()) { menu.Items.Add(form.addEntityToolStripMenuItem); mImportElement.Text = "Import Entity"; menu.Items.Add(mImportElement); } else { // If not in the Entities tree structure, assume global content menu.Items.Add(form.addFileToolStripMenuItem); } menu.Items.Add("-"); menu.Items.Add(mDeleteFolder); } #endregion #region IsStateListNode else if (node.IsStateListNode()) { menu.Items.Add(mAddState); menu.Items.Add(mAddStateCategory); } #endregion #region IsStateCategoryNode else if (node.IsStateCategoryNode()) { menu.Items.Add(mAddState); AddRemoveFromProjectItems(form, menu); } #endregion #region IsStateNode else if (node.IsStateNode()) { AddRemoveFromProjectItems(form, menu); menu.Items.Add("-"); menu.Items.Add(mDuplicate); menu.Items.Add("-"); menu.Items.Add(mFillValuesFromDefault); } #endregion #region IsEventTreeNode else if (node.IsEventResponseTreeNode()) { AddRemoveFromProjectItems(form, menu); } #endregion PluginManager.ReactToTreeViewRightClick(node, menu); }