/*       / \
         *     // | \\
         *    /   |   \
         *        |           */
        static List<PanelObj> setupPanel()
        {
            List<PanelObj> list = new List<PanelObj>();
            PanelObj obj = new PanelObj();
            obj.name = "EventSizeLabel";
            obj.type = FormType.label;
            obj.text = "Event Size";
            obj.width = 58;
            obj.xSlot = 0;
            obj.ySlot = 0;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "EventSize";
            obj.type = FormType.doubleBox;
            obj.value = "99";
            obj.width = 106;
            obj.xSlot = 1;
            obj.ySlot = 0;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "EventTimeLabel";
            obj.type = FormType.label;
            obj.text = "Event Start Time (s)";
            obj.width = 58;
            obj.xSlot = 0;
            obj.ySlot = 1;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "EventMeanTime";
            obj.type = FormType.doubleBox;
            obj.value = "30";
            obj.width = 106;
            obj.xSlot = 1;
            obj.ySlot = 1;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "EventFreqLabel";
            obj.type = FormType.label;
            obj.text = "Event Freq (Hz)";
            obj.width = 58;
            obj.xSlot = 0;
            obj.ySlot = 2;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "EventFreq";
            obj.type = FormType.doubleBox;
            obj.value = "0.1";
            obj.width = 106;
            obj.xSlot = 1;
            obj.ySlot = 2;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "NumOccurancesLabel";
            obj.type = FormType.label;
            obj.text = "Number of Events";
            obj.width = 58;
            obj.xSlot = 0;
            obj.ySlot = 3;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "NumOccurances";
            obj.type = FormType.intBox;
            obj.value = "10";
            obj.width = 106;
            obj.xSlot = 1;
            obj.ySlot = 3;
            list.Add(obj);

            return list;
        }
        // A concrete factory class to create FloodingQueryNode objects.
        public static List<PanelObj> setupPanel()
        {
            List<PanelObj> list = new List<PanelObj>();

            PanelObj obj = new PanelObj();
            obj.name = "label_EMPTY";
            obj.type = FormType.label;
            obj.text = "";
            obj.width = 58;
            obj.xSlot = 0;
            obj.ySlot = 0;
            list.Add(obj);

            return list;
        }
        // This module implements the Application Event Generator by generating a random event somewhere
        // in the field with the provided effective radius. This is then passed to each node that exists
        // within the affected area.
        static List<PanelObj> setupPanel()
        {
            List<PanelObj> list = new List<PanelObj>();
            PanelObj obj = new PanelObj();
            obj.name = "EventSizeLabel";
            obj.type = FormType.label;
            obj.text = "Event Size";
            obj.width = 58;
            obj.xSlot = 0;
            obj.ySlot = 0;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "EventSize";
            obj.type = FormType.doubleBox;
            obj.value = "750";
            obj.width = 106;
            obj.xSlot = 1;
            obj.ySlot = 0;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "EventTimeLabel";
            obj.type = FormType.label;
            obj.text = "Event μ Time (s)";
            obj.width = 58;
            obj.xSlot = 0;
            obj.ySlot = 1;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "EventMeanTime";
            obj.type = FormType.doubleBox;
            obj.value = "15";
            obj.width = 106;
            obj.xSlot = 1;
            obj.ySlot = 1;
            list.Add(obj);

            return list;
        }
        static List<PanelObj> setupPanel()
        {
            List<PanelObj> list = new List<PanelObj>();
            PanelObj obj = new PanelObj();
            obj.name = "DescLabel";
            obj.type = FormType.label;
            obj.text = "No Application / Detection will occur.";
            obj.width = 106;
            obj.xSlot = 0;
            obj.ySlot = 0;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "LabelEndTime";
            obj.type = FormType.label;
            obj.text = "End Event Time (s)";
            obj.width = 106;
            obj.xSlot = 0;
            obj.ySlot = 1;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "EndTime";
            obj.type = FormType.doubleBox;
            obj.value = "300";
            obj.width = 106;
            obj.xSlot = 1;
            obj.ySlot = 1;
            list.Add(obj);

            return list;
        }
        // RandomDeployer sets a certain number of nodes randomly about the field (assuring no overlaps)
        static List<PanelObj> setupPanel()
        {
            List<PanelObj> list = new List<PanelObj>();
            PanelObj obj = new PanelObj();
            obj.name = "Archimedean Intro";
            obj.type = FormType.label;
            obj.text = "Archimedean Spiral of form r=a+bθ";
            obj.width = 200;
            obj.xSlot = 0;
            obj.ySlot = 0;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "aLabel";
            obj.type = FormType.label;
            obj.text = "a";
            obj.width = 58;
            obj.xSlot = 0;
            obj.ySlot = 1;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "a";
            obj.type = FormType.intBox;
            obj.value = "0";
            obj.width = 106;
            obj.xSlot = 1;
            obj.ySlot = 1;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "bLabel";
            obj.type = FormType.label;
            obj.text = "b";
            obj.width = 58;
            obj.xSlot = 0;
            obj.ySlot = 2;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "b";
            obj.type = FormType.doubleBox;
            obj.value = "80";
            obj.width = 106;
            obj.xSlot = 1;
            obj.ySlot = 2;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "NodeDistanceLabel";
            obj.type = FormType.label;
            obj.text = "Node Scroll Dist (m)";
            obj.width = 58;
            obj.xSlot = 0;
            obj.ySlot = 3;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "NodeDistance";
            obj.type = FormType.doubleBox;
            obj.value = "750";
            obj.width = 106;
            obj.xSlot = 1;
            obj.ySlot = 3;
            list.Add(obj);

            return list;
        }
        /*       / \
         *     // | \\
         *    /   |   \
         *        |           */
        static List<PanelObj> setupPanel()
        {
            List<PanelObj> list = new List<PanelObj>();

            PanelObj obj = new PanelObj();
            obj.name = "label_NUM_ID_BYTES";
            obj.type = FormType.label;
            obj.text = "ID Size (Bytes)";
            obj.width = 58;
            obj.xSlot = 0;
            obj.ySlot = 0;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "NUM_ID_BYTES";
            obj.type = FormType.intBox;
            obj.value = "1";
            obj.width = 106;
            obj.xSlot = 1;
            obj.ySlot = 0;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "label_RANDOM_WAIT";
            obj.type = FormType.label;
            obj.text = "Random Wait Timer (s)";
            obj.width = 58;
            obj.xSlot = 0;
            obj.ySlot = 1;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "RANDOM_WAIT";
            obj.type = FormType.doubleBox;
            obj.value = "0.250";
            obj.width = 106;
            obj.xSlot = 1;
            obj.ySlot = 1;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "label_TIMER_ACK";
            obj.type = FormType.label;
            obj.text = "ACK Wait Timer (s)";
            obj.width = 58;
            obj.xSlot = 0;
            obj.ySlot = 2;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "TIMER_ACK";
            obj.type = FormType.doubleBox;
            obj.value = "5.0";
            obj.width = 106;
            obj.xSlot = 1;
            obj.ySlot = 2;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "label_TIMER_BUILDTREE";
            obj.type = FormType.label;
            obj.text = "BuildTree Start Time (s)";
            obj.width = 58;
            obj.xSlot = 0;
            obj.ySlot = 3;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "TIMER_BUILDTREE";
            obj.type = FormType.doubleBox;
            obj.value = "1.0";
            obj.width = 106;
            obj.xSlot = 1;
            obj.ySlot = 3;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "label_TIMER_HELLO";
            obj.type = FormType.label;
            obj.text = "Hello Timer (s)";
            obj.width = 58;
            obj.xSlot = 0;
            obj.ySlot = 4;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "TIMER_HELLO";
            obj.type = FormType.doubleBox;
            obj.value = "1250.0";
            obj.width = 106;
            obj.xSlot = 1;
            obj.ySlot = 4;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "label_TIMER_SEARCH";
            obj.type = FormType.label;
            obj.text = "Search Wait Timer (s)";
            obj.xSlot = 0;
            obj.ySlot = 5;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "TIMER_SEARCH";
            obj.type = FormType.doubleBox;
            obj.value = "5.0";
            obj.width = 106;
            obj.xSlot = 1;
            obj.ySlot = 5;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "label_TIMER_SUBSCRIBE";
            obj.type = FormType.label;
            obj.text = "Subscribe Start Time (s)";
            obj.xSlot = 0;
            obj.ySlot = 6;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "TIMER_SUBSCRIBE";
            obj.type = FormType.doubleBox;
            obj.value = "15.0";
            obj.width = 106;
            obj.xSlot = 1;
            obj.ySlot = 6;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "CHECK_HELLOSUPPRESS";
            obj.type = FormType.check;
            obj.text = "Suppress Hello Reports";
            obj.value = "true";
            obj.width = 106;
            obj.xSlot = 0;
            obj.ySlot = 7;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "label_HELLOSUPPRESS";
            obj.type = FormType.label;
            obj.text = "(Also reduces text output)";
            obj.xSlot = 0;
            obj.ySlot = 8;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "CHECK_EXPLICIT_COLLISIONS";
            obj.type = FormType.check;
            obj.text = "Explicit Collisions (UWA Phys Proc)";
            obj.value = "false";
            obj.width = 106;
            obj.xSlot = 0;
            obj.ySlot = 9;
            list.Add(obj);

            /*obj = new PanelObj();
            obj.name = "INFO_REPORTS";
            obj.type = FormType.check;
            obj.text = "Informational Reports On/Off";
            obj.value = "true";
            obj.width = 106;
            obj.xSlot = 0;
            obj.ySlot = 10;
            list.Add(obj);*/

            obj = new PanelObj();
            obj.name = "NODE_REPORTS";
            obj.type = FormType.check;
            obj.text = "Node Reports On/Off";
            obj.value = "false";
            obj.width = 106;
            obj.xSlot = 0;
            obj.ySlot = 10;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "SINK_REPORTS";
            obj.type = FormType.check;
            obj.text = "Sink Reports On/Off";
            obj.value = "true";
            obj.width = 106;
            obj.xSlot = 0;
            obj.ySlot = 11;
            list.Add(obj);

            return list;
        }
        // This class creates a single MersenneTwister, recording the seed, and randomly generates the seeds for each
        // additional MersenneTwister object.
        static List<PanelObj> setupPanel()
        {
            List<PanelObj> list = new List<PanelObj>();
            PanelObj obj = new PanelObj();
            obj.name = "SpecifySeed";
            obj.type = FormType.check;
            obj.value = "False";
            obj.text = "Specify Seed?";
            obj.width = 58;
            obj.xSlot = 0;
            obj.ySlot = 0;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "SeedLabel";
            obj.type = FormType.label;
            obj.text = "Seed";
            obj.width = 106;
            obj.xSlot = 0;
            obj.ySlot = 1;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "Seed";
            obj.type = FormType.intBox;
            obj.value = "";
            obj.width = 106;
            obj.xSlot = 1;
            obj.ySlot = 1;
            list.Add(obj);

            return list;
        }
        static List<PanelObj> setupPanel()
        {
            List<PanelObj> list = new List<PanelObj>();

            PanelObj obj = new PanelObj();
            obj.name = "cLabel";
            obj.type = FormType.label;
            obj.text = "Speed of Sound (m/s)";
            obj.width = 70;
            obj.xSlot = 0;
            obj.ySlot = 0;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "SoundSpeed";
            obj.type = FormType.doubleBox;
            obj.value = "1500.0";
            obj.width = 106;
            obj.xSlot = 1;
            obj.ySlot = 0;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "bitrateLabel";
            obj.type = FormType.label;
            obj.text = "Bitrate (bits/s)";
            obj.width = 70;
            obj.xSlot = 0;
            obj.ySlot = 1;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "Bitrate";
            obj.type = FormType.doubleBox;
            obj.value = "2400.0";
            obj.width = 106;
            obj.xSlot = 1;
            obj.ySlot = 1;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "procdelayLabel";
            obj.type = FormType.label;
            obj.text = "Processing Delay (s)";
            obj.width = 70;
            obj.xSlot = 0;
            obj.ySlot = 2;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "ProcessingDelay";
            obj.type = FormType.doubleBox;
            obj.value = "0.001";
            obj.width = 106;
            obj.xSlot = 1;
            obj.ySlot = 2;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "spreadingCoefLabel";
            obj.type = FormType.label;
            obj.text = "Spreading Coefficient (k)";
            obj.width = 70;
            obj.xSlot = 0;
            obj.ySlot = 3;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "spreadingCoef";
            obj.type = FormType.doubleBox;
            obj.value = "1.5";
            obj.width = 106;
            obj.xSlot = 1;
            obj.ySlot = 3;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "transmitPowerLabel";
            obj.type = FormType.label;
            obj.text = "Xmit Power (dB SPL)";
            obj.width = 70;
            obj.xSlot = 0;
            obj.ySlot = 4;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "transmitPower";
            obj.type = FormType.doubleBox;
            obj.value = "120";
            obj.width = 106;
            obj.xSlot = 1;
            obj.ySlot = 4;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "receivePowerLabel";
            obj.type = FormType.label;
            obj.text = "Rcv Min (dB SPL)";
            obj.width = 70;
            obj.xSlot = 0;
            obj.ySlot = 5;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "receivePower";
            obj.type = FormType.doubleBox;
            obj.value = "80";
            obj.width = 106;
            obj.xSlot = 1;
            obj.ySlot = 5;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "freqLabel";
            obj.type = FormType.label;
            obj.text = "Frequency (Hz)";
            obj.width = 70;
            obj.xSlot = 0;
            obj.ySlot = 6;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "frequency";
            obj.type = FormType.doubleBox;
            obj.value = "20000";
            obj.width = 106;
            obj.xSlot = 1;
            obj.ySlot = 6;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "noiseLevelLabel";
            obj.type = FormType.label;
            obj.text = "Amb. Noise (dB SPL)";
            obj.width = 70;
            obj.xSlot = 0;
            obj.ySlot = 7;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "noiseLevel";
            obj.type = FormType.doubleBox;
            obj.value = "20";
            obj.width = 106;
            obj.xSlot = 1;
            obj.ySlot = 7;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "overheadBytesLabel";
            obj.type = FormType.label;
            obj.text = "L2 Overhead (Bytes)";
            obj.width = 70;
            obj.xSlot = 0;
            obj.ySlot = 8;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "OverheadBytes";
            obj.type = FormType.intBox;
            obj.value = "4";
            obj.width = 106;
            obj.xSlot = 1;
            obj.ySlot = 8;
            list.Add(obj);

            return list;
        }
        // RandomTestDeployer sets a certain number of nodes randomly about the field (assuring no overlaps)
        // Node 0 (Sink) is set at Xmax and (Ymax-Ymin)/2
        // Nodes 1-5 (Sources) are set at Xmin and (n-1)*(Ymax-Ymin)/4
        static List<PanelObj> setupPanel()
        {
            List<PanelObj> list = new List<PanelObj>();
            PanelObj obj = new PanelObj();
            obj.name = "NumNodesLabel";
            obj.type = FormType.label;
            obj.text = "# Nodes";
            obj.width = 58;
            obj.xSlot = 0;
            obj.ySlot = 0;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "NumNodes";
            obj.type = FormType.intBox;
            obj.value = "100";
            obj.width = 106;
            obj.xSlot = 1;
            obj.ySlot = 0;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "PaddingLabel";
            obj.type = FormType.label;
            obj.text = "Edge Padding (m)";
            obj.width = 58;
            obj.xSlot = 0;
            obj.ySlot = 1;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "Padding";
            obj.type = FormType.doubleBox;
            obj.value = "0";
            obj.width = 106;
            obj.xSlot = 1;
            obj.ySlot = 1;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "MinDistanceLabel";
            obj.type = FormType.label;
            obj.text = "Min Node Distance (m)";
            obj.width = 58;
            obj.xSlot = 0;
            obj.ySlot = 2;
            list.Add(obj);

            obj = new PanelObj();
            obj.name = "MinDistance";
            obj.type = FormType.doubleBox;
            obj.value = "100";
            obj.width = 106;
            obj.xSlot = 1;
            obj.ySlot = 2;
            list.Add(obj);

            return list;
        }