コード例 #1
0
 /// <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);
 }
コード例 #2
0
 protected HighlightAlgorithmBase(
     IHighlightController <TVertex, TEdge, TGraph> controller,
     IHighlightParameters parameters)
 {
     Controller = controller;
     TrySetParameters(parameters);
 }
コード例 #3
0
        /// <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);
        }
コード例 #4
0
 protected HighlightAlgorithmBase(
     IHighlightController <TVertex, TEdge, TGraph> controller,
     IHighlightParameters parameters)
 {
     Contract.Requires(IsParametersSettable(parameters), "Wrong parameters, not settable.");
     Controller = controller;
     TrySetParameters(parameters);
 }
コード例 #5
0
        public IHighlightParameters CreateParameters(string highlightMode, IHighlightParameters oldParameters)
        {
            switch (highlightMode)
            {
            case "Simple":
                return(new HighlightParameterBase());

            default:
                return(new HighlightParameterBase());
            }
        }
コード例 #6
0
 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);
 }
コード例 #7
0
        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);
        }
コード例 #8
0
        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);
            }
        }
コード例 #9
0
        /// <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());
            }
        }
コード例 #11
0
 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);
 }
コード例 #12
0
 public TestHighlightAlgorithm(
     [NotNull] TestHighlightController controller,
     [CanBeNull] IHighlightParameters parameters)
     : base(controller, parameters)
 {
 }
コード例 #13
0
 // Methods
 public ReachableHighlightAlgorithm(IHighlightController <TVertex, TEdge, TGraph> controller,
                                    IHighlightParameters parameters) : base(controller, parameters)
 {
 }
コード例 #14
0
 public bool IsParametersSettable(IHighlightParameters parameters)
 {
     return(parameters != null && parameters is TParameters);
 }
コード例 #15
0
 /// <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)
 {
 }
コード例 #16
0
 public IHighlightParameters CreateParameters(string highlightMode, IHighlightParameters oldParameters)
 {
     return(new HighlightParameterBase());
 }
コード例 #17
0
 public HierarchicalHighlightAlgorithm(IHighlightController <TVertex, TEdge, TGraph> controller, IHighlightParameters parameters)
     : base(controller, parameters)
 {
 }
コード例 #18
0
        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));
        }