public void Unfocus(IDiagramShapeUi diagramShapeUi)
        {
            if (_focusedDiagramShape != diagramShapeUi)
            {
                return;
            }

            AssignMiniButtonsTo(null);
        }
        public void Focus(IDiagramShapeUi diagramShapeUi)
        {
            if (_focusedDiagramShape == diagramShapeUi)
            {
                return;
            }

            AssignMiniButtonsTo(diagramShapeUi);
        }
Ejemplo n.º 3
0
        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);
            }
        }
Ejemplo n.º 8
0
 public override void AssociateWith(IDiagramShapeUi host)
 {
     base.AssociateWith(host);
     UpdateEnabledState();
 }