public override void Execute(object parameter) { PSM_Class psmClass = (PSM_Class)ActiveDiagramView.SelectedItems.Single(); IncludeElementsDialog dialog = new IncludeElementsDialog(); dialog.Title = "Select specializations"; dialog.PrimaryContent = "Select specializations"; dialog.SecondaryContent = "Select specializations of the class you wish to include in the diagram: "; dialog.NoElementsContent = "There are no specializations or all the specializations are already present in the diagram. "; IEnumerable <Element> alreadyPresent = psmClass.PSMClass.Specifications.Select(generalization => ((PSMClass)generalization.Specific).RepresentedClass).Cast <Element>(); dialog.Items = psmClass.PSMClass.RepresentedClass.Specifications.Select(generalization => generalization.Specific).Cast <Element>().Except(alreadyPresent); if (dialog.ShowDialog() == true) { if (dialog.SelectedElements.Count > 0) { ActiveDiagramView.Controller.BeginMacro(); foreach (Class specialization in dialog.SelectedElements) { psmClass.ClassController.AddClassSpecialization((PIMClass)specialization); } ActiveDiagramView.Controller.CommitMacro(); } } }
/// <summary> /// Prepares the command that include hidden elements in the diagram /// </summary> private void IncludeDependentElements() { List <Element> candidates = ElementDependencies.FindHiddenElements(ElementRepresentations.PresentElements, Controller.ModelController.Model); IncludeElementsDialog dialog = new IncludeElementsDialog { NoElementsContent = "There are no hidden dependent elements on the diagram", Items = candidates }; if (dialog.ShowDialog() == true && dialog.SelectedElements.Count > 0) { IncludeElementsCommand command = (IncludeElementsCommand)IncludeElementsCommandFactory.Factory().Create(Controller); foreach (Element element in dialog.SelectedElements) { if (ElementRepresentations.CanRepresentElement(element)) { command.IncludedElements.Add(element, ElementRepresentations.CreateNewViewHelper(element, Diagram)); } } command.Execute(); } }