private void OnNavigatorSelectedClass(object sender, ClassEventArgs arg) { if (ActiveDiagram != null) { XCaseViewBase classView = null; if (ActiveDiagram.ElementRepresentations.IsElementPresent(arg.SelectedClass)) { classView = (PIM_Class)ActiveDiagram.ElementRepresentations[arg.SelectedClass]; } if (classView != null) { foreach (ISelectable i in ActiveDiagram.SelectedItems) { i.IsSelected = false; } classView.IsSelected = true; ActiveDiagram.SelectedItems.Clear(); ActiveDiagram.SelectedItems.Add(classView); } } // Display the class in the Properties window if (arg != null && arg.SelectedClass != null) { propertiesWindow.DisplayModelClass(arg.SelectedClass); } }
/// <summary> /// Draws given root element and all its children and counts width of its subtree. /// </summary> /// <param name="diagram">Diagram to be layouted</param> /// <param name="root">Root element of layouted subtree</param> /// <param name="top">Location of the upper border of the root</param> /// <param name="left">Location of the left border of the entire subtree</param> /// <returns>Width of the subtree (root included)</returns> private static double DrawTree(XCaseCanvas diagram, NamedElement root, double top, double left) { if (!diagram.ElementRepresentations.IsElementPresent(root)) { return(-horizontalSpace); } XCaseViewBase element = (diagram.ElementRepresentations[root] as XCaseViewBase); double height = element.ActualHeight; double width = element.ActualWidth; double right = left + TreeLayout.DrawSubtree(diagram, root, top + height + verticalSpace, left); if (right == left) { right = left + width; } else { if (right < left + width) { double subtreeWidth = right - left; TreeLayout.DrawSubtree(diagram, root, top + height + verticalSpace, left + (width - subtreeWidth) / 2); right = left + width; } } element.X = Math.Round((right + left) / 2 - width / 2); element.ViewHelper.X = element.X; element.Y = Math.Round(top); element.ViewHelper.Y = element.Y; return(right - left); }
internal void SelectedItems_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e) { SelectedItemsCollection selection = (SelectedItemsCollection)sender; if (selection.Count == 1 && selection[0] is XCaseViewBase) { DeselectAll(modelClasses); DeselectAll(nestedPackages); XCaseViewBase selectedXCaseClass = (XCaseViewBase)selection[0]; if (selectedXCaseClass.ModelElement.VersionManager != null && selectedXCaseClass.ModelElement.Version != project.Version) { BindToProject(selectedXCaseClass.ModelElement.VersionManager.VersionedProjects[selectedXCaseClass.ModelElement.Version]); } if (selectedXCaseClass.Controller != null && selectedXCaseClass.Controller.NamedElement is Class && !(selectedXCaseClass.Controller.NamedElement is AssociationClass)) { Class selectedClass; if (selectedXCaseClass.Controller.NamedElement is PIMClass) { selectedClass = selectedXCaseClass.Controller.NamedElement as Class; } else { selectedClass = (selectedXCaseClass.Controller.NamedElement as PSMClass).RepresentedClass; if (selectedClass is AssociationClass) { selectedClass = null; } } if (selectedClass != null) { Package nestingPackage = selectedClass.Package; if (nestingPackage == model) { ExpandAndSelectClass(modelClasses, selectedClass); } else { Collection <Package> packagePath = new Collection <Package>(); Package package = nestingPackage; while (package != null) { packagePath.Add(package); package = package.NestingPackage; } ExpandNestedPackages(nestedPackages, selectedClass, packagePath, packagePath.Count - 1); } } } } }
/// <summary> /// Displayes PIM class selected on the canvas /// </summary> /// <param name="c"></param> /// <param name="classtype"></param> /// <param name="mainwin"></param> public void Display(XCaseViewBase c, string classtype, MainWindow mainwin) { mv = mainwin; SelectedClassController = c.Controller; IDictionaryEnumerator ie = grid.Resources.GetEnumerator(); while (ie.MoveNext()) { if (ie.Key.ToString() == "renamePIMClass") { renamePIMClass = (RenamePIMClassConverter)ie.Value; renamePIMClass.Controller = mv.CurrentProject.GetModelController(); renamePIMClass.selectedClass = (Class)c.Controller.Element; } else if (ie.Key.ToString() == "renameAttribute") { renameAttribute = (RenameAttributeConverter)ie.Value; renameAttribute.Controller = mv.CurrentProject.GetModelController(); renameAttribute.selectedClass = (Class)c.Controller.Element; } else if (ie.Key.ToString() == "renameOperation") { renameOperation = (RenameOperationConverter)ie.Value; renameOperation.Controller = mv.CurrentProject.GetModelController(); } } mainLabel.Content = classtype + " Class"; classNameBox.DataContext = ((ClassController)SelectedClassController).Class; attBox.DataContext = ((ClassController)SelectedClassController).Class.Attributes; opBox.DataContext = ((ClassController)SelectedClassController).Class.Operations; dcBox.DataContext = ((ClassController)SelectedClassController).Class.DerivedPSMClasses; appearance.Visibility = Visibility.Visible; appearance.SetElement(c.Controller.DiagramController, c.ViewHelper); }
/// <summary> /// Displayes PSM class selected on the canvas /// </summary> /// <param name="c"></param> public void Display(XCaseViewBase c, MainWindow mainwin) { mv = mainwin; SelectedClassController = c.Controller; IDictionaryEnumerator ie = grid.Resources.GetEnumerator(); while (ie.MoveNext()) { if (ie.Key.ToString() == "renameClass") { renameClass = (RenamePSMClassConverter)ie.Value; renameClass.Controller = SelectedClassController; } else if (ie.Key.ToString() == "renameAlias") { renameAlias = (RenameAliasConverter)ie.Value; renameAlias.Controller = SelectedClassController; } else if (ie.Key.ToString() == "renameElement") { renameElement = (RenameElementConverter)ie.Value; renameElement.Controller = SelectedClassController; } } classNameBox.DataContext = ((PSM_ClassController)SelectedClassController).Class; elementNameBox.DataContext = ((PSM_ClassController)SelectedClassController).Class; attBox.DataContext = ((PSM_ClassController)SelectedClassController).Class.AllPSMAttributes; representedClassBox.DataContext = ((PSM_ClassController)SelectedClassController).Class; appearance.SetElement(c.Controller.DiagramController, c.ViewHelper); appearance.DisableEdit(); }
/// <summary> /// Displays currently PSM class in Properties window. /// </summary> /// <param name="c">psm class</param> private void DisplaySelectedPSMClass(XCaseViewBase c) { currentGrid = psmClassGrid; psmClassGrid.Display(c, MainWindowRef); psmClassGrid.Visibility = Visibility.Visible; }