public static BaseElementTreeNode AddScreen(ScreenSave screenSave)
        {
            string screenFileName             = screenSave.Name + ".cs";
            string screenFileWithoutExtension = FileManager.RemoveExtension(screenFileName);

            var screenTreeNode = new ScreenTreeNode(FileManager.RemovePath(screenFileWithoutExtension));

            screenTreeNode.CodeFile = screenFileName;

            mScreenNode.Nodes.Add(screenTreeNode);

            string generatedFile = screenFileWithoutExtension + ".Generated.cs";

            screenTreeNode.GeneratedCodeFile = generatedFile;

            screenTreeNode.SaveObject = screenSave;

            int desiredIndex = ProjectManager.GlueProjectSave.Screens.IndexOf(screenSave);

            if (desiredIndex < mScreenNode.Nodes.Count && mScreenNode.Nodes[desiredIndex] != mScreenNode)
            {
                mScreenNode.Nodes.Remove(screenTreeNode);
                mScreenNode.Nodes.Insert(desiredIndex, screenTreeNode);
            }

            return(screenTreeNode);
        }
        private void CreateScreenTreeNodes()
        {
            for (int i = 0; i < ProjectManager.GlueProjectSave.Screens.Count; i++)
            {
                ScreenSave screenSave = ProjectManager.GlueProjectSave.Screens[i];
                // This is so fast now that we don't even need to show the user
                // what's going on
                //SetInitWindowText("Creating Screens: " + screenSave.Name);

                ScreenTreeNode screenTreeNode = GlueState.Self.Find.ScreenTreeNode(ProjectManager.GlueProjectSave.Screens[i].Name);

                #region If there is no screenTreeNode

                if (screenTreeNode == null)
                {
                    // See if the file exists
                    string fileToSearchFor = FileManager.RelativeDirectory + screenSave.Name + ".cs";

                    if (System.IO.File.Exists(fileToSearchFor))
                    {
                        // If we got here that means there's probably not a build item for this file
                        MessageBox.Show("The Glue project has the following Screen:\n" + screenSave.Name + "\n" +
                                        "but this file is not part of Visual Studio.  This file may have been removed manually or " +
                                        "there may have been some saving error.  You should close Glue, manually add this and the Generated file " +
                                        "to Visual Studio, then restart Glue.");
                        MainGlueWindow.Self.HasErrorOccurred = true;
                    }
                    else
                    {
                        System.Windows.Forms.MessageBox.Show("Could not create the ScreenSave for " + screenSave.Name);
                    }


                    //mGlueProjectSave.Screens.RemoveAt(i);
                    //i--;
                    continue;
                }

                #endregion

                screenTreeNode.SaveObject = ProjectManager.GlueProjectSave.Screens[i];

                CheckForMissingCustomFile(screenTreeNode);


                if (ProjectManager.GlueProjectSave.Screens[i].IsRequiredAtStartup)
                {
                    screenTreeNode.BackColor = ElementViewWindow.RequiredScreenColor;
                }

                screenTreeNode.UpdateReferencedTreeNodes();

                screenTreeNode.SaveObject.UpdateCustomProperties();
            }
        }
Exemple #3
0
        private void CreateScreenTreeNodes()
        {
            for (int i = 0; i < ProjectManager.GlueProjectSave.Screens.Count; i++)
            {
                ScreenSave screenSave = ProjectManager.GlueProjectSave.Screens[i];

                ScreenTreeNode screenTreeNode = GlueState.Self.Find.ScreenTreeNode(ProjectManager.GlueProjectSave.Screens[i].Name);
                if (ProjectManager.GlueProjectSave.Screens[i].IsRequiredAtStartup)
                {
                    screenTreeNode.BackColor = ElementViewWindow.RequiredScreenColor;
                }

                screenTreeNode.UpdateReferencedTreeNodes();
            }
        }
        public static NamedObjectSave AddNewNamedObjectToSelectedElement(string objectName, MembershipInfo membershipInfo, bool raisePluginResponse = true)
        {
            NamedObjectSave namedObject = new NamedObjectSave();

            namedObject.InstanceName = objectName;

            namedObject.DefinedByBase = membershipInfo == MembershipInfo.ContainedInBase;

            #region Adding to a NamedObject (PositionedObjectList)

            if (EditorLogic.CurrentNamedObject != null)
            {
                AddNamedObjectToCurrentNamedObjectList(namedObject);
            }
            #endregion

            #region else adding to Screen

            else if (EditorLogic.CurrentScreenTreeNode != null)
            {
                ScreenTreeNode screenTreeNode =
                    EditorLogic.CurrentScreenTreeNode;
                AddNewNamedObjectToElementTreeNode(screenTreeNode, namedObject, true);
            }

            #endregion

            #region else adding to an Entity
            else if (EditorLogic.CurrentEntityTreeNode != null)
            {
                EntityTreeNode entityTreeNode =
                    EditorLogic.CurrentEntityTreeNode;

                AddNewNamedObjectToElementTreeNode(entityTreeNode, namedObject, true);
            }
            #endregion


            if (raisePluginResponse)
            {
                PluginManager.ReactToNewObject(namedObject);
            }
            MainGlueWindow.Self.PropertyGrid.Refresh();
            ElementViewWindow.GenerateSelectedElementCode();
            GluxCommands.Self.SaveGlux();

            return(namedObject);
        }
        public static void UpdateNodeToListIndex(ScreenSave screenSave)
        {
            ScreenTreeNode screenTreeNode = GlueState.Self.Find.ScreenTreeNode(screenSave);

            bool wasSelected = MainGlueWindow.Self.ElementTreeView.SelectedNode == screenTreeNode;

            int desiredIndex = ProjectManager.GlueProjectSave.Screens.IndexOf(screenSave);

            mScreenNode.Nodes.Remove(screenTreeNode);
            mScreenNode.Nodes.Insert(desiredIndex, screenTreeNode);

            if (wasSelected)
            {
                MainGlueWindow.Self.ElementTreeView.SelectedNode = screenTreeNode;
            }
        }
Exemple #6
0
        public ScreenTreeNode ScreenTreeNode(ScreenSave screenSave)
        {
            for (int i = 0; i < ElementViewWindow.ScreensTreeNode.Nodes.Count; i++)
            {
                if (ElementViewWindow.ScreensTreeNode.Nodes[i] is ScreenTreeNode)
                {
                    ScreenTreeNode asScreenTreeNode = ElementViewWindow.ScreensTreeNode.Nodes[i] as ScreenTreeNode;

                    if (asScreenTreeNode.ScreenSave == screenSave)
                    {
                        return(asScreenTreeNode);
                    }
                }
            }
            return(null);
        }
        public ScreenTreeNode ScreenTreeNode(string screenFileName)
        {
            for (int i = 0; i < ElementViewWindow.ScreensTreeNode.Nodes.Count; i++)
            {
                if (ElementViewWindow.ScreensTreeNode.Nodes[i] is ScreenTreeNode)
                {
                    ScreenTreeNode asScreenTreeNode = ElementViewWindow.ScreensTreeNode.Nodes[i] as ScreenTreeNode;

                    if (asScreenTreeNode.SaveObject.Name == screenFileName)
                    {
                        return(asScreenTreeNode);
                    }
                }
            }

            return(null);
        }
Exemple #8
0
        public TreeNode NamedObjectTreeNode(NamedObjectSave namedObjectSave)
        {
            IElement container = namedObjectSave.GetContainer();

            if (container is ScreenSave)
            {
                ScreenTreeNode screenTreeNode = GlueState.Self.Find.ScreenTreeNode((ScreenSave)container);
                return(screenTreeNode.GetTreeNodeFor(namedObjectSave));
            }
            else if (container is EntitySave)
            {
                EntityTreeNode entityTreeNode = GlueState.Self.Find.EntityTreeNode((EntitySave)container);
                return(entityTreeNode.GetTreeNodeFor(namedObjectSave));
            }
            else
            {
                return(null);
            }
        }
Exemple #9
0
        public TreeNode ReferencedFileSaveTreeNode(ReferencedFileSave referencedFileSave)
        {
            IElement container = referencedFileSave.GetContainer();

            if (container == null)
            {
                return(TreeNodeByTagIn(referencedFileSave, ElementViewWindow.GlobalContentFileNode.Nodes));
            }
            else if (container is ScreenSave)
            {
                ScreenTreeNode screenTreeNode = GlueState.Self.Find.ScreenTreeNode((ScreenSave)container);
                return(screenTreeNode.GetTreeNodeFor(referencedFileSave));
            }
            else if (container is EntitySave)
            {
                EntityTreeNode entityTreeNode = GlueState.Self.Find.EntityTreeNode((EntitySave)container);
                return(entityTreeNode.GetTreeNodeFor(referencedFileSave));
            }

            return(null);
        }
Exemple #10
0
        public static BaseElementTreeNode AddScreen(ScreenSave screenSave)
        {
            string screenFileName = screenSave.Name + ".cs";


            string screenFileWithoutExtension = FileManager.RemoveExtension(screenFileName);

            var screenTreeNode = new ScreenTreeNode(FileManager.RemovePath(screenFileWithoutExtension));



            screenTreeNode.CodeFile = screenFileName;
            mScreenNode.Nodes.Add(screenTreeNode);

            string generatedFile = screenFileWithoutExtension + ".Generated.cs";

            bool doesFileExist = FileManager.FileExists(generatedFile);

            if (!doesFileExist)
            {
                CodeWriter.CreateAndAddGeneratedFile(screenSave);
            }

            screenTreeNode.GeneratedCodeFile = generatedFile;

            screenTreeNode.SaveObject = screenSave;

            int desiredIndex = ProjectManager.GlueProjectSave.Screens.IndexOf(screenSave);

            mScreenNode.Nodes.Remove(screenTreeNode);
            mScreenNode.Nodes.Insert(desiredIndex, screenTreeNode);


            if (!string.IsNullOrEmpty(screenTreeNode.GeneratedCodeFile))
            {
                CodeWriter.GenerateCode(screenSave);
            }

            return(screenTreeNode);
        }
Exemple #11
0
        void ActionTreeView_OnActionTreeNodeMouseClick(object s)
        {
            ScreenTreeNode sender = s as ScreenTreeNode;

            if (sender != null)
            {
                object screenObj = null;
                if (sender.CachedScreen == null)
                {
                    ActionNodeData  data = sender.Parameter as ActionNodeData;
                    Type            type = Type.GetType(data.TypeName);
                    ConstructorInfo ci   = type.GetConstructor(Type.EmptyTypes);
                    screenObj           = ci.Invoke(null);
                    sender.CachedScreen = (Form)screenObj;
                }
                else
                {
                    screenObj = sender.CachedScreen;
                }
                ScreenRegion region = screenObj as ScreenRegion;
                ContentPanel.Embed(region, EmbedType.Fill);
            }
        }
Exemple #12
0
        public static void UpdateAllDerivedElementFromBaseValues(bool regenerateCode)
        {
            if (EditorLogic.CurrentEntitySave != null)
            {
                List <EntitySave> derivedEntities = ObjectFinder.Self.GetAllEntitiesThatInheritFrom(EditorLogic.CurrentEntitySave.Name);

                List <NamedObjectSave> nosList = ObjectFinder.Self.GetAllNamedObjectsThatUseEntity(EditorLogic.CurrentEntitySave.Name);

                for (int i = 0; i < derivedEntities.Count; i++)
                {
                    EntitySave entitySave = derivedEntities[i];

                    nosList.AddRange(ObjectFinder.Self.GetAllNamedObjectsThatUseEntity(entitySave.Name));


                    entitySave.UpdateFromBaseType();
                    // Update the tree nodes
                    EntityTreeNode treeNode = GlueState.Self.Find.EntityTreeNode(entitySave);
                    treeNode.UpdateReferencedTreeNodes();

                    if (regenerateCode)
                    {
                        CodeWriter.GenerateCode(entitySave);
                    }
                }

                foreach (NamedObjectSave nos in nosList)
                {
                    nos.UpdateCustomProperties();

                    IElement element = nos.GetContainer();

                    if (element != null)
                    {
                        CodeWriter.GenerateCode(element);
                    }
                }
            }
            else if (EditorLogic.CurrentScreenSave != null)
            {
                List <ScreenSave> derivedScreens = ObjectFinder.Self.GetAllScreensThatInheritFrom(EditorLogic.CurrentScreenSave.Name);

                for (int i = 0; i < derivedScreens.Count; i++)
                {
                    ScreenSave screenSave = derivedScreens[i];
                    screenSave.UpdateFromBaseType();

                    ScreenTreeNode treeNode = GlueState.Self.Find.ScreenTreeNode(screenSave);
                    treeNode.UpdateReferencedTreeNodes();

                    if (regenerateCode)
                    {
                        CodeWriter.GenerateCode(screenSave);
                    }
                }
            }
            else
            {
                if (EditorLogic.CurrentNamedObject == null)
                {
                    // This means the value is being set on the Screen itself
                    throw new NotImplementedException();
                }
            }
        }
        public static ScreenTreeNode AddScreen(ScreenSave screenSave)
        {
            string screenFileName = screenSave.Name + ".cs";
            

            string screenFileWithoutExtension = FileManager.RemoveExtension(screenFileName);

            ScreenTreeNode screenTreeNode = new ScreenTreeNode(FileManager.RemovePath(screenFileWithoutExtension));



            screenTreeNode.CodeFile = screenFileName;
            mScreenNode.Nodes.Add(screenTreeNode);

            string generatedFile = screenFileWithoutExtension + ".Generated.cs";

            bool doesFileExist = FileManager.FileExists(generatedFile);

            if (!doesFileExist)
            {
                CodeWriter.CreateAndAddGeneratedFile(screenSave);
            }

            screenTreeNode.GeneratedCodeFile = generatedFile;

            screenTreeNode.ScreenSave = screenSave;

            int desiredIndex = ProjectManager.GlueProjectSave.Screens.IndexOf(screenSave);

            mScreenNode.Nodes.Remove(screenTreeNode);
            mScreenNode.Nodes.Insert(desiredIndex, screenTreeNode);


            if (!string.IsNullOrEmpty(screenTreeNode.GeneratedCodeFile))
            {
                CodeWriter.GenerateCode(screenSave);
            }

            return screenTreeNode;
        }