示例#1
0
 public override void EA_MenuClick(EA.Repository Repository, string Location, string MenuName, string ItemName)
 {
     switch (ItemName)
     {
         case NEWLINE_MENU_ITEM:
             NotesCleaner cleaner = new NotesCleaner(Repository);
             cleaner.CleanUpNotesAndSave();
             break;
         case TRACE_MENU_ITEM:
             TraceabilityRunner runner = new TraceabilityRunner(Repository);
             runner.RunReportOnSelectedPBItem();
             break;
         case MARKDOWN_EDITOR:
             mdownControl = (MarkdownNotesControl)Repository.AddTab("Markdown Editor", "EAPowerTools.MarkdownNotesControl");
             mdownControl.LoadFromRepository(Repository);
             break;
         case MARKDOWN_DOCKED:
             mdownDocked = (MarkdownDockedViewer)Repository.AddWindow("Markdown Notes", "EAPowerTools.MarkdownDockedViewer");
             mdownDocked.SetRepo(Repository);
             break;
         case POWER_EDITOR:
             control = (PowerEditorControl) Repository.AddTab("Power Editor", "EAPowerTools.PowerEditorControl");
             control.LoadNotes(Repository);
             break;
     }
 }
 /// <summary>
 /// EA_Connect events enable Add-Ins to identify their type and to respond to Enterprise Architect start up.
 /// This event occurs when Enterprise Architect first loads your Add-In. Enterprise Architect itself is loading at this time so that while a Repository object is supplied, there is limited information that you can extract from it.
 /// The chief uses for EA_Connect are in initializing global Add-In data and for identifying the Add-In as an MDG Add-In.
 /// Also look at EA_Disconnect.
 /// </summary>
 /// <param name="Repository">An EA.Repository object representing the currently open Enterprise Architect model.
 /// Poll its members to retrieve model data and user interface status information.</param>
 /// <returns>String identifying a specialized type of Add-In: 
 /// - "MDG" : MDG Add-Ins receive MDG Events and extra menu options.
 /// - "" : None-specialized Add-In.</returns>
 public override string EA_Connect(EA.Repository Repository)
 {
     this.eaControl = Repository.AddWindow("My Control","MyAddin.MyEAControl") as MyEAControl;
     return base.EA_Connect(Repository);
 }
 /// <summary>
 /// called when the selected item changes
 /// This operation will show the guid of the selected element in the eaControl
 /// </summary>
 /// <param name="Repository">the EA.Repository</param>
 /// <param name="GUID">the guid of the selected item</param>
 /// <param name="ot">the object type of the selected item</param>
 public override void EA_OnContextItemChanged(EA.Repository Repository, string GUID, EA.ObjectType ot)
 {
     if (this.eaControl == null)
             this.eaControl = Repository.AddWindow("My Control","MyAddin.MyEAControl") as MyEAControl;
     if (this.eaControl != null)
         this.eaControl.setNameLabel(GUID);
 }
示例#4
0
 /// <summary>
 /// Called when user makes a selection in the menu.
 /// This is your main exit point to the rest of your Add-in
 /// </summary>
 /// <param name="Repository">the repository</param>
 /// <param name="Location">the location of the menu</param>
 /// <param name="MenuName">the name of the menu</param>
 /// <param name="ItemName">the name of the selected menu item</param>
 public override void EA_MenuClick(EA.Repository Repository, string Location, string MenuName, string ItemName)
 {
     switch (ItemName)
     {
         case menuJoining:
             this.showJoinWindow();
             break;
         case menuEndJoining:
             joinService.isConnectedInternet();
             break;
         case menuDbTest:
             if (defectsWindow == null)
             {
                 defectsWindow = Repository.AddWindow("Defects detection", "BPAddIn.DefectsWindow") as DefectsWindow;
             }
             Repository.ShowAddinWindow("Defects detection");
             break;
         case menuLoginWindow:
             showLoginWindow();
             break;
         case menuRegistrationWindow:
             showRegistrationWindow();
             break;
         case menuUpdate:
             updateService.isConnected();
             break;
         case menuStartNewProject:
             synchronizationService.startNewProject();
             break;
         case menuSynchronization:
             synchronizationService.checkInternetConnection(Repository);
             break;
         case menuSynchronizationWindow:
             if (synchronizationWindow == null)
             {
                 synchronizationWindow = Repository.AddWindow("Synchronization", "BPAddIn.SynchronizationPackage.SynchronizationWindow") as SynchronizationWindow;
             }
             Repository.ShowAddinWindow("Synchronization");
             break;
     }
 }
        /// <summary>
        /// method executes synchronization process
        /// </summary>
        /// <param name="repository">EA repository</param>
        public void executeSynchronization(EA.Repository repository)
        {
            User user = getLoggedUser();
            using (WebClient webClient = new WebClient())
            {
                this.user = user;
                string result = "", result2 = "", result3 = "";
                ModelInformation synchronizationData = new ModelInformation();
                synchronizationData.token = user.token;
                EA.Package package = (EA.Package)repository.GetPackageByID(1);
                synchronizationData.modelGUID = package.PackageGUID;
                string data = user.token;

                BPAddIn.changesAllowed = false;
                webClient.Headers[HttpRequestHeader.ContentType] = "application/json; charset=utf-8";
                result = webClient.UploadString(Utils.serviceAddress + "/synchronization/getNumber", user.token);
                int number = Convert.ToInt32(result);
                if (BPAddIn.synchronizationWindow == null)
                {
                    BPAddIn.synchronizationWindow = repository.AddWindow("Synchronization", "BPAddIn.SynchronizationPackage.SynchronizationWindow") as SynchronizationWindow;
                }
                repository.ShowAddinWindow("Synchronization");
                BPAddIn.synchronizationWindow.removeList();

                DateTime localDate = DateTime.Now;
                var culture = new CultureInfo("de-DE");
                BPAddIn.synchronizationWindow.addToList(localDate.ToString(culture));

                if (number == 0)
                {
                    BPAddIn.synchronizationWindow.addToList("No modifications.");
                    BPAddIn.changesAllowed = true;
                    return;
                }

                while (true)
                {
                    try
                    {
                        data = user.token;
                        webClient.Headers[HttpRequestHeader.ContentType] = "application/json; charset=utf-8";
                        result2 = webClient.UploadString(Utils.serviceAddress + "/synchronization/changes", data);

                        ModelChange modelChange = JsonConvert.DeserializeObject<ModelChange>(result2, new JsonItemConverter());
                        if (modelChange == null)
                        {
                            data = user.token;
                            continue;
                        }
                        if (modelChange is PropertyChange)
                        {
                            PropertyChange propertyChange = (PropertyChange)modelChange;
                            if (propertyChange.timestamp == "-1")
                            {
                                repository.ShowAddinWindow("Synchronization");
                                repository.RefreshModelView(1);
                                break;
                            }
                        }

                        if (modelChange is ItemCreation)
                        {
                            ItemCreation itemCreation = (ItemCreation)modelChange;                                  //addition

                            NewCorrespondenceNode newCorrNode = new NewCorrespondenceNode();
                            newCorrNode.firstUsername = user.username;
                            newCorrNode.firstItemGUID = synchronization.handleSynchronizationAdditions(itemCreation, repository);
                            newCorrNode.secondUsername = itemCreation.userName;
                            newCorrNode.secondItemGUID = itemCreation.itemGUID;

                            data = EncodeNonAsciiCharacters(newCorrNode.serialize());
                            webClient.Headers[HttpRequestHeader.ContentType] = "application/json; charset=utf-8";
                            result3 = webClient.UploadString(Utils.serviceAddress + "/corrModel/createNode", data);
                        }
                        else if (modelChange is PropertyChange)
                        {
                            PropertyChange propertyChange = (PropertyChange)modelChange;
                            if (propertyChange.elementDeleted == 0)
                            {
                                synchronization.handleSynchronizationChanges(propertyChange, repository);       //change
                            }
                            else
                            {
                                synchronization.handleSynchronizationDeletions(propertyChange, repository);             //deletion
                            }
                        }
                        else if (modelChange is StepChange)                    //scenarios
                        {
                            StepChange scenarioChange = (StepChange)modelChange;

                            if (scenarioChange.status == 1)                            //addition
                            {
                                NewCorrespondenceNode newCorrNode = new NewCorrespondenceNode();
                                newCorrNode.firstUsername = user.username;
                                newCorrNode.firstItemGUID = synchronization.handleScenarioAddition(scenarioChange, repository);
                                newCorrNode.secondUsername = scenarioChange.userName;
                                newCorrNode.secondItemGUID = scenarioChange.scenarioGUID;
                                data = EncodeNonAsciiCharacters(newCorrNode.serialize());
                                webClient.Headers[HttpRequestHeader.ContentType] = "application/json; charset=utf-8";
                                result3 = webClient.UploadString(Utils.serviceAddress + "/corrModel/createNode", data);
                            }
                            else if (scenarioChange.status == 2 || scenarioChange.status == 0)         //change or deletion
                            {
                                synchronization.handleScenarioChange(scenarioChange, repository);
                            }
                        }
                    }
                    catch (Exception e)
                    {
                        continue;
                    }
                }
            }
        }
示例#6
0
        public virtual void showErrorWindow(EA.Repository repository)
        {
            if (BPAddIn.BPAddIn.defectsWindow == null)
            {
                BPAddIn.BPAddIn.defectsWindow = repository.AddWindow("Defects detection", "BPAddIn.DefectsWindow") as DefectsWindow;
            }

            repository.ShowAddinWindow("Defects detection");
        }
示例#7
0
 /// <summary>
 /// EA_Connect events enable Add-Ins to identify their type and to respond to Enterprise Architect start up.
 /// This event occurs when Enterprise Architect first loads your Add-In. Enterprise Architect itself is loading at this time so that while a Repository object is supplied, there is limited information that you can extract from it.
 /// The chief uses for EA_Connect are in initializing global Add-In data and for identifying the Add-In as an MDG Add-In.
 /// Also look at EA_Disconnect.
 /// </summary>	
 /// <param name="Repository">An EA.Repository object representing the currently open Enterprise Architect model.
 /// Poll its members to retrieve model data and user interface status information.</param>
 /// <returns>String identifying a specialized type of Add-In: 
 /// - "MDG" : MDG Add-Ins receive MDG Events and extra menu options.
 /// - "" : None-specialized Add-In.</returns>
 public override string EA_Connect(EA.Repository Repository)
 {
     this.eaControl = Repository.AddWindow("Explorer","EAExplorer.EAExplorerControl") as EAExplorerControl;
     return base.EA_Connect(Repository);
 }
示例#8
0
 /// <summary>
 /// called when the selected item changes
 /// This operation will show the guid of the selected element in the eaControl
 /// </summary>
 /// <param name="Repository">the EA.Repository</param>
 /// <param name="GUID">the guid of the selected item</param>
 /// <param name="ot">the object type of the selected item</param>
 public override void EA_OnContextItemChanged(EA.Repository Repository, string GUID, EA.ObjectType ot)
 {
     if (this.eaControl == null)
         this.eaControl = Repository.AddWindow("Explorer","EAExplorer.EAExplorerControl") as EAExplorerControl;
     if (this.eaControl != null)
         this.eaControl.showObjectProperties(Repository,GUID,ot);
 }