public GraphPresentation() { myModules = new List <object>(); myModules.Add(new PropertySetModule <ToolTipContent>(id => new ToolTipContent(id, null))); myModules.Add(new PropertySetModule <Selection>(id => new Selection(id) { IsSelected = false })); // TODO: move translation from string to WPF entities to parser myModules.Add(new PropertySetModule <NodeStyle>(id => new NodeStyle(id))); myModules.Add(new PropertySetModule <EdgeStyle>(id => new EdgeStyle(id))); myModules.Add(new CaptionModule(id => new Caption(id, null))); myModules.Add(new GraphLayoutModule()); myModules.Add(new NodeMaskModule()); myModules.Add(new TransformationModule(this)); Picking = new PickingCache(this, new GraphPicking(this)); myNodeMaskModuleObserver = GetModule <INodeMaskModule>().CreateObserver(); myNodeMaskModuleObserver.ModuleChanged += OnModuleChanged; myTransformationModuleObserver = GetModule <ITransformationModule>().CreateObserver(); myTransformationModuleObserver.ModuleChanged += OnModuleChanged; }
public void Attach(IGraphPresentation presentation, Action <IGraphPresentation> writeDocument) { myWriteDocument = writeDocument; if (myTransformationsObserver != null) { myTransformationsObserver.ModuleChanged -= OnTransformationsChanged; myTransformationsObserver.Dispose(); myTransformationsObserver = null; } if (myCaptionsJournal != null) { myCaptionsJournal.ModuleChanged -= OnCaptionsChanged; myCaptionsJournal.Dispose(); myCaptionsJournal = null; } myPresentation = presentation; if (myPresentation != null) { var transformationModule = myPresentation.GetModule <ITransformationModule>(); myTransformationsObserver = transformationModule.CreateObserver(); myTransformationsObserver.ModuleChanged += OnTransformationsChanged; var captionsModule = myPresentation.GetModule <ICaptionModule>(); myCaptionsJournal = captionsModule.CreateJournal(); myCaptionsJournal.ModuleChanged += OnCaptionsChanged; } }
public NodeMaskModule() { myMasks = new ObservableCollection <INodeMask>(); myMasks.CollectionChanged += OnCollectionChanged; mySelfObserver = CreateObserver(); mySelfObserver.ModuleChanged += OnModuleChanged; }
public void Dispose() { if (myNodeMaskModuleObserver != null) { myNodeMaskModuleObserver.ModuleChanged -= OnGraphVisibilityChanged; myNodeMaskModuleObserver.Dispose(); myNodeMaskModuleObserver = null; } }
public ClusterFoldingTransformation(IGraphPresentation presentation) { myPresentation = presentation; myNodeMaskModuleObserver = myPresentation.GetModule <INodeMaskModule>().CreateObserver(); myNodeMaskModuleObserver.ModuleChanged += OnGraphVisibilityChanged; myFoldedClusters = new HashSet <string>(); myComputedEdges = new Dictionary <string, ComputedEdge>(); }
protected override void OnModelPropertyChanged(string propertyName) { RaisePropertyChanged(propertyName); if (propertyName == "Presentation") { RemoveNodeCommand.RaiseCanExecuteChanged(); RemoveAllButCommand.RaiseCanExecuteChanged(); ShowCyclesCommand.RaiseCanExecuteChanged(); RemoveNodesWithoutSourcesCommand.RaiseCanExecuteChanged(); RemoveNodesWithoutTargetsCommand.RaiseCanExecuteChanged(); RemoveNodesWithoutSiblingsCommand.RaiseCanExecuteChanged(); ShowNodesOutsideClustersCommand.RaiseCanExecuteChanged(); FoldUnfoldAllClustersCommand.RaiseCanExecuteChanged(); AddVisibleNodesOutsideClustersToClusterCommand.RaiseCanExecuteChanged(); ClearSelectionCommand.RaiseCanExecuteChanged(); InvertSelectionCommand.RaiseCanExecuteChanged(); HomeCommand.RaiseCanExecuteChanged(); InvalidateLayoutCommand.RaiseCanExecuteChanged(); PrintGraphCommand.RaiseCanExecuteChanged(); BuildClustersMenu(); BuildSelectedNodesMenu(); if (myTransformationsModuleObserver != null) { mySelectionObserver.ModuleChanged -= OnSelectionChanged; mySelectionObserver.Dispose(); mySelectionObserver = null; myTransformationsModuleObserver.ModuleChanged -= OnTransformationsModuleChanged; myTransformationsModuleObserver.Dispose(); myTransformationsModuleObserver = null; } if (Presentation != null) { var transformations = Presentation.GetModule <ITransformationModule>(); myTransformationsModuleObserver = transformations.CreateObserver(); myTransformationsModuleObserver.ModuleChanged += OnTransformationsModuleChanged; mySelectionObserver = Presentation.GetPropertySetFor <Selection>().CreateObserver(); mySelectionObserver.ModuleChanged += OnSelectionChanged; } } }
protected override void OnModelPropertyChanged(string propertyName) { if (propertyName == "Presentation") { if (myPresentation == Model.Presentation) { return; } if (myTransformationsObserver != null) { myTransformationsObserver.ModuleChanged -= OnTransformationsChanged; myTransformationsObserver.Dispose(); } myPresentation = Model.Presentation; // first build tree - master for preview BuildTree(); // rebuild preview myPreviewNodes = null; if (Filter == null) { PreviewNodes.Refresh(); } else { Filter = null; } // register for updates only AFTER tree is built up completely to avoid getting notified by the built up process var transformationModule = Model.Presentation.GetModule <ITransformationModule>(); myTransformationsObserver = transformationModule.CreateObserver(); myTransformationsObserver.ModuleChanged += OnTransformationsChanged; } }