private void cbScaleFunction_SelectedIndexChanged(object sender, EventArgs e)
        {
            switch (cbScaleFunction.SelectedIndex)
            {
            case 0:
                selectedFunction = GraphScaleFunction.Maximum;
                break;

            case 1:
                selectedFunction = GraphScaleFunction.AverageOver2;
                break;
            }
        }
        public void Initialise(GraphCanvas canvas, List <string> filters)
        {
            _canvas = canvas;
            cbGraphType.Items.AddRange(new object[] { "Line Graph", "Scatter Plot", "Solid Graph" });
            cbScaleFunction.Items.AddRange(new object[] { "Maximum", "Average" });
            cbScaleTarget.Items.AddRange(new object[] { "Data Volume", "Packet Count" });

            foreach (var f in filters)
            {
                cbScaleTarget.Items.Add("Filter: " + f);
            }

            selectedType     = _canvas.GraphType;
            selectedFunction = _canvas.ScaleFunction.Function;
            selectedTarget   = _canvas.ScaleFunction.Target;
            filter           = _canvas.ScaleFunction.FilterIndex;

            switch (_canvas.GraphType)
            {
            case GraphType.LineGraph:
                cbGraphType.SelectedIndex = 0;
                break;

            case GraphType.ScatterPlot:
                cbGraphType.SelectedIndex = 1;
                break;

            case GraphType.SolidGraph:
                cbGraphType.SelectedIndex = 2;
                break;

            default:
                throw new ArgumentOutOfRangeException("type");
            }


            switch (_canvas.ScaleFunction.Function)
            {
            case GraphScaleFunction.Maximum:
                cbScaleFunction.SelectedIndex = 0;
                break;

            case GraphScaleFunction.AverageOver2:
                cbScaleFunction.SelectedIndex = 1;
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            switch (_canvas.ScaleFunction.Target)
            {
            case GraphScaleTarget.DataVolume:
                cbScaleTarget.SelectedIndex = 0;
                break;

            case GraphScaleTarget.PacketCount:
                cbScaleTarget.SelectedIndex = 1;
                break;

            case GraphScaleTarget.MatchingCount:
                cbScaleTarget.SelectedIndex = 2 + filter;
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
 public GraphScaleConfig(GraphScaleFunction function, GraphScaleTarget target, int filterIndex = 0) : this()
 {
     Function    = function;
     Target      = target;
     FilterIndex = filterIndex;
 }