public void Unfocus(IDiagramShapeUi diagramShapeUi) { if (_focusedDiagramShape != diagramShapeUi) { return; } AssignMiniButtonsTo(null); }
public void Focus(IDiagramShapeUi diagramShapeUi) { if (_focusedDiagramShape == diagramShapeUi) { return; } AssignMiniButtonsTo(diagramShapeUi); }
public IEnumerable <IMiniButton> CreateForDiagramShape(IDiagramShapeUi diagramShapeUi) { if (!(diagramShapeUi is IDiagramNodeUi diagramNodeUi)) { yield break; } yield return(new CloseMiniButtonViewModel(_modelEventSource, _diagramEventSource)); foreach (var entityRelationType in _relatedNodeTypeProvider.GetRelatedNodeTypes(diagramNodeUi.DiagramNode.ModelNode.Stereotype)) { yield return(new RelatedNodeMiniButtonViewModel(_modelEventSource, _diagramEventSource, entityRelationType)); } }
public MiniButtonPanelViewModel([NotNull] IMiniButtonFactory miniButtonFactory) { _miniButtonFactory = miniButtonFactory; _miniButtonViewModelCache = new Dictionary <string, ObservableCollection <MiniButtonViewModelBase> >(); _cacheLockObject = new object(); _focusedDiagramShape = null; _isFocusPinned = false; MiniButtonViewModels = new ObservableCollection <MiniButtonViewModelBase>(); MouseFocusChangedCommand = new DelegateCommand <IDiagramShapeUi>(OnMouseFocusChanged); }
private ObservableCollection <MiniButtonViewModelBase> GetMiniButtonsFor([NotNull] IDiagramShapeUi diagramShapeUi) { lock (_cacheLockObject) { var hostType = diagramShapeUi.StereotypeName; if (_miniButtonViewModelCache.ContainsKey(hostType)) { return(_miniButtonViewModelCache[hostType]); } var miniButtonViewModels = new ObservableCollection <MiniButtonViewModelBase>( _miniButtonFactory.CreateForDiagramShape(diagramShapeUi).OfType <MiniButtonViewModelBase>() ); _miniButtonViewModelCache.Add(hostType, miniButtonViewModels); return(miniButtonViewModels); } }
private void AssignMiniButtonsTo(IDiagramShapeUi diagramShapeUi) { FocusedDiagramShape = diagramShapeUi; if (diagramShapeUi == null) { MiniButtonViewModels = null; } else { MiniButtonViewModels = GetMiniButtonsFor(diagramShapeUi); foreach (var miniButton in MiniButtonViewModels) { miniButton.AssociateWith(diagramShapeUi); } } }
private void OnMouseFocusChanged(IDiagramShapeUi diagramShapeUi) { _mouseFocusedDiagramShapeUi = diagramShapeUi; if (_isFocusPinned) { return; } if (diagramShapeUi == null) { UnfocusAll(); } else { Focus(diagramShapeUi); } }
public override void AssociateWith(IDiagramShapeUi host) { base.AssociateWith(host); UpdateEnabledState(); }