/// <summary> /// Initializes a new instance of the <see cref="HighlightAlgorithmBase{TVertex,TEdge,TGraph,TParameters}"/> class. /// </summary> /// <param name="controller">Highlight controller.</param> /// <param name="parameters">Highlight algorithm parameters.</param> protected HighlightAlgorithmBase( [NotNull] IHighlightController <TVertex, TEdge, TGraph> controller, [CanBeNull] IHighlightParameters parameters) { Controller = controller ?? throw new ArgumentNullException(nameof(controller)); TrySetParameters(parameters); }
protected HighlightAlgorithmBase( IHighlightController <TVertex, TEdge, TGraph> controller, IHighlightParameters parameters) { Controller = controller; TrySetParameters(parameters); }
/// <inheritdoc /> public IHighlightAlgorithm <TVertex, TEdge> CreateAlgorithm( string highlightMode, IHighlightContext <TVertex, TEdge, TGraph> context, IHighlightController <TVertex, TEdge, TGraph> controller, IHighlightParameters parameters) { if (highlightMode is null) { throw new ArgumentNullException(nameof(highlightMode)); } if (context is null) { throw new ArgumentNullException(nameof(context)); } if (controller is null) { throw new ArgumentNullException(nameof(controller)); } switch (highlightMode) { case SimpleMode: return(new SimpleHighlightAlgorithm <TVertex, TEdge, TGraph>(controller, parameters)); } return(null); }
protected HighlightAlgorithmBase( IHighlightController <TVertex, TEdge, TGraph> controller, IHighlightParameters parameters) { Contract.Requires(IsParametersSettable(parameters), "Wrong parameters, not settable."); Controller = controller; TrySetParameters(parameters); }
public IHighlightParameters CreateParameters(string highlightMode, IHighlightParameters oldParameters) { switch (highlightMode) { case "Simple": return(new HighlightParameterBase()); default: return(new HighlightParameterBase()); } }
public IHighlightAlgorithm <TVertex, TEdge, TGraph> CreateAlgorithm(string highlightMode, IHighlightContext <TVertex, TEdge, TGraph> context, IHighlightController <TVertex, TEdge, TGraph> controller, IHighlightParameters parameters) { if (string.IsNullOrEmpty(highlightMode) || highlightMode == HighlightModeName) { return(new ReachableHighlightAlgorithm <TVertex, TEdge, TGraph>(controller, parameters)); } return(null); }
protected static void HighlightAlgorithmTypePropertyChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e) { var gl = (GraphLayout <TVertex, TEdge, TGraph>)obj; string newAlgoType = e.NewValue == null ? string.Empty : e.NewValue.ToString(); //regenerate algorithm, parameters IHighlightParameters parameters = gl.HighlightAlgorithmFactory.CreateParameters(newAlgoType, gl.HighlightParameters); gl.HighlightAlgorithm = gl.HighlightAlgorithmFactory.CreateAlgorithm(newAlgoType, gl.CreateHighlightContext(), gl, parameters); }
public IHighlightAlgorithm <TVertex, TEdge, TGraph> CreateAlgorithm( string highlightMode, IHighlightContext <TVertex, TEdge, TGraph> context, IHighlightController <TVertex, TEdge, TGraph> controller, IHighlightParameters parameters) { switch (highlightMode) { case "Simple": return(new SimpleHighlightAlgorithm <TVertex, TEdge, TGraph>(controller, parameters)); default: return(null); } }
/// <inheritdoc /> public IHighlightParameters CreateParameters(string highlightMode, IHighlightParameters parameters) { if (highlightMode is null) { throw new ArgumentNullException(nameof(highlightMode)); } switch (highlightMode) { case "": case SimpleMode: return(new HighlightParameters()); } return(null); }
public IHighlightParameters CreateParameters(string highlightMode, IHighlightParameters oldParameters) { switch (highlightMode) { case "Simple": return(new HighlightParameterBase()); case "Hierarchical": return(new HighlightParameterBase()); case "Undirected": return(oldParameters.CreateNewParameter <UndirectedHighlightParameters>()); default: return(new HighlightParameterBase()); } }
public bool TrySetParameters(IHighlightParameters parameters) { if (IsParametersSettable(parameters)) { if (Parameters != null) { Parameters.PropertyChanged -= OnParameterPropertyChanged; } Parameters = (TParameters)parameters; if (Parameters != null) { Parameters.PropertyChanged += OnParameterPropertyChanged; } return(true); } return(false); }
public TestHighlightAlgorithm( [NotNull] TestHighlightController controller, [CanBeNull] IHighlightParameters parameters) : base(controller, parameters) { }
// Methods public ReachableHighlightAlgorithm(IHighlightController <TVertex, TEdge, TGraph> controller, IHighlightParameters parameters) : base(controller, parameters) { }
public bool IsParametersSettable(IHighlightParameters parameters) { return(parameters != null && parameters is TParameters); }
/// <summary> /// Initializes a new instance of the <see cref="SimpleHighlightAlgorithm{TVertex,TEdge,TGraph}"/> class. /// </summary> /// <param name="controller">Highlight controller.</param> /// <param name="parameters">Highlight algorithm parameters.</param> public SimpleHighlightAlgorithm( [NotNull] IHighlightController <TVertex, TEdge, TGraph> controller, [CanBeNull] IHighlightParameters parameters) : base(controller, parameters) { }
public IHighlightParameters CreateParameters(string highlightMode, IHighlightParameters oldParameters) { return(new HighlightParameterBase()); }
public HierarchicalHighlightAlgorithm(IHighlightController <TVertex, TEdge, TGraph> controller, IHighlightParameters parameters) : base(controller, parameters) { }
public void StandardFactory() { var graph = new BidirectionalGraph <int, Edge <int> >(); var context = new TestHighlightContext(graph); var controller = new TestHighlightController(graph); var factory = new StandardHighlightAlgorithmFactory <int, Edge <int>, BidirectionalGraph <int, Edge <int> > >(); CollectionAssert.AreEqual(new[] { "Simple" }, factory.HighlightModes); Assert.IsNull( factory.CreateAlgorithm( string.Empty, context, controller, new HighlightParameters())); Assert.IsInstanceOf <SimpleHighlightAlgorithm <int, Edge <int>, BidirectionalGraph <int, Edge <int> > > >( factory.CreateAlgorithm( "Simple", context, controller, new HighlightParameters())); Assert.IsInstanceOf <SimpleHighlightAlgorithm <int, Edge <int>, BidirectionalGraph <int, Edge <int> > > >( factory.CreateAlgorithm( "Simple", context, controller, null)); var parameters = new HighlightParameters(); IHighlightParameters createdParameters = factory.CreateParameters(string.Empty, parameters); Assert.IsInstanceOf <HighlightParameters>(createdParameters); Assert.AreNotSame(parameters, createdParameters); createdParameters = factory.CreateParameters("Simple", parameters); Assert.IsInstanceOf <HighlightParameters>(createdParameters); Assert.AreNotSame(parameters, createdParameters); createdParameters = factory.CreateParameters("Simple", null); Assert.IsInstanceOf <HighlightParameters>(createdParameters); Assert.AreNotSame(parameters, createdParameters); createdParameters = factory.CreateParameters("NotExist", null); Assert.IsNull(createdParameters); Assert.IsFalse(factory.IsValidMode(null)); Assert.IsTrue(factory.IsValidMode(string.Empty)); Assert.IsTrue(factory.IsValidMode("Simple")); Assert.IsFalse(factory.IsValidMode("simple")); var algorithm1 = new TestHighlightAlgorithm(controller, new HighlightParameters()); Assert.IsNull(factory.GetHighlightMode(algorithm1)); var algorithm2 = new SimpleHighlightAlgorithm <int, Edge <int>, BidirectionalGraph <int, Edge <int> > >(controller, new HighlightParameters()); Assert.AreEqual("Simple", factory.GetHighlightMode(algorithm2)); }