private void StopActiveInteractionsThatShouldStop(DiagramInteractionEventArguments interaction) { var activeInteractors = ActiveDiagramInteractors.ToArray(); foreach (var activeInteractor in activeInteractors) { TryStoppingInteraction(interaction, activeInteractor); } }
private void SendInteractionToActiveInteractions(DiagramInteractionEventArguments interaction) { var activeInteractors = ActiveDiagramInteractors.ToArray(); foreach (var activeInteractor in activeInteractors) { activeInteractor.ProcessInteraction(interaction); } }
private void SendInteractionToInteractors(DiagramInteractionEventArguments interaction) { if (!ActiveDiagramInteractors.Any()) { StartAndProcessInteractionsThatShouldStart(interaction); } else { SendInteractionToActiveInteractions(interaction); StopActiveInteractionsThatShouldStop(interaction); } }
private bool TryStoppingInteraction(DiagramInteractionEventArguments interaction, DiagramInteractor activeInteractor) { var didInteractionStop = activeInteractor.ShouldStopInteraction(interaction); if (didInteractionStop) { activeInteractor.StopInteraction(interaction); ActiveDiagramInteractors.Remove(activeInteractor); ActiveDiagramInteractorNames.Remove(activeInteractor.GetType().Name); } return(didInteractionStop); }
private void StartAndProcessInteractionsThatShouldStart(DiagramInteractionEventArguments interaction) { foreach (var interactor in WeightedDiagramInteractors) { if (interactor.ShouldStartInteraction(interaction)) { interactor.StartInteraction(interaction); ActiveDiagramInteractors.Add(interactor); ActiveDiagramInteractorNames.Add(interactor.GetType().Name); interactor.ProcessInteraction(interaction); if (!TryStoppingInteraction(interaction, interactor)) { break; } } } }