diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/misc/EmptyIcon.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/misc/EmptyIcon.java
deleted file mode 100644
index d4cfaf0fdec4ac0090d205fe3651ae8f4a5e4510..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/misc/EmptyIcon.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use 
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.misc;
-
-import java.awt.Component;
-import java.awt.Graphics;
-import javax.swing.Icon;
-
-/**
- * EmptyIcon.java created on Apr 27, 2017
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class EmptyIcon implements Icon
-{
-  private int width;
-  private int height;
-  
-  public EmptyIcon(int sz)
-  {
-    this(sz,sz);
-  }
-  
-  public EmptyIcon(int w, int h)
-  {
-    width = w;
-    height = h;
-  }
-  
-   @Override
-  public void paintIcon(Component c, Graphics g, int x, int y)
-  {
-  }
-
-  @Override
-  public int getIconWidth()
-  {
-    return width;
-  }
-
-  @Override
-  public int getIconHeight()
-  {
-    return height;
-  }
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/misc/StdAudio.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/misc/StdAudio.java
deleted file mode 100644
index 069942ce88b622d74b880352afae18378caca5ce..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/misc/StdAudio.java
+++ /dev/null
@@ -1,426 +0,0 @@
-/******************************************************************************
- *  Compilation:  javac StdAudio.java
- *  Execution:    java StdAudio
- *  Dependencies: none
- *  
- *  Simple library for reading, writing, and manipulating .wav files.
- *
- *
- *  Limitations
- *  -----------
- *    - Does not seem to work properly when reading .wav files from a .jar file.
- *    - Assumes the audio is monaural, with sampling rate of 44,100.
- * 
- *  Copyright © 2000–2017, Robert Sedgewick and Kevin Wayne. 
- ******************************************************************************/
-package edu.nps.moves.misc;
-import javax.sound.sampled.Clip;
-
-// for playing midi sound files on some older systems
-import java.applet.Applet;
-import java.applet.AudioClip;
-import java.net.MalformedURLException;
-
-import java.io.File;
-import java.io.ByteArrayInputStream;
-import java.io.InputStream;
-import java.io.IOException;
-
-import java.net.URL;
-
-import javax.sound.sampled.AudioFileFormat;
-import javax.sound.sampled.AudioFormat;
-import javax.sound.sampled.AudioInputStream;
-import javax.sound.sampled.AudioSystem;
-import javax.sound.sampled.DataLine;
-import javax.sound.sampled.LineUnavailableException;
-import javax.sound.sampled.SourceDataLine;
-import javax.sound.sampled.UnsupportedAudioFileException;
-
-/**
- *  <i>Standard audio</i>. This class provides a basic capability for
- *  creating, reading, and saving audio. 
- *  <p>
- *  The audio format uses a sampling rate of 44,100 (CD quality audio), 16-bit, monaural.
- *
- *  <p>
- *  For additional documentation, see <a href="http://introcs.cs.princeton.edu/15inout">Section 1.5</a> of
- *  <i>Computer Science: An Interdisciplinary Approach</i> by Robert Sedgewick and Kevin Wayne.
- *
- *  @author Robert Sedgewick
- *  @author Kevin Wayne
- */
-public final class StdAudio {
-
-    /**
-     *  The sample rate - 44,100 Hz for CD quality audio.
-     */
-    public static final int SAMPLE_RATE = 44100;
-
-    private static final int BYTES_PER_SAMPLE = 2;                // 16-bit audio
-    private static final int BITS_PER_SAMPLE = 16;                // 16-bit audio
-    private static final double MAX_16_BIT = Short.MAX_VALUE;     // 32,767
-    private static final int SAMPLE_BUFFER_SIZE = 4096;
-
-
-    private static SourceDataLine line;   // to play the sound
-    private static byte[] buffer;         // our internal buffer
-    private static int bufferSize = 0;    // number of samples currently in internal buffer
-
-    private StdAudio() {
-        // can not instantiate
-    }
-   
-    // static initializer
-    static {
-        init();
-    }
-
-    // open up an audio stream
-    private static void init() {
-        try {
-            // 44,100 samples per second, 16-bit audio, mono, signed PCM, little Endian
-            AudioFormat format = new AudioFormat((float) SAMPLE_RATE, BITS_PER_SAMPLE, 1, true, false);
-            DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);
-
-            line = (SourceDataLine) AudioSystem.getLine(info);
-            line.open(format, SAMPLE_BUFFER_SIZE * BYTES_PER_SAMPLE);
-            
-            // the internal buffer is a fraction of the actual buffer size, this choice is arbitrary
-            // it gets divided because we can't expect the buffered data to line up exactly with when
-            // the sound card decides to push out its samples.
-            buffer = new byte[SAMPLE_BUFFER_SIZE * BYTES_PER_SAMPLE/3];
-        }
-        catch (LineUnavailableException e) {
-            System.out.println(e.getMessage());
-        }
-
-        // no sound gets made before this call
-        line.start();
-    }
-
-
-    /**
-     * Closes standard audio.
-     */
-    public static void close() {
-        line.drain();
-        line.stop();
-    }
-    
-    /**
-     * Writes one sample (between -1.0 and +1.0) to standard audio.
-     * If the sample is outside the range, it will be clipped.
-     *
-     * @param  sample the sample to play
-     * @throws IllegalArgumentException if the sample is {@code Double.NaN}
-     */
-    public static void play(double sample) {
-
-        // clip if outside [-1, +1]
-        if (Double.isNaN(sample)) throw new IllegalArgumentException("sample is NaN");
-        if (sample < -1.0) sample = -1.0;
-        if (sample > +1.0) sample = +1.0;
-
-        // convert to bytes
-        short s = (short) (MAX_16_BIT * sample);
-        buffer[bufferSize++] = (byte) s;
-        buffer[bufferSize++] = (byte) (s >> 8);   // little Endian
-
-        // send to sound card if buffer is full        
-        if (bufferSize >= buffer.length) {
-            line.write(buffer, 0, buffer.length);
-            bufferSize = 0;
-        }
-    }
-
-    /**
-     * Writes the array of samples (between -1.0 and +1.0) to standard audio.
-     * If a sample is outside the range, it will be clipped.
-     *
-     * @param  samples the array of samples to play
-     * @throws IllegalArgumentException if any sample is {@code Double.NaN}
-     * @throws IllegalArgumentException if {@code samples} is {@code null}
-     */
-    public static void play(double[] samples) {
-        if (samples == null) throw new IllegalArgumentException("argument to play() is null");
-        for (int i = 0; i < samples.length; i++) {
-            play(samples[i]);
-        }
-    }
-
-    /**
-     * Reads audio samples from a file (in .wav or .au format) and returns
-     * them as a double array with values between -1.0 and +1.0.
-     *
-     * @param  filename the name of the audio file
-     * @return the array of samples
-     */
-    public static double[] read(String filename) {
-        byte[] data = readByte(filename);
-        int n = data.length;
-        double[] d = new double[n/2];
-        for (int i = 0; i < n/2; i++) {
-            d[i] = ((short) (((data[2*i+1] & 0xFF) << 8) + (data[2*i] & 0xFF))) / ((double) MAX_16_BIT);
-        }
-        return d;
-    }
-
-    // return data as a byte array
-    private static byte[] readByte(String filename) {
-        byte[] data = null;
-        AudioInputStream ais = null;
-        try {
-
-            // try to read from file
-            File file = new File(filename);
-            if (file.exists()) {
-                ais = AudioSystem.getAudioInputStream(file);
-                int bytesToRead = ais.available();
-                data = new byte[bytesToRead];
-                int bytesRead = ais.read(data);
-                if (bytesToRead != bytesRead)
-                    throw new IllegalStateException("read only " + bytesRead + " of " + bytesToRead + " bytes"); 
-            }
-
-            // try to read from URL
-            else {
-                URL url = StdAudio.class.getResource(filename);
-                ais = AudioSystem.getAudioInputStream(url);
-                int bytesToRead = ais.available();
-                data = new byte[bytesToRead];
-                int bytesRead = ais.read(data);
-                if (bytesToRead != bytesRead)
-                    throw new IllegalStateException("read only " + bytesRead + " of " + bytesToRead + " bytes"); 
-            }
-        }
-        catch (IOException e) {
-            throw new IllegalArgumentException("could not read '" + filename + "'", e);
-        }
-
-        catch (UnsupportedAudioFileException e) {
-            throw new IllegalArgumentException("unsupported audio format: '" + filename + "'", e);
-        }
-
-        return data;
-    }
-
-    /**
-     * Saves the double array as an audio file (using .wav or .au format).
-     *
-     * @param  filename the name of the audio file
-     * @param  samples the array of samples
-     * @throws IllegalArgumentException if unable to save {@code filename}
-     * @throws IllegalArgumentException if {@code samples} is {@code null}
-     */
-    public static void save(String filename, double[] samples) {
-        if (samples == null) {
-            throw new IllegalArgumentException("samples[] is null");
-        }
-
-        // assumes 44,100 samples per second
-        // use 16-bit audio, mono, signed PCM, little Endian
-        AudioFormat format = new AudioFormat(SAMPLE_RATE, 16, 1, true, false);
-        byte[] data = new byte[2 * samples.length];
-        for (int i = 0; i < samples.length; i++) {
-            int temp = (short) (samples[i] * MAX_16_BIT);
-            data[2*i + 0] = (byte) temp;
-            data[2*i + 1] = (byte) (temp >> 8);
-        }
-
-        // now save the file
-        try {
-            ByteArrayInputStream bais = new ByteArrayInputStream(data);
-            AudioInputStream ais = new AudioInputStream(bais, format, samples.length);
-            if (filename.endsWith(".wav") || filename.endsWith(".WAV")) {
-                AudioSystem.write(ais, AudioFileFormat.Type.WAVE, new File(filename));
-            }
-            else if (filename.endsWith(".au") || filename.endsWith(".AU")) {
-                AudioSystem.write(ais, AudioFileFormat.Type.AU, new File(filename));
-            }
-            else {
-                throw new IllegalArgumentException("unsupported audio format: '" + filename + "'");
-            }
-        }
-        catch (IOException ioe) {
-            throw new IllegalArgumentException("unable to save file '" + filename + "'", ioe);
-        }
-    }
-
-
-
-    /**
-     * Plays an audio file (in .wav, .mid, or .au format) in a background thread.
-     *
-     * @param filename the name of the audio file
-     * @throws IllegalArgumentException if unable to play {@code filename}
-     * @throws IllegalArgumentException if {@code filename} is {@code null}
-     */
-    public static synchronized void play(final String filename) {
-        if (filename == null) throw new IllegalArgumentException();
-
-        InputStream is = StdAudio.class.getResourceAsStream(filename);
-        if (is == null) {
-            throw new IllegalArgumentException("could not read '" + filename + "'");
-        }
-
-        // code adapted from: http://stackoverflow.com/questions/26305/how-can-i-play-sound-in-java
-        try {
-            // check if file format is supported
-            // (if not, will throw an UnsupportedAudioFileException)
-            AudioInputStream ais = AudioSystem.getAudioInputStream(is);
-
-            new Thread(new Runnable() {
-                @Override
-                public void run() {
-                    stream(filename);
-                }
-           }).start();
-        }
-
-        // let's try Applet.newAudioClip() instead
-        catch (UnsupportedAudioFileException e) {
-            playApplet(filename);
-            return;
-        }
-
-        // something else went wrong
-        catch (IOException ioe) {
-            throw new IllegalArgumentException("could not play '" + filename + "'", ioe);
-        }
-
-    }
-
-
-    // play sound file using Applet.newAudioClip();
-    private static void playApplet(String filename) {
-        URL url = null;
-        try {
-            File file = new File(filename);
-            if(file.canRead()) url = file.toURI().toURL();
-        }
-        catch (MalformedURLException e) {
-            throw new IllegalArgumentException("could not play '" + filename + "'", e);
-        }
-
-        // URL url = StdAudio.class.getResource(filename);
-        if (url == null) {
-            throw new IllegalArgumentException("could not play '" + filename + "'");
-        }
-
-        AudioClip clip = Applet.newAudioClip(url);
-        clip.play();
-    }
-
-    // https://www3.ntu.edu.sg/home/ehchua/programming/java/J8c_PlayingSound.html
-    // play a wav or aif file
-    // javax.sound.sampled.Clip fails for long clips (on some systems)
-    private static void stream(String filename) {
-        SourceDataLine line = null;
-        int BUFFER_SIZE = 4096; // 4K buffer
-
-        try {
-            InputStream is = StdAudio.class.getResourceAsStream(filename);
-            AudioInputStream ais = AudioSystem.getAudioInputStream(is);
-            AudioFormat audioFormat = ais.getFormat();
-            DataLine.Info info = new DataLine.Info(SourceDataLine.class, audioFormat);
-            line = (SourceDataLine) AudioSystem.getLine(info);
-            line.open(audioFormat);
-            line.start();
-            byte[] samples = new byte[BUFFER_SIZE];
-            int count = 0;
-            while ((count = ais.read(samples, 0, BUFFER_SIZE)) != -1) {
-                line.write(samples, 0, count);
-            }
-        }
-        catch (IOException e) {
-            e.printStackTrace();
-        }
-        catch (UnsupportedAudioFileException e) {
-            e.printStackTrace();
-        }
-        catch (LineUnavailableException e) {
-            e.printStackTrace();
-        }
-        finally {
-            if (line != null) {
-                line.drain();
-                line.close();
-            }
-        }
-    }
-
-    /**
-     * Loops an audio file (in .wav, .mid, or .au format) in a background thread.
-     *
-     * @param filename the name of the audio file
-     * @throws IllegalArgumentException if {@code filename} is {@code null}
-     */
-    public static synchronized void loop(String filename) {
-        if (filename == null) throw new IllegalArgumentException();
-
-        // code adapted from: http://stackoverflow.com/questions/26305/how-can-i-play-sound-in-java
-        try {
-            Clip clip = AudioSystem.getClip();
-            InputStream is = StdAudio.class.getResourceAsStream(filename);
-            AudioInputStream ais = AudioSystem.getAudioInputStream(is);
-            clip.open(ais);
-            clip.loop(Clip.LOOP_CONTINUOUSLY);
-        }
-        catch (UnsupportedAudioFileException e) {
-            throw new IllegalArgumentException("unsupported audio format: '" + filename + "'", e);
-        }
-        catch (LineUnavailableException e) {
-            throw new IllegalArgumentException("could not play '" + filename + "'", e);
-        }
-        catch (IOException e) {
-            throw new IllegalArgumentException("could not play '" + filename + "'", e);
-        }
-    }
-
-
-   /***************************************************************************
-    * Unit tests {@code StdAudio}.
-    ***************************************************************************/
-
-    // create a note (sine wave) of the given frequency (Hz), for the given
-    // duration (seconds) scaled to the given volume (amplitude)
-    private static double[] note(double hz, double duration, double amplitude) {
-        int n = (int) (StdAudio.SAMPLE_RATE * duration);
-        double[] a = new double[n+1];
-        for (int i = 0; i <= n; i++)
-            a[i] = amplitude * Math.sin(2 * Math.PI * i * hz / StdAudio.SAMPLE_RATE);
-        return a;
-    }
-
-    /**
-     * Test client - play an A major scale to standard audio.
-     *
-     * @param args the command-line arguments
-     */
-    /**
-     * Test client - play an A major scale to standard audio.
-     *
-     * @param args the command-line arguments
-     */
-    public static void main(String[] args) {
-        
-        // 440 Hz for 1 sec
-        double freq = 440.0;
-        for (int i = 0; i <= StdAudio.SAMPLE_RATE; i++) {
-            StdAudio.play(0.5 * Math.sin(2*Math.PI * freq * i / StdAudio.SAMPLE_RATE));
-        }
-        
-        // scale increments
-        int[] steps = { 0, 2, 4, 5, 7, 9, 11, 12 };
-        for (int i = 0; i < steps.length; i++) {
-            double hz = 440.0 * Math.pow(2, steps[i] / 12.0);
-            StdAudio.play(note(hz, 1.0, 0.5));
-        }
-
-
-        // need to call this in non-interactive stuff so the program doesn't terminate
-        // until all the sound leaves the speaker.
-        StdAudio.close(); 
-    }
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/misc/StretchIcon.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/misc/StretchIcon.java
deleted file mode 100644
index b04622d21f81c998755aba287859769b698b9298..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/misc/StretchIcon.java
+++ /dev/null
@@ -1,336 +0,0 @@
-
-
-package edu.nps.moves.misc;
-/**
- * @(#)StretchIcon.java	1.0 03/27/12
- */
-//package darrylbu.icon;
-
-import java.awt.Component;
-import java.awt.Container;
-import java.awt.Graphics;
-import java.awt.Image;
-import java.awt.Insets;
-import java.awt.image.ImageObserver;
-import java.net.URL;
-import javax.swing.ImageIcon;
-
-/**
- * An <CODE>Icon</CODE> that scales its image to fill the component area,
- * excluding any border or insets, optionally maintaining the image's aspect
- * ratio by padding and centering the scaled image horizontally or vertically.
- * <P>
- * The class is a drop-in replacement for <CODE>ImageIcon</CODE>, except that
- * the no-argument constructor is not supported.
- * <P>
- * As the size of the Icon is determined by the size of the component in which
- * it is displayed, <CODE>StretchIcon</CODE> must only be used in conjunction
- * with a component and layout that does not depend on the size of the
- * component's Icon.
- * 
- * @version 1.0 03/27/12
- * @author Darryl Burke
- */
-public class StretchIcon extends ImageIcon {
-
-  /**
-   * Determines whether the aspect ratio of the image is maintained.
-   * Set to <code>false</code> to allow th image to distort to fill the component.
-   */
-  protected boolean proportionate = true;
-
-  /**
-   * Creates a <CODE>StretchIcon</CODE> from an array of bytes.
-   *
-   * @param  imageData an array of pixels in an image format supported by
-   *             the AWT Toolkit, such as GIF, JPEG, or (as of 1.3) PNG
-   *
-   * @see ImageIcon#ImageIcon(byte[])
-   */
-  public StretchIcon(byte[] imageData) {
-    super(imageData);
-  }
-
-  /**
-   * Creates a <CODE>StretchIcon</CODE> from an array of bytes with the specified behavior.
-   *
-   * @param  imageData an array of pixels in an image format supported by
-   *             the AWT Toolkit, such as GIF, JPEG, or (as of 1.3) PNG
-   * @param proportionate <code>true</code> to retain the image's aspect ratio,
-   *        <code>false</code> to allow distortion of the image to fill the
-   *        component.
-   *
-   * @see ImageIcon#ImageIcon(byte[])
-   */
-  public StretchIcon(byte[] imageData, boolean proportionate) {
-    super(imageData);
-    this.proportionate = proportionate;
-  }
-
-  /**
-   * Creates a <CODE>StretchIcon</CODE> from an array of bytes.
-   *
-   * @param  imageData an array of pixels in an image format supported by
-   *             the AWT Toolkit, such as GIF, JPEG, or (as of 1.3) PNG
-   * @param  description a brief textual description of the image
-   *
-   * @see ImageIcon#ImageIcon(byte[], java.lang.String)
-   */
-  public StretchIcon(byte[] imageData, String description) {
-    super(imageData, description);
-  }
-
-  /**
-   * Creates a <CODE>StretchIcon</CODE> from an array of bytes with the specified behavior.
-   *
-   * @see ImageIcon#ImageIcon(byte[])
-   * @param  imageData an array of pixels in an image format supported by
-   *             the AWT Toolkit, such as GIF, JPEG, or (as of 1.3) PNG
-   * @param  description a brief textual description of the image
-   * @param proportionate <code>true</code> to retain the image's aspect ratio,
-   *        <code>false</code> to allow distortion of the image to fill the
-   *        component.
-   *
-   * @see ImageIcon#ImageIcon(byte[], java.lang.String)
-   */
-  public StretchIcon(byte[] imageData, String description, boolean proportionate) {
-    super(imageData, description);
-    this.proportionate = proportionate;
-  }
-
-  /**
-   * Creates a <CODE>StretchIcon</CODE> from the image.
-   *
-   * @param image the image
-   *
-   * @see ImageIcon#ImageIcon(java.awt.Image)
-   */
-  public StretchIcon(Image image) {
-    super(image);
-  }
-
-  /**
-   * Creates a <CODE>StretchIcon</CODE> from the image with the specified behavior.
-   * 
-   * @param image the image
-   * @param proportionate <code>true</code> to retain the image's aspect ratio,
-   *        <code>false</code> to allow distortion of the image to fill the
-   *        component.
-   * 
-   * @see ImageIcon#ImageIcon(java.awt.Image) 
-   */
-  public StretchIcon(Image image, boolean proportionate) {
-    super(image);
-    this.proportionate = proportionate;
-  }
-
-  /**
-   * Creates a <CODE>StretchIcon</CODE> from the image.
-   * 
-   * @param image the image
-   * @param  description a brief textual description of the image
-   * 
-   * @see ImageIcon#ImageIcon(java.awt.Image, java.lang.String) 
-   */
-  public StretchIcon(Image image, String description) {
-    super(image, description);
-  }
-
-  /**
-   * Creates a <CODE>StretchIcon</CODE> from the image with the specified behavior.
-   *
-   * @param image the image
-   * @param  description a brief textual description of the image
-   * @param proportionate <code>true</code> to retain the image's aspect ratio,
-   *        <code>false</code> to allow distortion of the image to fill the
-   *        component.
-   *
-   * @see ImageIcon#ImageIcon(java.awt.Image, java.lang.String)
-   */
-  public StretchIcon(Image image, String description, boolean proportionate) {
-    super(image, description);
-    this.proportionate = proportionate;
-  }
-
-  /**
-   * Creates a <CODE>StretchIcon</CODE> from the specified file.
-   *
-   * @param filename a String specifying a filename or path
-   *
-   * @see ImageIcon#ImageIcon(java.lang.String)
-   */
-  public StretchIcon(String filename) {
-    super(filename);
-  }
-
-  /**
-   * Creates a <CODE>StretchIcon</CODE> from the specified file with the specified behavior.
-   * 
-   * @param filename a String specifying a filename or path
-   * @param proportionate <code>true</code> to retain the image's aspect ratio,
-   *        <code>false</code> to allow distortion of the image to fill the
-   *        component.
-   *
-   * @see ImageIcon#ImageIcon(java.lang.String)
-   */
-  public StretchIcon(String filename, boolean proportionate) {
-    super(filename);
-    this.proportionate = proportionate;
-  }
-
-  /**
-   * Creates a <CODE>StretchIcon</CODE> from the specified file.
-   *
-   * @param filename a String specifying a filename or path
-   * @param  description a brief textual description of the image
-   *
-   * @see ImageIcon#ImageIcon(java.lang.String, java.lang.String)
-   */
-  public StretchIcon(String filename, String description) {
-    super(filename, description);
-  }
-
-  /**
-   * Creates a <CODE>StretchIcon</CODE> from the specified file with the specified behavior.
-   * 
-   * @param filename a String specifying a filename or path
-   * @param  description a brief textual description of the image
-   * @param proportionate <code>true</code> to retain the image's aspect ratio,
-   *        <code>false</code> to allow distortion of the image to fill the
-   *        component.
-   *
-   * @see ImageIcon#ImageIcon(java.awt.Image, java.lang.String)
-   */
-  public StretchIcon(String filename, String description, boolean proportionate) {
-    super(filename, description);
-    this.proportionate = proportionate;
-  }
-
-  /**
-   * Creates a <CODE>StretchIcon</CODE> from the specified URL.
-   *
-   * @param location the URL for the image
-   *
-   * @see ImageIcon#ImageIcon(java.net.URL)
-   */
-  public StretchIcon(URL location) {
-    super(location);
-  }
-
-  /**
-   * Creates a <CODE>StretchIcon</CODE> from the specified URL with the specified behavior.
-   * 
-   * @param location the URL for the image
-   * @param proportionate <code>true</code> to retain the image's aspect ratio,
-   *        <code>false</code> to allow distortion of the image to fill the
-   *        component.
-   *
-   * @see ImageIcon#ImageIcon(java.net.URL)
-   */
-  public StretchIcon(URL location, boolean proportionate) {
-    super(location);
-    this.proportionate = proportionate;
-  }
-
-  /**
-   * Creates a <CODE>StretchIcon</CODE> from the specified URL.
-   *
-   * @param location the URL for the image
-   * @param  description a brief textual description of the image
-   *
-   * @see ImageIcon#ImageIcon(java.net.URL, java.lang.String)
-   */
-  public StretchIcon(URL location, String description) {
-    super(location, description);
-  }
-
-  /**
-   * Creates a <CODE>StretchIcon</CODE> from the specified URL with the specified behavior.
-   * 
-   * @param location the URL for the image
-   * @param  description a brief textual description of the image
-   * @param proportionate <code>true</code> to retain the image's aspect ratio,
-   *        <code>false</code> to allow distortion of the image to fill the
-   *        component.
-   *
-   * @see ImageIcon#ImageIcon(java.net.URL, java.lang.String)
-   */
-  public StretchIcon(URL location, String description, boolean proportionate) {
-    super(location, description);
-    this.proportionate = proportionate;
-  }
-
-  /**
-   * Paints the icon.  The image is reduced or magnified to fit the component to which
-   * it is painted.
-   * <P>
-   * If the proportion has not been specified, or has been specified as <code>true</code>,
-   * the aspect ratio of the image will be preserved by padding and centering the image
-   * horizontally or vertically.  Otherwise the image may be distorted to fill the
-   * component it is painted to.
-   * <P>
-   * If this icon has no image observer,this method uses the <code>c</code> component
-   * as the observer.
-   *
-   * @param c the component to which the Icon is painted.  This is used as the
-   *          observer if this icon has no image observer
-   * @param g the graphics context
-   * @param x not used.
-   * @param y not used.
-   *
-   * @see ImageIcon#paintIcon(java.awt.Component, java.awt.Graphics, int, int)
-   */
-  @Override
-  public synchronized void paintIcon(Component c, Graphics g, int x, int y) {
-    Image image = getImage();
-    if (image == null) {
-      return;
-    }
-    Insets insets = ((Container) c).getInsets();
-    x = insets.left;
-    y = insets.top;
-
-    int w = c.getWidth() - x - insets.right;
-    int h = c.getHeight() - y - insets.bottom;
-
-    if (proportionate) {
-      int iw = image.getWidth(c);
-      int ih = image.getHeight(c);
-
-      if (iw * h < ih * w) {
-        iw = (h * iw) / ih;
-        x += (w - iw) / 2;
-        w = iw;
-      } else {
-        ih = (w * ih) / iw;
-        y += (h - ih) / 2;
-        h = ih;
-      }
-    }
-
-    ImageObserver io = getImageObserver();
-    g.drawImage(image, x, y, w, h, io == null ? c : io);
-  }
-
-  /**
-   * Overridden to return 0.  The size of this Icon is determined by
-   * the size of the component.
-   * 
-   * @return 0
-   */
-  @Override
-  public int getIconWidth() {
-    return 0;
-  }
-
-  /**
-   * Overridden to return 0.  The size of this Icon is determined by
-   * the size of the component.
-   *
-   * @return 0
-   */
-  @Override
-  public int getIconHeight() {
-    return 0;
-  }
-}
\ No newline at end of file
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/misc/StringComponent.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/misc/StringComponent.java
deleted file mode 100644
index 0875d16c8c18ed554b0f766270b5b3276407673d..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/misc/StringComponent.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.misc;
-
-import javax.swing.JComponent;
-
-/**
- * StringComponent.java created on Apr 18, 2017
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class StringComponent
-{
-  public JComponent[] components;
-  private final String s;
-  
-  public StringComponent(JComponent[] compArr, String s)
-  {
-    components = compArr;
-    this.s = s;
-  }
-  
-  public String getToolTip()
-  {
-    return s;
-  }
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/misc/TextObject.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/misc/TextObject.java
deleted file mode 100644
index bb9d5bb62e8b30d4d05ac7062b170c0a8999273f..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/misc/TextObject.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.misc;
-
-/**
- * TextObject.java created on Apr 18, 2017
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class TextObject
-{
-  public String unicode;
-  public String ascii;
-  public String description=null;
-  
-  public TextObject(String unicode)
-  {
-    this.unicode = unicode;
-    ascii = convertToAscii(unicode);
-  }
-  
-  public static String convertToAscii(String s)
-  {
-    char[] ca = s.toCharArray();
-    for (int i = 0; i < ca.length; i++) {
-      ca[i] = convertToAscii(ca[i]);
-    }
-    return new String(ca);
-  }
-  
-  public static char convertToAscii(char c)
-  {
-    if (c > 127)
-      c = '.';
-    return c;
-  }
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/Constants.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/Constants.java
deleted file mode 100644
index a8ed00cf08e55f0f21b8009320b5c7faf184b545..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/Constants.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda;
-
-/**
- * Constants.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-
-public class Constants
-{
-  public final static String FILE_SEPARATOR      = System.getProperty("file.separator");
-  public final static char   FILE_SEPARATOR_CHAR = FILE_SEPARATOR.charAt(0);
-  
-  public final static String LINE_SEPARATOR      = System.getProperty("line.separator");
-  public final static char   LINE_SEPARATOR_CHAR = LINE_SEPARATOR.charAt(0);
-  
-  public final static String APP_TITLE = "QR_Tactical_Decision_Aid";
-  public final static String APP_PREFERENCES_VERSION = "1.0";
-  
-  //public final static String DEFAULT_JSON_RESOURCE_PATH = "configurations/qrChat.json";  // for no-arg use
-  //public final static String PREFERENCES_NODE_NAME = "edu/nps/moves/qrtda/QRTda";
-
-  public final static String WORKSPACE_PARENT_PATH_SUGGEST = System.getProperty("user.home");
-  public final static String WORKSPACE_NAME_SUGGEST = "QrTdaWorkspace";
-  public final static String WORKSPACE_PATH_SUGGEST = System.getProperty("user.home")+System.getProperty("file.separator")+"QrTdaWorkspace";
-  public final static String WORKSPACE_PATH_SYSTEM_PROPERTY = "qrtda.workspace";
-  public final static String WORKSPACE_CONFIG_DIR_NAME = "configurations";
-  public final static String WORKSPACE_SCRIPTS_DIR_NAME = "runScripts";
-  public final static String WORKSPACE_ART_DIR_NAME = "art";
-  
-  public final static String CONFIGS_PACKAGE = "configurations";
-  public final static String SCRIPTS_PACKAGE = "runScripts";
-  public final static String ART_PACKAGE = "art";
-  
-  public final static String WORKSPACE_IMAGE_DIR_NAME = "imageDirectory";
-  public final static String WORKSPACE_TEXT_DIR_NAME = "textDirectory";
-
-  public final static String ENCODERFRAMETITLE = "QR Encoder";
-  public final static String DECODERFRAMETITLE = "QR Decoder";
-  
-  public final static int SHIFT = 50;
-  public final static int DEFAULTWIDTH = 900;
-
-  // Command line options
-  public final static String HELPOPTION = "help";
-  public final static String LASTOPTION = "last";
-  public final static String CREATEQRIMAGEOPTION = "createqrimage";
-  public final static String CAMERASAVEQRIMAGEOPTION = "camerasaveqrimage";
-  public final static String CAMERASAVEQRIMAGELOOPOPTION = "camerasaveqrimageloop";
-  
-  public final static String CAMERADECODELOOPOPTION = "cameradecodeloop";
-  public final static String CAMERATEXTDISPLAYOPTION = "cameratextdisplay";
-  public final static String CAMERATEXTFILEAPPENDOPTION = "cameratextfileappend";
-  public final static String CAMERATEXTDISPLAYECHOOPTION = "cameratextdisplayecho";
-  public final static String CAMERATEXTFILEAPPENDECHOOPTION = "cameratextfileappendecho";
-  public final static String CHATOPTION = "chat"; 
-  public final static String TEXTINPUT = "textinput";
-  
-  public       static float HIRES_TABLE_TEXT_FACTOR = 1.0f;
-  public       static float HIRES_TABLE_TEXT_FACTOR_FLAGS_EXTRA = 1.0f;
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/HeadlessMain.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/HeadlessMain.java
deleted file mode 100644
index 51eb04b7346a9f32b1203826037118d87725026f..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/HeadlessMain.java
+++ /dev/null
@@ -1,382 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda;
-
-import com.tinkerpop.pipes.util.Pipeline;
-import edu.nps.moves.qrtda.qr.QRDataStream;
-import edu.nps.moves.qrtda.elements.*;
-import edu.nps.moves.qrtda.elements.misc.JsonConfigPipeLine;
-import edu.nps.moves.qrtda.elements.misc.JsonConfigPipeLine.JsonConfigPipeLineSet;
-import edu.nps.moves.qrtda.elements.misc.ReadyListener;
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.List;
-import org.apache.commons.cli.CommandLine;
-import org.apache.commons.cli.ParseException;
-
-/**
- * HeadlessMain.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class HeadlessMain
-{
-  private TdaEnvironment env;
-  private JsonConfigPipeLineSet pipeLineSet;
-  
-  public HeadlessMain(JsonConfigPipeLineSet pipeLineSet, TdaEnvironment env)
-  {
-    this.env = env;
-    this.pipeLineSet = pipeLineSet;
-
-    ArrayList<Object> pipeLines = pipeLineSet.getPipeLines();
-    
-    //for (Object obj : pipeLines) {
-    //LinkedHashMap lhm = (LinkedHashMap) obj;     
-    //JsonConfigPipeLine cfgPipeLine = new JsonConfigPipeLine(lhm);
-
-    pipeLines.stream().map((obj) -> 
-        (LinkedHashMap) obj).map((lhm) -> 
-            new JsonConfigPipeLine(lhm)).map((cfgPipeLine) -> {
-      env.setHeadless(true);
-      env.setContentTextStream(System.out);
-      env.setLogTextStream(System.out);
-      QRDataStream stream = new QRDataStream(cfgPipeLine.getName(),cfgPipeLine.getDescription());
-      int idx = 1;
-      ArrayList<Object> pipeElements = cfgPipeLine.getPipeElements();
-      ArrayList<QRFlowLink> tempArr = new ArrayList<>();
-      
-      //for (Object elemObj : pipeElements) {
-      //  JsonConfigPipeLine.PipeElement pElem = (JsonConfigPipeLine.PipeElement) elemObj;      
-      pipeElements.stream().map((elemObj) -> 
-          (JsonConfigPipeLine.PipeElement) elemObj).forEachOrdered((pElem) -> {
-            QRFlowLink fL = instanciateLink(pElem, env);
-            fL.setPipeline(stream);
-            tempArr.add(fL);
-            ArrayList<Object> optAL = pElem.getOption();
-            optAL.forEach((ob) -> {
-              JsonConfigPipeLine.Option oo = (JsonConfigPipeLine.Option) ob;
-              //mike here fL.setOption(oo.getKey(), o.getValue());
-            });
-            stream.addPipe(fL);
-          });
-      return tempArr;
-    }).map((tempArr) -> tempArr.iterator()).forEachOrdered((itr) -> {
-      while (itr.hasNext()) {
-        itr.next().initialize();
-      }
-    });
-  }
-  
-  private QRFlowLink instanciateLink(JsonConfigPipeLine.PipeElement pEl, TdaEnvironment env)
-  {
-    QRFlowLink fLink = null;
-    try {
-      Class<? extends QRFlowLink> cls = (Class<? extends QRFlowLink>) Class.forName(pEl.getClassName());
-      Constructor constr = cls.getConstructor(TdaEnvironment.class, ReadyListener.class);
-      fLink = (QRFlowLink) constr.newInstance(env, null);
-    }
-    catch (ClassNotFoundException | NoSuchMethodException | SecurityException |
-        InstantiationException | IllegalAccessException | IllegalArgumentException |
-        InvocationTargetException ex) {
-      throw new RuntimeException(ex); //todo
-    }
-    return fLink;
-  }
-
-  
-  public HeadlessMain(CommandLine cLine, TdaEnvironment env, boolean helpAlreadyDisplayed)
-  {
-    this.env = env;
-    env.setHeadless(true);
-    org.apache.commons.cli.Option [] opts = cLine.getOptions();
-    for(org.apache.commons.cli.Option opt : opts)
-      env.addElementOption(opt.getOpt(), opt.getValue());
-    try {
-      if (cLine.hasOption(Constants.CREATEQRIMAGEOPTION)) //env.opt.createImage.name()))
-        createImage(cLine);
-      else if (cLine.hasOption(Constants.CAMERATEXTDISPLAYOPTION)) //env.opt.cameraTextDisplay.name()))
-        grabAndDisplay(cLine);
-      else if (cLine.hasOption(Constants.CAMERATEXTFILEAPPENDOPTION)) //env.opt.cameraTextFileAppend.name()))
-        grabAndAppend(cLine);
-        else if (cLine.hasOption(Constants.CAMERATEXTDISPLAYECHOOPTION))  //env.opt.cameraTextDisplayEcho.name()))
-        grabAndDisplayAndEcho(cLine);
-      else if (cLine.hasOption(Constants.CAMERATEXTFILEAPPENDECHOOPTION)) //env.opt.cameraTextFileAppendEcho.name()))
-        grabAndDisplayAnd(cLine);
-      else if (cLine.hasOption(Constants.CHATOPTION)) //env.opt.chat.name()))
-        headlessChat(cLine);
-      else if (cLine.hasOption(Constants.CAMERADECODELOOPOPTION))
-        decodeLoop();
-      else if (cLine.hasOption(Constants.CAMERASAVEQRIMAGEOPTION)) //env.opt.cameraImageSave.name()))
-        grabAndSaveImage(cLine);
-      else if (cLine.hasOption(Constants.CAMERASAVEQRIMAGELOOPOPTION)) //env.opt.cameraImageSave.name()))
-        grabAndSaveImageLoop(cLine);
-      else if (cLine.hasOption(Constants.LASTOPTION))
-        runLastConfig();
-      else {
-        System.out.println("No action option found");
-        if(!helpAlreadyDisplayed)
-          Main.printHelp();
-      }
-    }
-    catch (Exception ex) {
-      System.err.println("Execution error: " + ex.getClass().getSimpleName() + ": " + ex.getLocalizedMessage());
-      if(!helpAlreadyDisplayed)
-        Main.printHelp();
-    }
-  }
-  
-  private void runLastConfig()
-  {
-    // This is not a headless option
-    String path = QRPreferences.getInstance().get(QRPreferences.LAST_CONFIG_PATH,"");
-    if(path.length()<=0) {
-      System.err.println("Command line action 'last' specfied but no previous configuration file");
-      System.exit(-1);
-    }
-    Main.runJson(new File(path));
-  }
-  private QRDataStream buildDataStream(TdaEnvironment env, ArrayList<QRFlowLink> arrLis, Class<?>... links) 
-            throws NoSuchMethodException, InstantiationException, IllegalAccessException, InvocationTargetException
-  {
-    QRDataStream dStr = new QRDataStream("Decode Loop","Pipe elements to decode QR images");
-    int idx = 1;
-     
-    for(Class c : links) {
-      Constructor con = c.getConstructor(TdaEnvironment.class, ReadyListener.class);
-      QRFlowLink<?,?> link = (QRFlowLink<?,?>)con.newInstance(env,(ReadyListener)null);
-      dStr.addPipe(link);
-      link.setPipeline(dStr);
-      arrLis.add(link);
-      link.setPipeIndex(idx++);
-    }
-    return dStr;
-  }
-  private void grabAndSaveImage(CommandLine cLine) throws Exception
-  {
-    _grabAndSaveCommon(cLine,false);
-  }
-  private void grabAndSaveImageLoop(CommandLine cLine) throws Exception
-  {
-    _grabAndSaveCommon(cLine,true);
-  }
-  private void _grabAndSaveCommon(CommandLine cLine, boolean loop) throws Exception
-  {
-    ArrayList<QRFlowLink> flowLinkList = new ArrayList<>();
-    QRDataStream dStr = buildDataStream(env, flowLinkList, QRCameraFrameGrabber.class, QRImageFilter.class, QRImageSaveToFile.class);
-    env.addToPipeMap(null, flowLinkList.toArray(new QRFlowLink[0]));
-    List pipes = dStr.getPipes();
-
-    Iterator<QRFlowLink> itr = pipes.iterator();
-    while (itr.hasNext()) {
-      itr.next().initialize();
-    }
-    if(loop)
-      Thread.sleep(Long.MAX_VALUE);
-  }
-  private void decodeLoop() throws Exception
-  {
-    ArrayList<QRFlowLink> flowLinkList = new ArrayList<>();
-    QRDataStream dStr = buildDataStream(env, flowLinkList, QRCameraFrameGrabber.class, QRImageDecoder.class, QRTextDecoder.class, SysOutWriter.class);
-    env.addToPipeMap(null, flowLinkList.toArray(new QRFlowLink[0]));
-    List pipes = dStr.getPipes();
-
-    Iterator<QRFlowLink> itr = pipes.iterator();
-    while (itr.hasNext()) {
-      itr.next().initialize();
-    }
-    Thread.sleep(Long.MAX_VALUE);
-  }
-  
-  private void createImage(CommandLine cLine) throws Exception
-  {
-    QRDataStream dStr = createImageBuildDataStream(cLine,"headless",env);
-
-    String textToEncode = (String) cLine.getParsedOptionValue(Constants.TEXTINPUT); //env.opt.textinput.name());
-    if (textToEncode == null) {
-      try {
-        System.out.println("Enter a line of text (or cntl-c to exit): ");
-        InputStreamReader converter = new InputStreamReader(System.in);
-        BufferedReader in = new BufferedReader(converter);
-        String line = in.readLine();
-        while (line.trim().length() > 0) {
-          createImageHandleText(line, env, dStr);
-
-          line = in.readLine();
-        }
-      }
-      catch (IOException ex) {
-
-      }
-    }
-    createImageHandleText(textToEncode, env, dStr);
-  }
-  
-  private QRDataStream createImageBuildDataStream(CommandLine cLine, String title, TdaEnvironment env) throws Exception
-  {
-    ArrayList<QRFlowLink> flowLinkList = new ArrayList<>();
-    QRDataStream dStr = buildDataStream(env, flowLinkList, QRInputBuilder.class, QRGenerator.class, QRBufferedImageGenerator.class, QRImageSaveToFile.class); 
-    env.addToPipeMap(null, flowLinkList.toArray(new QRFlowLink[0]));
-    return dStr;
-   }
-
-  private QRDataStream xcreateImageBuildDataStream(CommandLine cLine, String title, TdaEnvironment env) throws ParseException
-  {
-    QRDataStream dStr = new QRDataStream(title,"nousedithink");
-    int idx = 1;
-    ArrayList<QRFlowLink> flowLinkList = new ArrayList<>();
-
-    //Link 1
-    QRInputBuilder inpLink = new QRInputBuilder(env, null);
-    dStr.addPipe(inpLink);
-    flowLinkList.add(inpLink);
-    inpLink.setPipeIndex(idx++);
-
-    // Link 2
-    QRGenerator genlink = new QRGenerator(env, null);
-    dStr.addPipe(genlink);
-    flowLinkList.add(genlink);
-    genlink.setPipeIndex(idx++);
-
-      Object optObj;
-      //if ((optObj = cLine.getParsedOptionValue(env.opt.pixelSize.name())) != null) {
-      if ((optObj = cLine.getParsedOptionValue(QRGenerator.PIXELSIZEOPTION)) != null) {
-        //env.opt.pixelSize.setValue(optObj.toString());
-        env.setOptionValue(QRGenerator.PIXELSIZEOPTION, optObj.toString());
-      }
-      if ((optObj = cLine.getParsedOptionValue(QRGenerator.ERRORCORRECTIONOPTION)) != null) {
-      //if ((optObj = cLine.getParsedOptionValue(env.opt.errorCorrectionLevel.name())) != null) {
-        //env.opt.errorCorrectionLevel.setValue(optObj.toString());
-        env.setOptionValue(QRGenerator.ERRORCORRECTIONOPTION, optObj.toString());
-      }
-      if ((optObj = cLine.getParsedOptionValue(QRGenerator.IMAGEMARGINOPTION)) != null) {
-        //env.opt.pixelMargin.setValue(optObj.toString());
-        env.setOptionValue(QRGenerator.IMAGEMARGINOPTION, optObj);
-      }
-
-      // Link 3
-      QRBufferedImageGenerator buffGenLink = new QRBufferedImageGenerator(env, null);
-      dStr.addPipe(buffGenLink);
-      flowLinkList.add(buffGenLink);
-      buffGenLink.setPipeIndex(idx++);
-
-      //if ((optObj = cLine.getParsedOptionValue(env.opt.imageOverlayFilePath.name())) != null) {
-      if ((optObj = cLine.getParsedOptionValue(QRImageOverlayer.IMAGEOVERLAYFILEPATHOPTION)) != null) {
-        //env.opt.imageOverlayFilePath.setValue((optObj.toString()));
-        env.setOptionValue(QRImageOverlayer.IMAGEOVERLAYFILEPATHOPTION, optObj.toString());
-      }
-      //if ((optObj = cLine.getParsedOptionValue(env.opt.imageOverlayTransparency.name())) != null) {
-      if ((optObj = cLine.getParsedOptionValue(QRImageOverlayer.IMAGEOVERLAYTRANSPARENCYOPTION)) != null) {
-        //env.opt.imageOverlayTransparency.setValue(optObj.toString());
-        env.setOptionValue(QRImageOverlayer.IMAGEOVERLAYTRANSPARENCYOPTION, optObj.toString());
-      }
-      //if ((optObj = cLine.getParsedOptionValue(env.opt.imageOverlaySizeRatio.name())) != null) {
-      if ((optObj = cLine.getParsedOptionValue(QRImageOverlayer.IMAGEOVERLAYSIZERATIONOPTION)) != null) {
-        //env.opt.imageOverlaySizeRatio.setValue(optObj.toString());
-        env.setOptionValue(QRImageOverlayer.IMAGEOVERLAYSIZERATIONOPTION, optObj.toString());
-      }
-
-      // Link 4
-      QRImageSaveToFile saveLink = new QRImageSaveToFile(env, null);
-      dStr.addPipe(saveLink);
-      flowLinkList.add(saveLink);
-      saveLink.setPipeIndex(idx++);
-      //mike here
-
-      /*OPTION_FILENAMEPREFIX*/
-      env.addToPipeMap(null, flowLinkList.toArray(new QRFlowLink[0]));
-      return dStr;
-   }
-  
-  private void createImageHandleText(String s, TdaEnvironment env, Pipeline pipeline)
-  {
-    ArrayList<String> aLis = new ArrayList<>();
-    aLis.add(s);
-    pipeline.setStarts(aLis);
-    pipeline.iterate();  // this executes our pipe components in this thread
-
-    System.out.println("Complete.");
-  }
-  
-    /* heres how to start it off
-    @Override
-  public void run()
-  {
-    try {
-      while (true) {
-        long lastGrabAt = System.currentTimeMillis();
-        BufferedImage bi = webcam.getImage();
-        boolean success = (bi != null);
-        if (success) {
-          env.getPipeline().setStarts((Arrays.asList(bi)));
-          env.getPipeline().iterate();  // this executes our pipe components in this thread
-        }       
-        else {
-          env.postLog(className+": Couldn't read frame");
-          //System.err.println("QRCameraFrameGrabber: Couldn't read frame");
-        }
-        long nowTime = System.currentTimeMillis();
-        //System.out.println("sleeping for " + Math.max(sleepTime, nowTime - lastGrabAt));
-        Thread.sleep(Math.max(sleepTime, nowTime - lastGrabAt));
-      }
-    }
-    catch (InterruptedException ex) {
-    }
-    thread = null;
-  }
-  */
-
-  private void grabAndDisplay(CommandLine cLine)
-  {
-    throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
-  }
-
-  private void grabAndAppend(CommandLine cLine)
-  {
-    throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
-  }
-
-
-  private void grabAndDisplayAndEcho(CommandLine cLine)
-  {
-    throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
-  }
-
-  private void grabAndDisplayAnd(CommandLine cLine)
-  {
-    throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
-  }
-  private void headlessChat(CommandLine cLine)
-  {
- 
-  }
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/Main.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/Main.java
deleted file mode 100644
index 1b4904d0ee18db8ecc5c4473993c5778dfcbdcbb..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/Main.java
+++ /dev/null
@@ -1,393 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda;
-
-import edu.nps.moves.qrtda.elements.misc.QRAvailableElements;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import edu.nps.moves.qrtda.elements.*;
-import edu.nps.moves.qrtda.elements.misc.QRAvailableElements.QRElementDescriptor;
-import edu.nps.moves.qrtda.elements.misc.ElementOption;
-import edu.nps.moves.qrtda.elements.misc.JsonConfigPipeLine;
-import edu.nps.moves.qrtda.elements.misc.JsonConfigPipeLine.JsonConfigPipeLineSet;
-import edu.nps.moves.qrtda.elements.misc.NameDefault;
-import edu.nps.moves.qrtda.elements.misc.QrtdaParameter;
-import edu.nps.moves.qrtda.swing.ChooseConfigurationDialog;
-import edu.nps.moves.qrtda.swing.QRTdaSwingMain;
-import java.awt.Dimension;
-import java.awt.Toolkit;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Field;
-import java.util.*;
-import javax.swing.UIManager;
-import javax.swing.UnsupportedLookAndFeelException;
-import org.apache.commons.cli.*;
-import org.apache.commons.lang.SystemUtils;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-/**
- * Main.java created on May 14, 2015 MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class Main
-{
-  private       static CommandLine cmdLine;
-  private final static HashMap<String,ElementOption> elementOptions = new HashMap<>();
-
-  private final static Options options = new Options(); // all options
-  private final static Options actions = new Options();  // for custom help display
-  private final static Options notactions = new Options();  // for custom help display
-  
-  private static Logger logger;
-  
-  public static void main(String[] args)
-  {  
-    setLaF();
-    checkForHiRezTablet();
-
-    CommandLineParser parser = new BasicParser();
-    try {
-      defineOptions();
-      cmdLine = parser.parse(options, args);
-    }
-    catch (ParseException ex) {
-      System.err.println("QRTda command line parsing failed: " + ex.getLocalizedMessage());
-      System.exit(1); //abnormal termination
-    }
-
-    if (cmdLine.getOptions().length > 0 && cmdLine.getArgs().length > 0) {
-      System.err.println("QRTda command line parsing failed: Use either command line options or a configuration file, but not both");
-      System.exit(1);
-    }
-
-    if (cmdLine.getOptions().length > 0)  // if some commandline options were passed
-      runHeadless();
-
-    else if (cmdLine.getArgs().length > 0)
-      parseJson();
-
-    else
-      showConfigMenu();
-
-    showMemoryUse();
-  }
-  
-  private static void setLaF()
-  {
-    try {
-      if(SystemUtils.IS_OS_MAC)
-        UIManager.setLookAndFeel("com.apple.laf.AquaLookAndFeel");
-      else if(SystemUtils.IS_OS_WINDOWS)
-        UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
-    }
-    catch (ClassNotFoundException | IllegalAccessException | InstantiationException | UnsupportedLookAndFeelException ex) {
-      System.err.println("Error in Main, can't set LAF: "+ex.getClass().getSimpleName());
-    }
-  }
-  
-  private static void checkForHiRezTablet()
-  {
-    if (System.getProperty("os.name").toLowerCase().contains("windows")) {
-      Dimension scrSz = Toolkit.getDefaultToolkit().getScreenSize();
-      int rez = Toolkit.getDefaultToolkit().getScreenResolution();
-      if (scrSz.height == 1824 && scrSz.width == 2736) {
-        if (rez == 288) {
-          // New surface pros
-          Constants.HIRES_TABLE_TEXT_FACTOR = 0.5f;
-          Constants.HIRES_TABLE_TEXT_FACTOR_FLAGS_EXTRA = 0.65f;
-        }
-      }
-      else if(scrSz.height == 1440 && scrSz.width == 2160 ) {
-        if (rez == 216) {
-          // old surface pros
-          Constants.HIRES_TABLE_TEXT_FACTOR = 0.5f;
-          Constants.HIRES_TABLE_TEXT_FACTOR_FLAGS_EXTRA = 0.65f;
-        }       
-      }
-    }
-  }
-  
-  private static void initLogger()
-  {
-    // This should be the first access to the logging system.
-    // If any class, especially element or element gui classes to "static Logger logger == ...",
-    // the logging system will be initialized, and the log file will not be put
-    // in the workspace.
-    PerformanceLogger.defineLevels();  // do first else log4j will complain about missing levels in log4j2.xml file
-    logger = LogManager.getLogger(Main.class.getName());
-    PerformanceLogger.logAppStart(logger,null);   
-  }
-  
-  @SuppressWarnings("ResultOfObjectAllocationIgnored")
-  private static void runHeadless()
-  {
-    TdaEnvironment env = new TdaEnvironment(true,elementOptions);
-    initLogger();
-    
-    boolean helpShown = false;
-    if (cmdLine.hasOption(Constants.HELPOPTION)) { //env.opt.help.name())) {
-      printHelp();
-      helpShown = true;
-    }
-    new HeadlessMain(cmdLine, env, helpShown);
-  }
-
-  private static void parseJson()
-  {
-    String[] args= null;
-    try {
-      args = cmdLine.getArgs();
-      TdaEnvironment env = new TdaEnvironment(true,elementOptions); // headless for now
-      initLogger();
-      
-      File f = env.openConfigFile(args[0]);
-      runJson(f,env);
-    }
-    catch(FileNotFoundException ex) {
-       System.err.println("QRTda configuration file (" + args[0] + ") not found");
-      System.exit(1);  
-    }
-  }
-  
-  public static void runJson(File f)
-  {
-    runJson(f,null);
-  }
-  
-  private static void runJson(File f, TdaEnvironment env)
-  {
-    try {
-      if(env == null) {
-        env = new TdaEnvironment(true,elementOptions);
-        initLogger();
-      }
-
-      QRPreferences.getInstance().put(QRPreferences.LAST_CONFIG_PATH, f.getAbsolutePath());
-      ObjectMapper mapper = new ObjectMapper();
-      _takeConfigAndGo(mapper.readValue(f, JsonConfigPipeLineSet.class), env);
-   }
-    catch (IOException ex) {
-      System.err.println("QRTda configuration file (" + f.getAbsolutePath() + ") parsing failed: " + ex.getClass().getSimpleName() + ": " + ex.getLocalizedMessage());
-      System.exit(1);
-    } 
-  }
-  
-  private static void showConfigMenu()
-  {
-    TdaEnvironment env = new TdaEnvironment(true,elementOptions);
-    initLogger();
-    
-    JsonConfigPipeLineSet[] configs = findAllJsons(env);
-    JsonConfigPipeLineSet chosen = ChooseConfigurationDialog.show(configs);
-    if (chosen != null)
-      _takeConfigAndGo(chosen, env);
-  }
-
-  private static JsonConfigPipeLineSet[] findAllJsons(TdaEnvironment tda)
-  {
-    File[] files = tda.openAllConfigFiles();
-    if (files == null || files.length <= 0)
-      return null;
-
-    ObjectMapper mapper = new ObjectMapper();
-    ArrayList<JsonConfigPipeLineSet> aLis = new ArrayList<>(files.length);
-    for (File f : files) {
-      try {
-        JsonConfigPipeLine.JsonConfigPipeLineSet set = mapper.readValue(f, JsonConfigPipeLineSet.class);
-        set.setName(set.getName());
-        set.setFileName(f.getName());
-        aLis.add(set);
-      }
-      catch (IOException ex) {
-        System.err.println("Could not process " + f.getAbsolutePath());
-      }
-    }
-    JsonConfigPipeLineSet ra[] = new JsonConfigPipeLineSet[aLis.size()];
-    return aLis.toArray(ra);
-  }
-
-  @SuppressWarnings("ResultOfObjectAllocationIgnored")
-  private static void _takeConfigAndGo(JsonConfigPipeLineSet pipeLineSet, TdaEnvironment env)
-  {
-    if (env == null) {
-      env = new TdaEnvironment(true,elementOptions); // headless for now
-      initLogger();
-    }
-    if (pipeLineSet.isHeadless())
-      new HeadlessMain(pipeLineSet, env);
-    else {
-      env.setHeadless(false);
-      QRTdaSwingMain.mainJson(pipeLineSet, env);
-    }
-  }
-
-  private static void handleClassOptions(Class<?> cls)
-  {
-    try {
-      for (Field field : cls.getDeclaredFields()) {
-        //Class type = field.getType();
-        //String name = field.getName();
-        Annotation[] annos = field.getDeclaredAnnotationsByType(QrtdaParameter.class); //do something to these
-        if (annos != null && annos.length > 0) {
-          Object val = field.get(null);
-          assert val instanceof NameDefault;
-          NameDefault parm = (NameDefault) val;
-          Option opt = OptionBuilder.create(parm.getName());
-          if (parm.getArgumentHandle() != null) {
-            opt.setArgs(1);
-            opt.setArgName(parm.getArgumentHandle());
-          }
-          opt.setType(parm.getType());
-          opt.setDescription(parm.getDescription());
-          options.addOption(opt);
-          notactions.addOption(opt);
-          elementOptions.put(parm.getName(), new ElementOption(parm));
-        }
-      }
-    }
-    catch (IllegalAccessException ex) {
-      throw new RuntimeException("IllegalAccessException in handleClassOptions: " + ex.getLocalizedMessage());
-    }
-  }
-  
-  @SuppressWarnings("static-access")
-  private static void defineOptions()
-  {
-    // Get option names and default values from the QRFlow elements in edu.nps.moves.qrtda.elements by reflections/annotations
-    HashMap<String, QRElementDescriptor> elementMap = QRAvailableElements.getElementMap();
-    for (QRElementDescriptor des : elementMap.values()) {
-      Class<? extends QRFlowLink> cls = des.element;
-      handleClassOptions(cls);
-    }
-  
-    // Do the same for classes in edu.nps.moves.qrtda.elements by reflections/annotations
-    Set<Class<?>> set = QRAvailableElements.getGuiPackageClasses();
-    set.stream().forEach((cls) -> {
-      handleClassOptions(cls);
-    });
-
-    // Define command line actions and options
-    Option o;
-    options.addOption(o = OptionBuilder.withDescription("display program command-line options")
-        .create(Constants.HELPOPTION));
-    notactions.addOption(o);
-
-    options.addOption(o = OptionBuilder.withDescription("text to encode")
-        .hasArg()
-        .withArgName("text")
-        .withType(String.class)
-        .create(Constants.TEXTINPUT));
-    notactions.addOption(o);
-
-    // Top level options ("actions")
-    //------------------------------
-    OptionGroup grp = new OptionGroup();
-    grp.addOption(OptionBuilder.withDescription("create a single named QR into the specified file")
-        .hasOptionalArg()
-        .withArgName("file")
-        .withType(File.class)
-        .create(Constants.CREATEQRIMAGEOPTION));
- 
-    grp.addOption(OptionBuilder.withDescription("save captured image")
-        .hasOptionalArg()
-        .withArgName("file")
-        .withType(File.class)
-        .create(Constants.CAMERASAVEQRIMAGEOPTION));
- 
-    grp.addOption(OptionBuilder.withDescription("save captured images continually into images directory").create(Constants.CAMERASAVEQRIMAGELOOPOPTION));
-    grp.addOption(OptionBuilder.withDescription("run last configuration script").create(Constants.LASTOPTION));
-
-    grp.addOption(OptionBuilder.withDescription("display decoded text from QR, loop").create(Constants.CAMERADECODELOOPOPTION));
-    grp.addOption(OptionBuilder.withDescription("open a chat window").create(Constants.CHATOPTION)); //env.opt.chat.name()));
-    grp.addOption(OptionBuilder.withDescription("open a text-receive window").create(Constants.CAMERATEXTDISPLAYOPTION)); //env.opt.cameraTextDisplay.name()));
-    grp.addOption(OptionBuilder.withDescription("append received text to file").create(Constants.CAMERATEXTFILEAPPENDOPTION)); //env.opt.cameraTextFileAppend.name()));
-    grp.addOption(OptionBuilder.withDescription("open a text-receive window and echo received text").create(Constants.CAMERATEXTDISPLAYECHOOPTION)); //env.opt.cameraTextDisplayEcho.name()));
-    grp.addOption(OptionBuilder.withDescription("append received text to file and echo received text").create(Constants.CAMERATEXTFILEAPPENDECHOOPTION));//env.opt.cameraTextFileAppendEcho.name()));
-
-    options.addOptionGroup(grp);
-    actions.addOptionGroup(grp);
-  }
-
-  public static void printHelp()
-  {
-    System.out.println("QRCodeTacticalDecisionAid 2.0");
-    HelpFormatter formatter = new HelpFormatter();
-    formatter.setWidth(180);
-    formatter.setOptionComparator(new MyOptComp());
-    System.out.println("usage: java -jar QRTda.jar [dataflowconfigurationfile] [-ACTION] [-options...]");
-    System.out.println("------------------------------------------------------------------------------");
-    formatter.setSyntaxPrefix("ACTIONS:");
-    formatter.printHelp(" ", actions, false);
-    formatter.setSyntaxPrefix("OPTIONS:");
-    formatter.printHelp(" ", notactions, false);
-    System.out.println("------------------------------------------------------------------------------");
-    System.out.println("gui example:");
-    //System.out.println(" java -jar QRTDA.jar  (runs last configuration)");
-    System.out.println(" java -jar QRTDA.jar ~/QrTdaWorkspace/configurations/qrChat.json");
-    System.out.println("headless examples:");
-    System.out.println(" java -jar QRTDA.jar -createqrimage ~/myQRImage.png -overwrite -textinput \"Hi Mom\" -qrimagesize 250");
-    System.out.println(" java -jar QRTDA.jar -createqrimage -textinput \"My QR content\" -qrimageformat jpg  (creates jpg in temp dir, size = 550)");
-  }
-
-  /**
-   * Put caps first
-   */
-  static class MyOptComp implements Comparator
-  {
-
-    @Override
-    public int compare(Object o1, Object o2)
-    {
-      String s1 = ((Option) o1).getOpt();
-      String s2 = ((Option) o2).getOpt();
-      char c1 = s1.charAt(0);
-      char c2 = s2.charAt(0);
-      boolean up1 = Character.isUpperCase(c1);
-      boolean up2 = Character.isUpperCase(c2);
-      if (up1 && up2)
-        return s1.compareToIgnoreCase(s2);
-      if (up1)
-        return -1;
-      if (up2)
-        return 1;
-      return s1.compareToIgnoreCase(s2);
-    }
-  }
-
-  private static void showMemoryUse()
-  {
-    Runtime runtime = Runtime.getRuntime();
-
-    runtime.gc();// Run the garbage collector
-
-    System.out.println("Total memory in bytes: " + runtime.totalMemory());
-    System.out.println("Free memory in bytes: " + runtime.freeMemory());
-    System.out.println("Used memory in bytes: " + (runtime.totalMemory() - runtime.freeMemory()));
-  }
-  
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/PerformanceLogger.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/PerformanceLogger.java
deleted file mode 100644
index edf8d958d0fb5c97a2a07975a85f1455e105ebb5..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/PerformanceLogger.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda;
-
-import org.apache.logging.log4j.Level;
-import org.apache.logging.log4j.Logger;
-
-/**
- * PerformanceLogger.java created on Jun 29, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class PerformanceLogger
-{
-  static Level ELEMENT_EXIT = Level.forName("ELEMENT_EXIT", 450);
-  static Level ELEMENT_IN  = Level.forName("ELEMENT_IN", 450);
-  static Level QR_GENERATION_START = Level.forName("QR_GENERATION_START", 450);
-  static Level QR_GENERATION_END   = Level.forName("QR_GENERATION_END", 450);
-  static Level QR_IMAGE_DETECTION_START   = Level.forName("QR_IMAGE_DETECTION_START",450);
-  static Level QR_IMAGE_DETECTION_SUCCESS = Level.forName("QR_IMAGE_DETECTION_SUCCESS",450);
-  static Level QR_IMAGE_DETECTION_FAIL    = Level.forName("QR_IMAGE_DETECTION_FAIL",450);
-  
-  static Level THROUGHPUT_TEST_START = Level.forName("THROUGHPUT_TEST_START", 450);
-  static Level THROUGHPUT_TEST_STOP = Level.forName("THROUGHPUT_TEST_STOP", 450);
-  
-  static Level THROUGHPUT_MEASURE = Level.forName("THROUGHPUT_MEASURE",450);
-  static Level PACKETRATE_MEASURE = Level.forName("PACKETRATE_MEASURE",450);
-  static Level DROPPEDPACKETS_MEASURE = Level.forName("DROPPEDPACKETS_MEASURE",450);
-  static Level MEASURE_RESET = Level.forName("MEASURE_RESET",450);
-  
-  public static void defineLevels()
-  {
-    // just the class reference does it.
-  }
-  public static void logAppStart(Logger logger, Object obj)
-  {
-    logString(Level.INFO, logger, obj);
-  }
-  
-  public static void logElementOutput(Logger logger, Object obj)
-  {
-    logString(ELEMENT_EXIT,logger,obj);
-  }
-  
-  public static void logElementInput(Logger logger, Object obj)
-  {
-    logString(ELEMENT_IN,logger,obj);    
-  }
-  
-  public static void logQRGenerationStart(Logger logger, Object obj)
-  {
-    logString(QR_GENERATION_START,logger,obj);
-  }
-  
-  public static void logQRGenerationEnd(Logger logger, Object obj)
-  {
-    logString(QR_GENERATION_END,logger,obj);
-  }
-
-  public static void logQRImageDetectionStart(Logger logger, Object obj)
-  {
-    logString(QR_IMAGE_DETECTION_START,logger,obj);
-  }
-  
-  public static void logQRImageDetectionSuccess(Logger logger, Object obj)
-  {
-    logString(QR_IMAGE_DETECTION_SUCCESS,logger,obj);
-  }
-  
-  public static void logQRImageDetectionFail(Logger logger, Object obj)
-  {
-    logString(QR_IMAGE_DETECTION_FAIL,logger,obj);
-  }
- 
-  private static void logString(Level lev, Logger logger, Object obj)
-  {
-    String text = obj==null?"":obj.toString();
-    int len = text.length();
-    logger.log(lev, len>32?text.substring(0, 32):text);  //clamp
-  }
-
-  public static void logQRImageSave(Logger logger, Object obj)
-  {
-    logString(Level.INFO, logger, obj.toString());
-  }
-  
-  public static void logThroughput(Logger logger, Object obj)
-  {
-    logString(THROUGHPUT_MEASURE,logger,obj);
-  }
-  
-  public static void logPacketRate(Logger logger, Object obj)
-  {
-    logString(PACKETRATE_MEASURE,logger,obj);
-  }
-  
-  public static void logDroppedPackets(Logger logger, Object obj)
-  {
-    logString(DROPPEDPACKETS_MEASURE,logger,obj);
-  }
-  
-  public static void logMeasureReset(Logger logger, Object obj)
-  {
-    logString(MEASURE_RESET,logger,obj);
-  }
-  
-  public static void logThroughputTestStart(Logger logger, Object obj)
-  {
-    logString(THROUGHPUT_TEST_START,logger,obj);
-  }
-  
-  public static void logThroughputTestStop(Logger logger, Object obj)
-  {
-    logString(THROUGHPUT_TEST_STOP,logger,obj);
-  }
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/QRPreferences.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/QRPreferences.java
deleted file mode 100644
index 39783ab784bb782401d61d88cf1ed5986671dc99..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/QRPreferences.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
-Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
-in source and binary forms, with or without modification, are permitted provided that the
-following conditions are met:
-
-Redistributions of source code must retain the above copyright notice, this list of conditions
-and the following disclaimer. Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the documentation and/or other
-materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
-Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
-http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
-WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-package edu.nps.moves.qrtda;
-
-import java.util.logging.Level;
-import java.util.logging.Logger;
-import java.util.prefs.BackingStoreException;
-import java.util.prefs.Preferences;
-
-/**
- * QRPreferences.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-
-public class QRPreferences
-{
-  private final Preferences prefs; 
-  
-  public final static String JAVA_PREFERENCES_ROOT_NODE = Constants.APP_TITLE+"_"+Constants.APP_PREFERENCES_VERSION;
-
-  public final static String WORKSPACE_PATH = "workspace_path";
-  public final static String JSON_SAVE_CHOOSER_PATH = "json_chooser_path";
-  public final static String LAST_CONFIG_PATH = "last_configpath";
-  public final static String LAST_WINDOW_X = "lastwindowx_";
-  public final static String LAST_WINDOW_Y = "lastwindowy_";
-  public final static String LAST_WINDOW_WIDTH = "lastwindowwidth_";
-  public final static String LAST_WINDOW_HEIGHT = "lastwindowheight_";
-  
-  public static QRPreferences getInstance()
-  {
-    return QRPreferencesHolder.INSTANCE;
-  }
-
-  private static class QRPreferencesHolder
-  {
-    private static final QRPreferences INSTANCE = new QRPreferences();
-  }
-
-  private QRPreferences()
-  {
-    prefs = Preferences.userRoot().node(JAVA_PREFERENCES_ROOT_NODE);
-    //try { prefs.exportNode(System.out);
-    //prefs.exportSubtree(System.out);}catch(Exception ex){}
-  }
-  
-  public String get(String key, String defaultVal)
-  {
-    return getPersistent(key,defaultVal);  
-  }
-  
-  public void put(String key, String value)
-  {
-    putPersistent(key,value);
-  }
-  
-  // Remnant of multiplexing preference stores
-  public void putPersistent(String key, String value)
-  {
-    prefs.put(key, value);  // throws nullptr if key or val is null
-  }
-  
-  public String getPersistent(String key, String defaultVal)
-  {
-    return prefs.get(key, defaultVal);  // never returns null
-  }
-  
-  public void clearPreferences() throws BackingStoreException
-  {
-    prefs.clear();
-  }
-  
-  public void dumpPreferences()
-  {
-    try {
-      String[] names = prefs.keys();
-      for(String s : names)
-        System.out.println(s+"  ->  "+prefs.get(s, ""));
-    }
-    catch (BackingStoreException ex) {
-      Logger.getLogger(QRPreferences.class.getName()).log(Level.SEVERE, null, ex);
-    }
-  }
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/TdaEnvironment.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/TdaEnvironment.java
deleted file mode 100644
index 05a9b7e07693364ffed5dd9f189d0db179466b4b..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/TdaEnvironment.java
+++ /dev/null
@@ -1,511 +0,0 @@
-/*
-Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
-in source and binary forms, with or without modification, are permitted provided that the
-following conditions are met:
-
-Redistributions of source code must retain the above copyright notice, this list of conditions
-and the following disclaimer. Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the documentation and/or other
-materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
-Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
-http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
-WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-package edu.nps.moves.qrtda;
-
-import com.tinkerpop.pipes.util.Pipeline;
-import static edu.nps.moves.qrtda.Constants.WORKSPACE_PATH_SYSTEM_PROPERTY;
-import edu.nps.moves.qrtda.elements.QRFlowLink;
-import edu.nps.moves.qrtda.elements.misc.ElementOption;
-import edu.nps.moves.qrtda.elements.misc.QRAvailableElements;
-import edu.nps.moves.qrtda.elements.misc.QRAvailableElements.PathAndStream;
-import edu.nps.moves.qrtda.swing.QRTdaGuiPanel;
-import java.io.*;
-import java.nio.file.Path;
-import java.util.HashMap;
-import java.util.List;
-import javax.swing.*;
-
-/**
- * TdaEnvironment.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class TdaEnvironment implements Cloneable
-{
-  private boolean headless = false;
-  
-  private PrintStream logTextStream;
-  private PrintStream contentTextStream;
-  
-  private final HashMap<QRTdaGuiPanel,QRFlowLink[]> pipesMap = new HashMap<>();
-   
-  public static File workspace = null;
-  public static String workspaceFullPath = null;
-  
-  public static File configsDirectory = null;
-  public static String configsDirectoryFullPath = null;
-  public static File scriptsDirectory = null;
-  public static String scriptsDirectoryFullPath = null;
-  public static File textsDirectory = null;
-  public static String textsDirectoryFullPath = null;
-  public static File imagesDirectory = null;
-  public static String imagesDirectoryFullPath = null;
-  public static File artDirectory = null;
-  public static String artDirectoryFullPath = null;
-  
-  private QRPreferences prefs;
-  
-  private final HashMap<String,ElementOption> elemOpts;
-  private final HashMap<String,Object> miscMap;
-  
-  private String lastTextSource = null;
-  
-  /* There is one of these per application invocation (jvm) */
-  public TdaEnvironment(boolean headless, HashMap<String,ElementOption> options)
-  { 
-    elemOpts = options;
-    miscMap = new HashMap<>();
-    
-    handleWorkspaceInit(headless);
-  }
-
-  private void handleWorkspaceInit(boolean isHeadless)
-  {
-    prefs = QRPreferences.getInstance();
-
-    String workspacePath = prefs.get(QRPreferences.WORKSPACE_PATH,null);
-    if(workspacePath != null && !new File(workspacePath).exists())
-      workspacePath = null;
-    
-    if (workspacePath == null) {
-      workspace = chooseWorkspace(isHeadless);
-      if (workspace == null)
-        System.exit(0);
-      prefs.put(QRPreferences.WORKSPACE_PATH, workspace.getAbsolutePath());
-    }
-    else {
-      workspace = new File(workspacePath);
-    }
-    
-    initializeWorkspace();  // move new files into place if needed
-    
-    workspaceFullPath = workspace.getAbsolutePath();
-    System.setProperty(WORKSPACE_PATH_SYSTEM_PROPERTY,workspaceFullPath);
-    
-    configsDirectory = new File(workspace,Constants.WORKSPACE_CONFIG_DIR_NAME);
-    configsDirectoryFullPath = configsDirectory.getAbsolutePath();
-    scriptsDirectory = new File(workspace,Constants.WORKSPACE_SCRIPTS_DIR_NAME);
-    scriptsDirectoryFullPath = scriptsDirectory.getAbsolutePath();
-    imagesDirectory  = new File(workspace,Constants.WORKSPACE_IMAGE_DIR_NAME);
-    imagesDirectoryFullPath = imagesDirectory.getAbsolutePath();
-    textsDirectory   = new File(workspace,Constants.WORKSPACE_TEXT_DIR_NAME);
-    textsDirectoryFullPath = textsDirectory.getAbsolutePath();
-    artDirectory     = new File(workspace,Constants.WORKSPACE_ART_DIR_NAME);
-    artDirectoryFullPath = artDirectory.getAbsolutePath();
-        
-    System.setProperty("user.dir",workspaceFullPath);
-  }
-  
-  private static void initializeWorkspace()
-  {      
-    File confDir = new File(workspace,Constants.WORKSPACE_CONFIG_DIR_NAME);
-
-    if(!confDir.exists())
-      confDir.mkdir();
-    
-    copyFromClassPath(Constants.CONFIGS_PACKAGE,confDir);
-    
-    File runDir = new File(workspace,Constants.WORKSPACE_SCRIPTS_DIR_NAME);
-    runDir.mkdir();
-    copyFromClassPath(Constants.SCRIPTS_PACKAGE,runDir);   
-    
-    File artDir = new File(workspace,Constants.WORKSPACE_ART_DIR_NAME);
-    artDir.mkdir();
-    copyFromClassPath(Constants.ART_PACKAGE,artDir);
-    
-    new File(workspace,Constants.WORKSPACE_IMAGE_DIR_NAME).mkdir();
-    new File(workspace,Constants.WORKSPACE_TEXT_DIR_NAME).mkdir();
-  }
- 
-  private static void copyFromClassPath(String srcPkg, File targetDir)
-  {
-    List<PathAndStream> pathList = makePathList(srcPkg);
-
-    pathList.stream().forEach((pas) -> {
-      Path p = pas.p;
-      int nameCount = p.getNameCount();
-      String name = p.getName(nameCount-1).toString();
-      File target = new File(targetDir,name);
-      if(target.exists())
-        return;  // only skip this one with lambda iteration (equivalent to for() continue statement
-
-      try {
-        BufferedInputStream is = new BufferedInputStream(pas.is); //Files.newInputStream(p));
-        BufferedOutputStream os = new BufferedOutputStream(new FileOutputStream(target));
-        int b;
-        while ((b = is.read()) != -1) {
-          os.write(b);
-        }
-        //is.close();
-        os.close();
-      }
-      catch(IOException ex) {
-         System.err.println("Can't copy to workspace: "+ex.getClass().getSimpleName()+": "+ex.getLocalizedMessage());
-      }
-    });
-  }
-  /*
-  private static void renameFile(File fil)
-  {
-    File f = null; // target
-
-    String prefix;
-    String extension;
-    String fn = fil.getName();
-    if (fn.contains(".")) {
-      prefix = fn.substring(0, fn.lastIndexOf('.'));
-      extension = fn.substring(fn.lastIndexOf('.'));
-    }
-    else {
-      prefix = fn;
-      extension = "";
-    }
-    File dir = fil.getParentFile();
-
-    int i = 0;
-
-    while (true) {
-      if (dir != null) {
-        f = new File(dir, prefix + i + extension);
-      }
-      else {
-        f = new File(prefix + i + extension);
-      }
-      if (!f.exists()) {
-        boolean success = fil.renameTo(f);
-        if(!success)
-          throw new RuntimeException("can't rename file: "+fil.getAbsolutePath());
-        return;
-      }
-      i++;
-    }
-  }
-  */
-  private static List<PathAndStream> makePathList(String pkg)
-  {
-    String pkgPath = pkg.replace('.', '/');
-    return QRAvailableElements.packageContents(pkgPath); 
-  }
-  
-  // this only works w/in netbeans, not jar
-  /*private static List<File> makeListx(String pkg)
-  {
-    System.out.println("makeList("+pkg);
-    ArrayList<File> list = new ArrayList<>();
-    ClassLoader cl = TdaEnvironment.class.getClassLoader();
-    URL url = cl.getResource(pkg.replace('.', '/'));
-    File[] fileAr = null;
-    System.out.println(url.toExternalForm());
-    try {fileAr = new File(url.toURI()).listFiles();} catch(URISyntaxException ex){throw new RuntimeException(ex);}
-    
-    for (File f : fileAr) {
-      if (f.isHidden())
-        continue;
-      if (f.isDirectory())
-        continue;
-      list.add(f);
-    }
-    return list;
-  }
-  */
-  private static File chooseWorkspace(boolean isHeadless)
-  {
-    File retf = null;
-    File suggestFile = new File(Constants.WORKSPACE_PATH_SUGGEST);
-    if(!suggestFile.exists()) {
-      suggestFile = new File(Constants.WORKSPACE_PATH_SUGGEST);
-      suggestFile.mkdir();
-    }
-    if(isHeadless) {
-      System.out.println("QrTda workspace created in "+suggestFile.getAbsolutePath());
-      return suggestFile;
-    }
-    LookAndFeel laf = UIManager.getLookAndFeel();
-    try {
-      UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
-    }
-    catch(ClassNotFoundException | IllegalAccessException | InstantiationException | UnsupportedLookAndFeelException ex){
-      throw new RuntimeException(ex);
-    }
-    JFileChooser chooser = new JFileChooser(Constants.WORKSPACE_PARENT_PATH_SUGGEST);
-    chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
-    chooser.setMultiSelectionEnabled(false);
-    chooser.setSelectedFile(new File(Constants.WORKSPACE_PATH_SUGGEST));
-
-    chooser.setDialogTitle("Choose or create workspace directory");
-    
-    int retVal = chooser.showOpenDialog(null);
-       
-    if(retVal == JFileChooser.APPROVE_OPTION) {
-      retf = chooser.getSelectedFile();
-      if(!retf.exists())
-        retf.mkdirs();
-    }
-    else
-      suggestFile.delete();
-    
-    try {
-      UIManager.setLookAndFeel(laf);
-    }
-    catch(UnsupportedLookAndFeelException ex) {
-      throw new RuntimeException(ex);
-    }
-    return retf; 
-  }
-    
-  public QRPreferences getPreferences()
-  {
-    return prefs;
-  }
-  
-  public void setHeadless(boolean wh)
-  {
-    headless = wh;
-  }
-  public boolean isHeadless()
-  {
-    return headless;
-  }
- 
-  public void postError(String msg, JComponent c)
-  {
-    if(logTextStream != null)
-      logTextStream.println(msg);
-    
-    if(c != null)
-      JOptionPane.showMessageDialog(c, msg);
-  }
-  
-  public void postLog(final String s, Pipeline pipeline)
-  {
-    if(logTextStream != null)
-      logTextStream.println(s);
-    
-    JTextArea logTextArea = logTAMap.get(pipeline);
-    if (logTextArea == null) {
-      return;
-    }
-    SwingUtilities.invokeLater(() -> {
-      logTextArea.append(Constants.LINE_SEPARATOR);
-      logTextArea.append(s);
-    });
-  }
-  
-  public void postSourceContent(final String s, Pipeline stream)
-  {
-    if(contentTextStream != null)
-      contentTextStream.println(s);
-    
-    JTextArea contentTextArea = contentTAMap.get(stream);
-    if(contentTextArea == null)
-      return;
-    
-    SwingUtilities.invokeLater(() -> {
-      contentTextArea.setText(s);
-    });
-  }
-  
-  private final HashMap<Pipeline,JTextArea> logTAMap = new HashMap<>(); 
-  public void setLogTextArea(Pipeline stream, JTextArea ta){logTAMap.put(stream, ta);}
-  
-  private final HashMap<Pipeline, JTextArea> contentTAMap = new HashMap<>();
-  public void setContentTextArea(Pipeline stream, JTextArea ta){contentTAMap.put(stream, ta);}
-  
-  private final HashMap<Pipeline, JPanel> imagePanMap = new HashMap<>(); 
-  public void setImagePanel(Pipeline stream, JPanel imagePanel){imagePanMap.put(stream, imagePanel);}
-  public JPanel getImagePanel(Pipeline stream)                 {return imagePanMap.get(stream);}
-  
-  
-  public void setLogTextStream(PrintStream logTextStream)
-  {
-    this.logTextStream = logTextStream;
-  }
-
-  public void setContentTextStream(PrintStream contentTextStream)
-  {
-    this.contentTextStream = contentTextStream;
-  }
-
-  public void addToPipeMap(QRTdaGuiPanel pan, QRFlowLink[] arr)
-  {
-    this.pipesMap.put(pan, arr);
-  }
-  
-  public QRFlowLink[] removeFromPipeMap(QRTdaGuiPanel pan)
-  {
-    return pipesMap.remove(pan);
-  }
-  
-  public QRFlowLink[] getPipeArray(QRTdaGuiPanel pan)
-  {
-    return pipesMap.get(pan);
-  }
-  
-  public String getMrl()
-  {
-    return null; // uses default
-  }
-  
-  public File openConfigFile(String path) throws FileNotFoundException
-  {
-    return _openXFile(configsDirectory,path);
-  }
-  
-  public File openArtFile(String path) throws FileNotFoundException
-  {
-    return _openXFile(artDirectory,path);
-  }
-  
-  public File openTextDirectory(String path) throws FileNotFoundException
-  {
-    File f =  _openXFile(textsDirectory,path);
-    if(!f.isDirectory())
-      throw new FileNotFoundException();
-    return f;
-  }
-  
-  public File openImageDirectory(String path) throws FileNotFoundException
-  {
-    File f = _openXFile(imagesDirectory,path);
-    if(!f.isDirectory())
-      throw new FileNotFoundException();
-    return f;
-    
-  }
-  private File _openXFile(File dir, String path) throws FileNotFoundException
-  {
-    if(path.equals(dir.getAbsolutePath()))
-      return dir;
-    
-    if(path.equals(dir.getName()))
-      return dir;
-    
-     File retf;
-     if(path.startsWith(Constants.FILE_SEPARATOR)) {
-      retf = new File(path);
-      if(retf.exists())
-        return retf;
-    }
-    retf = new File(dir,path);
-     if(retf.exists())
-      return retf;
-
-    retf = new File(path); // against user.dir
-    if(retf.exists())
-      return retf;
-
-    throw new FileNotFoundException("File "+path+" not found");   
-  }
-  public File[] openAllConfigFiles()
-  {
-    return configsDirectory.listFiles(new FilenameFilter()
-    {
-      @Override
-      public boolean accept(File dir, String name)
-      {
-         if(dir.getAbsolutePath().equals(configsDirectory.getAbsolutePath()))
-           if(name.toLowerCase().endsWith(".json"))
-             return true;
-         return false;
-      }     
-    });
-  }
-  
-  public String optimizeArtFile(File selectedFile)
-  {
-    String absPath = selectedFile.getAbsolutePath();
-    if(absPath.startsWith(artDirectoryFullPath)) {
-      return absPath.substring(artDirectoryFullPath.length()+1,absPath.length());
-    }
-    return absPath;
-  }
-  
-  public String getOptionValue(String name)
-  {
-    ElementOption elem = elemOpts.get(name);
-    if(elem == null)
-      return tryPrefs(name);
-    Object val = elem.value();
-    if(val == null)
-      return tryPrefs(name);
-    
-    if(elem.isExplicitlySet())
-      return val.toString();
-    
-    Object prefsVal = tryPrefs(name);
-    if(prefsVal == null)
-      return val.toString();
-    else
-      return prefsVal.toString();
-  }
-  
-  private String tryPrefs(String name)
-  {
-    return QRPreferences.getInstance().get(name, null);
-  }
-  
-  public void setOptionValue(String name, Object obj)
-  {
-    ElementOption opt = elemOpts.get(name);
-    if(opt != null)
-      opt.setValue(obj);
-    else
-      System.err.println("Didn't find "+name+" in elemOpts");
-    
-    QRPreferences.getInstance().put(name, obj.toString());
-  }
- 
-  public void addElementOption(String name, Object defalt)
-  {
-    if(elemOpts.containsKey(name)) {
-      System.err.println("TdaEnvironment.addElementOption(): option name collision: "+name);
-    }
-    else
-      elemOpts.put(name, new ElementOption(name,defalt));
-  }
-  
-  public void setMiscOption(String key, Object val)
-  {
-    miscMap.put(key, val);
-  }
-  
-  public Object getMiscOption(String key)
-  {
-    return miscMap.get(key);
-  }
-  
-  public String getLastTextSource()
-  {
-    return lastTextSource;
-  }
-
-  public void setLastTextSource(String lastTextSource)
-  {
-    this.lastTextSource = lastTextSource;
-  }
-  
-  
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/ChatElement.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/ChatElement.java
deleted file mode 100755
index a2a9977f8c3a5c2d2a566b56b2b8225523f701ed..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/ChatElement.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
-Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
-in source and binary forms, with or without modification, are permitted provided that the
-following conditions are met:
-
-Redistributions of source code must retain the above copyright notice, this list of conditions
-and the following disclaimer. Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the documentation and/or other
-materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
-Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
-http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
-WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-package edu.nps.moves.qrtda.elements;
-
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.misc.ReadyListener;
-
-/**
- * ChatElement.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public abstract class ChatElement extends QRFlowLink<String, String>
-{
-  private static ChatReceive receiver;
-  private static ChatSend sender;
-  private static ChatElement.ChatSendBindListener sendLis;
-  private static ChatElement.ChatReceiveBindListener rcvLis;
-  
-  public ChatElement(TdaEnvironment env, ReadyListener lis)
-  {
-    super("Chat Element",env,lis);
-    
-    if(this instanceof ChatReceive) {
-      registerReceiver((ChatReceive)this);
-    }
-    else {
-      registerSender((ChatSend)this);
-    }
-  }
-  
-  private void registerSender(ChatSend sndr)
-  {
-    sender = sndr;
-    if(sendLis != null && sender != null)
-      sendLis.bound(sender);
-  }
-  
-  private void registerReceiver(ChatReceive rcvr)
-  {
-    receiver = rcvr;
-    if(rcvLis != null && receiver != null)
-      rcvLis.bound(receiver);                                               
-  }
-  
-  protected ChatSend bindToSender(ChatReceive rcvr, ChatElement.ChatSendBindListener lis)
-  {
-    if(sender == null)
-      sendLis = lis;
-    return sender;
-  }
-  
-  protected ChatReceive bindToReceiver(ChatSend sndr, ChatElement.ChatReceiveBindListener lis)
-  {
-    if(receiver == null)
-      rcvLis = lis;
-    
-    return receiver;
-  }
-  
-  public static interface ChatSendBindListener
-  {
-    public void bound(ChatSend elem);
-  }
-  
-  public static interface ChatReceiveBindListener
-  {
-    public void bound(ChatReceive elem);
-  }
-
-
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/ChatReceive.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/ChatReceive.java
deleted file mode 100644
index 546ac06eb0821f03b4c0650ee5c4754dc0cfda3e..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/ChatReceive.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
-Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
-in source and binary forms, with or without modification, are permitted provided that the
-following conditions are met:
-
-Redistributions of source code must retain the above copyright notice, this list of conditions
-and the following disclaimer. Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the documentation and/or other
-materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
-Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
-http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
-WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-package edu.nps.moves.qrtda.elements;
-
-import edu.nps.moves.qrtda.elements.misc.PipeCategory;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.ChatElement.ChatSendBindListener;
-import edu.nps.moves.qrtda.elements.gui.ChatReceivePanel;
-import edu.nps.moves.qrtda.elements.misc.*;
-import java.util.NoSuchElementException;
-import javax.swing.JComponent;
-import javax.swing.SwingUtilities;
-
-/**
- * ChatReceive.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class ChatReceive extends ChatElement implements ChatSendBindListener
-{
-  @ElementHandle
-  public static String handleStr = "QR chat receive element";
-  @ElementCategory
-  public static PipeCategory category = PipeCategory.TEXT_SINK;
-  @ElementDescriptionLong
-  public static String descriptionLong = "One half of a chat application, receives text and displays on a chat window";
-  @ElementDescriptionShort
-  public static String descriptionShort = "Chat receiver";
-  
-  private ChatReceivePanel myGui;
-  private ChatSend sender;
-  
-  public ChatReceive(TdaEnvironment env, ReadyListener lis)
-  {
-    super(env,lis);
-    setHandle("QR chat receive element");
-    sender = bindToSender(this, this);
-    if(sender != null)
-      bound(sender);
-   }
- 
-  @Override
-  public JComponent getGui()
-  {
-    if(myGui == null)
-      myGui = new ChatReceivePanel();
-    return myGui;
-  }
-
-  @Override
-  protected String handleNextData() throws NoSuchElementException
-  {
-    String txt = dataQueue().next();
-    handleReceive(txt);
-    return txt;
-  }
-  
-  private void handleReceive(String s)
-  {
-    if(sender != null) {
-      if(s != null && s.length()>0)
-        SwingUtilities.invokeLater(new handler(s));
-      else
-        System.out.println("ChatReceive handler got null/empty string");
-    }
-  }
-  
-  class handler implements Runnable
-  {
-    String txt;
-    public handler(String txt)
-    {
-      this.txt = txt;
-    }
-    @Override
-    public void run()
-    {
-      sender.showReceivedText(txt);
-    }
-  }
-  
-  @Override
-  public void bound(ChatSend elem)
-  {
-    ((ChatReceivePanel)getGui()).setBoundSender(elem);
-    sender = elem;
-  }
-  @Override public PipeCategory getCategory()   { return category; }
-  @Override public String getShortDescription() { return descriptionShort; }
-  @Override public String getLongDescription()  { return descriptionLong; }  
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/ChatSend.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/ChatSend.java
deleted file mode 100644
index 8478cd285073ab43fac652ef545f34e82f40260b..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/ChatSend.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
-Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
-in source and binary forms, with or without modification, are permitted provided that the
-following conditions are met:
-
-Redistributions of source code must retain the above copyright notice, this list of conditions
-and the following disclaimer. Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the documentation and/or other
-materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
-Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
-http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
-WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-package edu.nps.moves.qrtda.elements;
-
-import edu.nps.moves.qrtda.PerformanceLogger;
-import edu.nps.moves.qrtda.elements.misc.PipeCategory;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.ChatElement.ChatReceiveBindListener;
-import edu.nps.moves.qrtda.elements.gui.ChatSendPanel;
-import edu.nps.moves.qrtda.elements.misc.*;
-import java.util.NoSuchElementException;
-import javax.swing.JComponent;
-import javax.swing.SwingUtilities;
-import org.apache.logging.log4j.*;
-
-/**
- * ChatSend.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class ChatSend extends ChatElement implements ChatReceiveBindListener
-{
-  private final Logger logger=LogManager.getLogger(ChatSend.class.getName());
-  
-  private ChatSendPanel myGui;
-  private final ChatReceive rcvr;
-  
-  @ElementHandle
-  public static String handleStr = "QR chat send element";
-  @ElementCategory
-  public static PipeCategory category = PipeCategory.TEXT_SOURCE;
-  @ElementDescriptionLong
-  public static String descriptionLong = "One half of a chat application, sends text and displays on a chat window";
-  @ElementDescriptionShort
-  public static String descriptionShort = "Chat sender";
-  
-  public ChatSend(TdaEnvironment env, ReadyListener lis)
-  {
-    super(env,lis);
-    
-    setHandle(handleStr);    // todo remove
-    rcvr=bindToReceiver(this, this);
-    if(rcvr != null)
-      bound(rcvr);
-  }
-  
-  @Override
-  public JComponent getGui()
-  {
-    if(myGui == null)
-      myGui = new ChatSendPanel(env,this);
-    return myGui;
-  }
-
-  @Override
-  protected String handleNextData() throws NoSuchElementException
-  {
-    String txt = dataQueue().next();// the initiation is done by our panel
-    PerformanceLogger.logElementInput(logger, txt);
-    SwingUtilities.invokeLater(new handler(txt));  // display it
-    
-    //This is a hack...small QR's don't get encoded/or decoded properly
-    // todo, fix properly
-    if(txt.length() < 25) {
-      StringBuilder sb = new StringBuilder(txt);
-      int x = 25-txt.length();
-      for(int i=0;i<x;i++)
-        sb.append(' ');
-      txt = sb.toString();
-    }
-    // end hack
-    
-    return txt;  
-  }
-
-  void showReceivedText(String txt)
-  {
-    ((ChatSendPanel)getGui()).showReceivedText(txt); 
-  }
-
-  class handler implements Runnable
-  {
-    String txt;
-    public handler(String txt)
-    {
-      this.txt = txt;
-    }
-    @Override
-    public void run()
-    {
-      ((ChatSendPanel)getGui()).getChatWindow().sentText(txt); // this displays it
-      PerformanceLogger.logElementOutput(logger,txt);
-    }
-  }
-
-  @Override
-  public void bound(ChatReceive elem)
-  {
-    ((ChatSendPanel)getGui()).setBoundReceiver(elem);
-  }
-  
-  @Override public PipeCategory getCategory()   { return category; }
-  @Override public String getShortDescription() { return descriptionShort; }
-  @Override public String getLongDescription()  { return descriptionLong; }  
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/DecryptorPassword.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/DecryptorPassword.java
deleted file mode 100755
index fc80a27a9fd1eef28e161dbbcc01745747cb1583..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/DecryptorPassword.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
-Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
-in source and binary forms, with or without modification, are permitted provided that the
-following conditions are met:
-
-Redistributions of source code must retain the above copyright notice, this list of conditions
-and the following disclaimer. Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the documentation and/or other
-materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
-Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
-http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
-WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-package edu.nps.moves.qrtda.elements;
-
-import edu.nps.moves.qrtda.elements.misc.PipeCategory;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import static edu.nps.moves.qrtda.elements.EncryptorPassword.ENCRYPTIONPASSWORDOPTION;
-import edu.nps.moves.qrtda.elements.misc.*;
-import java.util.NoSuchElementException;
-import org.jasypt.util.text.BasicTextEncryptor;
-
-/**
- * DecryptorPassword.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class DecryptorPassword extends QRFlowLink<String, String>
-{
-  @ElementHandle           public static String handleStr        = "Password Decryptor";
-  @ElementCategory         public static PipeCategory category   = PipeCategory.DECRYPTION;
-  @ElementDescriptionLong  public static String descriptionLong  = "Decrypts password-encrypted input";
-  @ElementDescriptionShort public static String descriptionShort = "EncryptedString->String";
-  
-  private final BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
-  
-  public DecryptorPassword(TdaEnvironment env, ReadyListener lis)
-  {
-    super(handleStr,env,lis);
-  }
-
-  @Override
-  protected String handleNextData() throws NoSuchElementException
-  {
-    String s = dataQueue().next();
-    textEncryptor.setPassword(env.getOptionValue(ENCRYPTIONPASSWORDOPTION));
-    try {
-      return textEncryptor.decrypt(s);
-    }
-    catch(Throwable t) {
-      env.postLog("Exception decrypting message: "+t.getClass()+": "+t.getLocalizedMessage(), pipeline);
-      throw new NoSuchElementException();
-    }
-  }  
-
-  @Override public PipeCategory getCategory()   { return category; }
-  @Override public String getShortDescription() { return descriptionShort; }
-  @Override public String getLongDescription()  { return descriptionLong; }  
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/DuplicateRejector.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/DuplicateRejector.java
deleted file mode 100755
index 2f3d730ce863e8c4824fb722b2dac1a0349cf2a0..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/DuplicateRejector.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements;
-
-import edu.nps.moves.qrtda.elements.misc.PipeCategory;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.gui.DuplicateRejectorPanel;
-import edu.nps.moves.qrtda.elements.gui.ResetListener;
-import edu.nps.moves.qrtda.elements.misc.*;
-import java.util.NoSuchElementException;
-import javax.swing.*;
-
-/**
- * DuplicateRejector.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class DuplicateRejector extends QRFlowLink<String, String> implements ResetListener
-{
-  @ElementHandle           public static String handleStr        = "Duplicate Rejector";
-  @ElementCategory         public static PipeCategory category   = PipeCategory.MESSAGING;
-  @ElementDescriptionLong  public static String descriptionLong  = "Stops pipe process if input string matches the last string seen";
-  @ElementDescriptionShort public static String descriptionShort = "String->check last->String or not";
-  
-  private DuplicateRejectorPanel myGui;
-  
-  private String lastReceived = null;
-  private int count = 0;
-  
-  public DuplicateRejector(TdaEnvironment env, ReadyListener lis)
-  {
-    super(handleStr, env, lis);
-  }
-
-  @Override
-  protected String handleNextData() throws NoSuchElementException
-  {
-    while (dataQueue().hasNext()) {
-      String next = dataQueue().next();
-      if (lastReceived == null || !lastReceived.equals(next)) {
-        env.postLog("DuplicateRejector(" + count++ + ") recvd & emitted: " + next,getPipeline());
-        lastReceived = next;
-        return next;
-      }
-      else
-        env.postLog("DuplicateRejector(" + count++ + ") rejected: " + next,getPipeline());
-    }
-    throw new NoSuchElementException();
-  }
-
-  @Override
-  public JComponent getGui()
-  {
-    if (myGui == null) {
-      myGui = new DuplicateRejectorPanel(this);
-    }
-    return myGui;
-  }
-    
-  @Override
-  public void setPipeIndex(int idx)
-  {
-    ((DuplicateRejectorPanel)getGui()).setPipeIndex(idx);
-  }
-
-  @Override
-  public void resetDuplicate()
-  {
-    this.lastReceived = null;
-  }
-  
-  @Override public PipeCategory getCategory()   { return category; }
-  @Override public String getShortDescription() { return descriptionShort; }
-  @Override public String getLongDescription()  { return descriptionLong; }  
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/EchoFileName.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/EchoFileName.java
deleted file mode 100755
index a61b7b596abe25aadd71f0dadccea8eeccde0d3c..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/EchoFileName.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
-Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
-in source and binary forms, with or without modification, are permitted provided that the
-following conditions are met:
-
-Redistributions of source code must retain the above copyright notice, this list of conditions
-and the following disclaimer. Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the documentation and/or other
-materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
-Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
-http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
-WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-package edu.nps.moves.qrtda.elements;
-
-import edu.nps.moves.qrtda.elements.misc.PipeCategory;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.misc.*;
-import java.awt.BorderLayout;
-import java.io.File;
-import java.util.NoSuchElementException;
-import javax.swing.JComponent;
-import javax.swing.JPanel;
-import javax.swing.JTextField;
-
-/**
- * EchoFileName.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class EchoFileName extends QRFlowLink<File, File>
-{
-  @ElementHandle           public static String handleStr        = "Echo File Name";
-  @ElementCategory         public static PipeCategory category   = PipeCategory.INFORMATIONAL;
-  @ElementDescriptionLong  public static String descriptionLong  = "Show filename <incomplete>";
-  @ElementDescriptionShort public static String descriptionShort = "Show filename <incomplete>";
-  
-  private JPanel myGui;
-
-  public EchoFileName(TdaEnvironment env, ReadyListener lis)
-  {
-    super(handleStr,env,lis);
-  }
-
-  @Override
-  protected File handleNextData() throws NoSuchElementException
-  {
-    return dataQueue().next();
-  }  
-
-  @Override
-  public JComponent getGui()
-  {
-    if(myGui == null)
-      myGui = new TfPan();
-    return myGui;
-  }
-
-  @Override public PipeCategory getCategory()   { return category; }
-  @Override public String getShortDescription() { return descriptionShort; }
-  @Override public String getLongDescription()  { return descriptionLong; } 
-  
-  class TfPan extends JPanel
-  {
-    public JTextField textField;
-  
-    public TfPan()
-    {
-      super.setLayout(new BorderLayout());
-      super.add(textField=new JTextField(),BorderLayout.CENTER);
-      textField.setColumns(20);
-    }
-  }
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/EchoQRSourceContent.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/EchoQRSourceContent.java
deleted file mode 100755
index 7fb590044d4b0016d96a2dd2784b7465e50915b5..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/EchoQRSourceContent.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements;
-
-import edu.nps.moves.qrtda.elements.misc.PipeCategory;
-import edu.nps.moves.qrtda.qr.QRInput;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.misc.*;
-import java.awt.BorderLayout;
-import java.util.NoSuchElementException;
-import javax.swing.*;
-
-/**
- * EchoQRSourceContent.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class EchoQRSourceContent extends QRFlowLink<QRInput, QRInput>
-{
-  @ElementHandle           public static String handleStr        = "QR source echo";
-  @ElementCategory         public static PipeCategory category   = PipeCategory.INFORMATIONAL;
-  @ElementDescriptionLong  public static String descriptionLong  = "Displays input source QRInput on element GUI";
-  @ElementDescriptionShort public static String descriptionShort = "Displays input source";
-  
-  private TfPan myGui;
-
-  public EchoQRSourceContent(TdaEnvironment env, ReadyListener lis)
-  {
-    super(handleStr, env, lis);
-  }
-
-  @Override
-  protected QRInput handleNextData() throws NoSuchElementException
-  {
-    QRInput qri = dataQueue().next();
-    if (qri != null) {
-      env.postLog("EchoQRSourceContent recvd & emitd QRInput: " + qri.hashCode(),getPipeline());
-      myGui.textField.setText(qri.toString());
-      qri.setContent("Echo: "+qri.getContent());
-    }
-    return qri;
-  }
-
-  @Override
-  public JComponent getGui()
-  {
-    if (myGui == null) {
-      myGui = new TfPan();
-    }
-    return myGui;
-  }
-
-  @Override public PipeCategory getCategory()   { return category; }
-  @Override public String getShortDescription() { return descriptionShort; }
-  @Override public String getLongDescription()  { return descriptionLong; }  
-  
-  class TfPan extends JPanel
-  {
-    public JTextField textField;
-
-    public TfPan()
-    {
-      super.setLayout(new BorderLayout());
-      super.add(new JLabel("Source Echo"), BorderLayout.NORTH);
-      super.add(textField = new JTextField(), BorderLayout.CENTER);
-      textField.setColumns(20);
-    }
-  }
-}
-
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/EncryptorPassword.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/EncryptorPassword.java
deleted file mode 100755
index 7400a36e71a94f2a6e76ede8ef72a2e977b85113..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/EncryptorPassword.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
-Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
-in source and binary forms, with or without modification, are permitted provided that the
-following conditions are met:
-
-Redistributions of source code must retain the above copyright notice, this list of conditions
-and the following disclaimer. Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the documentation and/or other
-materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
-Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
-http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
-WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-package edu.nps.moves.qrtda.elements;
-
-import edu.nps.moves.qrtda.elements.misc.PipeCategory;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.misc.*;
-import java.util.NoSuchElementException;
-import org.jasypt.util.text.BasicTextEncryptor;
-
-/**
- * EncryptorPassword.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class EncryptorPassword extends QRFlowLink<String, String>
-{
-  @ElementHandle           public static String handleStr        = "Password Encryptor";
-  @ElementCategory         public static PipeCategory category   = PipeCategory.ENCRYPTION;
-  @ElementDescriptionLong  public static String descriptionLong  = "Encrypts input using password encryption";
-  @ElementDescriptionShort public static String descriptionShort = "String->EncryptedString";
-  
-  public final static String ENCRYPTIONPASSWORDOPTION  = "encryptionpassword";
-  @QrtdaParameter public final static NameDefault pswd = new NameDefault(ENCRYPTIONPASSWORDOPTION,"encryption password","changeme",String.class,"string");
-
-  private final BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
-  
-  public EncryptorPassword(TdaEnvironment env, ReadyListener lis)
-  {
-    super(handleStr,env,lis);
-  }
-
-  @Override
-  protected String handleNextData() throws NoSuchElementException
-  {
-    String s = dataQueue().next();
-    textEncryptor.setPassword(env.getOptionValue(ENCRYPTIONPASSWORDOPTION));
-    return textEncryptor.encrypt(s);
-  }  
-
-  @Override public PipeCategory getCategory()   { return category; }
-  @Override public String getShortDescription() { return descriptionShort; }
-  @Override public String getLongDescription()  { return descriptionLong; }  
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/FileChooserSource.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/FileChooserSource.java
deleted file mode 100755
index 96188779a4aff306320798b4053a9e47c59d3b1a..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/FileChooserSource.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
-Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
-in source and binary forms, with or without modification, are permitted provided that the
-following conditions are met:
-
-Redistributions of source code must retain the above copyright notice, this list of conditions
-and the following disclaimer. Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the documentation and/or other
-materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
-Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
-http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
-WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-package edu.nps.moves.qrtda.elements;
-
-import edu.nps.moves.qrtda.elements.misc.PipeCategory;
-import edu.nps.moves.qrtda.elements.gui.FileChooserSourcePanel;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.misc.*;
-import java.io.File;
-import java.util.NoSuchElementException;
-import javax.swing.JComponent;
-
-/**
- * FileChooserSource.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class FileChooserSource extends QRFlowLink<Object,File>
-{
-  @ElementHandle           public static String handleStr        = "File Chooser Source";
-  @ElementCategory         public static PipeCategory category   = PipeCategory.TEXT_SOURCE;
-  @ElementDescriptionLong  public static String descriptionLong  = "Uses filechooser to select a file, which is then passed on <incomplete>";
-  @ElementDescriptionShort public static String descriptionShort = "File output from chooser <incomplete>";
-  
-  private FileChooserSourcePanel myGui;
-  
-  public FileChooserSource(TdaEnvironment env, ReadyListener lis)
-  {
-    super(handleStr,env,lis);
-  }
-  
-  @Override
-  public JComponent getGui()
-  {
-    if(myGui == null)
-      myGui = new FileChooserSourcePanel();
-    return myGui;
-  }
-
-  @Override
-  protected File handleNextData() throws NoSuchElementException
-  {
-    throw new UnsupportedOperationException("Not supported yet.");
-  }
-
-  @Override public PipeCategory getCategory()   { return category; }
-  @Override public String getShortDescription() { return descriptionShort; }
-  @Override public String getLongDescription()  { return descriptionLong; }  
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/FrameGrabberRunnable.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/FrameGrabberRunnable.java
deleted file mode 100644
index 7ecea8121b008da618433171708e9851a7694303..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/FrameGrabberRunnable.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements;
-
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.misc.NoCaptureDeviceFound;
-
-/**
- * FrameGrabberRunnable.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public interface FrameGrabberRunnable
-{
-  public void setMrlOrName(String mrl);
-  public void setSleepTime(long sleepTime);
-  public void beginGrab(TdaEnvironment env, QRFlowLink<?,?> qlink) throws NoCaptureDeviceFound;
-  public void stopGrab();
-  public void setThreadPriority(int prior);
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/ImageProjector.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/ImageProjector.java
deleted file mode 100644
index bcea45f1c550e10523cfdf22bc37728fef2f5804..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/ImageProjector.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements;
-
-import edu.nps.moves.qrtda.elements.misc.PipeCategory;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.gui.ImageProjectorPanel;
-import edu.nps.moves.qrtda.elements.misc.*;
-import java.awt.image.BufferedImage;
-import java.util.NoSuchElementException;
-import javax.swing.*;
-
-/**
- * ImageProjector.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class ImageProjector extends QRFlowLink<BufferedImage, BufferedImage>
-{
-  @ElementHandle           public static String handleStr        = "BufferedImage projector";
-  @ElementCategory         public static PipeCategory category   = PipeCategory.IMAGE_SINK;
-  @ElementDescriptionLong  public static String descriptionLong  = "Displays received image";
-  @ElementDescriptionShort public static String descriptionShort = "BufferedImage->BufferedImage";
-  
-  private ImageProjectorPanel myGui;
-
-  public ImageProjector(TdaEnvironment env, ReadyListener lis)
-  {
-    super(handleStr, env, lis);
-  }
-
-  @Override
-  protected BufferedImage handleNextData() throws NoSuchElementException
-  {
-    while(dataQueue().hasNext()) {
-      BufferedImage bImage = dataQueue().next();
-      env.postLog("ImagePanelProjector recvd & emitd BufferedImage: " + bImage.hashCode()+" size: "+bImage.getWidth()+"x"+bImage.getHeight(),getPipeline());
-      // show it
-      SwingUtilities.invokeLater(new MyRunner(bImage));
-      return bImage;
-    }
-    throw new NoSuchElementException();
-  }
-
-  @Override
-  public JComponent getGui()
-  {
-    if(myGui == null)
-      myGui = new ImageProjectorPanel(env);
-    return myGui;
-  }
-
-  class MyRunner implements Runnable
-  {
-    BufferedImage img;
-    public MyRunner(BufferedImage img)
-    {     
-      this.img = img;
-    }
-
-    @Override
-    public void run()
-    {
-      if(myGui != null)
-        myGui.setImage(img);
-    }
-  }
-  
-  @Override public PipeCategory getCategory()   { return category; }
-  @Override public String getShortDescription() { return descriptionShort; }
-  @Override public String getLongDescription()  { return descriptionLong; }  
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/JmDnsQRReceiver3.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/JmDnsQRReceiver3.java
deleted file mode 100644
index 35a21ab98c65e75d99adb9b1227ff086bad4e0c9..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/JmDnsQRReceiver3.java
+++ /dev/null
@@ -1,306 +0,0 @@
-/*
-Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
-in source and binary forms, with or without modification, are permitted provided that the
-following conditions are met:
-
-Redistributions of source code must retain the above copyright notice, this list of conditions
-and the following disclaimer. Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the documentation and/or other
-materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
-Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
-http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
-WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-package edu.nps.moves.qrtda.elements;
-
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.gui.JmDnsQRReceiverPanel3;
-import edu.nps.moves.qrtda.elements.misc.*;
-import java.awt.image.BufferedImage;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.*;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.NoSuchElementException;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.LinkedBlockingQueue;
-import javax.imageio.ImageIO;
-import javax.imageio.ImageReader;
-import javax.imageio.stream.ImageInputStream;
-import javax.jmdns.*;
-import javax.swing.JComponent;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * JmDnsQRReceiver3.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class JmDnsQRReceiver3 extends QRFlowLink<BufferedImage, BufferedImage> 
-{
-  public static final String QRIMAGERECEIVER_SERVICE = "_qrimagereceiver_service._tcp.local.";
-  
-  @ElementHandle           public static String handleStr        = "JmDns QRReceiver";
-  @ElementCategory         public static PipeCategory category   = PipeCategory.IMAGE_SOURCE;
-  @ElementDescriptionLong  public static String descriptionLong  = "Receive QR image over lan through JmDns discovery at "+QRIMAGERECEIVER_SERVICE;
-  @ElementDescriptionShort public static String descriptionShort = "Receive QR image over lan through JmDns discovery";
- 
-  private JmDnsQRReceiverPanel3 myGui;
-  boolean isAdvertising = false;
-  boolean isReceivingEnabled = false;
-  int count = 0;
-  
-  public JmDnsQRReceiver3(TdaEnvironment env, ReadyListener lis)
-  {
-    super(handleStr,env,lis);
-  }
-  
-  @Override
-  protected BufferedImage handleNextData() throws NoSuchElementException
-  {
-    env.postLog("QJmDnsQRReceiver3("+count++ +") emitd bufferedimage",getPipeline());
-    return starts.next();
-  }
-  
-  @Override
-  public boolean hasOnOffSwitch()
-  {
-    return true;
-  }
-
-  @Override
-  public void turnOff()
-  {
-    setAdvertising(false);
-    setReceivingEnabled(false);
-  }
-
-  @Override
-  public void turnOn()
-  {
-    setAdvertising(true);
-    setReceivingEnabled(true);
-  }
- 
-  public void setAdvertising(boolean onOff)
-  {
-    if(isAdvertising != onOff)
-      startStopAdvertising(onOff);
-    isAdvertising = onOff;
-  }
-
-  // called from gui checkbox click
-  public void setReceivingEnabled(boolean yesNo)
-  {
-    if(isReceivingEnabled != yesNo)
-      startStopReceiving(yesNo);
-    isReceivingEnabled = yesNo;
-  } 
-   
-  // JmDns code to advertise the receiving service, then sit on a server socket accepting connections.  Each connection
-  // is used to transfer one QR image.
-  
-  JmDnsQRReceiver3.JmDnsListenerThread jmdnsThread;
-  private void startStopAdvertising(boolean start)
-  {
-    if (!start && jmdnsThread != null) {
-      jmdnsThread.kill();
-      jmdnsThread = null;
-    }
-    else { 
-      setupThreadPool();
-      jmdnsThread = new JmDnsQRReceiver3.JmDnsListenerThread();
-    }
-  }
-
-  ExecutorService executor;
-  private void setupThreadPool()
-  {
-    executor = Executors.newFixedThreadPool(10);
-  }
-  
-  class JmDnsListenerThread extends Thread
-  {
-    ServerSocket ssock;
-    JmDNS jmdns;
-    boolean killed = false;
-
-    public JmDnsListenerThread()
-    {
-      setPriority(Thread.NORM_PRIORITY);
-      setDaemon(true);
-      super.start();
-    }
-
-    @Override
-    public void run()
-    {
-      try {
-        ssock = new ServerSocket(0, 10);  // 0 means give me a port, 10 means accept 10 at a time
-        jmdns = JmDNS.create(InetAddress.getLocalHost());
-        env.postLog("Listening for connections on port "+ssock.getLocalPort(),getPipeline());
-        ServiceInfo svc = ServiceInfo.create(QRIMAGERECEIVER_SERVICE, "QR Image Receiver", ssock.getLocalPort(), "A service which receives QR Images");
-        jmdns.registerService(svc);
-        while (true) {
-          Socket connectionSock = ssock.accept();
-          env.postLog("Connection established with "+connectionSock,getPipeline());
-          readImage(connectionSock);
-        }
-      }
-      catch (IOException ex) {
-        Logger logger = LoggerFactory.getLogger(JmDnsQRReceiver3.class);
-        logger.error("JMDnsQRReceiver3 exception: ", ex);
-        String err = "JmDnsQRReceiver3 exception: " + ex.getClass().getSimpleName() + ": " + ex.getLocalizedMessage();
-        System.err.println(err);
-        env.postLog(err,getPipeline());
-      }
-    }
-
-    public void kill()
-    {
-      if (jmdns != null) {
-        jmdns.unregisterAllServices();
-        try {
-          jmdns.close();
-        }
-        catch (IOException ex) {
-        }
-        jmdns = null;
-        killed = true;
-        interrupt();
-      }
-    }
-  }
-  
-  private void startStopReceiving(boolean wh)
-  {
-    showReady(wh);
-    if(wh)
-      startQueueReader();
-    else
-      stopQueueReader();
-  } 
-  
-  private void readImage(Socket sock)
-  {
-    //System.out.println("JmDnsQRReceiver3.readImage("+sock);
-    Runnable t = new ReceiverThread(sock);
-    executor.execute(t);
-  }
-  
-  // Receiving thread.  This gets spawned on a connection.  It reads the image, then enqueues it, then goes away.
-  class ReceiverThread implements Runnable
-  {
-    Socket sock;
-    JmDNS jmdns;
-    boolean killed = false;
-
-    public ReceiverThread(Socket sock)
-    {
-      this.sock = sock;
-    }
-    
-    @Override
-    public void run()
-    {
-      InputStream ins;
-      //System.out.println("JmDnsQRReceiver3.ReceiverThread.run("+sock);
-
-      try {
-        ins = sock.getInputStream();
-
-        ImageInputStream iis = ImageIO.createImageInputStream(ins);
-        Iterator itr = ImageIO.getImageReaders(iis);
-        if (!itr.hasNext()) {
-          throw new Exception("no readers");
-        }
-
-        ImageReader ir = (ImageReader) itr.next();
-        String fmt = ir.getFormatName();
-
-        BufferedImage bi = ImageIO.read(iis);
-        inQ.put(bi);
-
-        ins.close();
-        sock.close();
-      }
-      catch (Exception ex) {
-        Logger logger = LoggerFactory.getLogger(JmDnsQRReceiver3.class);
-        logger.error("JmDnsQRReceiver2 exception: ",ex);
-        System.err.println("JmDnsQRReceiver3 exception: " + ex.getClass().getSimpleName() + ": " + ex.getLocalizedMessage());
-      }
-    }
-  }
-  
-  /* Here are the methods to pump the image on down the dataflow pipe.*/
-  Thread inQReaderThread;
-  LinkedBlockingQueue inQ = new LinkedBlockingQueue<>();
-  
-  private void startQueueReader()
-  {
-    if(inQReaderThread == null)
-      (inQReaderThread = new JmDnsQRReceiver3.QueueReaderThread()).start();
-  }
-  
-  private void stopQueueReader()
-  {
-    if(inQReaderThread != null)
-      inQReaderThread.interrupt();
-  }
-  
-  class QueueReaderThread extends Thread
-  {
-    public QueueReaderThread()
-    {
-      setPriority(Thread.NORM_PRIORITY);
-      setDaemon(true);
-    }
-    
-    @Override
-    public void run()
-    {
-      try {
-        while (true) {
-          BufferedImage bi = (BufferedImage) inQ.take();
-          ArrayList aLis = new ArrayList();
-          aLis.add(bi);
-          JmDnsQRReceiver3.this.getPipeline().setStarts(aLis); //env.getPipeline().setStarts(aLis);
-          JmDnsQRReceiver3.this.getPipeline().iterate(); //env.getPipeline().iterate();  
-          // this executes our pipe components in this thread
-        }
-
-      }
-      catch (InterruptedException ex) {
-        inQReaderThread = null;
-      }
-    }
-  }
-  
-  @Override
-  public JComponent getGui()
-  {
-    if (myGui == null) {
-      myGui = new JmDnsQRReceiverPanel3(env,this);
-    }
-    return myGui;
-  }
-  
-  @Override public PipeCategory getCategory()   { return category; }
-  @Override public String getShortDescription() { return descriptionShort; }
-  @Override public String getLongDescription()  { return descriptionLong; }  
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/JmDnsQRSender3.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/JmDnsQRSender3.java
deleted file mode 100644
index d530689498b10b5bb9d8ff5540b63a5f03ba7ca7..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/JmDnsQRSender3.java
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements;
-
-import edu.nps.moves.qrtda.TdaEnvironment;
-import static edu.nps.moves.qrtda.elements.JmDnsQRReceiver3.QRIMAGERECEIVER_SERVICE;
-import edu.nps.moves.qrtda.elements.gui.JmDnsQRSender3Panel;
-import edu.nps.moves.qrtda.elements.misc.*;
-import java.awt.image.BufferedImage;
-import java.io.*;
-import java.net.Socket;
-import java.util.*;
-import javax.imageio.ImageIO;
-import javax.imageio.ImageWriter;
-import javax.imageio.stream.ImageOutputStream;
-import javax.jmdns.*;
-import javax.swing.JComponent;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * JmDnsQRSender3.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class JmDnsQRSender3 extends QRFlowLink<BufferedImage, BufferedImage>
-{
-  @ElementHandle           public static String handleStr        = "JmDns QRSender";
-  @ElementCategory         public static PipeCategory category   = PipeCategory.IMAGE_SINK;
-  @ElementDescriptionLong  public static String descriptionLong  = "Send QR image over lan through JmDns discovery at "+QRIMAGERECEIVER_SERVICE;
-  @ElementDescriptionShort public static String descriptionShort = "Send QRimage over lan through JmDns discovery";
-  
-  private JmDnsQRSender3Panel myGui;
-  boolean isSendingEnabled = false;
-  JmDNS jmdns;
-  SvcListener svcListener;
-  
-  final Logger logger = LoggerFactory.getLogger(JmDnsQRSender3.class);
-
-  public JmDnsQRSender3(TdaEnvironment env, ReadyListener lis)
-  {
-    super(handleStr,env, lis);
-    startStopJmdnsListener(true);
-  }
-
-  @Override
-  protected BufferedImage handleNextData() throws NoSuchElementException
-  {
-    BufferedImage bi = starts.next();
-    if (myGui.isSendingEnabled()) {
-      List<ServiceInfo> lis = myGui.getSelected();
-      for (ServiceInfo si : lis) {
-        sendBufferedImage(bi, si);
-      }
-    }
-    return bi;
-  }
-  
-  private void sendBufferedImage(BufferedImage bi, ServiceInfo si)
-  { 
-    try {
-      Socket sock = new Socket(si.getInet4Addresses()[0],si.getPort());
-      OutputStream outs = sock.getOutputStream();
-      ImageOutputStream ios = ImageIO.createImageOutputStream(outs);
-      
-      Iterator itr = ImageIO.getImageWritersByFormatName("png");
-      if (!itr.hasNext()) {
-        throw new Exception("no readers");
-      }
-
-      ImageWriter iw = (ImageWriter) itr.next();
-      iw.setOutput(ios);
-      iw.write(bi);
-
-      ios.flush();
-      ios.close();
-      
- //     logger.info("QR image file send complete");
-    }
-    catch (Exception ex) {
-      String msg = "Exception sending through FTPClient: " + ex.getClass().getSimpleName() + ": " + ex.getLocalizedMessage();
-      logger.error(msg);
-      env.postLog(msg,getPipeline());
-    }
-  }
-
-  private void startStopJmdnsListener(boolean start)
-  {
-    if (jmdns == null) {
-      try {
-        jmdns = JmDNS.create();
-      }
-      catch (IOException ex) {
-        env.postLog("Error creating JmDNS object",getPipeline());
-        return;
-      }
-      jmdns.addServiceListener(JmDnsQRReceiver3.QRIMAGERECEIVER_SERVICE, svcListener = new SvcListener());
-    }
-  }
-
-  @Override
-  public void setPipeIndex(int idx)
-  {
-    ((JmDnsQRSender3Panel)getGui()).setPipeIndex(idx);
-  }
-
-  class SvcListener implements ServiceListener
-  {
-    @Override
-    public void serviceAdded(ServiceEvent event)
-    {
-      System.out.println("Service added"); //refreshReceiverList();
-      ServiceInfo si = event.getDNS().getServiceInfo(event.getType(), event.getName());
-      if (!alreadyHave(si)) {
-        myGui.addReceiver(event.getDNS().getServiceInfo(event.getType(), event.getName()));
-      }
-    }
-
-    @Override
-    public void serviceRemoved(ServiceEvent event)
-    {
-      System.out.println("Service removed"); //refreshReceiverList();
-    }
-
-    @Override
-    public void serviceResolved(ServiceEvent event)
-    {
-      System.out.println("Service resolved"); //refreshReceiverList();
-    }
-  }
-
-  private boolean alreadyHave(ServiceInfo si)
-  {
-    return false; //todo
-  }
-
-
-  @Override
-  public JComponent getGui()
-  {
-    if (myGui == null) {
-      myGui = new JmDnsQRSender3Panel(env, this);
-    }
-    return myGui;
-  }
-
-  @Override
-  public boolean hasOnOffSwitch()
-  {
-    return true;
-  }
-  
- @Override
-  public void turnOff()
-  {
-    setSendingEnabled(false);
-  }
-
-  @Override
-  public void turnOn()
-  {
-    setSendingEnabled(true);
-  }
- 
-  public void setSendingEnabled(boolean selected)
-  {
-    if (isSendingEnabled != selected) {
-      startStopSending(selected);
-    }
-    isSendingEnabled = selected;
-  }
-  
-  private void startStopSending(boolean selected)
-  {
-    showReady(selected);
-  }
-  
-  @Override public PipeCategory getCategory()   { return category; }
-  @Override public String getShortDescription() { return descriptionShort; }
-  @Override public String getLongDescription()  { return descriptionLong; }  
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/OpticalCommsImageReceiver.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/OpticalCommsImageReceiver.java
deleted file mode 100755
index 42c374e93c8cdb42cf37e3954385ad4f22568518..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/OpticalCommsImageReceiver.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements;
-
-import edu.nps.moves.qrtda.elements.misc.PipeCategory;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.gui.OpticalCommsDecodeWindow;
-import edu.nps.moves.qrtda.elements.gui.QRImagePanelDisplayerOptions;
-import edu.nps.moves.qrtda.elements.gui.YesNoListener;
-import edu.nps.moves.qrtda.elements.misc.*;
-import java.awt.BorderLayout;
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.awt.image.BufferedImage;
-import java.util.NoSuchElementException;
-import javax.swing.*;
-
-/**
- * QRImagePanelDisplayer.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class OpticalCommsImageReceiver extends QRFlowLink<BufferedImage, BufferedImage> implements YesNoListener
-{
-  @ElementHandle           public static String handleStr        = "BufferedImage local displayer";
-  @ElementCategory         public static PipeCategory category   = PipeCategory.INFORMATIONAL;
-  @ElementDescriptionLong  public static String descriptionLong  = "Shows input image in gui";
-  @ElementDescriptionShort public static String descriptionShort = "BufferedImage->BufferedImage";
-  
-  private boolean isEnabled = false;
-  private QRImagePanelDisplayerOptions myGui;
-  private OpticalCommsDecodeWindow decodeWindow;
-  public OpticalCommsImageReceiver(TdaEnvironment env, ReadyListener lis)
-  {
-    super(handleStr, env, lis);
-  }
-
-  @Override
-  public void initialize()
-  {
-    decodeWindow = OpticalCommsDecodeWindow.show(env,getPipeline());
-    isEnabled = true;
-  }
-
-  @Override
-  protected BufferedImage handleNextData() throws NoSuchElementException
-  {
-    final BufferedImage bImage = dataQueue().next();
-    if (isEnabled) {
-      //env.postLog("QRImagePanelDisplayer recvd & emitd BufferedImage: " + bImage.hashCode() + " size: " + bImage.getWidth() + "x" + bImage.getHeight(),getPipeline());
-      SwingUtilities.invokeLater(() -> {
-        BufferedImage working = bImage;
-        JPanel pan = decodeWindow.getVideoHolder();
-        if (pan != null) {  
-          Dimension d = pan.getSize();
-          if (bImage.getWidth() > d.width || bImage.getHeight() > d.height) {
-            float panW = d.width;
-            float panH = d.height;
-            float imgW = bImage.getWidth();
-            float imgH = bImage.getHeight();
-            float widthscale = panW / imgW;
-            float heightscale = panH / imgH;
-            
-            float newWidth = imgW * widthscale;
-            float newHeight = imgH * widthscale;
-            
-            if (newHeight > panH) {
-              newWidth = imgW * heightscale;
-              newHeight = imgH * heightscale;
-            }
-            
-            working = new BufferedImage((int)newWidth, (int)newHeight, BufferedImage.TYPE_INT_RGB);
-            Graphics g = working.createGraphics();
-            g.drawImage(bImage, 0, 0, (int) newWidth, (int) newHeight, null);
-            g.dispose();
-          }
-
-          JLabel imageLab = new JLabel(new ImageIcon(working));
-          pan.removeAll();
-          pan.add(imageLab, BorderLayout.CENTER);
-          pan.doLayout();
-        }
-      });
-    }
-    return bImage;
-  }
-
-  @Override
-  public void yesSelected(boolean yes)
-  {
-    this.isEnabled = yes;
-  }
-
-  @Override
-  public JComponent getGui()
-  {
-    if (myGui == null)
-      myGui = new QRImagePanelDisplayerOptions(this);
-    return myGui;
-  }
-  
-  @Override public PipeCategory getCategory()   { return category; }
-  @Override public String getShortDescription() { return descriptionShort; }
-  @Override public String getLongDescription()  { return descriptionLong; }  
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRBufferedImageGenerator.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRBufferedImageGenerator.java
deleted file mode 100755
index c8a893e99a52da0e0862e1ea2d63cecc32ab37c2..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRBufferedImageGenerator.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements;
-
-import edu.nps.moves.qrtda.elements.misc.PipeCategory;
-import com.google.zxing.client.j2se.MatrixToImageWriter;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import com.google.zxing.common.BitMatrix;
-import edu.nps.moves.qrtda.PerformanceLogger;
-import edu.nps.moves.qrtda.elements.misc.*;
-import java.awt.image.BufferedImage;
-import java.util.NoSuchElementException;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-/**
- * QRBufferedImageGenerator.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class QRBufferedImageGenerator extends QRFlowLink<BitMatrix, BufferedImage>
-{
-  private final Logger logger=LogManager.getLogger(QRBufferedImageGenerator.class.getName());
-
-  @ElementHandle           public static String handleStr        = "BufferedImage generator";
-  @ElementCategory         public static PipeCategory category   = PipeCategory.QR_GENERATION;
-  @ElementDescriptionLong  public static String descriptionLong  = "Format conversion";
-  @ElementDescriptionShort public static String descriptionShort = "Format conversion: BufferedImage->BufferedImage";
-  
-  public QRBufferedImageGenerator(TdaEnvironment env, ReadyListener lis)
-  {
-    super(handleStr, env, lis);
-  }
-
-  @Override
-  protected BufferedImage handleNextData() throws NoSuchElementException
-  {
-    BitMatrix bMatrix = dataQueue().next();
-    PerformanceLogger.logElementInput(logger, null);
-
-    env.postLog("QRBufferedImageGenerator, recvd BitMatrix: " + bMatrix.hashCode(),getPipeline());
-
-    BufferedImage bi = MatrixToImageWriter.toBufferedImage(bMatrix);  //todo use the configurable method
-    PerformanceLogger.logQRGenerationEnd(logger, null);
-    env.postLog("QRBufferedImageGenerator, emitd BufferedImage: " + bi.hashCode(),getPipeline());
-    PerformanceLogger.logElementOutput(logger, null);
-
-    return bi;
-  }
-   
-  @Override public PipeCategory getCategory()   { return category; }
-  @Override public String getShortDescription() { return descriptionShort; }
-  @Override public String getLongDescription()  { return descriptionLong; }  
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRCameraFrameGrabber.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRCameraFrameGrabber.java
deleted file mode 100755
index 88a327f0566221bd12245da5fb6cfc07b139b7b6..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRCameraFrameGrabber.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements;
-
-import edu.nps.moves.qrtda.elements.misc.PipeCategory;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.gui.FrameGrabber;
-import edu.nps.moves.qrtda.elements.gui.QRCameraFrameGrabberPanel;
-import edu.nps.moves.qrtda.elements.misc.*;
-import java.awt.image.BufferedImage;
-import java.util.NoSuchElementException;
-import javax.swing.JComponent;
-
-/**
- * QRCameraFrameGrabber.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class QRCameraFrameGrabber extends QRFlowLink<BufferedImage, BufferedImage> implements FrameGrabber
-{
-  @ElementHandle           public static String handleStr        = "Camera frame grabber";
-  @ElementCategory         public static PipeCategory category   = PipeCategory.IMAGE_SOURCE;
-  @ElementDescriptionLong  public static String descriptionLong  = "Gets video from camera, converts to BufferedImage";
-  @ElementDescriptionShort public static String descriptionShort = "Camera frame->buffered image";
-
-  public final static String FRAMEGRABINTERVALOPTION = "framegrabinterval";
-  @QrtdaParameter public final static NameDefault interval = 
-      new NameDefault(FRAMEGRABINTERVALOPTION, "frame capture interval (ms)", 1000,  Number.class, "interval");
-  
-  public final static String WEBCAMNAMEOPTION = "webcamname";
-  @QrtdaParameter public final static NameDefault webcam = new NameDefault(WEBCAMNAMEOPTION, "webcam name", "iSight",  String.class, "name");
-
-  private QRCameraFrameGrabberPanel myGui;
-  private FrameGrabberRunnable grabberRunnable;
-  
-  public QRCameraFrameGrabber(TdaEnvironment env, ReadyListener lis)
-  {
-    super(handleStr, env, lis);
-    Runtime.getRuntime().addShutdownHook(new ShutdownHook());
-  }
-
-  @Override
-  public JComponent getGui()
-  {
-    if (myGui == null) {
-      myGui = new QRCameraFrameGrabberPanel(this, handleStr, env);
-    }
-    return myGui;
-  }
-
-  @Override
-  public boolean hasOnOffSwitch()
-  {
-    return true;
-  }
-  
-  @Override
-  public void turnOff()
-  {
-    killLoop();
-  }
-  
-  @Override
-  public void turnOn()
-  {
-    beginFrameGrab();
-  }
-  
-  @Override
-  public void setPipeIndex(int idx)
-  {
-    ((QRCameraFrameGrabberPanel) getGui()).setPipeIndex(idx);
-  }
-
-  @Override
-  protected BufferedImage handleNextData() throws NoSuchElementException
-  {
-    while (true) {
-      return (BufferedImage) dataQueue().next();
-    }
-  }
-
-  /**
-   * Called from pipeline manager
-   */
-  @Override
-  public void initialize()
-  {
-    //long ms = myGui.getSleepTime();
-    beginFrameGrab();//ms);
-  }
-
-  /**
-   * Called from gui and above
-   */
-  @Override
-  public void beginFrameGrab()
-  {
-    killLoop();
-    grabberRunnable = new WebcamCaptureLibraryFrameGrabber();
-    
-    grabberRunnable.setMrlOrName(env.getOptionValue(WEBCAMNAMEOPTION));
-    grabberRunnable.setThreadPriority(Thread.NORM_PRIORITY);
-    grabberRunnable.setSleepTime(Long.parseLong(env.getOptionValue(FRAMEGRABINTERVALOPTION))); //myGui.getSleepTime());
-    try {
-      grabberRunnable.beginGrab(env,this);
-    }
-    catch(NoCaptureDeviceFound ex) {
-      env.postError("No capture device found.", myGui);
-      return;
-    }
-    showReady(true);
-    env.postLog("QRCameraFrameGrabber begun",getPipeline());
-  }
-
-  @Override
-  public void killLoop()
-  {
-    if (grabberRunnable != null ) {
-      grabberRunnable.stopGrab();
-    }
-    showReady(false);
-  }
-
-  public void setFrameSleep(long ms)
-  {
-    if (grabberRunnable != null) {
-      grabberRunnable.setSleepTime(ms);
-    }
-  }
-  
-  @Override public PipeCategory getCategory()   { return category; }
-  @Override public String getShortDescription() { return descriptionShort; }
-  @Override public String getLongDescription()  { return descriptionLong; }  
-  
-  class ShutdownHook extends Thread
-  {
-    @Override
-    public void run()
-    {
-      killLoop();
-    }
-  }
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRCommsLink.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRCommsLink.java
deleted file mode 100755
index 7f98eedd7464c547d65bb3703576068456846d27..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRCommsLink.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-package edu.nps.moves.qrtda.elements;
-
-import edu.nps.moves.qrtda.elements.gui.QRCommsFrame;
-import edu.nps.moves.qrtda.elements.misc.PipeCategory;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.misc.*;
-import java.awt.*;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.image.BufferedImage;
-import java.util.NoSuchElementException;
-import javax.swing.JComponent;
-import javax.swing.JFrame;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-
-/**
- * QRCommsLink.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class QRCommsLink extends QRFlowLink<BufferedImage, BufferedImage>
-{
-  @ElementHandle           public static String handleStr        = "QR comms link";
-  @ElementCategory         public static PipeCategory category   = PipeCategory.COMMS;
-  @ElementDescriptionLong  public static String descriptionLong  = "QR comms link <TBD>, BufferedImage->BufferedImage";
-  @ElementDescriptionShort public static String descriptionShort = "QR comms link <TBD>";
-  
-  JPanel myGui;
-  JFrame guiFrame;
-  public QRCommsLink(TdaEnvironment env, ReadyListener lis)
-  {
-    super(handleStr, env, lis);
-  }
-    
-  @Override
-  protected BufferedImage handleNextData() throws NoSuchElementException
-  {
-    return dataQueue().next();
-  }
-   
-  @Override
-  public JComponent getGui()
-  {
-    if(myGui == null) {
-      myGui = new JPanel();
-      myGui.setLayout(new GridBagLayout());
-      JLabel lab = new JLabel("QR comms link");
-       GridBagConstraints gridBagConstraints = new GridBagConstraints();
-      gridBagConstraints.gridx = 0;
-      gridBagConstraints.gridy = 0; // bottom spacer
-      gridBagConstraints.fill = java.awt.GridBagConstraints.NONE;
-      gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
-      gridBagConstraints.weightx = 1.0;
-      gridBagConstraints.weighty = 0.0;
-      myGui.add(lab,gridBagConstraints);
-      Button butt = new Button("Open Comms Link Configuration");
-      gridBagConstraints = new GridBagConstraints();
-      gridBagConstraints.gridx = 0;
-      gridBagConstraints.gridy = 1; // bottom spacer
-      gridBagConstraints.fill = java.awt.GridBagConstraints.NONE;
-      gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
-      gridBagConstraints.weightx = 1.0;
-      gridBagConstraints.weighty = 1.0;
-
-      myGui.add(butt,gridBagConstraints);
-      
-      butt.addActionListener(new ActionListener()
-      {
-        @Override
-        public void actionPerformed(ActionEvent ae)
-        {
-          if(guiFrame == null)
-            guiFrame = new QRCommsFrame(env);
-          guiFrame.setVisible(true);
-        }
-        
-      });
-    }
-    return myGui;
-  }
-
-  @Override public PipeCategory getCategory()   { return category; }
-  @Override public String getShortDescription() { return descriptionShort; }
-  @Override public String getLongDescription()  { return descriptionLong; }  
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRContentSourceEdit.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRContentSourceEdit.java
deleted file mode 100755
index 675aa44bcf491bc1fdc9f75906fc88902bee0463..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRContentSourceEdit.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
-Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
-in source and binary forms, with or without modification, are permitted provided that the
-following conditions are met:
-
-Redistributions of source code must retain the above copyright notice, this list of conditions
-and the following disclaimer. Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the documentation and/or other
-materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
-Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
-http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
-WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-package edu.nps.moves.qrtda.elements;
-
-import edu.nps.moves.qrtda.elements.misc.PipeCategory;
-import edu.nps.moves.qrtda.elements.gui.QRSourceContentPanel;
-import edu.nps.moves.qrtda.qr.QRInput;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.misc.*;
-import java.util.NoSuchElementException;
-import javax.swing.JComponent;
-
-/**
- * QRContentSourceEdit.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class QRContentSourceEdit extends QRFlowLink<QRInput, QRInput>
-{
-  @ElementHandle           public static String handleStr        = "QR manual source editor";
-  @ElementCategory         public static PipeCategory category   = PipeCategory.TEXT_SOURCE;
-  @ElementDescriptionLong  public static String descriptionLong  = "Enter user text -> QRInput";
-  @ElementDescriptionShort public static String descriptionShort = "User input -> QRInput";
-  
-  private QRSourceContentPanel myGui;
-  
-  public QRContentSourceEdit(TdaEnvironment env, ReadyListener lis)
-  {
-    super(handleStr,env,lis);
-  }
-  
-  @Override
-  public JComponent getGui()
-  {
-    if(myGui == null)
-      myGui = new QRSourceContentPanel(env,this);
-    return myGui;
-  }
-
-  @Override
-  protected QRInput handleNextData() throws NoSuchElementException
-  {
-    QRInput start = dataQueue().next();
-    env.postLog("QRContentSourceChooser emitd QRInput: "+start.hashCode(),getPipeline());
-    return start;
-  }
-
-  @Override public PipeCategory getCategory()   { return category; }
-  @Override public String getShortDescription() { return descriptionShort; }
-  @Override public String getLongDescription()  { return descriptionLong; }  
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRDeSequencer.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRDeSequencer.java
deleted file mode 100755
index 8c96375fc84347cf7eb561f95d6f5e1bbaf74ad7..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRDeSequencer.java
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements;
-
-import com.tinkerpop.pipes.filter.FilterPipe;
-import edu.nps.moves.qrtda.elements.misc.PipeCategory;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.misc.*;
-import java.util.*;
-
-/**
- * QRDeSequencer.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class QRDeSequencer extends QRFlowLink<String, String> implements FilterPipe<String>
-{
-  @ElementHandle           public static String handleStr        = "QR unsequencer";
-  @ElementCategory         public static PipeCategory category   = PipeCategory.MESSAGING;
-  @ElementDescriptionLong  public static String descriptionLong  = "Accumulates strings";
-  @ElementDescriptionShort public static String descriptionShort = "String->collect->Document";;
-  
-  public QRDeSequencer(TdaEnvironment env, ReadyListener lis)
-  {
-    super(handleStr, env, lis);
-    sb = new StringBuilder();
-  }
-  
-  private final StringBuilder sb;
-  SortedSet<RcvdMsg> msgSet = Collections.synchronizedSortedSet(new TreeSet<>(new RcvdMsgComparator()));
-
-  int recvCount = 0;
-  @Override
-  protected String handleNextData() throws NoSuchElementException
-  {
-    while (dataQueue().hasNext()) {
-      String msg = dataQueue().next();
-      if (!isSequencedMessage(msg)) {
-        // not a sequenced message
-        env.postLog("QRDeSequencer recvd & emitd a non sequenced String: " + msg.hashCode(),getPipeline());
-        return msg;
-      }
-      RcvdMsg msgObj = parseMessage(msg);
-      if (isEndOfMessage(msgObj)) {
-        // we're done accumulating, so return product
-        String document = buildDocument();
-        msgSet.clear();
-        env.postLog("QRDeSequencer recvd EOM & emitd String: " + msg.hashCode(),getPipeline());
-        return document;
-      }
-      // we're still accumulating
-      addMsgToBuilder(msgObj);
-      env.postLog("QRDeSequencer recvd & accumulated String: " + msg.hashCode(),getPipeline());
-    }
-    throw new NoSuchElementException();
-  }
-
-  private String buildDocument()
-  {
-    sb.setLength(0);
-    Iterator<RcvdMsg> itr = msgSet.iterator();
-    int writePoint = 0;
-    while (itr.hasNext()) {
-      RcvdMsg rMsg = itr.next();
-      if (rMsg.offset == writePoint) {
-        sb.append(rMsg.s);
-        writePoint+=rMsg.s.length();
-      }
-      else {
-        String errMsg = "QRDeSequencer: "+rMsg.offset+" was not = "+writePoint;
-        System.err.println(errMsg);
-        env.postLog(errMsg,getPipeline());
-
-        char[] ca = new char[rMsg.offset - writePoint];
-        
-        Arrays.fill(ca, '&');    // fill with something
-        sb.append(ca);
-        
-        writePoint+=ca.length;   // save the one we got
-        sb.append(rMsg.s);
-        writePoint+=rMsg.s.length();
-      }
-    }
-    return sb.toString();
-  }
-
-  private RcvdMsg parseMessage(String s)
-  {
-    int offset = parseOffset(s);
-    String msg = s.substring(QRSequencer.SEQUENCER_OVERHEAD, s.length());
-    return new RcvdMsg(offset, msg);
-  }
-
-  class RcvdMsgComparator implements Comparator<RcvdMsg>
-  {
-    @Override
-    public int compare(RcvdMsg rm1, RcvdMsg rm2)
-    {
-      return rm1.offset - rm2.offset;
-    }
-  }
-
-  private void addMsgToBuilder(RcvdMsg rMsg)
-  {
-    msgSet.add(rMsg);
-  }
-
-  private int parseOffset(String s)
-  {
-    String offS = s.substring(QRSequencer.SEQUENCENUMBER_OFFSET, 
-                              QRSequencer.SEQUENCENUMBER_OFFSET + QRSequencer.SEQUENCENUMBER_PLACES);
-    return Integer.parseInt(offS);   
-  }
-
-  private boolean isSequencedMessage(String s)
-  {
-    return s.startsWith(QRSequencer.HEADER);
-  }
-
-  private boolean isEndOfMessage(RcvdMsg rMsg)
-  {
-    return rMsg.s.length() == 0;
-  }
-/*
-  @Override
-  public JComponent getGui()
-  {
-    if (myGui == null) {
-      myGui = new QRDeSequencerPanel();
-    }
-    return myGui;
-  }
-*/
-  @Override public PipeCategory getCategory()   { return category; }
-  @Override public String getShortDescription() { return descriptionShort; }
-  @Override public String getLongDescription()  { return descriptionLong; }  
-
-  class RcvdMsg
-  {
-    int offset;
-    String s;
-
-    public RcvdMsg(int offset, String s)
-    {
-      this.offset = offset;
-      this.s = s;
-    }
-  }
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRDecodedTextDisplayer.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRDecodedTextDisplayer.java
deleted file mode 100644
index 65b0cb7212657acebffc753c1ad5ee6bec264abc..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRDecodedTextDisplayer.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements;
-
-import com.google.zxing.*;
-import com.google.zxing.qrcode.QRCodeReader;
-import edu.nps.moves.qrtda.PerformanceLogger;
-import edu.nps.moves.qrtda.elements.misc.PipeCategory;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.misc.*;
-import java.util.HashMap;
-import java.util.NoSuchElementException;
-import javax.swing.*;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-/**
- * QRDecodedTextDisplayer.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class QRDecodedTextDisplayer extends QRFlowLink<BinaryBitmap, String>
-{
-  private final Logger logger=LogManager.getLogger(QRDecodedTextDisplayer.class.getName());
-
-  @ElementHandle           public static String handleStr        = "QR decoded content displayer";
-  @ElementCategory         public static PipeCategory category   = PipeCategory.INFORMATIONAL;
-  @ElementDescriptionLong  public static String descriptionLong  = "Displays text from decoded QR image";
-  @ElementDescriptionShort public static String descriptionShort = "BitMatrix->String";;
-  
-  int count=0;
-  
-  public QRDecodedTextDisplayer(TdaEnvironment env, ReadyListener lis)
-  {
-    super(handleStr, env, lis);
-  }
-
-  @Override
-  protected String handleNextData() throws NoSuchElementException
-  {
-    while(true) {
-      BinaryBitmap bm = dataQueue().next();
-      PerformanceLogger.logQRImageDetectionStart(logger, null);
-      HashMap<DecodeHintType,Object> hints = new HashMap();
-      hints.put(DecodeHintType.TRY_HARDER, Boolean.TRUE);
-      QRCodeReader rdr = new QRCodeReader();
-      try {
-        final Result res = rdr.decode(bm,hints);
-        PerformanceLogger.logQRImageDetectionSuccess(logger, null);
-
-        SwingUtilities.invokeLater(() -> {
-          env.postSourceContent(res.getText(),getPipeline());
-        });
-        
-        env.postLog("QRDecodedTextDisplayer("+count++ +") recvd & emitd BitMatrix: " + bm.hashCode(),getPipeline());
-        return res.getText();
-      }
-      catch(NotFoundException ex) {
-        PerformanceLogger.logQRImageDetectionFail(logger, "image not detected");
-        String msg = "Image "+count++ +" not detected";
-        env.postLog(msg,getPipeline());
-      }
-      catch(ChecksumException ex) {
-        PerformanceLogger.logQRImageDetectionFail(logger, "checksum exception");
-        String msg = "Image "+count++ +" analysis shows checksum exception";
-        env.postLog(msg,getPipeline());        
-      }
-      catch(FormatException ex) {
-        PerformanceLogger.logQRImageDetectionFail(logger, "format exception");
-        String msg = "Image "+count++ +" analysis shows format exception";
-        env.postLog(msg,getPipeline());                
-      }
-    }
-  }
-  
-  @Override public PipeCategory getCategory()   { return category; }
-  @Override public String getShortDescription() { return descriptionShort; }
-  @Override public String getLongDescription()  { return descriptionLong; }  
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRDelay.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRDelay.java
deleted file mode 100755
index a54282292810d0458df3daca447c8c55e10a6507..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRDelay.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements;
-
-import edu.nps.moves.qrtda.elements.gui.QRDelayPanel;
-import edu.nps.moves.qrtda.elements.misc.PipeCategory;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.misc.*;
-import java.util.NoSuchElementException;
-import javax.swing.*;
-
-/**
- * QRDelay.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class QRDelay extends QRFlowLink<Object, Object>
-{
-  @ElementHandle           public static String handleStr        = "QR delay";
-  @ElementCategory         public static PipeCategory category   = PipeCategory.MISCELLANEOUS;
-  @ElementDescriptionLong  public static String descriptionLong  = "Adds delay to pipe execution";
-  @ElementDescriptionShort public static String descriptionShort = "Object->delay->Object";;
-  
-  public static final String DELAYOPTION = "delay";
-  @QrtdaParameter public final static NameDefault delay = new NameDefault(DELAYOPTION,"pipeline delay",0,Number.class,"msec");
-  
-  private QRDelayPanel myGui;
-  
-  public QRDelay(TdaEnvironment env, ReadyListener lis)
-  {
-    super(handleStr, env, lis);
-  }
-
-  @Override
-  protected Object handleNextData() throws NoSuchElementException
-  {
-    Object obj = dataQueue().next();
-    env.postLog("QRDelay recvd & emitd Object: " + obj.hashCode(),getPipeline());
-    int delayMs = Integer.parseInt(env.getOptionValue(DELAYOPTION));
-    
-    try {Thread.sleep(delayMs);}catch (InterruptedException ex) {}
-    
-    return obj;
-  }
-
-  @Override
-  public JComponent getGui()
-  {
-    if (myGui == null) {
-      myGui = new QRDelayPanel(env);
-    }
-    return myGui;
-  }
-    
-  @Override
-  public void setPipeIndex(int idx)
-  {
-    ((QRDelayPanel)getGui()).setPipeIndex(idx);
-  }
-
-  @Override public PipeCategory getCategory()  {return category;}
-  @Override public String getShortDescription(){return descriptionShort;}
-  @Override public String getLongDescription() {return descriptionLong;}    
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRDisplayTextInWindow.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRDisplayTextInWindow.java
deleted file mode 100755
index 1a4795a7d4a825aa5f38ed49fe6adaf95f12e0b2..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRDisplayTextInWindow.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
-Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
-in source and binary forms, with or without modification, are permitted provided that the
-following conditions are met:
-
-Redistributions of source code must retain the above copyright notice, this list of conditions
-and the following disclaimer. Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the documentation and/or other
-materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
-Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
-http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
-WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-package edu.nps.moves.qrtda.elements;
-
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.gui.ShowWindow;
-import edu.nps.moves.qrtda.elements.misc.*;
-import java.util.NoSuchElementException;
-import javax.swing.JComponent;
-
-/**
- * QRDisplayTextInWindow.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class QRDisplayTextInWindow extends QRFlowLink<String,String>
-{  
-  @ElementHandle           public static String handleStr        = "QR display text in window";
-  @ElementCategory         public static PipeCategory category   = PipeCategory.INFORMATIONAL;
-  @ElementDescriptionLong  public static String descriptionLong  = "Pops up a window displaying received text.  Normally used after QrDeSequencer";
-  @ElementDescriptionShort public static String descriptionShort = "Show received text in new window";
-  
-  public QRDisplayTextInWindow(TdaEnvironment env, ReadyListener lis)
-  {
-    super(handleStr, env, lis);
-  }
-
-  @Override
-  protected String handleNextData() throws NoSuchElementException
-  {
-    String s = dataQueue().next();
-    new ShowWindow(s,getGui().getParent()).showWindow();
-    return s;
-  }
-
-  @Override
-  public JComponent getGui()
-  {
-    return super.getGui();
-  }
-
-  @Override public PipeCategory getCategory()   { return category; }
-  @Override public String getShortDescription() { return descriptionShort; }
-  @Override public String getLongDescription()  { return descriptionLong; }  
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRFlowLink.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRFlowLink.java
deleted file mode 100644
index 73a970fc8286d5856301adbd6f9f486ec161fecf..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRFlowLink.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
-Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
-in source and binary forms, with or without modification, are permitted provided that the
-following conditions are met:
-
-Redistributions of source code must retain the above copyright notice, this list of conditions
-and the following disclaimer. Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the documentation and/or other
-materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
-Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
-http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
-WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-package edu.nps.moves.qrtda.elements;
-
-import edu.nps.moves.qrtda.elements.misc.PipeCategory;
-import com.tinkerpop.pipes.AbstractPipe;
-import com.tinkerpop.pipes.util.Pipeline;
-import edu.nps.moves.qrtda.elements.gui.EmptyGui;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.misc.*;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Field;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.NoSuchElementException;
-import javax.swing.JComponent;
-
-/**
- * QRFlowLink.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- * @param <S>
- * @param <E>
- */
-
-public abstract class QRFlowLink<S, E> extends AbstractPipe<S,E>
-{
-  protected String handle;
-  protected TdaEnvironment env;
-  protected ReadyListener readyLis;
-  protected Pipeline pipeline;
-  
-  public QRFlowLink(String handle, TdaEnvironment env, ReadyListener lis)
-  {
-    assert handle != null && env != null;
-    this.handle = handle;
-    this.env = env;
-    readyLis = lis;
-  }
-  
-  public String getHandle()
-  {
-    return handle;
-  }
-  public void setHandle(String handle)
-  {
-    this.handle = handle;
-  }
-  
-  /* Just wanted to make the naming a little clearer */
-  @Override
-  protected E processNextStart() throws NoSuchElementException
-  {
-    return handleNextData();
-  }
-  
-  abstract protected E handleNextData() throws NoSuchElementException;
-  
-  protected Iterator<S> dataQueue()
-  {
-    return starts;
-  }
-
-  public JComponent getGui()
-  {
-    return new EmptyGui();
-  }
-  
-  /* Used to paint button w/ green red */
-  public boolean hasOnOffSwitch()
-  {
-    return false;
-  }
-  
-  /* Implement if overriding hasOnOffSwitch to return true */
-  public void turnOff()
-  {   
-  }
-  
-  /* Implement if overriding hasOnOffSwitch to return true */
-  public void turnOn()
-  {  
-  }
-  
-  public void setReadyListener(ReadyListener lis)
-  {
-    readyLis = lis;
-  }
-  protected void showReady(boolean tf)
-  {
-    if(readyLis != null)
-      readyLis.setReady(this, tf);
-  }
-  /*
-   * Used to fire off processing in headless environment; is to be overridden if need be
-   */
-  public void initialize()
-  {
-  }
-  
-  /*
-   * Order in pipe 
-   */
-  public void setPipeIndex(int idx)
-  {
-    
-  }
-  
-  public Pipeline getPipeline()
-  {
-    return pipeline;
-  }
-  
-  public void setPipeline(Pipeline pipeline)
-  {
-    this.pipeline = pipeline;
-  }
-  
-  abstract public PipeCategory getCategory();
-  abstract public String getShortDescription();
-  abstract public String getLongDescription();
-  
-  
-  public ArrayList<String> getOptionNames()
-  {
-    ArrayList<String> arrLis = new ArrayList<>();
-
-    try {
-      for (Field field : getClass().getDeclaredFields()) {
-        //Class type = field.getType();
-        //String name = field.getName();
-        Annotation[] annos = field.getDeclaredAnnotationsByType(QrtdaParameter.class); //do something to these
-        if (annos != null && annos.length > 0) {
-          Object val = field.get(null);
-          assert val instanceof NameDefault;
-          NameDefault parm = (NameDefault) val;
-          arrLis.add(parm.getName());
-        }
-      }
-    }
-    catch (IllegalAccessException ex) {
-      throw new RuntimeException("IllegalAccessException in handleClassOptions: " + ex.getLocalizedMessage());
-    }
-    return arrLis;
-  }
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRGenerator.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRGenerator.java
deleted file mode 100755
index cc8653d561982c16476cfa0090d54987ed8729b2..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRGenerator.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
-Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
-in source and binary forms, with or without modification, are permitted provided that the
-following conditions are met:
-
-Redistributions of source code must retain the above copyright notice, this list of conditions
-and the following disclaimer. Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the documentation and/or other
-materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
-Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
-http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
-WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-package edu.nps.moves.qrtda.elements;
-
-import edu.nps.moves.qrtda.elements.misc.PipeCategory;
-import com.google.zxing.*;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import com.google.zxing.common.BitMatrix;
-import com.google.zxing.qrcode.QRCodeWriter;
-import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
-import edu.nps.moves.qrtda.elements.gui.QRGeneratorPanel;
-import edu.nps.moves.qrtda.elements.misc.*;
-import edu.nps.moves.qrtda.qr.QRInput;
-import java.util.HashMap;
-import java.util.NoSuchElementException;
-import javax.swing.JComponent;
-
-/**
- * QRGenerator.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class QRGenerator extends QRFlowLink<QRInput, BitMatrix> 
-{
-  @ElementHandle           public static String handleStr        = "QR generator";
-  @ElementCategory         public static PipeCategory category   = PipeCategory.IMAGE_SINK;
-  @ElementDescriptionLong  public static String descriptionLong  = "Text to QR image generator, options: image size, error correction, margin, output BitMatrix";
-  @ElementDescriptionShort public static String descriptionShort = "Text to QR image generator";
-  
-  public final static String ERRORCORRECTIONOPTION = "qrerrorcorrectionLevel";
-  public final static String IMAGEMARGINOPTION     = "qrmargin";
-  public final static String PIXELSIZEOPTION       = "qrimagesize";
-   
-  @QrtdaParameter public final static NameDefault corr    = new NameDefault(ERRORCORRECTIONOPTION,"error correctionlevel (H, Q, M or L)","H",String.class,"level");
-  @QrtdaParameter public final static NameDefault margin  = new NameDefault(IMAGEMARGINOPTION,    "image margin in squares",             4,  Number.class,"size");
-  @QrtdaParameter public final static NameDefault size    = new NameDefault(PIXELSIZEOPTION,      "image size in pixels",                550,Number.class,"size");
-
-private QRGeneratorPanel myGui;
-  
-  public QRGenerator(TdaEnvironment env, ReadyListener lis)
-  {
-    super(handleStr,env,lis);
-  }
-  
-  @Override
-  protected BitMatrix handleNextData() throws NoSuchElementException
-  {
-    while (true) {
-      QRInput qrinput = dataQueue().next();
-      if (qrinput != null) {
-        env.postLog("QRGenerator recvd QRInput: "+qrinput.hashCode(),getPipeline());
-        String txtSrc = qrinput.toString();
-        env.postSourceContent(txtSrc,getPipeline());
-        env.setLastTextSource(txtSrc);
-        
-        QRCodeWriter writer = new QRCodeWriter();
-        HashMap<EncodeHintType,Object> hints = new HashMap();
-        hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.valueOf(env.getOptionValue(ERRORCORRECTIONOPTION)));
-        hints.put(EncodeHintType.MARGIN, Integer.parseInt(env.getOptionValue(IMAGEMARGINOPTION)));
-        int intsz = Integer.parseInt(env.getOptionValue(PIXELSIZEOPTION));
-        try {
-          BitMatrix bm = writer.encode(txtSrc, BarcodeFormat.QR_CODE, intsz, intsz, hints);
-          env.postLog("QRGenerator emitd BitMatrix: "+bm.hashCode(),getPipeline());
-          return bm; 
-        }
-        catch(WriterException ex) {
-          env.postLog("QRWriterException : " + ex.getLocalizedMessage(),getPipeline());         
-        }
-      }
-    }
-  }
-  
-  @Override
-  public JComponent getGui()
-  {
-    if(myGui == null) {
-      myGui = new QRGeneratorPanel(env);
-    }
-    return myGui;
-  }
-  
-  @Override
-  public void setPipeIndex(int idx)
-  {
-    ((QRGeneratorPanel)getGui()).setPipeIndex(idx);
-  }
-  
-  @Override public PipeCategory getCategory()   { return category; }
-  @Override public String getShortDescription() { return descriptionShort; }
-  @Override public String getLongDescription()  { return descriptionLong; }  
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRImageDecoder.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRImageDecoder.java
deleted file mode 100755
index 0ee22687d4fd7c60d9b55a003512673acbccdb48..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRImageDecoder.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
-Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
-in source and binary forms, with or without modification, are permitted provided that the
-following conditions are met:
-
-Redistributions of source code must retain the above copyright notice, this list of conditions
-and the following disclaimer. Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the documentation and/or other
-materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
-Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
-http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
-WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-package edu.nps.moves.qrtda.elements;
-
-import edu.nps.moves.qrtda.elements.misc.PipeCategory;
-import com.google.zxing.*;
-import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import com.google.zxing.common.HybridBinarizer;
-import edu.nps.moves.qrtda.elements.misc.*;
-import java.awt.image.BufferedImage;
-import java.util.NoSuchElementException;
-
-/**
- * QRImageDecoder.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class QRImageDecoder extends QRFlowLink<BufferedImage, BinaryBitmap> 
-{
-  @ElementHandle           public static String handleStr        = "Native image from BufferedImage";
-  @ElementCategory         public static PipeCategory category   = PipeCategory.QR_DECODING;
-  @ElementDescriptionLong  public static String descriptionLong  = "BufferedImage->BinaryBitmap";
-  @ElementDescriptionShort public static String descriptionShort = "BufferedImage->BinaryBitmap";
-  
-  public QRImageDecoder(TdaEnvironment env, ReadyListener lis)
-  {
-    super(handleStr,env,lis);
-  }
-  
-  @Override
-  protected BinaryBitmap handleNextData() throws NoSuchElementException
-  {
-    while (true) {
-      BufferedImage image = dataQueue().next();
-      if (image != null) {
-        env.postLog("QRImageDecoder recvd img: "+image.hashCode(),getPipeline());
-        LuminanceSource source = new BufferedImageLuminanceSource(image);
-        return new BinaryBitmap(new HybridBinarizer(source));
-      }
-    }
-  }
-   
-  @Override public PipeCategory getCategory()   { return category; }
-  @Override public String getShortDescription() { return descriptionShort; }
-  @Override public String getLongDescription()  { return descriptionLong; }  
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRImageDirectoryWatcher.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRImageDirectoryWatcher.java
deleted file mode 100755
index 5607925882d996584dd5e14181208ae873eae8da..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRImageDirectoryWatcher.java
+++ /dev/null
@@ -1,238 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements;
-
-import edu.nps.moves.qrtda.elements.gui.DirectoryWatcher;
-import edu.nps.moves.qrtda.elements.gui.QRDirectoryWatcherPanel;
-import edu.nps.moves.qrtda.elements.misc.PipeCategory;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.misc.*;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.nio.file.*;
-import java.util.Arrays;
-import java.util.NoSuchElementException;
-import javax.swing.JComponent;
-import javax.swing.JOptionPane;
-import javax.swing.SwingUtilities;
-import static java.nio.file.StandardWatchEventKinds.*;
-
-/**
- * QRImageDirectoryWatcher.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class QRImageDirectoryWatcher extends QRFlowLink<String, String> implements DirectoryWatcher
-{
-  @ElementHandle           public static String handleStr        = "QR image directory watcher";
-  @ElementCategory         public static PipeCategory category   = PipeCategory.IMAGE_SOURCE;
-  @ElementDescriptionLong  public static String descriptionLong  = "Watches directory, emits path to new image file";
-  @ElementDescriptionShort public static String descriptionShort = "Emits path to new image file";
-  
-  public final static String IMAGEWATCHDIRECTORYOPTION = "imagewatchdirectory";
-  @QrtdaParameter public final static NameDefault imageDir = new NameDefault(IMAGEWATCHDIRECTORYOPTION,"directory to watch for images","imageWatchDirectory",String.class,"directory");
-
-  private QRDirectoryWatcherPanel myGui;
-  private Thread watcherThread;
-
-  public QRImageDirectoryWatcher(TdaEnvironment env, ReadyListener lis)
-  {
-    super(handleStr, env, lis);
-  }
-
-  @Override
-  public JComponent getGui()
-  {
-    if (myGui == null) {
-      myGui = new QRDirectoryWatcherPanel(env,this,"QR image directory watcher","imageDirectory");
-    }
-    return myGui;
-  }
-  
-  @Override
-  protected String handleNextData() throws NoSuchElementException
-  {
-    Object o = dataQueue().next();
-    String s = o.toString();
-    env.postLog("QRImageDirectoryWatcher snding: "+s,getPipeline());
-    return s;
-  }
-
-  /**
-   * Called from pipeline manager
-   */
-  @Override
-  public void initialize()
-  {
-    //beginDirectoryWatch(env.opt.imageDirectory.value());
-    beginDirectoryWatch(env.getOptionValue(IMAGEWATCHDIRECTORYOPTION));
-  }
-  
-  /**
-   * Called from gui and above
-   * @param directoryPath 
-   */
-
-  @Override
-  public void beginDirectoryWatch(String directoryPath)
-  {
-    File dirFile;
-    try {dirFile = env.openImageDirectory(directoryPath);}catch(FileNotFoundException ex){dirFile=null; env.postError("Can't find directory "+directoryPath, myGui);} //new File(directoryPath);
-    if (dirFile != null) {
-      killLoop();
-      watcherThread = new Thread(new QrDirWatcher(dirFile), "QR image directory watcher");
-      watcherThread.setPriority(Thread.NORM_PRIORITY);
-      watcherThread.setDaemon(!env.isHeadless());
-      watcherThread.start();
-      showReady(true);
-    }
-    else {
-      JOptionPane.showMessageDialog(myGui, "Path specified is not a directory");
-    }
-  }
-
-  @Override
-  public void killLoop()
-  {
-    if(watcherThread != null && watcherThread.isAlive())
-      watcherThread.interrupt();     
-  }
-  
-  class QrDirWatcher implements Runnable
-  {
-    private final File dir;
-
-    public QrDirWatcher(File dir)
-    {
-      this.dir = dir;
-    }
-
-    @Override
-    public void run()
-    {
-      WatchService watcher;
-      Path dirP;
-      
-      try {
-        watcher = FileSystems.getDefault().newWatchService();
-        dirP = dir.toPath();
-        /*WatchKey key = */ dirP.register(watcher,ENTRY_CREATE,/*ENTRY_DELETE,*/ENTRY_MODIFY);
-      }
-      catch (final Exception ex) {
-        SwingUtilities.invokeLater(new Runnable()
-        {
-          @Override
-          public void run()
-          {
-            JOptionPane.showMessageDialog(myGui, "Can't setup watch directory: " + ex.getClass().getSimpleName() + ": " + ex.getLocalizedMessage());
-          }
-        });
-        myGui.endLoop();
-        showReady(false);
-        return;
-      }
-      env.postLog("QRImageDirectoryWatcher watching "+dir.getAbsolutePath(),getPipeline());
-      
-      // Begin while(true)
-      for (;;) {       
-        WatchKey key;
-        try {
-          key = watcher.take(); // wait for key to be signaled
-        }
-        catch (InterruptedException x) {
-          myGui.endLoop();
-          showReady(false);
-          return;
-        }
-
-        for (WatchEvent<?> event : key.pollEvents()) {
-          WatchEvent.Kind<?> kind = event.kind();
-
-          // This key is registered only
-          // for ENTRY_CREATE events,
-          // but an OVERFLOW event can
-          // occur regardless if events
-          // are lost or discarded.
-          if (kind == OVERFLOW) {
-            continue;
-          }
-
-          // The filename is the
-          // context of the event.
-          WatchEvent<Path> ev = (WatchEvent<Path>) event;
-          Path filename = ev.context();
-          if(filename.endsWith(".DS_Store"))
-            continue;
-          
-          env.postLog("QRImageDirectoryWatcher saw "+filename.toString(),getPipeline());
-
-          // Verify that the new
-          //  file is an image file.
-          Path child= dirP.resolve(filename);
-          
-          
-          // We have to check if the file is ready to be handled.  The event comes in when the file is created, but we need
-          // it to be finished and closed.  This is a little bit of a problem with java, but this is supposed to work.
-          File f = child.toFile();
-          while(!f.renameTo(f)) // rename it to itself will supposedly fail if it's not ready
-            try {Thread.sleep(250l);} catch(InterruptedException ex) {}
-          
-          //try {
-            // Resolve the filename against the directory.
-            // If the filename is "test" and the directory is "foo",
-            // the resolved name is "test/foo".
-            //child = dirP.resolve(filename);
-            //System.out.println("file type: "+Files.probeContentType(child));
-            //if (!Files.probeContentType(child).equals("text/plain")) {
-            //  System.err.format("New file '%s'" + " is not a plain text file.%n", filename);
-            //  continue;
-            //}
-          //}
-          //catch (IOException x) {
-          //  System.err.println(x);
-          //  continue;
-          //}
-
-          QRImageDirectoryWatcher.this.getPipeline().setStarts((Arrays.asList(child.toString())));
-          QRImageDirectoryWatcher.this.getPipeline().iterate();  // this executes our pipe components in this thread
-        }
-
-        // Reset the key -- this step is critical if you want to
-        // receive further watch events.  If the key is no longer valid,
-        // the directory is inaccessible so exit the loop.
-        boolean valid = key.reset();
-        if (!valid) {
-          break;
-        }
-      } // while true loop
-      myGui.endLoop();
-      showReady(false);
-    }
-  }
-  
-  @Override public PipeCategory getCategory()   { return category; }
-  @Override public String getShortDescription() { return descriptionShort; }
-  @Override public String getLongDescription()  { return descriptionLong; }  
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRImageFilter.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRImageFilter.java
deleted file mode 100755
index 6759b2e4f2aee0bdeab2d538d70ac91302cbd0cc..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRImageFilter.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
-Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
-in source and binary forms, with or without modification, are permitted provided that the
-following conditions are met:
-
-Redistributions of source code must retain the above copyright notice, this list of conditions
-and the following disclaimer. Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the documentation and/or other
-materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
-Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
-http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
-WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-package edu.nps.moves.qrtda.elements;
-
-import edu.nps.moves.qrtda.elements.misc.PipeCategory;
-import com.google.zxing.*;
-import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import com.google.zxing.common.HybridBinarizer;
-import com.google.zxing.qrcode.QRCodeReader;
-import edu.nps.moves.qrtda.elements.misc.*;
-import java.awt.image.BufferedImage;
-import java.util.HashMap;
-import java.util.NoSuchElementException;
-
-/**
- * QRImageDecoder.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class QRImageFilter extends QRFlowLink<BufferedImage, BufferedImage> 
-{
-  @ElementHandle           public static String handleStr        = "Filter recognized QR images";
-  @ElementCategory         public static PipeCategory category   = PipeCategory.QR_DECODING;
-  @ElementDescriptionLong  public static String descriptionLong  = "Filter received images and only pass valid QR images";
-  @ElementDescriptionShort public static String descriptionShort = "BufferedImage->valid QR buffered image";
-  
-  public QRImageFilter(TdaEnvironment env, ReadyListener lis)
-  {
-    super(handleStr,env,lis);
-  }
-  
-  @Override
-  protected BufferedImage handleNextData() throws NoSuchElementException
-  {
-    while (true) {
-      BufferedImage image = dataQueue().next();
-      if (image != null) {
-        env.postLog("QRImageFilter recvd img: " + image.hashCode(),getPipeline());
-        LuminanceSource source = new BufferedImageLuminanceSource(image);
-        BinaryBitmap bm = new BinaryBitmap(new HybridBinarizer(source));
-        HashMap<DecodeHintType, Object> hints = new HashMap();
-        hints.put(DecodeHintType.TRY_HARDER, Boolean.TRUE);
-        QRCodeReader rdr = new QRCodeReader();
-        try {
-          final Result res = rdr.decode(bm, hints);
-          return image;
-        }
-        catch (NotFoundException ex) {
-          String msg = "Image not detected";
-          env.postLog(msg,getPipeline());
-        }
-        catch (ChecksumException ex) {
-          String msg = "Image analysis shows checksum exception";
-          env.postLog(msg,getPipeline());
-        }
-        catch (FormatException ex) {
-          String msg = "Image analysis shows format exception";
-          env.postLog(msg,getPipeline());
-        }
-      }
-    }
-  }
-   
-  @Override public PipeCategory getCategory()   { return category; }
-  @Override public String getShortDescription() { return descriptionShort; }
-  @Override public String getLongDescription()  { return descriptionLong; }  
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRImageFromFile.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRImageFromFile.java
deleted file mode 100755
index 79040af55468de75e8c36da90e4d50830af1644d..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRImageFromFile.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements;
-
-import edu.nps.moves.qrtda.elements.misc.PipeCategory;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.misc.*;
-import java.awt.image.BufferedImage;
-import java.io.File;
-import java.io.IOException;
-import java.util.NoSuchElementException;
-import javax.imageio.ImageIO;
-
-/**
- * QRImageFromFile.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class QRImageFromFile extends QRFlowLink<String, BufferedImage>
-{
-  @ElementHandle public static String handleStr                  = "QR BufferedImage from file";
-  @ElementCategory public static PipeCategory category           = PipeCategory.QR_DECODING;
-  @ElementDescriptionLong public static String descriptionLong   = "Receives image file path, reads and creates BufferedImage";
-  @ElementDescriptionShort public static String descriptionShort = "String path -> BufferedImage";
-  
-  public QRImageFromFile(TdaEnvironment env, ReadyListener lis)
-  {
-    super(handleStr, env, lis);
-  }
-
-  @Override
-  protected BufferedImage handleNextData() throws NoSuchElementException
-  {
-    while (true) {
-      String path = dataQueue().next();  // if queue empty, the pipe cleanly handles
-      env.postLog("QRImageFromFile rcvd path: "+path,getPipeline());
-      File file = new File(path);
-      try {
-        BufferedImage bi = ImageIO.read(file);
-        if (bi != null) {
-          return bi;
-        }
-      }
-      catch (IOException ioe) {
-        env.postLog("QRImageFromFile exception : " + ioe.getLocalizedMessage(),getPipeline());
-      }
-      env.postLog("QRImageFromFile exception : " + "could not read image file",getPipeline());
-    }
-  }
-
-  @Override public PipeCategory getCategory()   { return category; }
-  @Override public String getShortDescription() { return descriptionShort; }
-  @Override public String getLongDescription()  { return descriptionLong; }  
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRImageLegendAppender.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRImageLegendAppender.java
deleted file mode 100644
index 399f1e83e5a8b9b6ad5f031a53a4c94337f86da2..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRImageLegendAppender.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements;
-
-import edu.nps.moves.qrtda.elements.misc.PipeCategory;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.gui.QRImageLegendAppenderPanel;
-import edu.nps.moves.qrtda.elements.misc.*;
-import java.awt.Color;
-import java.awt.Font;
-import java.awt.Graphics2D;
-import java.awt.RenderingHints;
-import java.awt.image.BufferedImage;
-import java.awt.font.*;
-import java.text.*;
-import java.util.NoSuchElementException;
-import javax.swing.JComponent;
-import javax.swing.JLabel;
-
-/**
- * QRImageLegendAppender.java created on June 26, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class QRImageLegendAppender extends QRFlowLink<BufferedImage, BufferedImage>
-{
-  @ElementHandle           public static String handleStr        = "QR Image Legend Appender";
-  @ElementCategory         public static PipeCategory category   = PipeCategory.MISCELLANEOUS;
-  @ElementDescriptionLong  public static String descriptionLong  = "Add bottom legend to QR Image showing decoded text, option: height percentage, output: BufferedImage";
-  @ElementDescriptionShort public static String descriptionShort = "BufferedImage->add legend->BufferedImage";
-  
-  public final static String IMAGEAPPENDERPERCENTOPTION   = "legendsizepercentage";
-  public final static String IMAGEAPPENDERENABLEDOPTION   = "legendenabled";
-  @QrtdaParameter public final static NameDefault percent = new NameDefault(IMAGEAPPENDERPERCENTOPTION,"legend proportional size (0-1.0)",  0.25, Number.class,"size");
-  @QrtdaParameter public final static NameDefault active  = new NameDefault(IMAGEAPPENDERENABLEDOPTION,"append legend", false,Boolean.class,"true/false");
-
-  private QRImageLegendAppenderPanel myGui;
-  
-  public QRImageLegendAppender(TdaEnvironment env, ReadyListener lis)
-  {
-    super(handleStr, env, lis);
-  }
-
-  @Override
-  protected BufferedImage handleNextData() throws NoSuchElementException
-  {
-    BufferedImage bi = dataQueue().next();
-
-    boolean enabled = Boolean.parseBoolean(env.getOptionValue(IMAGEAPPENDERENABLEDOPTION));
-    if(!enabled)
-      return bi;
-  
-    
-    env.postLog("QRImageLegendAppender, recvd BufferedImage: " + bi.hashCode(),getPipeline());
-
-    float sizePercent = Float.parseFloat(env.getOptionValue(IMAGEAPPENDERPERCENTOPTION));
-    int height = bi.getHeight();
-    int legHeight = (int)((float)height * sizePercent);
-    
-    BufferedImage combined = new BufferedImage(bi.getWidth(),bi.getHeight()+legHeight, BufferedImage.TYPE_INT_ARGB);
-    Graphics2D g2 = (Graphics2D) combined.getGraphics();
-    Color saveColor = g2.getColor();
-    Color saveBack  = g2.getBackground();
-    g2.setRenderingHints(new RenderingHints(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_ON));
-    g2.drawImage(bi, 0, 0, null);
-    
-    g2.setBackground(new Color(0xEE,0xEE,0xEE));
-    g2.clearRect(0,bi.getHeight(), bi.getWidth(), legHeight);
-    //g2.setColor(Color.gray);
-    //g2.drawRect(0,bi.getHeight(), bi.getWidth()-1, legHeight-1);
-    
-    g2.setColor(Color.black);
-
-    String textSrc = env.getLastTextSource();
-    textSrc = textSrc==null?"":textSrc;
-    
-    AttributedString text = new AttributedString(textSrc);
-    text.addAttribute(TextAttribute.FONT, calcFontSize(textSrc,bi.getWidth()-8,legHeight,g2));
-
-    AttributedCharacterIterator acItr = text.getIterator();
-    
-    int start = acItr.getBeginIndex();
-    int end = acItr.getEndIndex();
-    FontRenderContext frc = g2.getFontRenderContext();
-    LineBreakMeasurer lineMeasurer = new LineBreakMeasurer(acItr,frc);
-    
-    float breakWidth = (float)bi.getWidth()-8;
-    float drawPosY = (float)bi.getHeight()+3;  // to start
-    
-    lineMeasurer.setPosition(start);
-    
-    while (lineMeasurer.getPosition() < end) {
-      TextLayout layout = lineMeasurer.nextLayout(breakWidth);
-      float drawPosX = 4.0f; //test - layout.getAdvance();
-      drawPosY += layout.getAscent();
-      layout.draw(g2, drawPosX, drawPosY);
-      drawPosY += layout.getDescent() + layout.getLeading();
-    }
-    g2.setColor(saveColor);
-    g2.setBackground(saveBack);
-    env.postLog("QRImageLegendAppender, emitd BufferedImage: " + combined.hashCode(),getPipeline());
-    return combined;
-  }
-  
-  private Font calcFontSize(String textsrc, int width, int height, Graphics2D g2)
-  {
-    float smallestfontsize = 8.0f;
-    float fontsize = 32.0f;
-    Font biggest = new JLabel().getFont().deriveFont(Font.BOLD, fontsize);
-    // if we run out of room, reduce the size
-    while(fontsize>smallestfontsize) {
-      Font f = biggest.deriveFont(fontsize);
-      fontsize -= 2.0f;
-      AttributedString text = new AttributedString(textsrc);
-      text.addAttribute(TextAttribute.FONT, f);
-
-      AttributedCharacterIterator acItr = text.getIterator();
-
-      int end = acItr.getEndIndex();
-      FontRenderContext frc = g2.getFontRenderContext();
-      LineBreakMeasurer lineMeasurer = new LineBreakMeasurer(acItr,frc);
-      float drawnHeight = 0f;
-
-      while (lineMeasurer.getPosition() < end) {
-        TextLayout layout = lineMeasurer.nextLayout(width);
-        java.awt.geom.Rectangle2D bnds = layout.getBounds();
-        drawnHeight += bnds.getHeight()+3.0f;  // fudge...should be able to do this precisely
-      }
-      if(drawnHeight <= height)
-        return f;
-    }
-    return biggest;
-  }
-
-  @Override
-  public JComponent getGui()
-  {
-    if(myGui == null) {
-      myGui = new QRImageLegendAppenderPanel(env);
-    }
-    return myGui;
-  }
-  
-  @Override public PipeCategory getCategory()   { return category; }
-  @Override public String getShortDescription() { return descriptionShort; }
-  @Override public String getLongDescription()  { return descriptionLong; }  
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRImageOverlayer.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRImageOverlayer.java
deleted file mode 100644
index ba2797e0aa7d075a3497035c02b6e3b29b5f212d..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRImageOverlayer.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements;
-
-import edu.nps.moves.qrtda.elements.misc.PipeCategory;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.gui.QRImageOverlayerPanel;
-import edu.nps.moves.qrtda.elements.misc.*;
-import java.awt.AlphaComposite;
-import java.awt.Color;
-import java.awt.Graphics;
-import java.awt.Graphics2D;
-import java.awt.image.BufferedImage;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.util.NoSuchElementException;
-import javax.imageio.ImageIO;
-import javax.swing.JComponent;
-
-/**
- * QRImageOverlayer.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class QRImageOverlayer extends QRFlowLink<BufferedImage, BufferedImage>
-{
-  @ElementHandle           public static String handleStr        = "QR Image Overlayer";
-  @ElementCategory         public static PipeCategory category   = PipeCategory.QR_GENERATION;
-  @ElementDescriptionLong  public static String descriptionLong  = "Add overly image to input, options: overlay image path, transparency, size, output BufferedImage";
-  @ElementDescriptionShort public static String descriptionShort = "BufferedImage->add overlay->BufferedImage";
-  
-  public final static String IMAGEOVERLAYFILEPATHOPTION     = "imageoverlayfilepath";
-  public final static String IMAGEOVERLAYTRANSPARENCYOPTION = "imageoverlaytransparency";
-  public final static String IMAGEOVERLAYSIZERATIONOPTION   = "imageoverlaysizeratio";
-  public final static String IMAGEOVERLAYACTIVEOPTION       = "imageoverlayactive";
-  @QrtdaParameter public final static NameDefault path    = new NameDefault(IMAGEOVERLAYFILEPATHOPTION,"overlay image","",File.class,"file");
-  @QrtdaParameter public final static NameDefault xparency  = new NameDefault(IMAGEOVERLAYTRANSPARENCYOPTION,"overlay image transparency (0-1.0)", 1.0,  Number.class,"transparency");
-  @QrtdaParameter public final static NameDefault ratio    = new NameDefault(IMAGEOVERLAYSIZERATIONOPTION,"overlay image proportional size (0-1.0)",  0.25,Number.class,"size");
-  @QrtdaParameter public final static NameDefault active    = new NameDefault(IMAGEOVERLAYACTIVEOPTION, "do overlaying",                false,Boolean.class,"true/false");
-
-  private QRImageOverlayerPanel myGui;
-  
-  public QRImageOverlayer(TdaEnvironment env, ReadyListener lis)
-  {
-    super(handleStr, env, lis);
-  }
-
-  @Override
-  protected BufferedImage handleNextData() throws NoSuchElementException
-  {
-    BufferedImage bi = dataQueue().next();
-    env.postLog("QRImageOverlayer, recvd BufferedImage: " + bi.hashCode(),getPipeline());
-
-    String overlayPath;
-
-    //if ( ((overlayPath = env.opt.imageOverlayFilePath.value()) != null) && (overlayPath.length()>0) ) {
-    if ( ((overlayPath = env.getOptionValue(IMAGEOVERLAYFILEPATHOPTION)) != null) && (overlayPath.length()>0) ) {
-      try {
-        File f = env.openArtFile(overlayPath);
-        BufferedImage newBI = overlayImage(bi, f);
-        env.postLog("QRImageOverlayer, emitd BufferedImage: " + newBI.hashCode(),getPipeline());
-        return newBI;
-      }
-      catch (FileNotFoundException ex) {
-        env.postError("Overlay file not found: " + overlayPath, myGui);
-      }
-    }
-    env.postLog("QRImageOverlayer, emitd BufferedImage: " + bi.hashCode(),getPipeline());
-    return bi;
-  }
-  
-  @Override
-  public JComponent getGui()
-  {
-    if(myGui == null) {
-      myGui = new QRImageOverlayerPanel(env);
-    }
-    return myGui;
-  }
-
-  private BufferedImage overlayImage(BufferedImage qrcode, File overlay)
-  {
-    try {
-      BufferedImage scaledOverlay = scaleOverlay(ImageIO.read(overlay)); //getOverlay(overlayPath));
-
-      Integer deltaHeight = qrcode.getHeight() - scaledOverlay.getHeight();
-      Integer deltaWidth = qrcode.getWidth() - scaledOverlay.getWidth();
-
-      BufferedImage combined = new BufferedImage(qrcode.getWidth(), qrcode.getHeight(), BufferedImage.TYPE_INT_ARGB);
-      Graphics2D g2 = (Graphics2D) combined.getGraphics();
-      g2.drawImage(qrcode, 0, 0, null);
-      g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, Float.parseFloat(env.getOptionValue(IMAGEOVERLAYTRANSPARENCYOPTION))));
-      g2.drawImage(scaledOverlay, Math.round(deltaWidth / 2), Math.round(deltaHeight / 2), null);
-
-      //ImageIO.write(combined, ".png", new File("test.png"));
-      return combined;
-    }
-
-    catch(IOException | NumberFormatException ex) {
-      env.postError("QRBufferedImageGenerator,error scaling overlay: " +ex.getClass().getSimpleName()+", "+ex.getLocalizedMessage(),myGui);
-      return null;
-    }
-  }
-  
-  private BufferedImage scaleOverlay(BufferedImage overlay)
-  {
-    //Float ratioVal = Float.parseFloat(env.opt.imageOverlaySizeRatio.value());
-    Float ratioVal = Float.parseFloat(env.getOptionValue(IMAGEOVERLAYSIZERATIONOPTION));
-    Integer scaledWidth = Math.round(overlay.getWidth() * ratioVal);
-    Integer scaledHeight = Math.round(overlay.getHeight() * ratioVal);
-
-    BufferedImage imageBuff = new BufferedImage(scaledWidth, scaledHeight, BufferedImage.TYPE_INT_ARGB);
-    Graphics g = imageBuff.createGraphics();
-    g.drawImage(overlay.getScaledInstance(scaledWidth, scaledHeight, BufferedImage.SCALE_SMOOTH), 0, 0, new Color(0, 0, 0), null);
-    g.dispose();
-
-    return imageBuff;
-  }
-  
-  @Override public PipeCategory getCategory()   { return category; }
-  @Override public String getShortDescription() { return descriptionShort; }
-  @Override public String getLongDescription()  { return descriptionLong; }  
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRImagePanelDisplayer.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRImagePanelDisplayer.java
deleted file mode 100755
index 5f708b1ab44c39ceb9745a76721f471ad34f0ed2..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRImagePanelDisplayer.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements;
-
-import edu.nps.moves.qrtda.elements.misc.PipeCategory;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.gui.QRImagePanelDisplayerOptions;
-import edu.nps.moves.qrtda.elements.gui.YesNoListener;
-import edu.nps.moves.qrtda.elements.misc.*;
-import java.awt.BorderLayout;
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.awt.image.BufferedImage;
-import java.util.NoSuchElementException;
-import javax.swing.*;
-
-/**
- * QRImagePanelDisplayer.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class QRImagePanelDisplayer extends QRFlowLink<BufferedImage, BufferedImage> implements YesNoListener
-{
-  @ElementHandle           public static String handleStr        = "BufferedImage local displayer";
-  @ElementCategory         public static PipeCategory category   = PipeCategory.INFORMATIONAL;
-  @ElementDescriptionLong  public static String descriptionLong  = "Shows input image in gui";
-  @ElementDescriptionShort public static String descriptionShort = "BufferedImage->BufferedImage";
-  
-  private boolean isEnabled = true;
-  private QRImagePanelDisplayerOptions myGui;
-
-  public QRImagePanelDisplayer(TdaEnvironment env, ReadyListener lis)
-  {
-    super(handleStr, env, lis);
-  }
-
-  @Override
-  protected BufferedImage handleNextData() throws NoSuchElementException
-  {
-    final BufferedImage bImage = dataQueue().next();
-    if (isEnabled) {
-      //env.postLog("QRImagePanelDisplayer recvd & emitd BufferedImage: " + bImage.hashCode() + " size: " + bImage.getWidth() + "x" + bImage.getHeight(),getPipeline());
-      SwingUtilities.invokeLater(() -> {
-        BufferedImage working = bImage;
-        JPanel pan = env.getImagePanel(getPipeline());
-        if (pan != null) {  // could be if headless
-          Dimension d = pan.getSize();
-          if (bImage.getWidth() > d.width || bImage.getHeight() > d.height) {
-            float panW = d.width;
-            float panH = d.height;
-            float imgW = bImage.getWidth();
-            float imgH = bImage.getHeight();
-            float widthscale = panW / imgW;
-            float heightscale = panH / imgH;
-            
-            float newWidth = imgW * widthscale;
-            float newHeight = imgH * widthscale;
-            
-            if (newHeight > panH) {
-              newWidth = imgW * heightscale;
-              newHeight = imgH * heightscale;
-            }
-            
-            working = new BufferedImage((int)newWidth, (int)newHeight, BufferedImage.TYPE_INT_RGB);
-            Graphics g = working.createGraphics();
-            g.drawImage(bImage, 0, 0, (int) newWidth, (int) newHeight, null);
-            g.dispose();
-          }
-
-          JLabel imageLab = new JLabel(new ImageIcon(working));
-          pan.removeAll();
-          pan.add(imageLab, BorderLayout.CENTER);
-          pan.doLayout();
-        }
-      });
-    }
-    return bImage;
-  }
-
-  @Override
-  public void yesSelected(boolean yes)
-  {
-    this.isEnabled = yes;
-  }
-
-  @Override
-  public JComponent getGui()
-  {
-    if (myGui == null)
-      myGui = new QRImagePanelDisplayerOptions(this);
-    return myGui;
-  }
-  
-  @Override public PipeCategory getCategory()   { return category; }
-  @Override public String getShortDescription() { return descriptionShort; }
-  @Override public String getLongDescription()  { return descriptionLong; }  
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRImageSaveToFile.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRImageSaveToFile.java
deleted file mode 100755
index 5618d0f501d1dbcfbb2854d42eaeef7981c8be95..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRImageSaveToFile.java
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements;
-
-import edu.nps.moves.qrtda.elements.gui.QRImageSaveToFilePanel;
-import edu.nps.moves.qrtda.elements.misc.PipeCategory;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.misc.ReadyListener;
-import java.awt.image.BufferedImage;
-import java.io.File;
-import java.io.IOException;
-import java.util.NoSuchElementException;
-import javax.imageio.ImageIO;
-import javax.swing.JComponent;
-import static edu.nps.moves.qrtda.Constants.*;
-import edu.nps.moves.qrtda.elements.misc.*;
-import org.apache.commons.io.FilenameUtils;
-
-/**
- * QRImageSaveToFile.java created on May 14, 2015 MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-
-public class QRImageSaveToFile extends QRFlowLink<BufferedImage, BufferedImage>
-{
-  @ElementHandle           public static String handleStr        = "BufferedImage save to file";
-  @ElementCategory         public static PipeCategory category   = PipeCategory.FILE_SYSTEM;
-  @ElementDescriptionLong  public static String descriptionLong  = "Save BufferedImage to file, options: format, prefix, path, overwrite";
-  @ElementDescriptionShort public static String descriptionShort = "BufferedImage->BufferedImage";
-  
-  private QRImageSaveToFilePanel myGui;
-  
-  public final static String QRIMAGEFORMATOPTION = "qrimageformat";
-  public final static String QRFILENAMEPREFIXOPTION = "qrimagefilenameprefix";
-  public final static String QRIMAGEDIRECTORYPATHOPTION = "qrdirectorypath";
-  public final static String QROVERWRITEIMAGEOPTION = "qroverwriteimage";
-  public final static String QRIMAGESAVEENABLEDOPTION   = "qrsaveenabled";
-  @QrtdaParameter public final static NameDefault active  = new NameDefault(QRIMAGESAVEENABLEDOPTION,"save images", false,Boolean.class,"true/false");
-
-  @QrtdaParameter public final static NameDefault format  = new NameDefault(QRIMAGEFORMATOPTION,"image file format","png",String.class,"format");
-  @QrtdaParameter public final static NameDefault prefix  = new NameDefault(QRFILENAMEPREFIXOPTION,"image save name prefix", "QRImageExport",String.class,"prefix");
-  @QrtdaParameter public final static NameDefault dirPath = new NameDefault(QRIMAGEDIRECTORYPATHOPTION,"image save directory","imageDirectory",String.class,"directory");
-  @QrtdaParameter public final static NameDefault overWrite=new NameDefault(QROVERWRITEIMAGEOPTION,"overwrite existing file", true, Boolean.class, "overwrite");
-
-  public QRImageSaveToFile(TdaEnvironment env, ReadyListener lis)
-  {
-    super(handleStr, env, lis);
-  }
-
-  @Override
-  protected BufferedImage handleNextData() throws NoSuchElementException
-  {
-    BufferedImage bi = dataQueue().next();
-    if (Boolean.parseBoolean(env.getOptionValue(QRIMAGESAVEENABLEDOPTION))) {
-      File f = getNewFile(env.getOptionValue(QRIMAGEFORMATOPTION));
-      try {
-        f.createNewFile();
-        String typ = env.getOptionValue(QRIMAGEFORMATOPTION);
-
-        ImageIO.write(bi, typ, f);
-        env.postLog("QRImageSaveToFile rcvd and emitd BufferedImage: " + bi.hashCode(), getPipeline());
-        String msg = "QRImageSaveToFile saved: " + f.getAbsolutePath();
-        env.postLog(msg, getPipeline());
-        if (env.isHeadless())
-          System.out.println(msg);
-      }
-      catch (IOException ioe) {
-        env.postLog("QRImageSaveToFile exception : " + ioe.getLocalizedMessage(), getPipeline());
-      }
-    }
-    return bi;
-  }
-
-  int fNameIndex = 0;
-  String separator = System.getProperty("file.separator");
-
-  private File getNewFile(String typ)
-  {
-    // First see if a file was specified on command line
-    String cli_file = env.getOptionValue(CREATEQRIMAGEOPTION);
-    if (cli_file != null) {
-      File cliFile = new File(cli_file.replaceFirst("^~", System.getProperty("user.home")));
-      cliFile = checkMatchingType(cliFile, typ);
-      if (env.getOptionValue(QROVERWRITEIMAGEOPTION) == null) {
-        // cant overwrite, find a unique name
-        cliFile = findUniqueName(cliFile);
-      }
-      return cliFile;
-    }
-
-    String path = env.getOptionValue(QRIMAGEDIRECTORYPATHOPTION);
-    File dirF = new File(path);
-    if (!dirF.isAbsolute())
-      dirF = dirF.getAbsoluteFile();
-    if (!dirF.exists())
-      dirF = forceImageWorkspace();
-    String prefix = env.getOptionValue(QRFILENAMEPREFIXOPTION);
-    File f;
-    do {
-      f = new File(dirF, prefix + fNameIndex++ + "." + typ);
-    } while (f.exists());
-    return f;
-  }
-
-  private File checkMatchingType(File f, String typ)
-  {
-    String ext = FilenameUtils.getExtension(f.getName());
-    if (ext.equalsIgnoreCase(typ))
-      return f;
-    // a special case
-    if (ext.equalsIgnoreCase("jpeg") && typ.equalsIgnoreCase(("jpg"))
-        || ext.equalsIgnoreCase("jpg") && typ.equalsIgnoreCase("jpeg"))
-      return f;
-    System.out.println("Ignoring default image type of " + typ);
-    env.setOptionValue(QRIMAGEFORMATOPTION, ext);
-    return f;
-  }
-
-  private File findUniqueName(File cliFile)
-  {
-    File f = cliFile;
-    int myindex = 0;
-    while (f.exists()) {
-      String ext = FilenameUtils.getExtension(f.getName());
-      String basename = FilenameUtils.getBaseName(f.getName());
-      f = new File(f.getParentFile(), basename + myindex++ + "." + ext);
-    }
-
-    return f;
-  }
-
-  private File forceImageWorkspace()
-  {
-    return null;
-  }
-
-  @Override
-  public JComponent getGui()
-  {
-    if (myGui == null) {
-      myGui = new QRImageSaveToFilePanel(env);
-    }
-    return myGui;
-  }
-
-  @Override public PipeCategory getCategory()   { return category; }
-  @Override public String getShortDescription() { return descriptionShort; }
-  @Override public String getLongDescription()  { return descriptionLong; }  
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRInputBuilder.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRInputBuilder.java
deleted file mode 100755
index 81ba74e75f5d0c92091086c5a67d3d45fbb4e5c1..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRInputBuilder.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements;
-
-import edu.nps.moves.qrtda.elements.misc.PipeCategory;
-import com.google.zxing.client.result.ParsedResultType;
-import edu.nps.moves.qrtda.PerformanceLogger;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.misc.*;
-import edu.nps.moves.qrtda.qr.QRInput;
-import java.util.NoSuchElementException;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-/**
- * QRInputBuilder.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class QRInputBuilder extends QRFlowLink<String, QRInput>
-{
-  private final Logger logger=LogManager.getLogger(QRInputBuilder.class.getName());
-
-  @ElementHandle           public static String handleStr        = "String to QRInput";
-  @ElementCategory         public static PipeCategory category   = PipeCategory.QR_GENERATION;
-  @ElementDescriptionLong  public static String descriptionLong  = "Format converter: String->QRInput";
-  @ElementDescriptionShort public static String descriptionShort = "Format converter";
-  
-  public QRInputBuilder(TdaEnvironment env, ReadyListener lis)
-  {
-    super(handleStr, env, lis);
-  }
-
-  @Override
-  protected QRInput handleNextData() throws NoSuchElementException
-  {
-    String txt = dataQueue().next();
-    PerformanceLogger.logQRGenerationStart(logger, txt);
-    QRInput qri = new QRInput(ParsedResultType.TEXT, txt);
-    env.postLog("QRInputBuilder snding QRInput: " + qri.hashCode(),getPipeline());
-    return qri;
-  }
-
-  @Override public PipeCategory getCategory()   { return category; }
-  @Override public String getShortDescription() { return descriptionShort; }
-  @Override public String getLongDescription()  { return descriptionLong; }  
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRInputFromTextFile.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRInputFromTextFile.java
deleted file mode 100755
index 616164f35c224bf736697fff47656c8756cea34d..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRInputFromTextFile.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
-Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
-in source and binary forms, with or without modification, are permitted provided that the
-following conditions are met:
-
-Redistributions of source code must retain the above copyright notice, this list of conditions
-and the following disclaimer. Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the documentation and/or other
-materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
-Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
-http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
-WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-package edu.nps.moves.qrtda.elements;
-
-import com.google.common.io.Files;
-import com.google.zxing.client.result.ParsedResultType;
-import edu.nps.moves.qrtda.elements.misc.PipeCategory;
-import edu.nps.moves.qrtda.elements.gui.QRTextDirectorySourcePanel;
-import edu.nps.moves.qrtda.qr.QRInput;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.misc.*;
-import java.io.File;
-import java.io.IOException;
-import java.nio.charset.Charset;
-import java.util.NoSuchElementException;
-import javax.swing.JComponent;
-
-/**
- * QRInputFromTextFile.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class QRInputFromTextFile extends QRFlowLink<String, QRInput>
-{
-  @ElementHandle           public static String handleStr        = "QR text file source";
-  @ElementCategory         public static PipeCategory category   = PipeCategory.TEXT_SOURCE;
-  @ElementDescriptionLong  public static String descriptionLong  = "Reads a text file and converts it to QRInput object";
-  @ElementDescriptionShort public static String descriptionShort = "file path -> QRInput";
-  
-  private QRTextDirectorySourcePanel myGui;
-  
-  public QRInputFromTextFile(TdaEnvironment env, ReadyListener lis)
-  {
-    super(handleStr,env,lis);
-  }
-  
-  @Override
-  public JComponent getGui()
-  {
-    if(myGui == null)
-      myGui = new QRTextDirectorySourcePanel(env,this);
-    return myGui;
-  }
-
-  @Override
-  protected QRInput handleNextData() throws NoSuchElementException
-  {
-    while (true) {
-      try {
-        String path = dataQueue().next();
-        File f = new File(path);
-        String txt = Files.toString(f, Charset.forName("UTF-8"));
-
-        QRInput qri = new QRInput(ParsedResultType.TEXT, txt);
-        env.postLog("QRInputFromTextFile snding QRInput: " + qri.hashCode(),getPipeline());
-        return qri;
-      }
-      catch (IOException ex) {
-      }
-    }
-  }
-
-  @Override public PipeCategory getCategory()   { return category; }
-  @Override public String getShortDescription() { return descriptionShort; }
-  @Override public String getLongDescription()  { return descriptionLong; }  
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRSequencer.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRSequencer.java
deleted file mode 100755
index 4b87c62df0ef85c10a2f4928b64e2a443b30507a..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRSequencer.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements;
-
-import edu.nps.moves.qrtda.elements.misc.PipeCategory;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.misc.*;
-import java.util.NoSuchElementException;
-
-/**
- * QRSequencer.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class QRSequencer extends QRFlowLink<String,String>
-{
-  @ElementHandle           public static String handleStr        = "QR sequencer";
-  @ElementCategory         public static PipeCategory category   = PipeCategory.MESSAGING;
-  @ElementDescriptionLong  public static String descriptionLong  = "Break a large message into sequences pieces";
-  @ElementDescriptionShort public static String descriptionShort = "String->String";
-  
-  private String original;
-  private int originalLength;
-  private int placeMark=0;
-  private int lastOriginalMark;
-  private boolean needEOM=false;
-  
-  public static final String HEADER = "~'";
-  public static final String DELIMITER = HEADER;
-  public static final int    SEQUENCENUMBER_PLACES=6;
-  public static final int    SEQUENCENUMBER_OFFSET = HEADER.length();
-  public static final int    SEQUENCER_OVERHEAD = HEADER.length() + SEQUENCENUMBER_PLACES + DELIMITER.length();
-  public static final String EOM = "999999";
-  public static final String EOM_STRING = HEADER+EOM+DELIMITER;
-  
-  //test public int    MAX_CHARS = 50 - SEQUENCER_OVERHEAD;
-  public int    MAX_CHARS = 150 - SEQUENCER_OVERHEAD;
-
-  public int count=0;
-  
-  public QRSequencer(TdaEnvironment env, ReadyListener lis)
-  {
-    super(handleStr, env, lis);
-  }
-
-  private final StringBuilder sb = new StringBuilder();
-
-  @Override
-  protected String handleNextData() throws NoSuchElementException
-  {
-    if(needEOM==true) {
-      needEOM=false;
-      return EOM_STRING; // empty message
-    }
-    
-    if(original == null) {
-      original = dataQueue().next();
-      originalLength = original.length();
-      lastOriginalMark = originalLength-1;
-      env.postLog("QRSequencer recvd string of length: " + original.length(),getPipeline());
-    }
-
-    int msgSize = Math.min(original.length(),MAX_CHARS);
-    msgSize = Math.min(msgSize,originalLength-placeMark);
-    int endMark = placeMark+msgSize;
-    String piece = original.substring(placeMark,endMark);
-
-    env.postLog("QRSequencer("+count++ +") emitd string of length " + piece.length()+" starting at "+ placeMark,getPipeline());
-    sb.setLength(0);
-    sb.append(HEADER);
-    sb.append(String.format("%0"+SEQUENCENUMBER_PLACES+"d", placeMark));
-    sb.append(DELIMITER);
-    sb.append(piece);
-    
-    placeMark=endMark;
-
-    if(placeMark >= lastOriginalMark) {
-      needEOM=true;
-      original = null;
-      placeMark = 0;
-    }     
-
-    return sb.toString();
-  }
-  
-  @Override public PipeCategory getCategory()   { return category; }
-  @Override public String getShortDescription() { return descriptionShort; }
-  @Override public String getLongDescription()  { return descriptionLong; }  
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRTextDecoder.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRTextDecoder.java
deleted file mode 100644
index 4cc12c6ecc81555027d36fe8db8afa60926538c8..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/QRTextDecoder.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements;
-
-import com.google.zxing.*;
-import com.google.zxing.qrcode.QRCodeReader;
-import edu.nps.moves.qrtda.elements.misc.PipeCategory;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.misc.*;
-import java.util.HashMap;
-import java.util.NoSuchElementException;
-
-/**
- * QRTextDecoder.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class QRTextDecoder extends QRFlowLink<BinaryBitmap, String>
-{
-  @ElementHandle           public static String handleStr        = "QR text decoder";
-  @ElementCategory         public static PipeCategory category   = PipeCategory.QR_DECODING;
-  @ElementDescriptionLong  public static String descriptionLong  = "Decode QR image into String";
-  @ElementDescriptionShort public static String descriptionShort = "BitMatrix->String";;
-  
-  int count=0;
-  
-  public QRTextDecoder(TdaEnvironment env, ReadyListener lis)
-  {
-    super(handleStr, env, lis);
-  }
-
-  @Override
-  protected String handleNextData() throws NoSuchElementException
-  {
-    while(true) {
-      BinaryBitmap bm = dataQueue().next();
-
-      HashMap<DecodeHintType,Object> hints = new HashMap();
-      hints.put(DecodeHintType.TRY_HARDER, Boolean.TRUE);
-      QRCodeReader rdr = new QRCodeReader();
-      try {
-        final Result res = rdr.decode(bm,hints);
-        
-        env.postLog("QRDecodedTextDisplayer("+count++ +") recvd & emitd, BitMatrix: " + bm.hashCode(),getPipeline());
-        return res.getText();
-      }
-      catch(NotFoundException ex) {
-        String msg = "Image "+count++ +" not detected";
-        env.postLog(msg,getPipeline());
-      }
-      catch(ChecksumException ex) {
-        String msg = "Image "+count++ +" analysis shows checksum exception";
-        env.postLog(msg,getPipeline());        
-      }
-      catch(FormatException ex) {
-        String msg = "Image "+count++ +" analysis shows format exception";
-        env.postLog(msg,getPipeline());                
-      }
-    }
-  }
-  
-  @Override public PipeCategory getCategory()   { return category; }
-  @Override public String getShortDescription() { return descriptionShort; }
-  @Override public String getLongDescription()  { return descriptionLong; }  
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/SailorHelper.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/SailorHelper.java
deleted file mode 100644
index 8f1b2d663bd56695dd7f5654b92373888a7111dd..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/SailorHelper.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
-Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
-in source and binary forms, with or without modification, are permitted provided that the
-following conditions are met:
-
-Redistributions of source code must retain the above copyright notice, this list of conditions
-and the following disclaimer. Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the documentation and/or other
-materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
-Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
-http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
-WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-package edu.nps.moves.qrtda.elements;
-
-import edu.nps.moves.qrtda.elements.misc.PipeCategory;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.gui.OpticalCommsWindow;
-import edu.nps.moves.qrtda.elements.gui.SailorHelperPanel;
-import edu.nps.moves.qrtda.elements.gui.SailorWindow;
-import edu.nps.moves.qrtda.elements.misc.*;
-import java.util.NoSuchElementException;
-import javax.swing.JComponent;
-import org.apache.logging.log4j.*;
-
-/**
- * SailorHelper.java created on Feb 28, 2017
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class SailorHelper extends QRFlowLink<String, SailorText>
-{
-  private final Logger logger=LogManager.getLogger(SailorHelper.class.getName());
-
-  private SailorHelperPanel myGui;
-  private final SailorWindow sailorWindow=null;
-  
-  @ElementHandle public static String handleStr = "Sailor Helper Head Element";
-  @ElementCategory public static PipeCategory category = PipeCategory.TEXT_SOURCE;
-  @ElementDescriptionLong public static String descriptionLong = "Input typed text";
-  @ElementDescriptionShort public static String descriptionShort = "Sailor Helper";
-  
-  public SailorHelper(TdaEnvironment env, ReadyListener lis)
-  {
-    super("Sailor Helper",env,lis);
-    
-    setHandle(handleStr); 
-    if(env.isHeadless()) {
-      OpticalCommsWindow win = new OpticalCommsWindow(this,env);
-      win.setVisible(true);
-      env.setMiscOption(SailorWindow.SAILORWINDOW_KEY, null); //win);
-    }
-  }
-  
-  @Override
-  public JComponent getGui()
-  {
-    if(myGui == null)
-      myGui = new SailorHelperPanel(env,this);
-    return myGui;
-  }
-
-  @Override
-  protected SailorText handleNextData() throws NoSuchElementException
-  {
-    /*
-    String txt = dataQueue().next();// the initiation is done by our panel
-    PerformanceLogger.logElementInput(logger, txt);
-    SailorMedium med = sailorWindow.getSailorMedium();
-    
-    return new SailorText(med,txt); 
-*/
-    return null;
-  }
-  
-  @Override public PipeCategory getCategory()   { return category; }
-  @Override public String getShortDescription() { return descriptionShort; }
-  @Override public String getLongDescription()  { return descriptionLong; }  
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/SailorImageCreator.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/SailorImageCreator.java
deleted file mode 100644
index cc95e91d4fe16627e0bb88802bfd32af60f0ce53..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/SailorImageCreator.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
-Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
-in source and binary forms, with or without modification, are permitted provided that the
-following conditions are met:
-
-Redistributions of source code must retain the above copyright notice, this list of conditions
-and the following disclaimer. Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the documentation and/or other
-materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
-Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
-http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
-WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-package edu.nps.moves.qrtda.elements;
-
-import edu.nps.moves.qrtda.PerformanceLogger;
-import edu.nps.moves.qrtda.elements.misc.PipeCategory;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.gui.SailorImageCreatorPanel;
-import edu.nps.moves.qrtda.elements.gui.SailorWindow;
-import edu.nps.moves.qrtda.elements.misc.*;
-import edu.nps.moves.qrtda.morseArt.MorseArtAndSound;
-import edu.nps.moves.qrtda.semaphoreArt.SemaphoreArt;
-import edu.nps.moves.qrtda.signalflagsArt.SignalFlagArt;
-import java.util.NoSuchElementException;
-import javax.swing.JComponent;
-import org.apache.logging.log4j.*;
-
-/**
- * SailorImageCreator.java created on Feb 28, 2017
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class SailorImageCreator extends QRFlowLink<SailorText, JComponent[][]>
-{
-  private final Logger logger=LogManager.getLogger(SailorImageCreator.class.getName());
-  
-  private SailorImageCreatorPanel myGui;
-  private final SailorWindow window;
-  
-  @ElementHandle public static String handleStr = "Sailor Image Creator";
-  @ElementCategory public static PipeCategory category = PipeCategory.MISCELLANEOUS;
-  @ElementDescriptionLong public static String descriptionLong = "Create Navy flags, semaphore or morse images from text";
-  @ElementDescriptionShort public static String descriptionShort = "Flag/semaphore/morse creator";
-  
-  public final static String SAILORMEDIUM     = "sailorMedium";
-  @QrtdaParameter public final static NameDefault mediunm = new NameDefault(SAILORMEDIUM,"sailor helper medium","flags",String.class,"medium");
-    
-  public SailorImageCreator(TdaEnvironment env, ReadyListener lis)
-  {
-    super("Sailor Image Creator",env,lis);
-    window = (SailorWindow)env.getMiscOption(SailorWindow.SAILORWINDOW_KEY);
-  }
-  
-  @Override
-  public JComponent getGui()
-  {
-    if(myGui == null)
-      myGui = new SailorImageCreatorPanel(env,this);
-    return myGui;
-  }
-
-  @Override
-  protected JComponent[][] handleNextData() throws NoSuchElementException
-  {
-    SailorText stext = dataQueue().next();
-    PerformanceLogger.logElementInput(logger, stext.medium+": "+stext.text);
-    int sz = window.getImageSize();
-    switch(stext.medium) {
-      case FLAGS: 
-        return SignalFlagArt.getAlphaString(stext.text,sz,null);
-      case MORSE:
-        return MorseArtAndSound.getAlphaString(stext.text,sz,null);
-      default: //case SEMAPHORE:
-        return SemaphoreArt.getAlphaString(stext.text,sz,null);
-    }
-  }
-  
-  @Override public PipeCategory getCategory()   { return category; }
-  @Override public String getShortDescription() { return descriptionShort; }
-  @Override public String getLongDescription()  { return descriptionLong; }
-
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/SailorImageDisplayer.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/SailorImageDisplayer.java
deleted file mode 100644
index 3a6b80565c2fc6aca15fbe133d0e6eff789da263..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/SailorImageDisplayer.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
-Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
-in source and binary forms, with or without modification, are permitted provided that the
-following conditions are met:
-
-Redistributions of source code must retain the above copyright notice, this list of conditions
-and the following disclaimer. Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the documentation and/or other
-materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
-Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
-http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
-WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-package edu.nps.moves.qrtda.elements;
-
-import edu.nps.moves.qrtda.PerformanceLogger;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.gui.ChatSendPanel;
-import edu.nps.moves.qrtda.elements.gui.SailorImageDisplayerPanel;
-import edu.nps.moves.qrtda.elements.gui.SailorWindow;
-import edu.nps.moves.qrtda.elements.misc.*;
-import java.util.NoSuchElementException;
-import javax.swing.JComponent;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-/**
- * SailorImageDisplayer.java created on Feb 28, 2017
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class SailorImageDisplayer  extends QRFlowLink<JComponent[][],JComponent[][]>
-{
-  private final Logger logger=LogManager.getLogger(SailorImageDisplayer.class.getName());
-  
-  private SailorImageDisplayerPanel myGui;
-  
-  @ElementHandle public static String handleStr = "Sailor Image Displayer";
-  @ElementCategory public static PipeCategory category = PipeCategory.IMAGE_SINK;
-  @ElementDescriptionLong public static String descriptionLong = "Displays flags, morse or semaphore images";
-  @ElementDescriptionShort public static String descriptionShort = "Sailor Image Displayer";
-  
-  public final static String SAILORMORSEAUDIOAUTOPLAY     = "sailorMorseAudioAutoPlay";
-  @QrtdaParameter public final static NameDefault mediunm = new NameDefault(SAILORMORSEAUDIOAUTOPLAY,"sailor helper medium",false,boolean.class,"morseautoplay");
-    
-  public SailorImageDisplayer(TdaEnvironment env, ReadyListener lis)
-  {
-    super("Sailor Image Displayer",env,lis);
-    
-    setHandle(handleStr);    // todo remove
-  }
-  
-  @Override
-  public JComponent getGui()
-  {
-    if(myGui == null)
-      myGui = new SailorImageDisplayerPanel(env,this);
-    return myGui;
-  }
-
-  @Override
-  protected JComponent[][] handleNextData() throws NoSuchElementException
-  {
-    JComponent[][] images = dataQueue().next();
-    PerformanceLogger.logElementInput(logger, images.length+" images");
-    ((SailorWindow)env.getMiscOption(SailorWindow.SAILORWINDOW_KEY)).displayImages(images);
-    return null;  
-  }
-
-  void showReceivedText(String txt)
-  {
-    ((ChatSendPanel)getGui()).showReceivedText(txt); 
-  }
-
-  class handler implements Runnable
-  {
-    String txt;
-    public handler(String txt)
-    {
-      this.txt = txt;
-    }
-    @Override
-    public void run()
-    {
-      ((ChatSendPanel)getGui()).getChatWindow().sentText(txt); // this displays it
-      PerformanceLogger.logElementOutput(logger,txt);
-    }
-  }
-  
-  @Override public PipeCategory getCategory()   { return category; }
-  @Override public String getShortDescription() { return descriptionShort; }
-  @Override public String getLongDescription()  { return descriptionLong; }  
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/SysOutWriter.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/SysOutWriter.java
deleted file mode 100755
index b061ac76494835f294c52fee7bc4b1fa003f0bc8..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/SysOutWriter.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
-Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
-in source and binary forms, with or without modification, are permitted provided that the
-following conditions are met:
-
-Redistributions of source code must retain the above copyright notice, this list of conditions
-and the following disclaimer. Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the documentation and/or other
-materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
-Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
-http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
-WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-package edu.nps.moves.qrtda.elements;
-
-import edu.nps.moves.qrtda.elements.misc.PipeCategory;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.misc.*;
-import java.util.NoSuchElementException;
-
-/**
- * SysOutWriter.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class SysOutWriter extends QRFlowLink<String, String>
-{
-  @ElementHandle           public static String handleStr        = "SysOut writer";
-  @ElementCategory         public static PipeCategory category   = PipeCategory.INFORMATIONAL;
-  @ElementDescriptionLong  public static String descriptionLong  = "Shows received text in SysOut stream";;
-  @ElementDescriptionShort public static String descriptionShort = "System.out.println(s)";
-  
-  public SysOutWriter(TdaEnvironment env, ReadyListener lis)
-  {
-    super(handleStr,env,lis);
-  }
-
-  @Override
-  protected String handleNextData() throws NoSuchElementException
-  {
-    String s = dataQueue().next();
-    System.out.println(s);
-    return s;
-  }  
-
-  @Override public PipeCategory getCategory()   { return category; }
-  @Override public String getShortDescription() { return descriptionShort; }
-  @Override public String getLongDescription()  { return descriptionLong; }  
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/TextDirectoryWatcher.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/TextDirectoryWatcher.java
deleted file mode 100644
index e4aaa118f8e5c5602799fec5738d37819c940b08..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/TextDirectoryWatcher.java
+++ /dev/null
@@ -1,270 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements;
-
-import com.google.common.io.Files;
-import edu.nps.moves.qrtda.elements.gui.DirectoryWatcher;
-import edu.nps.moves.qrtda.elements.gui.QRDirectoryWatcherPanel;
-import edu.nps.moves.qrtda.elements.misc.PipeCategory;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.misc.*;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.nio.charset.Charset;
-import java.nio.file.*;
-import java.util.Arrays;
-import java.util.NoSuchElementException;
-import javax.swing.JComponent;
-import javax.swing.JOptionPane;
-import javax.swing.SwingUtilities;
-import static java.nio.file.StandardWatchEventKinds.*;
-
-/**
- * TextDirectoryWatcher.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class TextDirectoryWatcher extends QRFlowLink<String, String> implements DirectoryWatcher
-{
-  @ElementHandle           public static String handleStr        = "QR text directory to String";
-  @ElementCategory         public static PipeCategory category   = PipeCategory.TEXT_SOURCE;
-  @ElementDescriptionLong  public static String descriptionLong  = "Watches directory, emits path to new text file";
-  @ElementDescriptionShort public static String descriptionShort = "Emits path to new text file";
-  
-  private QRDirectoryWatcherPanel myGui;
-  private Thread watcherThread;
-   
-  private String lastDirectoryPath=".";
-  
-  public final static String TEXTWATCHERDIRECTORYOPTION = "textwatchdirectory";
-  @QrtdaParameter public final static NameDefault textDir = new NameDefault(TEXTWATCHERDIRECTORYOPTION,"directory to watch for text files","",  String.class,"directory");
-
-  public TextDirectoryWatcher(TdaEnvironment env, ReadyListener lis)
-  {
-    super(handleStr, env, lis);
-  }
-
-  @Override
-  public JComponent getGui()
-  {
-    if (myGui == null) {
-      myGui = new QRDirectoryWatcherPanel(env,this,"QR text directory watcher","textDirectory");
-    }
-    return myGui;
-  }
-
-  @Override
-  public boolean hasOnOffSwitch()
-  {
-    return true;
-  }
-  
-  @Override
-  public void turnOff()
-  {
-    killLoop();
-  }
-
-  @Override
-  public void turnOn()
-  {
-    beginDirectoryWatch(lastDirectoryPath);
-  }
- 
-  @Override
-  public void setPipeIndex(int idx)
-  {
-    ((QRDirectoryWatcherPanel)getGui()).setPipeIndex(idx);
-  }
-  
-  @Override
-  protected String handleNextData() throws NoSuchElementException
-  {
-    while (true) {
-      try {
-        String path = dataQueue().next();
-        File f = new File(path);
-        String txt = Files.toString(f, Charset.forName("UTF-8"));
-        return txt;
-      }
-      catch (IOException ex) {
-      }
-    }
-  }
-
-  /**
-   * Called from pipeline manager
-   */
-  @Override
-  public void initialize()
-  {
-    beginDirectoryWatch(env.getOptionValue(TEXTWATCHERDIRECTORYOPTION));
-  }
-  
-  /**
-   * Called from gui and above
-   * @param directoryPath 
-   */
-  @Override
-  public void beginDirectoryWatch(String directoryPath)
-  {
-    File dirFile;
-    try {
-      dirFile = env.openTextDirectory(directoryPath);
-    }
-    catch(FileNotFoundException ex) {
-      dirFile=null; env.postError("Can't find directory "+directoryPath, myGui);
-    }
-
-    if (dirFile != null) {
-      lastDirectoryPath = directoryPath;
-      killLoop();
-      watcherThread = new Thread(new QrDirWatcher(dirFile), "QR text directory watcher th.");
-      watcherThread.setPriority(Thread.NORM_PRIORITY);
-      watcherThread.setDaemon(!env.isHeadless());
-      watcherThread.start();
-      showReady(true);
-    }
-    else {
-      env.postError("Path specified is not a directory",myGui);  // myGui may be null, which is OK
-    }
-  }
-
-  @Override
-  public void killLoop()
-  {
-    if(watcherThread != null && watcherThread.isAlive())
-      watcherThread.interrupt();     
-  }
-  
-  class QrDirWatcher implements Runnable
-  {
-    private final File dir;
-
-    public QrDirWatcher(File dir)
-    {
-      this.dir = dir;
-    }
-
-    @Override
-    public void run()
-    {
-      WatchService watcher;
-      Path dirP;
-      
-      try {
-        watcher = FileSystems.getDefault().newWatchService();
-        dirP = dir.toPath();
-        /*WatchKey key = */ dirP.register(watcher,ENTRY_CREATE,/*ENTRY_DELETE,*/ENTRY_MODIFY);
-      }
-      catch (final IOException ex) {
-        SwingUtilities.invokeLater(new Runnable()
-        {
-          @Override
-          public void run()
-          {
-            JOptionPane.showMessageDialog(myGui, "Can't setup watch directory: " + ex.getClass().getSimpleName() + ": " + ex.getLocalizedMessage());
-          }
-        });
-        myGui.endLoop();
-        showReady(false);
-        return;
-      }
-      env.postLog("QRTextDirectoryWatcher watching "+dir.getAbsolutePath(),getPipeline());
-
-      // Begin while(true)
-      for (;;) {       
-        WatchKey key;
-        try {
-          key = watcher.take(); // wait for key to be signaled
-        }
-        catch (InterruptedException x) {
-          myGui.endLoop();
-          showReady(false);
-          return;
-        }
-
-        for (WatchEvent<?> event : key.pollEvents()) {
-          WatchEvent.Kind<?> kind = event.kind();
-
-          // This key is registered only
-          // for ENTRY_CREATE events,
-          // but an OVERFLOW event can
-          // occur regardless if events
-          // are lost or discarded.
-          if (kind == OVERFLOW) {
-            continue;
-          }
-
-          // The filename is the
-          // context of the event.
-          WatchEvent<Path> ev = (WatchEvent<Path>) event;
-          Path filename = ev.context();
-          if(filename.endsWith(".DS_Store"))
-            continue;
-          env.postLog("QRTextDirectoryWatcher saw "+filename.toString(),getPipeline());
-          if(!filename.toString().toLowerCase().endsWith(".txt"))
-            continue;
-          // Verify that the new
-          //  file is a text file.
-          Path child= dirP.resolve(filename);
-          //try {
-            // Resolve the filename against the directory.
-            // If the filename is "test" and the directory is "foo",
-            // the resolved name is "test/foo".
-            //child = dirP.resolve(filename);
-            //System.out.println("file type: "+Files.probeContentType(child));
-            //if (!Files.probeContentType(child).equals("text/plain")) {
-            //  System.err.format("New file '%s'" + " is not a plain text file.%n", filename);
-            //  continue;
-            //}
-          //}
-          //catch (IOException x) {
-          //  System.err.println(x);
-          //  continue;
-          //}
-
-          TextDirectoryWatcher.this.getPipeline().setStarts((Arrays.asList(child.toString())));
-          TextDirectoryWatcher.this.getPipeline().iterate();  // this executes our pipe components in this thread
-        }
-
-        // Reset the key -- this step is critical if you want to
-        // receive further watch events.  If the key is no longer valid,
-        // the directory is inaccessible so exit the loop.
-        boolean valid = key.reset();
-        if (!valid) {
-          break;
-        }
-      } // while true loop
-      myGui.endLoop();
-      showReady(false);
-    }
-  }
-  
-  @Override public PipeCategory getCategory()   { return category; }
-  @Override public String getShortDescription() { return descriptionShort; }
-  @Override public String getLongDescription()  { return descriptionLong; }   
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/TextFromCommandLineSource.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/TextFromCommandLineSource.java
deleted file mode 100644
index 22c70bed48afe6a4fb4d5f15ea09e3679a8fd78d..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/TextFromCommandLineSource.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
-Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
-in source and binary forms, with or without modification, are permitted provided that the
-following conditions are met:
-
-Redistributions of source code must retain the above copyright notice, this list of conditions
-and the following disclaimer. Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the documentation and/or other
-materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
-Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
-http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
-WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-package edu.nps.moves.qrtda.elements;
-
-import edu.nps.moves.qrtda.elements.misc.PipeCategory;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.misc.*;
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.util.Arrays;
-import java.util.NoSuchElementException;
-import javax.swing.JComponent;
-
-/**
- * TextFromCommandLineSource.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class TextFromCommandLineSource extends QRFlowLink<Object,String>
-{
-  @ElementHandle           public static String handleStr        = "Text from command line source";
-  @ElementCategory         public static PipeCategory category   = PipeCategory.TEXT_SOURCE;
-  @ElementDescriptionLong  public static String descriptionLong  = "Take text input from command line and pipe it";
-  @ElementDescriptionShort public static String descriptionShort = "Text from command line";
-  
-  public TextFromCommandLineSource(TdaEnvironment env, ReadyListener lis)
-  {
-    super(handleStr,env,lis);
-  }
-  
-  @Override
-  public JComponent getGui()
-  {
-    return null;
-  }
-
-  @Override
-  public void initialize()
-  {
-     getPipeline().setStarts((Arrays.asList("")));
-     getPipeline().next(); //iterate();  // this executes our pipe components in this thread //To change body of generated methods, choose Tools | Templates.
-  }
-
-  @Override
-  protected String handleNextData() throws NoSuchElementException
-  {
-    //return env.opt.textinput.value();
-    String line=null;
-    try {
-      BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
-      do {
-        System.out.println("Enter text to encode (Return delimits):");
-        line = br.readLine();
-      } while (line.length() <= 0);
-    }
-    catch (IOException ex) {
-      System.err.println("IOException when reading from command line: " + ex.getLocalizedMessage());
-      System.exit(1);
-    }
-    return line;
-  }
-
-  @Override public PipeCategory getCategory()   { return category; }
-  @Override public String getShortDescription() { return descriptionShort; }
-  @Override public String getLongDescription()  { return descriptionLong; }  
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/ThroughputTestReceiver.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/ThroughputTestReceiver.java
deleted file mode 100644
index 72c43efb0b240f49e3eb31d943bf2a7ac319d00d..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/ThroughputTestReceiver.java
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
-Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
-in source and binary forms, with or without modification, are permitted provided that the
-following conditions are met:
-
-Redistributions of source code must retain the above copyright notice, this list of conditions
-and the following disclaimer. Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the documentation and/or other
-materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
-Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
-http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
-WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-package edu.nps.moves.qrtda.elements;
-
-import edu.nps.moves.qrtda.PerformanceLogger;
-import edu.nps.moves.qrtda.elements.misc.PipeCategory;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.ThroughputTestSender.ThroughputTestInfo;
-import edu.nps.moves.qrtda.elements.gui.ThroughputTestReceiverPanel;
-import edu.nps.moves.qrtda.elements.misc.*;
-import java.util.NoSuchElementException;
-import javax.swing.JComponent;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-/**
- * ChatReceive.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class ThroughputTestReceiver extends QRFlowLink<String, String>
-{
-  private final Logger logger=LogManager.getLogger(ThroughputTestReceiver.class.getName());
-
-  @ElementHandle
-  public static String handleStr = "Throughput test receive element";
-  @ElementCategory
-  public static PipeCategory category = PipeCategory.TEXT_SINK;
-  @ElementDescriptionLong
-  public static String descriptionLong = "One half of a throughput test application, receives text and displays stats and other info";
-  @ElementDescriptionShort
-  public static String descriptionShort = "Throughput test receiver";
-  
-  private ThroughputTestReceiverPanel myGui;
-  
-  public ThroughputTestReceiver(TdaEnvironment env, ReadyListener lis)
-  {
-    super("Throughput Rcv.",env,lis);
-    setHandle(descriptionShort);
-   }
- 
-  @Override
-  public JComponent getGui()
-  {
-    if(myGui == null)
-      myGui = new ThroughputTestReceiverPanel(this);
-    return myGui;
-  }
-
-  @Override
-  protected String handleNextData() throws NoSuchElementException
-  {
-    String txt = dataQueue().next();
-    try {
-      ThroughputTestInfo ret = ThroughputTestSender.parseReceivedData(txt);
-      updateStats(ret);
-      return txt;
-    }
-    catch(Exception ex) {
-      env.postLog("ThroughputTestReceiver: error parsing data: "+ex.getLocalizedMessage(),getPipeline());
-      return "";
-    }
-  }
-   
-  @Override public PipeCategory getCategory()   { return category; }
-  @Override public String getShortDescription() { return descriptionShort; }
-  @Override public String getLongDescription()  { return descriptionLong; }  
-
-  private Long startTime = null;
-  private long bytesReceived = 0;
-  private long packetsReceived = 0;
-  private float packetRate = 0;
-  private float throughput = 0;
-  private int dropped = 0;
-  
-  private void updateStats(ThroughputTestInfo info)
-  {
-    if(startTime == null) {
-      startTime = System.currentTimeMillis(); // got to skip the first time, takes to long to bring the average down
-      return;
-    }
-    
-    if(checkDropped(info)) {
-      
-      return;
-    }
-    
-    long nowTime = System.currentTimeMillis();
-    long elapsed = nowTime-startTime;
-    
-    packetsReceived++;
-    bytesReceived += info.len;
-    
-    packetRate = packetsReceived * 1000.f / elapsed;
-    throughput = bytesReceived * 1000.f / elapsed;
-    
-    updateGui();
-    updateLog();
-  }
-  
-  private Character lastChar=null;
-  private boolean checkDropped(ThroughputTestInfo info)
-  {
-    boolean ret = false;  // no drops by default
-    if (lastChar == null) // start
-      ;
-    else {
-      char lastch = lastChar.charValue();   
-      if (!ThroughputTestSender.isInSequence(lastch, info.character)) {
-        if (lastch > info.character) // must have wrapped
-          dropped++;  // just add 1
-        else
-          dropped += ((int) info.character - (int) lastch);  // else add the diff
-        PerformanceLogger.logDroppedPackets(logger, dropped);
-        ret = true;
-      }
-    }
-    lastChar = info.character;
-    return ret;
-  }
-  
-  public void resetStats()
-  {
-    PerformanceLogger.logMeasureReset(logger, null);
-    startTime = null;
-    bytesReceived = 0;
-    packetsReceived = 0;
-    packetRate = 0;
-    dropped = 0;
-    throughput = 0;
-    
-    updateGui();
-  }
-  
-  private void updateGui()
-  {
-    myGui.setThroughput(throughput);
-    myGui.setDroppedFrames(dropped);
-    myGui.setPacketRate(packetRate);
-  }
-  
-  private void updateLog()
-  {
-    PerformanceLogger.logThroughput(logger, throughput);
-    PerformanceLogger.logPacketRate(logger, packetRate);
-  }
-  
- }
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/ThroughputTestSender.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/ThroughputTestSender.java
deleted file mode 100644
index 1ab4ccb7f99383d531d91ce170b254e57963af32..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/ThroughputTestSender.java
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
-Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
-in source and binary forms, with or without modification, are permitted provided that the
-following conditions are met:
-
-Redistributions of source code must retain the above copyright notice, this list of conditions
-and the following disclaimer. Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the documentation and/or other
-materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
-Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
-http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
-WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-package edu.nps.moves.qrtda.elements;
-
-import edu.nps.moves.qrtda.PerformanceLogger;
-import edu.nps.moves.qrtda.elements.misc.PipeCategory;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.gui.ThroughputTestSenderPanel;
-import edu.nps.moves.qrtda.elements.misc.*;
-import java.util.Arrays;
-import java.util.NoSuchElementException;
-import javax.swing.JComponent;
-import org.apache.logging.log4j.*;
-
-/*
-  Data format for messages:
-  ~
-  c
-  ~
-  n
-  ~
-  [n repetitions of c]
-*/
-
-/**
- * ChatSend.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class ThroughputTestSender extends QRFlowLink<String, String>
-{
-  private final Logger logger=LogManager.getLogger(ThroughputTestSender.class.getName());
-  
-  public static String MSG_HEADER = "~";
-  public static String MSG_DELIMITER = MSG_HEADER;  
-  public static int DEFAULT_MSG_LENGTH = 512;
-  public static String DEFAULT_MSG_LENGTH_S = "512";
-  public static class ThroughputTestInfo
-  {
-    public int len;
-    public char character;
-  }
-  
-  private ThroughputTestSenderPanel myGui;
-  
-  @ElementHandle
-  public static String handleStr = "Throughput test send element";
-  @ElementCategory
-  public static PipeCategory category = PipeCategory.TEXT_SOURCE;
-  @ElementDescriptionLong
-  public static String descriptionLong = "One half of a throughput test application, sends text and displays statistics";
-  @ElementDescriptionShort
-  public static String descriptionShort = "Throughput sender";
-  
-  public ThroughputTestSender(TdaEnvironment env, ReadyListener lis)
-  {
-    super("Throughput sender",env,lis);   
-  }
-  
-  @Override
-  public JComponent getGui()
-  {
-    if(myGui == null)
-      myGui = new ThroughputTestSenderPanel(env,this);
-    return myGui;
-  }
-
-  @Override
-  protected String handleNextData() throws NoSuchElementException
-  {
-    while (true) {
-      return (String) dataQueue().next();
-    } 
-  }
-
-  public void start()
-  {
-    PerformanceLogger.logThroughputTestStart(logger, null);
-    if(runThread == null) {
-      runThread = new Thread(new handler());
-      runThread.setPriority(Thread.NORM_PRIORITY);
-      runThread.start();
-    }
-  }
-
-  public void stop()
-  {
-    PerformanceLogger.logThroughputTestStop(logger, null);
-    if(runThread != null) {
-      killed = true;
-      runThread.interrupt();
-    }
-  }
-
-  private Thread runThread;
-  private boolean killed = false;
-  class handler implements Runnable
-  {
-
-    @Override
-    public void run()
-    {
-      while (!killed) {
-        try {
-          String txt = getNextText();
-
-          getPipeline().setStarts((Arrays.asList(txt)));
-          getPipeline().iterate();  // this executes our pipe components in this thread
-
-          //PerformanceLogger.logElementOutput(logger, "" + counter++);
-          Thread.sleep(myGui.getSleepMs());
-        }
-        catch (InterruptedException ex) {
-        }  // check at top of loop     
-      }
-      runThread = null;
-      killed = false;
-    }
-  }
-
-  private final StringBuilder sb = new StringBuilder();
-  private final static char[] c = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();
-  private int c_idx = 0;
-  
-  private char getNextChar()
-  {
-    char ch = c[c_idx++];
-    if(c_idx>=c.length)
-      c_idx=0;
-    return ch;
-  }
-  private String getNextText()
-  {
-    char ch = getNextChar();
-    sb.setLength(0);
-    sb.append(MSG_HEADER);
-    sb.append(ch);
-    sb.append(MSG_DELIMITER);
-    sb.append(myGui.getPacketSize()); //DEFAULT_MSG_LENGTH_S);
-    sb.append(MSG_DELIMITER);
-    int n = myGui.getPacketSize()-sb.length();
-    for(int i=0;i<n;i++)
-      sb.append(ch);
-    return sb.toString();
-  }
-  
-  public static boolean isInSequence(char first, char second)
-  {
-    if((int)second>(int)first)
-      return true;
-    return first == c[c.length-1] && second == c[0];
-  }
-  
-  private static final int CHARFIELD=1;
-  private static final int LENFIELD=2;
-  private static final int DATAFIELD=3;
-  
-  public static ThroughputTestInfo parseReceivedData(String s) throws Exception
-  {
-    ThroughputTestInfo ret;
-
-    String sa[] = s.split(MSG_DELIMITER);
-    int overhead = MSG_HEADER.length() + 1 + MSG_DELIMITER.length() + sa[LENFIELD].length() + MSG_DELIMITER.length();
-    ret = new ThroughputTestInfo();
-    ret.len = Integer.parseInt(sa[LENFIELD]);
-    ret.character = sa[CHARFIELD].charAt(0);
-
-    int datafieldlen = sa[DATAFIELD].length();
-    if (datafieldlen + overhead != ret.len)
-      throw new Exception("Bad data format");
-
-    for (int i = 0; i < datafieldlen; i++) {
-      char ch = sa[DATAFIELD].charAt(i);
-      if (ch != ret.character)
-        throw new Exception("Bad data character");
-    }
-
-    return ret;
-  }
-  
- /* 
-  public static void main(String[] args)
-  {
-    for (int i=0;i<30;i++) {
-      String s = ThroughputTestSender.getNextText();
-      ThroughputTestInfo ret = ThroughputTestSender.parseReceivedData(s);
-      System.out.println(ret==null?"null":"ret.char = "+ret.character+ " ret.len = "+ret.len);
-    }
-  }
-  */
-  @Override public PipeCategory getCategory()   { return category; }
-  @Override public String getShortDescription() { return descriptionShort; }
-  @Override public String getLongDescription()  { return descriptionLong; }  
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/WebcamCaptureLibraryFrameGrabber.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/WebcamCaptureLibraryFrameGrabber.java
deleted file mode 100644
index 71b270601de1fbac8ddf472cf101e91c5493bea5..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/WebcamCaptureLibraryFrameGrabber.java
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements;
-
-import com.github.sarxos.webcam.Webcam;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.misc.NoCaptureDeviceFound;
-import edu.nps.moves.qrtda.elements.misc.QRWebcamResolutions;
-import java.awt.Dimension;
-import java.awt.image.BufferedImage;
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * WebcamCaptureLibraryFrameGrabber.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class WebcamCaptureLibraryFrameGrabber implements FrameGrabberRunnable, Runnable
-{
-  private long sleepTime = 1000L;
-  private TdaEnvironment env;
-  private QRFlowLink<?,?> qlink;
-  private String mrlOrName;
-  private int threadPriority = Thread.NORM_PRIORITY;
-  private Thread thread;
-  
-  private static Webcam webcam;
-  private String className;
-  
-  public WebcamCaptureLibraryFrameGrabber()
-  {
-    className = WebcamCaptureLibraryFrameGrabber.class.getSimpleName();
-  }
-  
-  public WebcamCaptureLibraryFrameGrabber(String mrlOrName, long sleepTime, int threadPriority, TdaEnvironment env) throws NoCaptureDeviceFound
-  {
-    this();
-    this.mrlOrName = mrlOrName;
-    this.sleepTime = sleepTime;
-    this.threadPriority = threadPriority;
-    this.env = env;
-  }
-  
-  @Override
-  public void beginGrab(TdaEnvironment env, QRFlowLink<?,?> qlink) throws NoCaptureDeviceFound
-  {
-    this.env = env;
-    this.qlink = qlink;
-
-    if (webcam == null) {
-      if (mrlOrName == null)
-        webcam = Webcam.getDefault();
-      else
-        webcam = findCam();
-      if (webcam == null)
-        throw new NoCaptureDeviceFound();
-    }
-    webcam.setCustomViewSizes(QRWebcamResolutions.HERO4_RESOLUTIONS);
-    Dimension dim = QRWebcamResolutions.R1440_43;
-    webcam.setViewSize(dim);
-
-    webcam.open();
-
-    env.postLog(className + ": camera = " + webcam.getName(),qlink.getPipeline());
-    env.postLog(className + ": image size set to " + dim.width + "x" + dim.height,qlink.getPipeline());
-    thread = new Thread(this, className + " thread");
-    thread.setPriority(threadPriority);
-    thread.setDaemon(true); // don't let it stop quit
-    //thread.setDaemon(env.isHeadless());
-    thread.start();
-  }
-
-  private Webcam findCam()
-  {
-    List<Webcam> lis = Webcam.getWebcams();
-    for(Webcam cam : lis) {
-      /*Dimension d = cam.getViewSize();
-      Dimension[] da = cam.getViewSizes(); */
-      if(mrlOrName.equals(cam.getName()))
-        return cam;
-    }
-    return Webcam.getDefault();
-  }
-  
-  @Override
-  public void stopGrab()
-  {
-    if(thread != null)
-      thread.interrupt();
-    thread = null;
-    
-    if(webcam != null)
-      webcam.close();
-  }
-
-   @Override
-  public void run()
-  {
-    try {
-      while (true) {
-        long lastGrabAt = System.currentTimeMillis();
-        BufferedImage bi = webcam.getImage();
-        //System.out.println("frame height: "+bi.getHeight());
-        //System.out.println("frame width: "+bi.getWidth());
-        boolean success = (bi != null);
-        if (success) {
-          qlink.getPipeline().setStarts((Arrays.asList(bi)));
-          qlink.getPipeline().iterate();  // this executes our pipe components in this thread
-        }       
-        else {
-          env.postLog(className+": Couldn't read frame",qlink.getPipeline());
-          //System.err.println("QRCameraFrameGrabber: Couldn't read frame");
-        }
-        long nowTime = System.currentTimeMillis();
-        //System.out.println("sleeping for " + Math.max(sleepTime, nowTime - lastGrabAt));
-        Thread.sleep(Math.max(sleepTime, nowTime - lastGrabAt));
-      }
-    }
-    catch (InterruptedException ex) {
-    }
-    thread = null;
-  }
-  
-  @Override
-  public void setThreadPriority(int prior)
-  {
-    this.threadPriority = prior;
-  }
-
-  @Override
-  public void setMrlOrName(String mrl)
-  {
-    this.mrlOrName = mrl;
-  }
-  
-  @Override
-  public void setSleepTime(long time)
-  {
-    this.sleepTime = time;
-  }
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/AllFlagsDialog.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/AllFlagsDialog.form
deleted file mode 100644
index 99d57ebccee1e8274e07664b3f9c38c8f995508a..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/AllFlagsDialog.form
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
-  <Properties>
-    <Property name="defaultCloseOperation" type="int" value="2"/>
-  </Properties>
-  <SyntheticProperties>
-    <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
-    <SyntheticProperty name="generateCenter" type="boolean" value="false"/>
-  </SyntheticProperties>
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
-  <SubComponents>
-    <Container class="javax.swing.JPanel" name="contentPan">
-      <Properties>
-        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-          <Border info="org.netbeans.modules.form.compat2.border.LineBorderInfo">
-            <LineBorder>
-              <Color PropertyName="color" blue="c0" green="c0" id="lightGray" palette="1" red="c0" type="palette"/>
-            </LineBorder>
-          </Border>
-        </Property>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
-          <BorderConstraints direction="Center"/>
-        </Constraint>
-      </Constraints>
-
-      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout"/>
-    </Container>
-    <Container class="javax.swing.JPanel" name="buttonPan">
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
-          <BorderConstraints direction="South"/>
-        </Constraint>
-      </Constraints>
-
-      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-      <SubComponents>
-        <Component class="javax.swing.JButton" name="cancelButt">
-          <Properties>
-            <Property name="text" type="java.lang.String" value="cancel"/>
-          </Properties>
-          <Events>
-            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="cancelButtActionPerformed"/>
-          </Events>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="13" weightX="1.0" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-        <Component class="javax.swing.JButton" name="okButt">
-          <Properties>
-            <Property name="text" type="java.lang.String" value="select"/>
-          </Properties>
-          <Events>
-            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="okButtActionPerformed"/>
-          </Events>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-      </SubComponents>
-    </Container>
-  </SubComponents>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/AllFlagsDialog.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/AllFlagsDialog.java
deleted file mode 100644
index 6cffbdff0c6696e418e496db6f6457e7028208d9..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/AllFlagsDialog.java
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.elements.gui;
-
-import edu.nps.moves.qrtda.signalflagsArt.SignalFlagArt;
-import java.awt.Color;
-import javax.swing.JDialog;
-import javax.swing.JFrame;
-import java.awt.Frame;
-import java.awt.EventQueue;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
-import java.awt.event.WindowAdapter;
-import java.awt.event.WindowEvent;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.TreeSet;
-import javax.swing.*;
-/**
- * AllFlagsDialog.java created on Apr 27, 2017
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class AllFlagsDialog extends JDialog
-{
-  public static final int IMAGESIZE = 60;
-  public AllFlagsDialog(Frame parent, boolean modal)
-  {
-    super(parent, modal);
-    initComponents();
-    
-    TreeSet<Character> set = new TreeSet(SignalFlagArt.getCharacterSet()); // sorts
-    set.forEach((c) -> {
-      contentPan.add(makeImageComponent(c));
-    });  
-  }
-  
-  private JComponent makeImageComponent(char c)
-  {
-    ImageIcon ii = SignalFlagArt.getIcon(c,IMAGESIZE);
-    return new LabelWithChar(ii,c);
-  }
-  
-  ArrayList<LabelWithChar> selected = new ArrayList<>();
-  
-  class LabelWithChar extends JLabel
-  {
-    public char character;
-    public LabelWithChar(Icon i, char c)
-    {
-      super(i);
-      this.character = c;
-      super.addMouseListener(myListener);
-    }  
-    private final MouseAdapter myListener = new MouseAdapter()
-    {
-      @Override
-      public void mouseClicked(MouseEvent e)
-      {
-        if(e.getClickCount()>1) {
-          selected.clear();
-          selected.add(LabelWithChar.this);
-          okButtActionPerformed(null);
-        }
-        else if(e.isControlDown()) {
-          selected.remove(LabelWithChar.this);
-          LabelWithChar.this.setBorder(null);
-        }
-        else {
-          LabelWithChar.this.setBorder(BorderFactory.createLineBorder(Color.red,3));
-          selected.add(LabelWithChar.this);        
-        }
-      }
-    };
-  }
-  public Collection<Character> getSelectedCharacters()
-  {
-    ArrayList<Character> al = new ArrayList<>();
-    selected.forEach((lwc) -> {
-      al.add(lwc.character);
-    });
-    return al;
-  }
-  /** This method is called from within the constructor to
-   * initialize the form.
-   * WARNING: Do NOT modify this code. The content of this method is
-   * always regenerated by the Form Editor.
-   */
-   
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-    java.awt.GridBagConstraints gridBagConstraints;
-
-    contentPan = new javax.swing.JPanel();
-    buttonPan = new javax.swing.JPanel();
-    cancelButt = new javax.swing.JButton();
-    okButt = new javax.swing.JButton();
-
-    setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
-
-    contentPan.setBorder(javax.swing.BorderFactory.createLineBorder(java.awt.Color.lightGray));
-    getContentPane().add(contentPan, java.awt.BorderLayout.CENTER);
-
-    buttonPan.setLayout(new java.awt.GridBagLayout());
-
-    cancelButt.setText("cancel");
-    cancelButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        cancelButtActionPerformed(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
-    gridBagConstraints.weightx = 1.0;
-    buttonPan.add(cancelButt, gridBagConstraints);
-
-    okButt.setText("select");
-    okButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        okButtActionPerformed(evt);
-      }
-    });
-    buttonPan.add(okButt, new java.awt.GridBagConstraints());
-
-    getContentPane().add(buttonPan, java.awt.BorderLayout.SOUTH);
-
-    pack();
-  }// </editor-fold>//GEN-END:initComponents
-
-  private void cancelButtActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_cancelButtActionPerformed
-  {//GEN-HEADEREND:event_cancelButtActionPerformed
-    selected.clear();
-    setVisible(false);
-  }//GEN-LAST:event_cancelButtActionPerformed
-
-  private void okButtActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_okButtActionPerformed
-  {//GEN-HEADEREND:event_okButtActionPerformed
-    setVisible(false);
-  }//GEN-LAST:event_okButtActionPerformed
-
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  private javax.swing.JPanel buttonPan;
-  private javax.swing.JButton cancelButt;
-  private javax.swing.JPanel contentPan;
-  private javax.swing.JButton okButt;
-  // End of variables declaration//GEN-END:variables
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ChatPanel.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ChatPanel.form
deleted file mode 100644
index 12aa30ce164ea5addd4042fc0d27f7d9435c7550..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ChatPanel.form
+++ /dev/null
@@ -1,147 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,2,87,0,0,3,-112"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
-  <SubComponents>
-    <Container class="javax.swing.JSplitPane" name="jSplitPane1">
-      <Properties>
-        <Property name="dividerLocation" type="int" value="500"/>
-        <Property name="orientation" type="int" value="0"/>
-        <Property name="resizeWeight" type="double" value="1.0"/>
-        <Property name="oneTouchExpandable" type="boolean" value="true"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
-          <BorderConstraints direction="Center"/>
-        </Constraint>
-      </Constraints>
-
-      <Layout class="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout"/>
-      <SubComponents>
-        <Container class="javax.swing.JScrollPane" name="jScrollPane1">
-          <Properties>
-            <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
-              <Color blue="66" green="ff" red="ff" type="rgb"/>
-            </Property>
-            <Property name="horizontalScrollBarPolicy" type="int" value="31"/>
-            <Property name="toolTipText" type="java.lang.String" value=""/>
-            <Property name="verticalScrollBarPolicy" type="int" value="22"/>
-            <Property name="viewportView" type="java.awt.Component" editor="org.netbeans.modules.form.ComponentChooserEditor">
-              <ComponentRef name="messagePan"/>
-            </Property>
-          </Properties>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout$JSplitPaneConstraintsDescription">
-              <JSplitPaneConstraints position="top"/>
-            </Constraint>
-          </Constraints>
-
-          <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
-          <SubComponents>
-            <Container class="javax.swing.JPanel" name="messagePan">
-              <Properties>
-                <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
-                  <Color blue="ff" green="cc" red="cc" type="rgb"/>
-                </Property>
-              </Properties>
-              <AuxValues>
-                <AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new ScrollingPanel()"/>
-              </AuxValues>
-
-              <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-              <SubComponents>
-                <Component class="javax.swing.JLabel" name="bottomSpacer">
-                  <Constraints>
-                    <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-                      <GridBagConstraints gridX="0" gridY="-1" gridWidth="1" gridHeight="1" fill="3" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="1.0"/>
-                    </Constraint>
-                  </Constraints>
-                </Component>
-              </SubComponents>
-            </Container>
-          </SubComponents>
-        </Container>
-        <Container class="javax.swing.JPanel" name="jPanel2">
-          <AccessibilityProperties>
-            <Property name="AccessibleContext.accessibleDescription" type="java.lang.String" value=""/>
-            <Property name="AccessibleContext.accessibleParent" type="javax.accessibility.Accessible" editor="org.netbeans.modules.form.ComponentChooserEditor">
-              <ComponentRef name="jSplitPane1"/>
-            </Property>
-          </AccessibilityProperties>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout$JSplitPaneConstraintsDescription">
-              <JSplitPaneConstraints position="bottom"/>
-            </Constraint>
-          </Constraints>
-
-          <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-          <SubComponents>
-            <Container class="javax.swing.JScrollPane" name="jScrollPane2">
-              <AuxValues>
-                <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
-              </AuxValues>
-              <Constraints>
-                <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-                  <GridBagConstraints gridX="0" gridY="1" gridWidth="1" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="1.0"/>
-                </Constraint>
-              </Constraints>
-
-              <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
-              <SubComponents>
-                <Component class="javax.swing.JTextArea" name="entryTA">
-                  <Properties>
-                    <Property name="columns" type="int" value="20"/>
-                    <Property name="lineWrap" type="boolean" value="true"/>
-                    <Property name="rows" type="int" value="1"/>
-                    <Property name="wrapStyleWord" type="boolean" value="true"/>
-                    <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-                      <Border info="org.netbeans.modules.form.compat2.border.BevelBorderInfo">
-                        <BevelBorder bevelType="1"/>
-                      </Border>
-                    </Property>
-                  </Properties>
-                </Component>
-              </SubComponents>
-            </Container>
-            <Component class="javax.swing.JButton" name="sendButt">
-              <Properties>
-                <Property name="text" type="java.lang.String" value="send"/>
-              </Properties>
-              <Events>
-                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="sendButtActionPerformed"/>
-              </Events>
-              <Constraints>
-                <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-                  <GridBagConstraints gridX="1" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/>
-                </Constraint>
-              </Constraints>
-            </Component>
-            <Component class="javax.swing.JLabel" name="jLabel1">
-              <Properties>
-                <Property name="text" type="java.lang.String" value="Press enter/return or send button to send message"/>
-              </Properties>
-              <Constraints>
-                <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-                  <GridBagConstraints gridX="-1" gridY="-1" gridWidth="0" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-                </Constraint>
-              </Constraints>
-            </Component>
-          </SubComponents>
-        </Container>
-      </SubComponents>
-    </Container>
-  </SubComponents>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ChatPanel.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ChatPanel.java
deleted file mode 100644
index ca441e710dbf046104938bc55a1e7387088a1fff..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ChatPanel.java
+++ /dev/null
@@ -1,285 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements.gui;
-
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.QRFlowLink;
-import java.awt.*;
-import java.awt.event.ActionEvent;
-import java.awt.event.KeyEvent;
-import java.util.Arrays;
-import javax.swing.*;
-
-/**
- * ChatPanel.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class ChatPanel extends javax.swing.JPanel
-{
-  private final TdaEnvironment env;
-  private final QRFlowLink<?,?> qlink;
-  
-  public ChatPanel(TdaEnvironment tda, QRFlowLink<?,?> link)
-  {
-    env = tda;
-    this.qlink = link;
-    initComponents();
-    jScrollPane1.getViewport().setBackground(new Color(204,204,255));
-    entryTA.getActionMap().put(KeyEvent.VK_ENTER, returnPressed);
-    
-    entryTA.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0),"enterhit");
-    entryTA.getActionMap().put("enterhit", returnPressed);
-    
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = GridBagConstraints.RELATIVE;
-    gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.weightx = 1.0;
-    gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5);
-    
-    bottomConstraints.weightx = 1.0;
-    bottomConstraints.weighty = 1.0;
-    bottomConstraints.fill = GridBagConstraints.BOTH;
-    bottomConstraints.gridx = 0;
-    bottomConstraints.gridy = GridBagConstraints.RELATIVE;
-  }
-  
-  GridBagConstraints gridBagConstraints = new GridBagConstraints();
-  GridBagConstraints bottomConstraints = new GridBagConstraints();
-  
-  public void receivedText(String s)
-  {
-    addMsg(new chatMessage(sr.RECEIVE,"<b>(Rcv) </b>"+s));
-  }
-  
-  public void sentText(String s)
-  {
-    addMsg(new chatMessage(sr.SEND,"<b>(Snd) </b>"+s));
-  }
-  
-  private void addMsg(chatMessage m)
-  {
-    messagePan.remove(bottomSpacer);
-    messagePan.add(m,gridBagConstraints);
-    messagePan.add(bottomSpacer,bottomConstraints);
-    messagePan.revalidate();
-    
-    // make sure last msg is visible
-    Dimension d = messagePan.getPreferredSize();
-    messagePan.scrollRectToVisible(new Rectangle(0,d.height-1,1,1));
-  }
-  
-  Action returnPressed = new AbstractAction()
-  {
-
-    @Override
-    public void actionPerformed(ActionEvent e)
-    {
-      sendString();
-    }
-  };
-  
-  private void sendString()
-  {
-    String txt = entryTA.getText().trim();
-    if(txt.length()<=0)
-      return;
-    new ChatSender(txt).start();
-    //sentText(txt);  gets added in ChatSend
-    entryTA.selectAll();
-  }
-  
-  class ChatSender extends Thread
-  {
-    String txt;
-    public ChatSender(String txt)
-    {
-      this.txt = txt;
-      this.setDaemon(true);
-      this.setPriority(Thread.NORM_PRIORITY);
-    }
-    
-    @Override
-    public void run()
-    {
-      qlink.getPipeline().setStarts((Arrays.asList(txt)));
-      qlink.getPipeline().iterate();  // this executes our pipe components in this thread
-    }
-  }
-  /**
-   * This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The content of this method is always
-   * regenerated by the Form Editor.
-   */
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-    java.awt.GridBagConstraints gridBagConstraints;
-
-    jSplitPane1 = new javax.swing.JSplitPane();
-    jScrollPane1 = new javax.swing.JScrollPane();
-    messagePan = new ScrollingPanel();
-    bottomSpacer = new javax.swing.JLabel();
-    jPanel2 = new javax.swing.JPanel();
-    jScrollPane2 = new javax.swing.JScrollPane();
-    entryTA = new javax.swing.JTextArea();
-    sendButt = new javax.swing.JButton();
-    jLabel1 = new javax.swing.JLabel();
-
-    setLayout(new java.awt.BorderLayout());
-
-    jSplitPane1.setDividerLocation(500);
-    jSplitPane1.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);
-    jSplitPane1.setResizeWeight(1.0);
-    jSplitPane1.setOneTouchExpandable(true);
-
-    jScrollPane1.setBackground(new java.awt.Color(255, 255, 102));
-    jScrollPane1.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
-    jScrollPane1.setToolTipText("");
-    jScrollPane1.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
-    jScrollPane1.setViewportView(messagePan);
-
-    messagePan.setBackground(new java.awt.Color(204, 204, 255));
-    messagePan.setLayout(new java.awt.GridBagLayout());
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL;
-    gridBagConstraints.weightx = 1.0;
-    gridBagConstraints.weighty = 1.0;
-    messagePan.add(bottomSpacer, gridBagConstraints);
-
-    jScrollPane1.setViewportView(messagePan);
-
-    jSplitPane1.setTopComponent(jScrollPane1);
-
-    jPanel2.setLayout(new java.awt.GridBagLayout());
-
-    entryTA.setColumns(20);
-    entryTA.setLineWrap(true);
-    entryTA.setRows(1);
-    entryTA.setWrapStyleWord(true);
-    entryTA.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.LOWERED));
-    jScrollPane2.setViewportView(entryTA);
-
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
-    gridBagConstraints.weightx = 1.0;
-    gridBagConstraints.weighty = 1.0;
-    jPanel2.add(jScrollPane2, gridBagConstraints);
-
-    sendButt.setText("send");
-    sendButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        sendButtActionPerformed(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 1;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
-    jPanel2.add(sendButt, gridBagConstraints);
-
-    jLabel1.setText("Press enter/return or send button to send message");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    jPanel2.add(jLabel1, gridBagConstraints);
-
-    jSplitPane1.setBottomComponent(jPanel2);
-    jPanel2.getAccessibleContext().setAccessibleDescription("");
-    jPanel2.getAccessibleContext().setAccessibleParent(jSplitPane1);
-
-    add(jSplitPane1, java.awt.BorderLayout.CENTER);
-  }// </editor-fold>//GEN-END:initComponents
-
-  private void sendButtActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_sendButtActionPerformed
-  {//GEN-HEADEREND:event_sendButtActionPerformed
-    sendString();
-  }//GEN-LAST:event_sendButtActionPerformed
-
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  private javax.swing.JLabel bottomSpacer;
-  private javax.swing.JTextArea entryTA;
-  private javax.swing.JLabel jLabel1;
-  private javax.swing.JPanel jPanel2;
-  private javax.swing.JScrollPane jScrollPane1;
-  private javax.swing.JScrollPane jScrollPane2;
-  private javax.swing.JSplitPane jSplitPane1;
-  private javax.swing.JPanel messagePan;
-  private javax.swing.JButton sendButt;
-  // End of variables declaration//GEN-END:variables
-
- enum sr {SEND,RECEIVE};
- class chatMessage extends JLabel
- {
-   Color ltGr = new Color(200,200,200);
-   chatMessage(sr wh, String txt)
-   {
-     setBackground(wh==sr.SEND?Color.white:ltGr);
-     setText("<html><p>"+txt+"</p></html>"); // for wrapping
-     setOpaque(true);
-     setBorder(BorderFactory.createCompoundBorder(BorderFactory.createEtchedBorder(),BorderFactory.createEmptyBorder(5, 5, 5, 5)));
-   }
- }
-
- /**
-  * Class to resize panel with parent resize
-  */
-  class ScrollingPanel extends JPanel implements Scrollable
-  {
-    @Override
-    public Dimension getPreferredScrollableViewportSize()
-    {
-      return getPreferredSize();
-    }
-
-    @Override
-    public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction)
-    {
-      return 1;
-    }
-
-    @Override
-    public int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction)
-    {
-      return 1;
-    }
-
-    @Override
-    public boolean getScrollableTracksViewportWidth()
-    {
-      return true;
-    }
-
-    @Override
-    public boolean getScrollableTracksViewportHeight()
-    {
-      return false; //want vertical scrollbar
-    }
-  }
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ChatReceivePanel.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ChatReceivePanel.form
deleted file mode 100755
index 510a83f816906d650ce630ae71019e066ed6c223..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ChatReceivePanel.form
+++ /dev/null
@@ -1,77 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,0,93,0,0,1,19"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-  <SubComponents>
-    <Component class="javax.swing.JLabel" name="jLabel1">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="Chat Receive"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="-1" gridY="-1" gridWidth="0" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="5" insetsLeft="5" insetsBottom="5" insetsRight="5" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="jLabel4">
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="2" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="1.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="jLabel2">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="Sender binding:"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="5" insetsLeft="5" insetsBottom="5" insetsRight="5" anchor="17" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="senderLab">
-      <Properties>
-        <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
-          <Color blue="ff" green="ff" red="ff" type="rgb"/>
-        </Property>
-        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-          <Border info="org.netbeans.modules.form.compat2.border.LineBorderInfo">
-            <LineBorder>
-              <Color PropertyName="color" blue="c0" green="c0" id="lightGray" palette="1" red="c0" type="palette"/>
-            </LineBorder>
-          </Border>
-        </Property>
-        <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-          <Dimension value="[245, 18]"/>
-        </Property>
-        <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-          <Dimension value="[245, 18]"/>
-        </Property>
-        <Property name="opaque" type="boolean" value="true"/>
-        <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-          <Dimension value="[245, 18]"/>
-        </Property>
-        <Property name="requestFocusEnabled" type="boolean" value="false"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="2" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="5" insetsLeft="5" insetsBottom="5" insetsRight="5" anchor="11" weightX="0.0" weightY="1.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-  </SubComponents>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ChatReceivePanel.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ChatReceivePanel.java
deleted file mode 100755
index 737a34873721f919ef9ed2c172723a4bedf044f3..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ChatReceivePanel.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements.gui;
-
-import edu.nps.moves.qrtda.elements.ChatSend;
-import java.awt.Dimension;
-import javax.swing.JPanel;
-
-/**
- * ChatReceivePanel.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class ChatReceivePanel extends JPanel
-{
-  ChatSendPanel sendPanPartner;
-  public ChatReceivePanel()
-  {
-    initComponents();
-  } 
-  
-  public void setPipeIndex(int idx)
-  {
-    jLabel1.setText(""+idx+" "+jLabel1.getText());
-  }
-   
-  public void setBoundSender(ChatSend sendr)
-  {
-    Dimension d = senderLab.getPreferredSize();
-    senderLab.setText(sendr.toString());
-    senderLab.setPreferredSize(d);
-    senderLab.setMinimumSize(d);
-    senderLab.setMaximumSize(d);
-  }
-
-  /**
-   * This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The content of this method is always
-   * regenerated by the Form Editor.
-   */
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-    java.awt.GridBagConstraints gridBagConstraints;
-
-    jLabel1 = new javax.swing.JLabel();
-    jLabel4 = new javax.swing.JLabel();
-    jLabel2 = new javax.swing.JLabel();
-    senderLab = new javax.swing.JLabel();
-
-    setLayout(new java.awt.GridBagLayout());
-
-    jLabel1.setText("Chat Receive");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
-    add(jLabel1, gridBagConstraints);
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 2;
-    gridBagConstraints.weighty = 1.0;
-    add(jLabel4, gridBagConstraints);
-
-    jLabel2.setText("Sender binding:");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
-    gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
-    add(jLabel2, gridBagConstraints);
-
-    senderLab.setBackground(new java.awt.Color(255, 255, 255));
-    senderLab.setBorder(javax.swing.BorderFactory.createLineBorder(java.awt.Color.lightGray));
-    senderLab.setMaximumSize(new java.awt.Dimension(245, 18));
-    senderLab.setMinimumSize(new java.awt.Dimension(245, 18));
-    senderLab.setOpaque(true);
-    senderLab.setPreferredSize(new java.awt.Dimension(245, 18));
-    senderLab.setRequestFocusEnabled(false);
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 2;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
-    gridBagConstraints.weighty = 1.0;
-    gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
-    add(senderLab, gridBagConstraints);
-  }// </editor-fold>//GEN-END:initComponents
-
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  private javax.swing.JLabel jLabel1;
-  private javax.swing.JLabel jLabel2;
-  private javax.swing.JLabel jLabel4;
-  private javax.swing.JLabel senderLab;
-  // End of variables declaration//GEN-END:variables
-
- }
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ChatSendPanel.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ChatSendPanel.form
deleted file mode 100755
index e92ba6434d41da7b88efa684fdff2d19ce4e8f3f..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ChatSendPanel.form
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
-  <Properties>
-    <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-      <Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo">
-        <EmptyBorder bottom="5" left="5" right="5" top="5"/>
-      </Border>
-    </Property>
-  </Properties>
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,0,-126,0,0,1,23"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-  <SubComponents>
-    <Component class="javax.swing.JLabel" name="jLabel1">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="Chat Send"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="5" insetsLeft="5" insetsBottom="5" insetsRight="5" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="jLabel2">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="Receiver binding: "/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="5" insetsLeft="5" insetsBottom="5" insetsRight="5" anchor="17" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="rcvrLab">
-      <Properties>
-        <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
-          <Color blue="ff" green="ff" id="white" palette="1" red="ff" type="palette"/>
-        </Property>
-        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-          <Border info="org.netbeans.modules.form.compat2.border.LineBorderInfo">
-            <LineBorder>
-              <Color PropertyName="color" blue="c0" green="c0" id="lightGray" palette="1" red="c0" type="palette"/>
-            </LineBorder>
-          </Border>
-        </Property>
-        <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-          <Dimension value="[245, 18]"/>
-        </Property>
-        <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-          <Dimension value="[245, 18]"/>
-        </Property>
-        <Property name="opaque" type="boolean" value="true"/>
-        <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-          <Dimension value="[245, 18]"/>
-        </Property>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="2" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="5" insetsLeft="5" insetsBottom="5" insetsRight="5" anchor="11" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JButton" name="openChatButt">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="open chat window"/>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="openChatButtActionPerformed"/>
-      </Events>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="3" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="5" insetsLeft="5" insetsBottom="5" insetsRight="5" anchor="11" weightX="0.0" weightY="1.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-  </SubComponents>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ChatSendPanel.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ChatSendPanel.java
deleted file mode 100644
index 48c56597a01c6941a87ea5d9f27c31b31e56e9e5..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ChatSendPanel.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements.gui;
-
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.ChatReceive;
-import edu.nps.moves.qrtda.elements.QRFlowLink;
-import java.awt.Dimension;
-import javax.swing.JPanel;
-
-/**
- * ChatSendPanel.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class ChatSendPanel extends JPanel
-{
-  private ChatWindow chatWin;
-  private final TdaEnvironment env;
-  private final QRFlowLink<?,?> qlink;
-  public ChatSendPanel(TdaEnvironment env, QRFlowLink<?,?>qlink)
-  {
-    this.env = env;
-    this.qlink = qlink;
-    initComponents();
-  }
-   
-  public void setPipeIndex(int idx)
-  {
-    jLabel1.setText(""+idx+" "+jLabel1.getText());
-  }
-
-  public void setBoundReceiver(ChatReceive rcvr)
-  {
-    Dimension d = rcvrLab.getPreferredSize();
-    rcvrLab.setText(rcvr.toString());
-    rcvrLab.setPreferredSize(d);
-    rcvrLab.setMaximumSize(d);
-    rcvrLab.setMinimumSize(d);
-  }
-  
-  public ChatWindow getChatWindow()
-  {
-    return chatWin;
-  }
-  
-  /**
-   * This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The content of this method is always
-   * regenerated by the Form Editor.
-   */
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-    java.awt.GridBagConstraints gridBagConstraints;
-
-    jLabel1 = new javax.swing.JLabel();
-    jLabel2 = new javax.swing.JLabel();
-    rcvrLab = new javax.swing.JLabel();
-    openChatButt = new javax.swing.JButton();
-
-    setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5));
-    setLayout(new java.awt.GridBagLayout());
-
-    jLabel1.setText("Chat Send");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 0;
-    gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
-    add(jLabel1, gridBagConstraints);
-
-    jLabel2.setText("Receiver binding: ");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
-    gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
-    add(jLabel2, gridBagConstraints);
-
-    rcvrLab.setBackground(java.awt.Color.white);
-    rcvrLab.setBorder(javax.swing.BorderFactory.createLineBorder(java.awt.Color.lightGray));
-    rcvrLab.setMaximumSize(new java.awt.Dimension(245, 18));
-    rcvrLab.setMinimumSize(new java.awt.Dimension(245, 18));
-    rcvrLab.setOpaque(true);
-    rcvrLab.setPreferredSize(new java.awt.Dimension(245, 18));
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 2;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
-    gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
-    add(rcvrLab, gridBagConstraints);
-
-    openChatButt.setText("open chat window");
-    openChatButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        openChatButtActionPerformed(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 3;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
-    gridBagConstraints.weighty = 1.0;
-    gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
-    add(openChatButt, gridBagConstraints);
-  }// </editor-fold>//GEN-END:initComponents
-
-  private void openChatButtActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_openChatButtActionPerformed
-  {//GEN-HEADEREND:event_openChatButtActionPerformed
-    if(chatWin == null)
-      chatWin = new ChatWindow(env,this.getTopLevelAncestor(),qlink);
-    chatWin.setVisible(true);
-  }//GEN-LAST:event_openChatButtActionPerformed
-
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  private javax.swing.JLabel jLabel1;
-  private javax.swing.JLabel jLabel2;
-  private javax.swing.JButton openChatButt;
-  private javax.swing.JLabel rcvrLab;
-  // End of variables declaration//GEN-END:variables
-
-  public void showReceivedText(String txt)
-  {
-    if(chatWin != null)
-      chatWin.receivedText(txt);  }
- }
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ChatWindow.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ChatWindow.java
deleted file mode 100755
index 3fb64196f66aa2f831e2658e78abf0ae848ea4d7..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ChatWindow.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
-Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
-in source and binary forms, with or without modification, are permitted provided that the
-following conditions are met:
-
-Redistributions of source code must retain the above copyright notice, this list of conditions
-and the following disclaimer. Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the documentation and/or other
-materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
-Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
-http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
-WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-package edu.nps.moves.qrtda.elements.gui;
-
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.QRFlowLink;
-import java.awt.Component;
-import javax.swing.JFrame;
-import javax.swing.SwingUtilities;
-
-/**
- * ChatWindow.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class ChatWindow extends JFrame
-{
-  ChatPanel pan;
-  public ChatWindow(TdaEnvironment env, Component parent, QRFlowLink<?,?> qlink)
-  {
-    super("QR Chat");
-    setContentPane(pan=new ChatPanel(env,qlink));
-    this.setLocationRelativeTo(parent);
-    this.setSize(800, 600);
-    
-  }
-  public void receivedText(final String s)
-  {
-    SwingUtilities.invokeLater(new MyRunner(s));    
-  }
-  
-  class MyRunner implements Runnable
-  {
-    String txt;
-    public MyRunner(String txt)
-    {
-      this.txt = txt;
-    }
-    @Override
-    public void run()
-    {
-      pan.receivedText(txt);
-    }
-  }
-  public void sentText(String s)
-  {
-    pan.sentText(s);
-  }
-
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/CompositeOpticalBasePanel.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/CompositeOpticalBasePanel.form
deleted file mode 100644
index 1d6ce58bf74532b30e399281377288169c3fb475..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/CompositeOpticalBasePanel.form
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,44,0,0,1,-112"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/CompositeOpticalBasePanel.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/CompositeOpticalBasePanel.java
deleted file mode 100644
index ecd11ae00ee4c6c066c05b026b357572329a338d..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/CompositeOpticalBasePanel.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.elements.gui;
-
-import static edu.nps.moves.qrtda.Constants.HIRES_TABLE_TEXT_FACTOR;
-import static edu.nps.moves.qrtda.Constants.HIRES_TABLE_TEXT_FACTOR_FLAGS_EXTRA;
-import edu.nps.moves.qrtda.morseArt.MorseArtAndSound;
-import edu.nps.moves.qrtda.semaphoreArt.LabeledComponent;
-import edu.nps.moves.qrtda.semaphoreArt.SemaphoreArt;
-import edu.nps.moves.qrtda.signalflagsArt.SignalFlagArt;
-import java.awt.*;
-import javax.swing.JComponent;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-
-/**
- * CompositeOpticalBasePanel.java created on Apr 13, 2017
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public abstract class CompositeOpticalBasePanel extends JPanel
-{
-  private Font letterFont;
-
-  public CompositeOpticalBasePanel()
-  {
-    initComponents();
-  }
-
-  protected void addSpacerComponent()
-  {
-    JLabel space = new JLabel();
-    GridBagConstraints con = new GridBagConstraints();
-    con.gridx = 200;
-    con.gridy = 200;
-    con.weightx = 1.0;
-    con.weighty = 1.0;
-    add(space,con);        
-  }
-  
-  abstract protected void reset();
-  abstract protected GridBagConstraints next();
-  abstract protected GridBagConstraints newRowCol();
-  
-  private String currentString;
-  private boolean currentAppend;
-  private int currentSize;
-  
-  public void displayContent(String s, boolean append, int size)
-  {
-    int adjustedTextSize = (int)((float)size * HIRES_TABLE_TEXT_FACTOR * HIRES_TABLE_TEXT_FACTOR_FLAGS_EXTRA);
-    float fontsize = adjustedTextSize * (float) (Toolkit.getDefaultToolkit().getScreenResolution()) / 125.0f; //72.0f;
-    letterFont = new JLabel().getFont().deriveFont(fontsize);
-    letterFont = letterFont.deriveFont(Font.BOLD);
-
-    //if (!append)
-      reset();//removeAll();
-    currentString = (append?currentString+s:s);
-    currentAppend = append;
-    currentSize = size;
-    
-    if (currentString.length() > 0) {
-      char[] cArr = currentString.toCharArray();
-
-      for (char c : cArr) {
-        if (Character.isSpaceChar(c)) {
-          JLabel lab = new JLabel();
-          lab.setPreferredSize(new Dimension(size, size));
-          add(lab, newRowCol()); //row 0
-          add(new JLabel(""), next()); //row 1
-          add(new JLabel(""), next()); //row 2
-          add(new JLabel(""), next()); //row 3
-        }
-        else {
-          JLabel lab = new JLabel(new String(new char[]{Character.toUpperCase(c)}));
-          lab.setPreferredSize(new Dimension(size, size));
-          lab.setFont(letterFont);
-          lab.setForeground(LabeledComponent.getContrastingColor(getBackground()));
-          lab.setHorizontalAlignment(JLabel.CENTER);
-          add(lab, newRowCol());  // row 0
-
-          JComponent comp = SignalFlagArt.getCharacter(c, size, false, getBackground()); // no wrap
-          if (comp == null)
-            comp = new JLabel("");
-          add(comp, next()); // row 1
-
-          comp = SemaphoreArt.getLetter(c, size, false, getBackground());  // no wrap
-          if (comp == null)
-            comp = new JLabel("");
-          add(comp, next()); //row 2
-
-          comp = MorseArtAndSound.getLetterCombined(c, 2 * size / 3, getBackground());
-          if (comp == null)
-            comp = new JLabel("");
-          add(comp, next()); //row3
-        }
-      }
-    }
-    revalidate();
-    repaint();
-  }
-
-  @Override
-  public void setBackground(Color bg)
-  {
-    super.setBackground(bg);
-    if(currentString != null)
-      displayContent(currentString,currentAppend,currentSize);
-    
-    Color myFg;
-    setForeground(myFg=calcTextColor(bg));
-    for(Component c : this.getComponents()) {
-      c.setBackground(bg);
-      c.setForeground(myFg);
-    }
-    
-  }
-  
-  public static Color calcTextColor(Color c)
-  {
-    return useBlack(c)?Color.black:Color.white;
-  }
-  
-  private static boolean useBlack(Color c)
-  {
-    double gamma = 2.2f;
-    double el = .02126f * Math.pow((double)c.getRed()/255.d, gamma)+
-                0.7152 * Math.pow((double)c.getGreen()/255.d, gamma) +
-                0.0722 * Math.pow((double)c.getBlue()/255.d, gamma);
-    return el > Math.pow(0.5,gamma);
-  }
- 
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-
-    setLayout(new java.awt.GridBagLayout());
-  }// </editor-fold>//GEN-END:initComponents
-
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  // End of variables declaration//GEN-END:variables
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/CompositeOpticalDisplay.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/CompositeOpticalDisplay.java
deleted file mode 100644
index 7a85eed3a90af84a9131b73074b121d3455638b2..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/CompositeOpticalDisplay.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements.gui;
-
-import edu.nps.moves.qrtda.elements.gui.OpticalCommsIO.Orientation;
-import java.awt.Color;
-
-/**
- * CompositeOpticalDisplay.java created on Apr 13, 2017 MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * We have 2 child panels. They are both always instantiated and each gets updates.
- * The switch happens on orientation change
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class CompositeOpticalDisplay implements OpticalCommsDisplay
-{
-  private CompositeOpticalVertical vertPan;
-  private CompositeOpticalHorizontal horizPan;
-
-  private OpticalCommsIO currentIO;
-
-  public CompositeOpticalDisplay()
-  {
-    vertPan = new CompositeOpticalVertical();
-    horizPan = new CompositeOpticalHorizontal();
-  }
-
-  //These are label screwy
-  @Override
-  public void activate(OpticalCommsIO io, OpticalCommsIO.Orientation hv)
-  {
-    currentIO = io;
-    if (hv == Orientation.HORIZONTAL) {
-      vertPan.activate(io,Orientation.VERTICAL); //, hv);horizPan.activate(io, Orientation.HORIZONTAL);
-    }
-    else {
-      horizPan.activate(io, Orientation.HORIZONTAL);//vertPan.activate(io, Orientation.VERTICAL);
-    }
-  }
-
-  @Override
-  public void display(String text, int size, boolean append)
-  {
-    vertPan.display(text, size, append);
-    horizPan.display(text, size, append);
-  }
-
-  @Override
-  public void setOrientation(OpticalCommsIO.Orientation hv)
-  {
-    if (hv == Orientation.HORIZONTAL)
-      vertPan.activate(currentIO, hv);//horizPan.activate(currentIO, hv);
-    else
-      horizPan.activate(currentIO, hv);//vertPan.activate(currentIO, hv);
-  }
-
-  @Override
-  public void setBackground(Color bg)
-  {
-    vertPan.setBackground(bg);
-    horizPan.setBackground(bg);
-  }
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/CompositeOpticalHorizontal.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/CompositeOpticalHorizontal.java
deleted file mode 100644
index 43260e50be9065143d19dca9e87e8042d69b797c..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/CompositeOpticalHorizontal.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.elements.gui;
-
-import edu.nps.moves.qrtda.elements.gui.OpticalCommsIO.Orientation;
-import java.awt.GridBagConstraints;
-import java.awt.Insets;
-
-/**
- * CompositeOpticalHorizontal.java created on Apr 13, 2017
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class CompositeOpticalHorizontal extends CompositeOpticalBasePanel implements OpticalCommsDisplay
-{
-  private OpticalCommsIO io;
-  private final GridBagConstraints constraints; 
-  private TextEntryPanel panel;
-  
-  public CompositeOpticalHorizontal()
-  {
-    constraints = new GridBagConstraints();
-    constraints.insets = new Insets(10,10,10,10);
-    reset();
-  }
-  
-  @Override
-  public void activate(OpticalCommsIO io, Orientation hv)
-  {
-    this.io = io;
-    io.setDisplayComponent(this);
-    io.setInputComponent(panel = new TextEntryPanel(io));
-  }
-  
-  @Override
-  public void setOrientation(Orientation orientation)
-  {
-    assert orientation == Orientation.HORIZONTAL;
-  }
- 
-  @Override
-  public void display(String text, int size, boolean append)
-  {
-    displayContent(text, append, size);
-    if(panel != null)
-      panel.setValue(text);
-  }
-
-  @Override
-  protected void reset()
-  {
-    removeAll();
-    revalidate();
-    addSpacerComponent();
-    constraints.gridx = -1;
-    constraints.gridy = -1;
-  }
-
-  @Override
-  protected GridBagConstraints next()
-  {
-    constraints.gridy++;
-    return constraints;
-  }
-
-  @Override
-  protected GridBagConstraints newRowCol()
-  {
-    constraints.gridy = 0;
-    constraints.gridx++;
-    return constraints;
-  }  
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/CompositeOpticalVertical.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/CompositeOpticalVertical.java
deleted file mode 100644
index 26597b6d8adbc39c4f808130c5820f2c041e87fe..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/CompositeOpticalVertical.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.elements.gui;
-
-import edu.nps.moves.qrtda.elements.gui.OpticalCommsIO.Orientation;
-import java.awt.GridBagConstraints;
-import java.awt.Insets;
-
-/**
- * CompositeOpticalVertical.java created on Apr 13, 2017
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class CompositeOpticalVertical extends CompositeOpticalBasePanel implements OpticalCommsDisplay
-{
-  private final GridBagConstraints constraints;
-  private OpticalCommsIO io;
-  private TextEntryPanel panel;
-  
-  public CompositeOpticalVertical()
-  {
-    constraints = new GridBagConstraints();   
-    constraints.insets = new Insets(10,10,10,10);
-    reset();    
-  }
-  
-  @Override
-  public void activate(OpticalCommsIO io, Orientation hv)
-  {
-    this.io = io;
-    io.setDisplayComponent(this);
-    io.setInputComponent(new TextEntryPanel(io));
-  }
-  
-  @Override
-  public void setOrientation(Orientation orientation)
-  {
-    assert orientation == Orientation.VERTICAL;
-  }
-  
-  @Override
-  public void display(String text, int size, boolean append)
-  {
-    displayContent(text, append, size);
-    if(panel != null)
-      panel.setValue(text);
-  }
-
-  @Override
-  protected void reset()
-  {
-    removeAll();
-    revalidate();
-    addSpacerComponent();
-    constraints.gridx = -1;
-    constraints.gridy = -1;
-  }
-
-  @Override
-  protected GridBagConstraints next()
-  {
-    constraints.gridx++;
-    return constraints;
-  }
-
-  @Override
-  protected GridBagConstraints newRowCol()
-  {
-    constraints.gridx = 0;
-    constraints.gridy++;
-    return constraints;
-  }
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/DecodeTableGridBag.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/DecodeTableGridBag.form
deleted file mode 100644
index 4e195eaeff520f62197e20c4732251eb76bae434..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/DecodeTableGridBag.form
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
-  <Properties>
-    <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-      <Border info="org.netbeans.modules.form.compat2.border.LineBorderInfo">
-        <LineBorder>
-          <Color PropertyName="color" blue="c0" green="c0" id="lightGray" palette="1" red="c0" type="palette"/>
-        </LineBorder>
-      </Border>
-    </Property>
-  </Properties>
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,44,0,0,1,-112"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBoxLayout">
-    <Property name="axis" type="int" value="1"/>
-  </Layout>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/DecodeTableGridBag.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/DecodeTableGridBag.java
deleted file mode 100644
index c5e6c9dd60c52c6ea366ad2bf6cbfc9b38c729e2..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/DecodeTableGridBag.java
+++ /dev/null
@@ -1,237 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.elements.gui;
-
-import edu.nps.moves.misc.TextObject;
-import edu.nps.moves.qrtda.QRPreferences;
-import static edu.nps.moves.qrtda.elements.gui.OpticalCommsConstants.SAILORVOLUME_KEY;
-import edu.nps.moves.qrtda.sound.SoundPlayer;
-import java.awt.*;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
-import javax.swing.*;
-
-/**
- * DecodeTableGridBag.java created on Apr 25, 2017
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class DecodeTableGridBag extends JPanel
-{
-  public static int ROWHEIGHT = 40;
-  public DecodeTableGridBag()
-  {
-    initComponents();
-  }
-
-  public void addDecodedRow(Decoded rowData)
-  {
-    JPanel pan = new JPanel(new GridBagLayout());
-    GridBagConstraints constr = new GridBagConstraints();
-    constr.insets=new Insets(3,3,3,3);
-    constr.fill = GridBagConstraints.BOTH;
-
-    pan.add(rowData.capture,constr);
-    pan.add(makeCharLabel(rowData.alpha),constr);
-    try{pan.add(makeLabel(rowData.flagsImage),constr);}catch(Throwable t){pan.add(new JLabel(t.getClass().getSimpleName()));}
-    try{pan.add(makeLabel(rowData.semaphoreImage), constr);}catch(Throwable t){pan.add(new JLabel(t.getClass().getSimpleName()));}
-    Dimension d = rowData.morseImage.getPreferredSize();
-    d.width=150;
-    rowData.morseImage.setPreferredSize(d);
-    applyCompoundBorder(rowData.morseImage);
-    pan.add(rowData.morseImage,constr);
-    buttonize(rowData.morseImage,rowData.alpha);
-    
-    if(rowData.meaning != null && rowData.meaning.length()>0) {
-      JLabel lab;
-      pan.add(lab=makeLabel(rowData.meaning),constr);
-      lab.setBorder(null);
-    }
-    pan.setAlignmentX(Component.LEFT_ALIGNMENT);
-    pan.setBorder(BorderFactory.createLineBorder(Color.lightGray));
-    setPanelSizes(pan);
-
-    add(pan);
-  }
-
-  private void setPanelSizes(JPanel pan)
-  {
-    int wd = Math.max(pan.getPreferredSize().width, pan.getMinimumSize().width);
-    int ht = Math.max(pan.getPreferredSize().height,pan.getMinimumSize().height);
-    Dimension d = new Dimension(wd,ht);
-    pan.setPreferredSize(d);
-    pan.setMinimumSize(d);
-    pan.setMaximumSize(d);
-  }
-
-  private void buttonize(JComponent comp, char c)
-  {
-    MorseSpeaker lis = new MorseSpeaker(c);
-    comp.addMouseListener(lis);
-    for(Component cm : comp.getComponents())
-      cm.addMouseListener(lis);
-    comp.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
-  }
-  
-  class MorseSpeaker extends MouseAdapter
-  {
-    char c;
-    public MorseSpeaker(char c)
-    {
-      this.c = c;
-    }
-    public void mouseClicked(MouseEvent e)
-    {
-      //info SoundPlayer.getVolumeSliderMinMax();
-      // this is until we put a volume slider in the gui
-      String vol = QRPreferences.getInstance().get(SAILORVOLUME_KEY,""+0);
-      QRPreferences.getInstance().put(SAILORVOLUME_KEY, "-20");
-      
-      SoundPlayer.playMorse(new char[]{c});
-      
-      // Have to restore it after a delay because the playing is asynchronous
-      javax.swing.Timer timer = new javax.swing.Timer(1000,ev->
-        QRPreferences.getInstance().put(SAILORVOLUME_KEY, vol));
-      timer.setRepeats(false);
-      timer.start();
-    }
-  }
-  private TalkingLabel makeTalkingLabel(char c)
-  {
-    return (TalkingLabel)_makeLabel(new TalkingLabel(c));
-  }
-  
-  private JLabel makeLabel()
-  {
-    return _makeLabel(new JLabel());
-  }
-  
-  private JLabel _makeLabel(JLabel lab)
-  {
-    Font f = lab.getFont();
-    lab.setFont(new Font(Font.MONOSPACED,Font.PLAIN,f.getSize()));
-    applyCompoundBorder(lab);
-    return lab;
-  }
-  
-  private void applyCompoundBorder(JComponent comp)
-  {
-    comp.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createLineBorder(Color.lightGray),
-                                                      BorderFactory.createEmptyBorder(3, 3, 3, 3)));
-  }
-  private JLabel makeLabel(String txt)
-  {
-    JLabel l = makeLabel();
-    l.setText(txt);
-    return l;
-  }
-  private JLabel makeCharLabel(Character c)
-  {
-    c = TextObject.convertToAscii(c);
-    c = Character.toUpperCase(c);
-    String s = "<html>&nbsp;" + c + "&nbsp;</html";
-    TalkingLabel lab = makeTalkingLabel(c);
-    lab.setText(s);
-    lab.setToolTipText(SoundPlayer.getPhoneticName(c));
-    lab.setFont(lab.getFont().deriveFont(Font.BOLD));
-    return lab;
-  }
-  private JLabel makeLabel(Icon ic)
-  {
-    JLabel l = makeLabel();
-    l.setIcon(ic);
-    return l;
-  }
-  
-  public static class Decoded
-  {
-    public JComponent capture;
-    public Character alpha;
-    public Icon flagsImage;
-    public Icon semaphoreImage;
-    public JComponent morseImage;
-    public String meaning;
-    
-    public Decoded(JComponent capture, Character alpha, Icon flagsImage, Icon semaphoreImage, JComponent morseImage, String meaning)
-    {
-      this.capture = capture;
-      this.alpha = alpha;
-      this.flagsImage = flagsImage;
-      this.semaphoreImage = semaphoreImage;
-      this.morseImage = morseImage;
-      this.meaning = meaning;
-    }
-    
-    public Object[] toArray()
-    {
-      Object[] oa = new Object[6];
-      oa[0]=capture;
-      oa[1]=alpha;
-      oa[2]=flagsImage;
-      oa[3]=semaphoreImage;
-      oa[4]=morseImage;
-      oa[5]=meaning;
-      return oa;
-    }
-  }
-  class TalkingLabel extends JLabel
-  {
-    char[] realchar = new char[]{' '};
-
-    public TalkingLabel(char c)
-    {
-      realchar[0] = c;
-      super.addMouseListener(mListener);
-    }
-
-    MouseAdapter mListener = new MouseAdapter()
-    {
-      @Override
-      public void mouseEntered(MouseEvent e)
-      {
-        SoundPlayer.playPhonetic(realchar);
-      }
-    };
-  }
-  
-  /** This method is called from within the constructor to
-   * initialize the form.
-   * WARNING: Do NOT modify this code. The content of this method is
-   * always regenerated by the Form Editor.
-   */
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-
-    setBorder(javax.swing.BorderFactory.createLineBorder(java.awt.Color.lightGray));
-    setLayout(new javax.swing.BoxLayout(this, javax.swing.BoxLayout.Y_AXIS));
-  }// </editor-fold>//GEN-END:initComponents
-
-
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  // End of variables declaration//GEN-END:variables
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/DirectoryWatcher.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/DirectoryWatcher.java
deleted file mode 100755
index cfbcf9ac8f0c1a6f87e0af8679e5992974019956..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/DirectoryWatcher.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements.gui;
-
-/**
- * DirectoryWatcher.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public interface DirectoryWatcher
-{
-  public void beginDirectoryWatch(String directoryPath);
-  public void killLoop();  
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/DuplicateRejectorPanel.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/DuplicateRejectorPanel.form
deleted file mode 100755
index 99bba089282cc8d4c48b702c56bd5414446cf07c..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/DuplicateRejectorPanel.form
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
-  <Properties>
-    <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-      <Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo">
-        <EmptyBorder bottom="5" left="5" right="5" top="5"/>
-      </Border>
-    </Property>
-  </Properties>
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,0,56,0,0,0,-115"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-  <SubComponents>
-    <Component class="javax.swing.JLabel" name="jLabel1">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="Duplicate Rejector"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="-1" gridY="-1" gridWidth="0" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="jLabel4">
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="2" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="1.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JButton" name="resetButt">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="reset"/>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="resetButtActionPerformed"/>
-      </Events>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-  </SubComponents>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/DuplicateRejectorPanel.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/DuplicateRejectorPanel.java
deleted file mode 100755
index 5dc9cdb95118cb78a6ef497993c4bab6b3cf4a48..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/DuplicateRejectorPanel.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements.gui;
-
-/**
- * DuplicateRejectorPanel.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class DuplicateRejectorPanel extends javax.swing.JPanel
-{
-  private ResetListener lis;
-  
-  public DuplicateRejectorPanel()
-  {
-    initComponents();
-  }
-    
-  public DuplicateRejectorPanel(ResetListener lis)
-  {
-    this();
-    this.lis = lis;
-    
-  }
-  
-  public void setPipeIndex(int idx)
-  {
-    // no index in name jLabel1.setText(""+idx+" "+jLabel1.getText());
-  }
-
-  /**
-   * This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The content of this method is always
-   * regenerated by the Form Editor.
-   */
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-    java.awt.GridBagConstraints gridBagConstraints;
-
-    jLabel1 = new javax.swing.JLabel();
-    jLabel4 = new javax.swing.JLabel();
-    resetButt = new javax.swing.JButton();
-
-    setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5));
-    setLayout(new java.awt.GridBagLayout());
-
-    jLabel1.setText("Duplicate Rejector");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    add(jLabel1, gridBagConstraints);
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 2;
-    gridBagConstraints.weighty = 1.0;
-    add(jLabel4, gridBagConstraints);
-
-    resetButt.setText("reset");
-    resetButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        resetButtActionPerformed(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 1;
-    add(resetButt, gridBagConstraints);
-  }// </editor-fold>//GEN-END:initComponents
-
-  private void resetButtActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_resetButtActionPerformed
-  {//GEN-HEADEREND:event_resetButtActionPerformed
-    if(lis != null)
-      lis.resetDuplicate();
-  }//GEN-LAST:event_resetButtActionPerformed
-
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  private javax.swing.JLabel jLabel1;
-  private javax.swing.JLabel jLabel4;
-  private javax.swing.JButton resetButt;
-  // End of variables declaration//GEN-END:variables
-
- }
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/EmptyGui.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/EmptyGui.form
deleted file mode 100755
index 7b331f104a6adb63a3a69f974fd1fb6af77b9c7a..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/EmptyGui.form
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,0,33,0,0,0,-45"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-  <SubComponents>
-    <Component class="javax.swing.JLabel" name="jLabel1">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="No options for this component"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="5" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="jLabel2">
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="1.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-  </SubComponents>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/EmptyGui.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/EmptyGui.java
deleted file mode 100755
index ade84058ee77751553d28c69640373a056f691eb..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/EmptyGui.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements.gui;
-
-/**
- * EmptyGui.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class EmptyGui extends javax.swing.JPanel
-{
-  public EmptyGui()
-  {
-    initComponents();
-  }
-
-  /**
-   * This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The content of this method is always
-   * regenerated by the Form Editor.
-   */
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-    java.awt.GridBagConstraints gridBagConstraints;
-
-    jLabel1 = new javax.swing.JLabel();
-    jLabel2 = new javax.swing.JLabel();
-
-    setLayout(new java.awt.GridBagLayout());
-
-    jLabel1.setText("No options for this component");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.insets = new java.awt.Insets(5, 0, 0, 0);
-    add(jLabel1, gridBagConstraints);
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.weighty = 1.0;
-    add(jLabel2, gridBagConstraints);
-  }// </editor-fold>//GEN-END:initComponents
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  private javax.swing.JLabel jLabel1;
-  private javax.swing.JLabel jLabel2;
-  // End of variables declaration//GEN-END:variables
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/FileChooserSourcePanel.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/FileChooserSourcePanel.form
deleted file mode 100755
index 96579193cd4592822870e328abb11a9dee368ed9..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/FileChooserSourcePanel.form
+++ /dev/null
@@ -1,58 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,0,58,0,0,1,50"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-  <SubComponents>
-    <Component class="javax.swing.JLabel" name="jLabel1">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="Selected path"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JTextField" name="jTextField1">
-      <Properties>
-        <Property name="columns" type="int" value="20"/>
-        <Property name="text" type="java.lang.String" value="jTextField1"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JCheckBox" name="jCheckBox1">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="Show chooser each time"/>
-        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-          <Border info="org.netbeans.modules.form.compat2.border.LineBorderInfo">
-            <LineBorder>
-              <Color PropertyName="color" blue="33" green="ff" red="33" type="rgb"/>
-            </LineBorder>
-          </Border>
-        </Property>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="1" gridWidth="2" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="11" weightX="1.0" weightY="1.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-  </SubComponents>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/FileChooserSourcePanel.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/FileChooserSourcePanel.java
deleted file mode 100755
index 4e5e1f5c4a240226cc3d0a6c01034354c7c70683..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/FileChooserSourcePanel.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements.gui;
-
-/**
- * FileChooserSourcePanel.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class FileChooserSourcePanel extends javax.swing.JPanel
-{
-  public FileChooserSourcePanel()
-  {
-    initComponents();
-  }
-
-  /**
-   * This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The content of this method is always
-   * regenerated by the Form Editor.
-   */
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-    java.awt.GridBagConstraints gridBagConstraints;
-
-    jLabel1 = new javax.swing.JLabel();
-    jTextField1 = new javax.swing.JTextField();
-    jCheckBox1 = new javax.swing.JCheckBox();
-
-    setLayout(new java.awt.GridBagLayout());
-
-    jLabel1.setText("Selected path");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
-    add(jLabel1, gridBagConstraints);
-
-    jTextField1.setColumns(20);
-    jTextField1.setText("jTextField1");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    add(jTextField1, gridBagConstraints);
-
-    jCheckBox1.setText("Show chooser each time");
-    jCheckBox1.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(51, 255, 51)));
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.gridwidth = 2;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
-    gridBagConstraints.weightx = 1.0;
-    gridBagConstraints.weighty = 1.0;
-    add(jCheckBox1, gridBagConstraints);
-  }// </editor-fold>//GEN-END:initComponents
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  private javax.swing.JCheckBox jCheckBox1;
-  private javax.swing.JLabel jLabel1;
-  private javax.swing.JTextField jTextField1;
-  // End of variables declaration//GEN-END:variables
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/FrameGrabber.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/FrameGrabber.java
deleted file mode 100644
index 3a45ce389d080406a89005d992f1bd61f28aca45..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/FrameGrabber.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements.gui;
-
-/**
- * FrameGrabber.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public interface FrameGrabber
-{
-  public void beginFrameGrab();
-  public void killLoop();  
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/HVOpticalBasePanel.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/HVOpticalBasePanel.form
deleted file mode 100644
index 1d6ce58bf74532b30e399281377288169c3fb475..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/HVOpticalBasePanel.form
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,44,0,0,1,-112"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/HVOpticalBasePanel.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/HVOpticalBasePanel.java
deleted file mode 100644
index 9e146c00c8625e67531e9303ee0b03efdf155f5e..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/HVOpticalBasePanel.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.elements.gui;
-
-import edu.nps.moves.misc.StringComponent;
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Dimension;
-import java.awt.Font;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import javax.swing.JComponent;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-
-/**
- * HVOpticalBasePanel.java created on Apr 13, 2017
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-abstract public class HVOpticalBasePanel extends JPanel implements OpticalCommsDisplay
-{
-  private final Method getArt;
-  private OpticalCommsIO io;
-  private TextEntryPanel panel;
-  public HVOpticalBasePanel(Method getArt)
-  {
-    initComponents();
-    this.getArt = getArt;
-  }
-
-  private StringComponent[] renderText(String s, int size)
-  {
-   try {
-      return (StringComponent[])getArt.invoke(null, s, size, getBackground());
-    }
-    catch(IllegalAccessException | IllegalArgumentException | InvocationTargetException t) {
-      throw new RuntimeException("Program error in HVOpticalBasePanel.renderText():"+t.getClass().getSimpleName()+" "+t.getLocalizedMessage());
-    }   
-  }
-  
-  @Override
-  public void activate(OpticalCommsIO io, OpticalCommsIO.Orientation hv)
-  {
-    this.io = io;
-    io.setDisplayComponent(this);
-    io.setInputComponent(new TextEntryPanel(io));
-  }
-
-  @Override
-  public void display(String text, int size, boolean append)
-  {
-    if (!append)
-      removeAll();
-    if (text != null && text.length() > 0) {
-      StringComponent[] cArr = renderText(text, size);
-      for (StringComponent sc : cArr) {
-        boolean newRow = true;
-        for (JComponent jc : sc.components) {
-          if (jc != null) {
-            if (newRow) {
-              addComponentNewRowOrColumn(jc);
-              newRow = false;
-            }
-            else
-              addComponent(jc);
-          }
-        }
-        String tt = sc.getToolTip();
-        if (tt != null && tt.length() > 0) {
-          JLabel lab = new JLabel("<html>" + tt + "</html>");
-          Font f = lab.getFont();
-          lab.setFont(f.deriveFont(f.getSize2D() - 2.f));
-          Dimension d = new Dimension(size, size);
-          lab.setPreferredSize(d);
-          addComponent(lab);
-        }
-      }
-    }
-    revalidate();
-    repaint();
-    if(panel != null)
-      panel.setValue(text);
-  }
-  
-  @Override
-  public void setBackground(Color bg)
-  {
-    super.setBackground(bg);
-    Color myFg;
-    setForeground(myFg=calcTextColor(bg));
-    for(Component c : this.getComponents()) {
-      c.setBackground(bg);
-      c.setForeground(myFg);
-    }
-  }
-  
-  public static Color calcTextColor(Color c)
-  {
-    return useBlack(c)?Color.black:Color.white;
-  }
-  
-  private static boolean useBlack(Color c)
-  {
-    double gamma = 2.2f;
-    double el = .02126f * Math.pow((double)c.getRed()/255.d, gamma)+
-                0.7152 * Math.pow((double)c.getGreen()/255.d, gamma) +
-                0.0722 * Math.pow((double)c.getBlue()/255.d, gamma);
-    return el > Math.pow(0.5,gamma);
-  }
-  
-  /** This method is called from within the constructor to
-   * initialize the form.
-   * WARNING: Do NOT modify this code. The content of this method is
-   * always regenerated by the Form Editor.
-   */
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-
-    setLayout(new java.awt.GridBagLayout());
-  }// </editor-fold>//GEN-END:initComponents
-
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  // End of variables declaration//GEN-END:variables
-
-  abstract public void addComponentNewRowOrColumn(JComponent comp);
-  abstract public void addComponent(JComponent comp);
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/HVOpticalMixedWidthBasePanel.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/HVOpticalMixedWidthBasePanel.form
deleted file mode 100644
index 9715bfb016e17983fb83574f4596b164aaa1c249..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/HVOpticalMixedWidthBasePanel.form
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,44,0,0,1,-112"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBoxLayout"/>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/HVOpticalMixedWidthBasePanel.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/HVOpticalMixedWidthBasePanel.java
deleted file mode 100644
index 4c18f3906e5468b494ffa1a6added535498fd36b..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/HVOpticalMixedWidthBasePanel.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.elements.gui;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import javax.swing.JComponent;
-import javax.swing.JPanel;
-
-/**
- * HVOpticalMixedWidthBasePanel.java created on Apr 17, 2017
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-abstract public class HVOpticalMixedWidthBasePanel extends JPanel implements OpticalCommsDisplay
-{
-  private final Method getArt;
-  private OpticalCommsIO io;
-  private TextEntryPanel panel;
-
-  public HVOpticalMixedWidthBasePanel(Method getArt)
-  {
-    this.getArt = getArt;
-    initComponents();
-  }
-    @Override
-  public void activate(OpticalCommsIO io, OpticalCommsIO.Orientation hv)
-  {
-    this.io = io;
-    io.setDisplayComponent(this);
-    io.setInputComponent(panel = new TextEntryPanel(io));
-  }
-
-
-  private JComponent[][] getComponentsForText(String s, int size)
-  {
-    try {
-      return (JComponent[][])getArt.invoke(null, s, size, getBackground());
-    }
-    catch(IllegalAccessException | IllegalArgumentException | InvocationTargetException t) {
-      throw new RuntimeException("Program error in HVOpticalBasePanel.getComponentsForText()");
-    }
-  }
-
-  @Override
-  public void display(String text, int size, boolean append)
-  {
-    if (!append)
-      removeAll();
-    else
-      if(this.getComponentCount() >0)
-        text = " "+text;
-
-    JComponent[][] jarr = getComponentsForText(text, size);
-
-    for (JComponent[] cArr : jarr) {
-      boolean newRow = true;
-      for (JComponent comp : cArr) {
-        if (comp != null) {
-          if (newRow) {
-            addComponentNewRowOrColumn(comp);
-            newRow = false;
-          }
-          else
-            addComponent(comp);
-        }
-      }
-    }
-    if(panel != null)
-      panel.setValue(text);
-    
-    revalidate();
-    repaint();
-  }
-
-  abstract public void addComponentNewRowOrColumn(JComponent comp);
-  abstract public void addComponent(JComponent comp);
-
-  /** This method is called from within the constructor to
-   * initialize the form.
-   * WARNING: Do NOT modify this code. The content of this method is
-   * always regenerated by the Form Editor.
-   */
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-
-    setLayout(new javax.swing.BoxLayout(this, javax.swing.BoxLayout.LINE_AXIS));
-  }// </editor-fold>//GEN-END:initComponents
-
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  // End of variables declaration//GEN-END:variables
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/HorizontalGridOptical.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/HorizontalGridOptical.java
deleted file mode 100644
index 4bef26a516ef495e12db14917e5c036631dd3293..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/HorizontalGridOptical.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.elements.gui;
-
-import edu.nps.moves.qrtda.elements.gui.OpticalCommsIO.Orientation;
-import java.awt.Dimension;
-import java.awt.GridBagConstraints;
-import java.awt.Insets;
-import java.lang.reflect.Method;
-import javax.swing.Box;
-import javax.swing.JComponent;
-
-/**
- * HorizontalGridOptical.java created on Apr 13, 2017
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class HorizontalGridOptical extends HVOpticalBasePanel
-{
-  private int column = 0, row = -1;
-  private final GridBagConstraints constraints = new GridBagConstraints();
-  private OpticalCommsIO io;
-  
-  public HorizontalGridOptical(Method artGetter)
-  {
-    super(artGetter);
-    constraints.insets = new Insets(8,8,8,8); //3,3,3,3);
-  }
-  
-  @Override
-  public void addComponentNewRowOrColumn(JComponent comp)
-  {
-    row++;
-    column = 0;
-    addComponent(comp);
-  }
-
-  @Override
-  public void addComponent(JComponent comp)
-  {
-    checkAligner();
-    if(row == -1)
-      row = 0;
-    constraints.gridx = column++;
-    constraints.gridy = row;
-    add(comp,constraints);    
-  }
-  
-  private void checkAligner()
-  {
-   // put a dummy component way out on right bottom to take up space
-    GridBagConstraints cons = new GridBagConstraints();
-    cons.gridy = 100;
-    cons.gridx = 100;
-    cons.weightx = 1.0;
-    cons.weighty = 1.0;
-    add(Box.createRigidArea(new Dimension(5,5)),cons);    
-  }
-
-  @Override
-  public void setOrientation(Orientation orientation)
-  {
-    assert orientation == Orientation.HORIZONTAL;
-  }
-
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/HorizontalMixedOptical.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/HorizontalMixedOptical.java
deleted file mode 100644
index e7b02200be0231ea4de27f7fbaffad5beaaaa87f..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/HorizontalMixedOptical.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements.gui;
-
-import java.awt.Component;
-import java.awt.Dimension;
-import java.lang.reflect.Method;
-import javax.swing.Box;
-import javax.swing.BoxLayout;
-import javax.swing.JComponent;
-import javax.swing.JPanel;
-
-/**
- * HorizontalMixedOptical.java created on Apr 17, 2017 MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class HorizontalMixedOptical extends HVOpticalMixedWidthBasePanel
-{
-  public HorizontalMixedOptical(Method getArt)
-  {
-    super(getArt);
-    super.setLayout(new BoxLayout(this,BoxLayout.PAGE_AXIS));
-  }
-
-  private JPanel currentRowCol = null;
-
-  @Override
-  public void addComponentNewRowOrColumn(JComponent comp)
-  {
-    add(Box.createRigidArea(new Dimension(10, 10)));
-
-    currentRowCol = new JPanel();
-    currentRowCol.setOpaque(false);
-    currentRowCol.setLayout(new BoxLayout(currentRowCol, BoxLayout.LINE_AXIS));
-    currentRowCol.add(comp);
-    currentRowCol.add(Box.createRigidArea(new Dimension(10, 10)));
-
-    currentRowCol.setAlignmentX(Component.LEFT_ALIGNMENT);
-    currentRowCol.setAlignmentY(Component.TOP_ALIGNMENT);
-    add(currentRowCol);
-  }
-
-  @Override
-  public void addComponent(JComponent comp)
-  {
-    if (currentRowCol == null)
-      addComponentNewRowOrColumn(comp);
-    else {
-      currentRowCol.add(comp);
-    }
-  }
-
-  @Override
-  public void setOrientation(OpticalCommsIO.Orientation orientation)
-  {
-    assert orientation == OpticalCommsIO.Orientation.HORIZONTAL;
-  }
-
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ImageProjectorPanel.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ImageProjectorPanel.form
deleted file mode 100644
index eb82efd74d0f94ecfd76683d8ae565400703ccc4..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ImageProjectorPanel.form
+++ /dev/null
@@ -1,110 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,0,-80,0,0,1,19"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-  <SubComponents>
-    <Component class="javax.swing.JLabel" name="jLabel1">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="Image Projector"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="0" gridWidth="2" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="5" insetsLeft="5" insetsBottom="5" insetsRight="5" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JButton" name="openWinButt">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="open image window"/>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="openWinButtActionPerformed"/>
-      </Events>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="4" gridWidth="2" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="25" insetsLeft="5" insetsBottom="5" insetsRight="5" anchor="11" weightX="0.0" weightY="1.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JCheckBox" name="check">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="full-screen, external display"/>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="checkActionPerformed"/>
-      </Events>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="1" gridWidth="2" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="idLab">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="ID"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="2" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="13" weightX="0.5" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JComboBox" name="displayCombo">
-      <Properties>
-        <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
-          <StringArray count="4">
-            <StringItem index="0" value="Item 1"/>
-            <StringItem index="1" value="Item 2"/>
-            <StringItem index="2" value="Item 3"/>
-            <StringItem index="3" value="Item 4"/>
-          </StringArray>
-        </Property>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="displayComboActionPerformed"/>
-      </Events>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="1" gridY="2" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="0.5" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="deviceInfoLab">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="jLabel2"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="3" gridWidth="2" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JButton" name="closeButt">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="close image window"/>
-        <Property name="enabled" type="boolean" value="false"/>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="closeButtActionPerformed"/>
-      </Events>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="5" gridWidth="2" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-  </SubComponents>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ImageProjectorPanel.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ImageProjectorPanel.java
deleted file mode 100644
index 2ba649471a4fd314320ee96b4660e72e4cbb8a98..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ImageProjectorPanel.java
+++ /dev/null
@@ -1,379 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements.gui;
-
-import edu.nps.moves.misc.StretchIcon;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.misc.NameDefault;
-import edu.nps.moves.qrtda.elements.misc.QrtdaParameter;
-import java.awt.*;
-import java.awt.event.ComponentAdapter;
-import java.awt.event.ComponentEvent;
-import java.awt.event.WindowAdapter;
-import java.awt.event.WindowEvent;
-import java.awt.image.BufferedImage;
-import javax.swing.*;
-
-/**
- * ImageProjectorPanel.java created on May 14, 2015 MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class ImageProjectorPanel extends JPanel
-{
-  private static final long serialVersionUID = 8762507909012034383L;
-
-  private ImageProjectorWin proj;
-  private boolean initting = false;
-  private final TdaEnvironment env;
-
-  public final static String DISPLAYEXTERNALACTIVEOPTION = "externaldisplayactive";
-  public final static String EXTERNALDISPLAYIDOPTION     = "externaldisplayid";
-  @QrtdaParameter public final static NameDefault extActigve = new NameDefault(DISPLAYEXTERNALACTIVEOPTION, "external display active", false,  Boolean.class, "true/false");
-  @QrtdaParameter public final static NameDefault displayid  = new NameDefault(EXTERNALDISPLAYIDOPTION, "external display ID", 1,  Number.class, "externdisplayid");
-
-  public ImageProjectorPanel(TdaEnvironment env)
-  {
-    this.env = env;
-    initting = true;
-    initComponents();
-
-    fillCombo();
-    GraphicsDevice[] devs = GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices();
-    if (devs.length <= 1) {
-      setAllEnabled(false);
-      check.setSelected(false);
-      check.setEnabled(false);
-    }
-    else {
-      fillCombo();
-      boolean active = Boolean.parseBoolean(env.getOptionValue(DISPLAYEXTERNALACTIVEOPTION));
-      check.setSelected(active);
-      setAllEnabled(active);
-    }
-    initting = false;
-
-    openWinButt.doClick();  // open by default
-  }
-
-  public void setPipeIndex(int idx)
-  {
-    jLabel1.setText("" + idx + " " + jLabel1.getText());
-  }
-
-  private void fillCombo()
-  {
-    String displayPreference = env.getOptionValue(EXTERNALDISPLAYIDOPTION);
-
-    GraphicsDevice[] devs = GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices();
-    gDev[] gdevs = new gDev[devs.length];
-    gDev sel = null;
-    for (int i = 0; i < devs.length; i++) {
-      gdevs[i] = new gDev(devs[i]);
-      if (gdevs[i].toString().equals(displayPreference))
-        sel = gdevs[i];
-    }
-    displayCombo.setModel(new DefaultComboBoxModel(gdevs));
-    if (sel != null) {
-      displayCombo.setSelectedItem(sel);
-      deviceInfoLab.setText(sel.description());
-    }
-    else {
-      displayCombo.setSelectedItem(gdevs[0]);
-      env.setOptionValue(EXTERNALDISPLAYIDOPTION, gdevs[0].toString()); //QROptions.displayExternalId.setValue(gdevs[0].toString());
-      deviceInfoLab.setText(gdevs[0].description());
-    }
-  }
-
-  public void setImage(BufferedImage img)
-  {
-    if (proj != null)
-      proj.setImage(img);
-  }
-
-  class gDev
-  {
-
-    public GraphicsDevice device;
-    private final String name;
-    private final String description;
-
-    public gDev(GraphicsDevice device)
-    {
-      this.device = device;
-      Rectangle bounds = device.getDefaultConfiguration().getBounds();
-      name = device.getIDstring();
-      description = "" + bounds.width + "x" + bounds.height + " at (" + bounds.x + "," + bounds.y + ")";
-    }
-
-    @Override
-    public String toString()
-    {
-      return name;
-    }
-
-    public String description()
-    {
-      return description;
-    }
-  }
-
-  private void setAllEnabled(boolean wh)
-  {
-    deviceInfoLab.setEnabled(wh);
-    displayCombo.setEnabled(wh);
-    idLab.setEnabled(wh);
-    //openWinButt.setEnabled(wh);
-  }
-
-  private GraphicsConfiguration getMyGraphicsConfiguration()
-  {
-    if (displayCombo.isEnabled()) {
-      GraphicsDevice grDev = ((gDev) displayCombo.getSelectedItem()).device;
-      return grDev.getDefaultConfiguration();
-    }
-    return GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration();
-  }
-
-  public class ImageProjectorWin extends JFrame
-  {
-    private static final long serialVersionUID = 1L;
-
-    BufferedImage img;
-    JLabel imgLab;
-    boolean full;
-    public ImageProjectorWin(Window win, GraphicsConfiguration conf, boolean full)
-    {
-      super(conf);
-      super.setTitle("Image Projector");
-      JFrame.setDefaultLookAndFeelDecorated(false);
-      this.full = full;
-      Rectangle bounds = conf.getBounds();
-      super.setLocation(bounds.x, bounds.y);
-      super.getContentPane().setBackground(Color.black);
-      if (full) {
-        super.setUndecorated(true);
-        super.setExtendedState(JFrame.MAXIMIZED_BOTH);
-      }
-      else
-        super.setSize(600, 600);
-
-      super.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
-      super.addWindowListener(new WindowAdapter()
-      {
-        @Override
-        public void windowClosing(WindowEvent e)
-        {
-          openWinButt.setEnabled(true);
-          closeButt.setEnabled(false);
-        }
-      });
-      // Want to adjust image on frame resize
-      super.addComponentListener(new ComponentAdapter()
-      {
-        @Override
-        public void componentResized(ComponentEvent e)
-        {
-          if (img != null)
-            setImage(img);
-        }
-      });
-    }
-    
-    public void setImage(BufferedImage img)
-    {
-      this.img = img;
-      Container cont = getContentPane();
-      cont.removeAll();
-
-      if (imgLab != null)
-        cont.remove(imgLab);
-      imgLab = new JLabel(new StretchIcon(img)); //ImageIcon(img));
-      cont.add(imgLab, BorderLayout.CENTER);
-      cont.doLayout();
-      /* don't resize window; user must control QR size with QR generator element
-      Dimension iDim = new Dimension(img.getWidth(), img.getHeight());
-      if (iDim.width > getWidth() || iDim.height > getHeight())
-        this.setSize(iDim);
-      */
-      /*
-        13 Mar 17, That's an old comment.  I now use StretchIcon (Darryl Burke) to automatically fill the window with the image.
-        Pixelization doesn't seem to be a problem with QR's, so the size set in the QR generator becomes minimally
-        important.
-      */
-    }
-  }
-
-  /**
-   * This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The content of this method is always regenerated by the Form Editor.
-   */
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-    java.awt.GridBagConstraints gridBagConstraints;
-
-    jLabel1 = new javax.swing.JLabel();
-    openWinButt = new javax.swing.JButton();
-    check = new javax.swing.JCheckBox();
-    idLab = new javax.swing.JLabel();
-    displayCombo = new javax.swing.JComboBox();
-    deviceInfoLab = new javax.swing.JLabel();
-    closeButt = new javax.swing.JButton();
-
-    setLayout(new java.awt.GridBagLayout());
-
-    jLabel1.setText("Image Projector");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 0;
-    gridBagConstraints.gridwidth = 2;
-    gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
-    add(jLabel1, gridBagConstraints);
-
-    openWinButt.setText("open image window");
-    openWinButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        openWinButtActionPerformed(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 4;
-    gridBagConstraints.gridwidth = 2;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
-    gridBagConstraints.weighty = 1.0;
-    gridBagConstraints.insets = new java.awt.Insets(25, 5, 5, 5);
-    add(openWinButt, gridBagConstraints);
-
-    check.setText("full-screen, external display");
-    check.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        checkActionPerformed(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.gridwidth = 2;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
-    add(check, gridBagConstraints);
-
-    idLab.setText("ID");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 2;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
-    gridBagConstraints.weightx = 0.5;
-    add(idLab, gridBagConstraints);
-
-    displayCombo.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
-    displayCombo.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        displayComboActionPerformed(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 1;
-    gridBagConstraints.gridy = 2;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
-    gridBagConstraints.weightx = 0.5;
-    add(displayCombo, gridBagConstraints);
-
-    deviceInfoLab.setText("jLabel2");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 3;
-    gridBagConstraints.gridwidth = 2;
-    add(deviceInfoLab, gridBagConstraints);
-
-    closeButt.setText("close image window");
-    closeButt.setEnabled(false);
-    closeButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        closeButtActionPerformed(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 5;
-    gridBagConstraints.gridwidth = 2;
-    add(closeButt, gridBagConstraints);
-  }// </editor-fold>//GEN-END:initComponents
-
-  private void openWinButtActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_openWinButtActionPerformed
-  {//GEN-HEADEREND:event_openWinButtActionPerformed
-   // if (proj == null) {
-      proj = new ImageProjectorWin((Window) this.getTopLevelAncestor(), getMyGraphicsConfiguration(), check.isSelected() && check.isEnabled());
-   // }
-    proj.setVisible(true);
-    
-    openWinButt.setEnabled(false);
-    closeButt.setEnabled(true);
-  }//GEN-LAST:event_openWinButtActionPerformed
-
-  private void displayComboActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_displayComboActionPerformed
-  {//GEN-HEADEREND:event_displayComboActionPerformed
-    if (initting)
-      return;
-
-    gDev gd = (gDev) displayCombo.getSelectedItem();
-    env.setOptionValue(EXTERNALDISPLAYIDOPTION,gd.toString());
-    deviceInfoLab.setText(gd.description());
-  }//GEN-LAST:event_displayComboActionPerformed
-
-  private void checkActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_checkActionPerformed
-  {//GEN-HEADEREND:event_checkActionPerformed
-    boolean yn = check.isSelected();
-    setAllEnabled(yn);
-    env.setOptionValue(DISPLAYEXTERNALACTIVEOPTION, Boolean.toString(yn));
-    proj = null; // for reload
-  }//GEN-LAST:event_checkActionPerformed
-
-  private void closeButtActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_closeButtActionPerformed
-  {//GEN-HEADEREND:event_closeButtActionPerformed
-    if (proj != null)
-      proj.setVisible(false);
-    closeButt.setEnabled(false);
-    openWinButt.setEnabled(true);
-  }//GEN-LAST:event_closeButtActionPerformed
-
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  private javax.swing.JCheckBox check;
-  private javax.swing.JButton closeButt;
-  private javax.swing.JLabel deviceInfoLab;
-  private javax.swing.JComboBox displayCombo;
-  private javax.swing.JLabel idLab;
-  private javax.swing.JLabel jLabel1;
-  private javax.swing.JButton openWinButt;
-  // End of variables declaration//GEN-END:variables
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/InstallRunScriptsDialog.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/InstallRunScriptsDialog.form
deleted file mode 100644
index 0d4112f1626569bd88a8cfa6af8586ec81936791..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/InstallRunScriptsDialog.form
+++ /dev/null
@@ -1,90 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
-  <Properties>
-    <Property name="defaultCloseOperation" type="int" value="2"/>
-  </Properties>
-  <SyntheticProperties>
-    <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
-    <SyntheticProperty name="generateCenter" type="boolean" value="false"/>
-  </SyntheticProperties>
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,33,0,0,1,65"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-  <SubComponents>
-    <Component class="javax.swing.JLabel" name="jLabel1">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="&lt;html&gt;&lt;p&gt;Choose &quot;Continue&quot; to install execution scripts.  You will be prompted for a location in which to install scripts to execute this code base in its different forms, such as &quot;QR Chat&quot;, &quot;Optical Comms Decode&quot;, etc.  After installation, you must move the distributed jar file into the same location for the scripts to work.&lt;/p&gt;&lt;br/&gt;&#xa;&lt;p&gt;&#xa;Once installed, you may make shortcuts or aliases to the script files if you wish and put the aliases in any separate, convenient location.&lt;/p&gt;&lt;/html&gt;"/>
-        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-          <Border info="org.netbeans.modules.form.compat2.border.CompoundBorderInfo">
-            <CompoundBorder>
-              <Border PropertyName="outside" info="org.netbeans.modules.form.compat2.border.LineBorderInfo">
-                <LineBorder>
-                  <Color PropertyName="color" blue="c0" green="c0" id="lightGray" palette="1" red="c0" type="palette"/>
-                </LineBorder>
-              </Border>
-              <Border PropertyName="inside" info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo">
-                <EmptyBorder bottom="5" left="5" right="5" top="5"/>
-              </Border>
-            </CompoundBorder>
-          </Border>
-        </Property>
-        <Property name="verifyInputWhenFocusTarget" type="boolean" value="false"/>
-        <Property name="verticalTextPosition" type="int" value="1"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="15" insetsLeft="15" insetsBottom="15" insetsRight="15" anchor="11" weightX="1.0" weightY="1.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Container class="javax.swing.JPanel" name="buttonPan">
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="15" insetsRight="15" anchor="13" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-
-      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-      <SubComponents>
-        <Component class="javax.swing.JButton" name="cancelButt">
-          <Properties>
-            <Property name="text" type="java.lang.String" value="Cancel"/>
-          </Properties>
-          <Events>
-            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="cancelButtActionPerformed"/>
-          </Events>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="13" weightX="1.0" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-        <Component class="javax.swing.JButton" name="continueButt">
-          <Properties>
-            <Property name="text" type="java.lang.String" value="Continue"/>
-          </Properties>
-          <Events>
-            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="continueButtActionPerformed"/>
-          </Events>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-      </SubComponents>
-    </Container>
-  </SubComponents>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/InstallRunScriptsDialog.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/InstallRunScriptsDialog.java
deleted file mode 100644
index 06dd3dfa2e4203d9931483fa07250399022f06c5..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/InstallRunScriptsDialog.java
+++ /dev/null
@@ -1,259 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.elements.gui;
-
-import edu.nps.moves.qrtda.Constants;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.misc.QRAvailableElements;
-import edu.nps.moves.qrtda.elements.misc.QRAvailableElements.PathAndStream;
-import java.awt.Dimension;
-import java.awt.Frame;
-import java.io.File;
-import java.io.IOException;
-import java.net.URL;
-import java.nio.file.FileAlreadyExistsException;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.StandardCopyOption;
-import java.nio.file.attribute.PosixFilePermission;
-import java.util.List;
-import java.util.Set;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import javax.swing.JDialog;
-import javax.swing.JFileChooser;
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.lang.SystemUtils;
-/**
- * InstallRunScriptsDialog.java created on May 1, 2017
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class InstallRunScriptsDialog extends JDialog
-{
-  public InstallRunScriptsDialog(Frame parent, boolean modal)
-  {
-    super(parent, modal);
-    initComponents();
-  }
-
-  public static void display(Frame frame, boolean modal)
-  {
-    InstallRunScriptsDialog dial = new InstallRunScriptsDialog(frame,modal);
-    dial.setSize(new Dimension(330,315));
-    dial.setLocationRelativeTo(null);
-    dial.setVisible(true);
-  }
-  
-  private void continueOn()
-  {
-    JFileChooser fc = new JFileChooser();
-    fc.setMultiSelectionEnabled(false);
-    fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
-    
-    int ret = fc.showOpenDialog(this);
-    if(ret == JFileChooser.APPROVE_OPTION) {
-      File f = fc.getSelectedFile();
-      buildLinks(f);
-    }  
-  }
-  
-  /*
-    Was going to make links, but now just copy
-  */
-  private void buildLinks(File linksDir)
-  {
-    File scriptsworkspace = new File(TdaEnvironment.workspace,Constants.WORKSPACE_SCRIPTS_DIR_NAME);
-   // List<Path>scriptsList = QRAvailableElements.packageContents(Constants.SCRIPTS_PACKAGE);
-    List<PathAndStream>scriptsList = QRAvailableElements.packageContents(Constants.SCRIPTS_PACKAGE);
-    if(SystemUtils.IS_OS_WINDOWS)
-      buildLinks(".bat",linksDir,scriptsworkspace,scriptsList);
-    else if(SystemUtils.IS_OS_MAC_OSX)
-      buildLinks(".command",linksDir,scriptsworkspace,scriptsList);
-    else
-      buildLinks(".sh",linksDir,scriptsworkspace,scriptsList);
-    
-    maybeCopyJar(linksDir);
-  }
- 
-  private void buildLinks(String filetype, File linksDir, File scriptsWorkspace, List<PathAndStream> scriptsList)
-  {
-      scriptsList.forEach((script) -> {
-      String name = script.p.getName(script.p.getNameCount()-1).toString();
-      if (name.toLowerCase().endsWith(filetype)) {
-        Path link = new File(linksDir,name).toPath();
-        Path orig = new File(scriptsWorkspace,name).toPath();
-        try {
-          Files.copy(orig, link, StandardCopyOption.REPLACE_EXISTING);
-          addExecPermissions(link);
-          //Files.createSymbolicLink(...link, script, attrs)
-        }
-        catch(IOException ex) {
-          if(!(ex instanceof FileAlreadyExistsException) ) {
-            System.out.println("InstallRunScriptsDialog.Links() exception : "+ex.getLocalizedMessage());
-          }
-        }
-      }
-    });    
-  }
-  
-  private void addExecPermissions(Path p)
-  {
-    try {
-      Set<PosixFilePermission> perms = Files.getPosixFilePermissions(p);
-      perms.add(PosixFilePermission.OWNER_EXECUTE);
-      perms.add(PosixFilePermission.GROUP_EXECUTE);
-      perms.add(PosixFilePermission.OTHERS_EXECUTE);
-      Files.setPosixFilePermissions(p, perms);
-    }
-    catch (UnsupportedOperationException uex) {
-      // Normal case for windows
-    }
-    catch (IOException ex) {
-      System.out.println("Could not set execute permission on "+p.toString());
-    }
-  }
-  public final String JAR_PATTERN = ".*file:(.*)\\.jar.*";
-
-  private void maybeCopyJar(File linksDir)
-  {
-    // Find our jar file
-    String classnm = getClass().getPackage().getName().replace('.', '/');
-    URL maybeJarUrl = getClass().getClassLoader().getResource(classnm);
-    String jarStr = maybeJarUrl.toExternalForm();
-    
-    boolean fromJar = jarStr.matches(JAR_PATTERN);
-    if (fromJar) {
-      Pattern pattern = Pattern.compile(JAR_PATTERN);
-      Matcher matcher = pattern.matcher(jarStr);
-      while (matcher.find()) {
-        int count = matcher.groupCount();
-        if (count > 0) {
-          copyJarToLinksDir(linksDir,matcher.group(1) + ".jar");
-          return;
-        }
-      }
-    }
-  }
-  
-  private void copyJarToLinksDir(File linksDir, String filename)
-  {
-    try {
-      File src = new File(filename);
-      File dest = new File(linksDir,src.getName());
-      FileUtils.copyFile(src, dest, true);
-      addExecPermissions(dest.toPath());
-    }
-    catch(IOException ex) {
-      System.out.println("Jar file not copied: "+ex.getLocalizedMessage());
-    }
-  }
-  
-  /** This method is called from within the constructor to
-   * initialize the form.
-   * WARNING: Do NOT modify this code. The content of this method is
-   * always regenerated by the Form Editor.
-   */
-   
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-    java.awt.GridBagConstraints gridBagConstraints;
-
-    jLabel1 = new javax.swing.JLabel();
-    buttonPan = new javax.swing.JPanel();
-    cancelButt = new javax.swing.JButton();
-    continueButt = new javax.swing.JButton();
-
-    setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
-    getContentPane().setLayout(new java.awt.GridBagLayout());
-
-    jLabel1.setText("<html><p>Choose \"Continue\" to install execution scripts.  You will be prompted for a location in which to install scripts to execute this code base in its different forms, such as \"QR Chat\", \"Optical Comms Decode\", etc.  After installation, you must move the distributed jar file into the same location for the scripts to work.</p><br/>\n<p>\nOnce installed, you may make shortcuts or aliases to the script files if you wish and put the aliases in any separate, convenient location.</p></html>");
-    jLabel1.setBorder(javax.swing.BorderFactory.createCompoundBorder(javax.swing.BorderFactory.createLineBorder(java.awt.Color.lightGray), javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5)));
-    jLabel1.setVerifyInputWhenFocusTarget(false);
-    jLabel1.setVerticalTextPosition(javax.swing.SwingConstants.TOP);
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
-    gridBagConstraints.weightx = 1.0;
-    gridBagConstraints.weighty = 1.0;
-    gridBagConstraints.insets = new java.awt.Insets(15, 15, 15, 15);
-    getContentPane().add(jLabel1, gridBagConstraints);
-
-    buttonPan.setLayout(new java.awt.GridBagLayout());
-
-    cancelButt.setText("Cancel");
-    cancelButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        cancelButtActionPerformed(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
-    gridBagConstraints.weightx = 1.0;
-    buttonPan.add(cancelButt, gridBagConstraints);
-
-    continueButt.setText("Continue");
-    continueButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        continueButtActionPerformed(evt);
-      }
-    });
-    buttonPan.add(continueButt, new java.awt.GridBagConstraints());
-
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
-    gridBagConstraints.insets = new java.awt.Insets(0, 0, 15, 15);
-    getContentPane().add(buttonPan, gridBagConstraints);
-
-    pack();
-  }// </editor-fold>//GEN-END:initComponents
-
-  private void cancelButtActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_cancelButtActionPerformed
-  {//GEN-HEADEREND:event_cancelButtActionPerformed
-    setVisible(false);
-  }//GEN-LAST:event_cancelButtActionPerformed
-
-  private void continueButtActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_continueButtActionPerformed
-  {//GEN-HEADEREND:event_continueButtActionPerformed
-    setVisible(false);
-    continueOn();
-  }//GEN-LAST:event_continueButtActionPerformed
-
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  private javax.swing.JPanel buttonPan;
-  private javax.swing.JButton cancelButt;
-  private javax.swing.JButton continueButt;
-  private javax.swing.JLabel jLabel1;
-  // End of variables declaration//GEN-END:variables
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/JmDnsQRReceiverPanel3.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/JmDnsQRReceiverPanel3.form
deleted file mode 100755
index 0a55b5934fb49356545aa1c498f7589869946dd8..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/JmDnsQRReceiverPanel3.form
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,0,97,0,0,1,23"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-  <SubComponents>
-    <Component class="javax.swing.JLabel" name="titleLabel">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="Jmdns QR Encoded File Receiver"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JSeparator" name="jSeparator1">
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="1" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="sp">
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="7" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="1.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JCheckBox" name="advertiseCB">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="Advertise QR image receiver"/>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="advertiseCBClicked"/>
-      </Events>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="2" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JCheckBox" name="enableCB">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="Enable QR image receiving"/>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="enableCBClick"/>
-      </Events>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="3" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-  </SubComponents>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/JmDnsQRReceiverPanel3.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/JmDnsQRReceiverPanel3.java
deleted file mode 100755
index 9578bb54683c712796cecd713de34ebf77199acc..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/JmDnsQRReceiverPanel3.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements.gui;
-
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.JmDnsQRReceiver3;
-
-/**
- * JmDnsQRReceiverPanel3.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class JmDnsQRReceiverPanel3 extends javax.swing.JPanel
-{
-  private final TdaEnvironment env;
-  private final JmDnsQRReceiver3 mother;
-  
-  public JmDnsQRReceiverPanel3(TdaEnvironment env, JmDnsQRReceiver3 receiver)
-  {
-    this.env = env;
-    mother = receiver;
-    initComponents();
-  }
-  
-  public boolean isReceivingEnabled()
-  {
-    return enableCB.isSelected();
-  }
-     
-  /**
-   * This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The content of this method is always
-   * regenerated by the Form Editor.
-   */
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-    java.awt.GridBagConstraints gridBagConstraints;
-
-    titleLabel = new javax.swing.JLabel();
-    jSeparator1 = new javax.swing.JSeparator();
-    sp = new javax.swing.JLabel();
-    advertiseCB = new javax.swing.JCheckBox();
-    enableCB = new javax.swing.JCheckBox();
-
-    setLayout(new java.awt.GridBagLayout());
-
-    titleLabel.setText("Jmdns QR Encoded File Receiver");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 0;
-    add(titleLabel, gridBagConstraints);
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.weightx = 1.0;
-    add(jSeparator1, gridBagConstraints);
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 7;
-    gridBagConstraints.weighty = 1.0;
-    add(sp, gridBagConstraints);
-
-    advertiseCB.setText("Advertise QR image receiver");
-    advertiseCB.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        advertiseCBClicked(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 2;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
-    add(advertiseCB, gridBagConstraints);
-
-    enableCB.setText("Enable QR image receiving");
-    enableCB.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        enableCBClick(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 3;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
-    add(enableCB, gridBagConstraints);
-  }// </editor-fold>//GEN-END:initComponents
-
-  private void advertiseCBClicked(java.awt.event.ActionEvent evt)//GEN-FIRST:event_advertiseCBClicked
-  {//GEN-HEADEREND:event_advertiseCBClicked
-    mother.setAdvertising(advertiseCB.isSelected());
-  }//GEN-LAST:event_advertiseCBClicked
-
-  private void enableCBClick(java.awt.event.ActionEvent evt)//GEN-FIRST:event_enableCBClick
-  {//GEN-HEADEREND:event_enableCBClick
-    mother.setReceivingEnabled(enableCB.isSelected());
-  }//GEN-LAST:event_enableCBClick
- 
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  private javax.swing.JCheckBox advertiseCB;
-  private javax.swing.JCheckBox enableCB;
-  private javax.swing.JSeparator jSeparator1;
-  private javax.swing.JLabel sp;
-  private javax.swing.JLabel titleLabel;
-  // End of variables declaration//GEN-END:variables
-
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/JmDnsQRSender3Panel.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/JmDnsQRSender3Panel.form
deleted file mode 100755
index b08ef15bd89e41f39bd6f33a722f84d712681408..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/JmDnsQRSender3Panel.form
+++ /dev/null
@@ -1,112 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,0,-29,0,0,1,27"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-  <SubComponents>
-    <Component class="javax.swing.JLabel" name="titleLabel">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="Jmdns QR Encoded File Sender"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JSeparator" name="jSeparator1">
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="1" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="java.awt.Label" name="label1">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="receivers"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="3" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Container class="javax.swing.JScrollPane" name="jScrollPane1">
-      <Properties>
-        <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-          <Dimension value="[260, 52]"/>
-        </Property>
-      </Properties>
-      <AuxValues>
-        <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
-      </AuxValues>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="4" gridWidth="1" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="5" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-
-      <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
-      <SubComponents>
-        <Component class="javax.swing.JList" name="receiverList">
-          <Properties>
-            <Property name="model" type="javax.swing.ListModel" editor="org.netbeans.modules.form.editors2.ListModelEditor">
-              <StringArray count="9">
-                <StringItem index="0" value="1"/>
-                <StringItem index="1" value="2"/>
-                <StringItem index="2" value="3"/>
-                <StringItem index="3" value="4"/>
-                <StringItem index="4" value="5"/>
-                <StringItem index="5" value="6"/>
-                <StringItem index="6" value="7"/>
-                <StringItem index="7" value="8"/>
-                <StringItem index="8" value=" "/>
-              </StringArray>
-            </Property>
-            <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-              <Dimension value="[35, 156]"/>
-            </Property>
-            <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-              <Dimension value="[35, 156]"/>
-            </Property>
-            <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-              <Dimension value="[35, 136]"/>
-            </Property>
-          </Properties>
-        </Component>
-      </SubComponents>
-    </Container>
-    <Component class="javax.swing.JCheckBox" name="enablingCB">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="Enable sending to selected receivers"/>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="enablingCBActionPerformed"/>
-      </Events>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="5" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="sp">
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="6" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="1.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-  </SubComponents>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/JmDnsQRSender3Panel.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/JmDnsQRSender3Panel.java
deleted file mode 100755
index 4f868d714ad456f3e4ddfd69bed1ff32851a8778..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/JmDnsQRSender3Panel.java
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements.gui;
-
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.JmDnsQRSender3;
-import java.net.Inet4Address;
-import java.util.ArrayList;
-import java.util.List;
-import javax.jmdns.ServiceInfo;
-import javax.swing.DefaultListModel;
-import javax.swing.SwingUtilities;
-
-/**
- * JmDnsQRSender3Panel.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class JmDnsQRSender3Panel extends javax.swing.JPanel
-{
-  private final TdaEnvironment env;
-  private final JmDnsQRSender3 mother;
-
-  public JmDnsQRSender3Panel(TdaEnvironment env, JmDnsQRSender3 sender)
-  {
-    this.env = env;
-    this.mother = sender;
-    initComponents();
-
-    this.receiverList.setModel(new DefaultListModel());
-  }
-
-  public boolean isSendingEnabled()
-  {
-    return enablingCB.isSelected();
-  }
-
-  public void addReceiver(final ServiceInfo serviceInfo)
-  {
-    SwingUtilities.invokeLater(new Runnable()
-    {
-      @Override
-      public void run()
-      {
-        ServiceInfoWrapper siw;
-        DefaultListModel dlm = (DefaultListModel) receiverList.getModel();
-        dlm.addElement(siw = new ServiceInfoWrapper(serviceInfo));
-        int idx = dlm.indexOf(siw);
-        receiverList.addSelectionInterval(idx, idx);
-      }
-    });
-  }
-
-  public void removeAllReceivers()
-  {
-    SwingUtilities.invokeLater(new Runnable()
-    {
-      @Override
-      public void run()
-      {
-        DefaultListModel dlm = (DefaultListModel) receiverList.getModel();
-        dlm.removeAllElements();
-      }
-    });
-  }
-
-  public void setPipeIndex(int idx)
-  {
-    titleLabel.setText(""+idx+" "+titleLabel.getText());
-  }
-  
-  class ServiceInfoWrapper
-  {
-    ServiceInfo mySi;
-
-    public ServiceInfoWrapper(ServiceInfo si)
-    {
-      mySi = si;
-    }
-
-    @Override
-    public String toString()
-    {
-      Inet4Address[] ips = mySi.getInet4Addresses();
-      int pt = mySi.getPort();
-      if(ips != null && ips.length>0)
-        return ips[0].getHostAddress()+":"+pt;
-      return mySi.toString();
-
-    }
-  }
-
-  public List<ServiceInfo> getSelected()
-  {
-    List<ServiceInfoWrapper> lis = (List<ServiceInfoWrapper>) receiverList.getSelectedValuesList();
-    ArrayList<ServiceInfo> arLis = new ArrayList<>(lis.size());
-    for (ServiceInfoWrapper sw : lis) {
-      arLis.add(sw.mySi);
-    }
-    return arLis;
-  }
-
-  /**
-   * This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The content of this method is always
-   * regenerated by the Form Editor.
-   */
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-    java.awt.GridBagConstraints gridBagConstraints;
-
-    titleLabel = new javax.swing.JLabel();
-    jSeparator1 = new javax.swing.JSeparator();
-    label1 = new java.awt.Label();
-    jScrollPane1 = new javax.swing.JScrollPane();
-    receiverList = new javax.swing.JList();
-    enablingCB = new javax.swing.JCheckBox();
-    sp = new javax.swing.JLabel();
-
-    setLayout(new java.awt.GridBagLayout());
-
-    titleLabel.setText("Jmdns QR Encoded File Sender");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 0;
-    add(titleLabel, gridBagConstraints);
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.weightx = 1.0;
-    add(jSeparator1, gridBagConstraints);
-
-    label1.setText("receivers");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 3;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
-    add(label1, gridBagConstraints);
-
-    jScrollPane1.setMinimumSize(new java.awt.Dimension(260, 52));
-
-    receiverList.setModel(new javax.swing.AbstractListModel()
-    {
-      String[] strings = { "1", "2", "3", "4", "5", "6", "7", "8", " " };
-      public int getSize() { return strings.length; }
-      public Object getElementAt(int i) { return strings[i]; }
-    });
-    receiverList.setMaximumSize(new java.awt.Dimension(35, 156));
-    receiverList.setMinimumSize(new java.awt.Dimension(35, 156));
-    receiverList.setPreferredSize(new java.awt.Dimension(35, 136));
-    jScrollPane1.setViewportView(receiverList);
-
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 4;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
-    gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0);
-    add(jScrollPane1, gridBagConstraints);
-
-    enablingCB.setText("Enable sending to selected receivers");
-    enablingCB.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        enablingCBActionPerformed(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 5;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
-    add(enablingCB, gridBagConstraints);
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 6;
-    gridBagConstraints.weighty = 1.0;
-    add(sp, gridBagConstraints);
-  }// </editor-fold>//GEN-END:initComponents
-
-  private void enablingCBActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_enablingCBActionPerformed
-  {//GEN-HEADEREND:event_enablingCBActionPerformed
-    mother.setSendingEnabled(enablingCB.isSelected());
-  }//GEN-LAST:event_enablingCBActionPerformed
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  private javax.swing.JCheckBox enablingCB;
-  private javax.swing.JScrollPane jScrollPane1;
-  private javax.swing.JSeparator jSeparator1;
-  private java.awt.Label label1;
-  private javax.swing.JList receiverList;
-  private javax.swing.JLabel sp;
-  private javax.swing.JLabel titleLabel;
-  // End of variables declaration//GEN-END:variables
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/MorseOpticalDisplay.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/MorseOpticalDisplay.java
deleted file mode 100644
index d5536cbb7805779ecf5547af0485092373a2ce60..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/MorseOpticalDisplay.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.elements.gui;
-
-import edu.nps.moves.qrtda.morseArt.MorseArtAndSound;
-import java.awt.Color;
-import java.lang.reflect.Method;
-
-/**
- * MorseOpticalDisplay.java created on Apr 13, 2017
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class MorseOpticalDisplay implements OpticalCommsDisplay
-{
-  private final VerticalMixedOptical vertPan;
-  private final HorizontalMixedOptical horizPan;
-  
-  private OpticalCommsIO currentIO;
-  
-  public MorseOpticalDisplay()
-  {
-    Method artGetter = null;
-
-    try {
-      artGetter = MorseArtAndSound.class.getMethod("getAlphaString", new Class[]{String.class, int.class, Color.class});
-    }
-    catch (NoSuchMethodException | SecurityException ex) {
-      throw new RuntimeException("Program error in SignalFlagsOpticalDisplay constructor");
-    }
-    vertPan = new VerticalMixedOptical(artGetter);
-    horizPan = new HorizontalMixedOptical(artGetter);
-    
-  }
-  @Override
-  public void activate(OpticalCommsIO io, OpticalCommsIO.Orientation hv)
-  {
-    currentIO = io;
-    if (hv == OpticalCommsIO.Orientation.HORIZONTAL) {
-      horizPan.activate(io, OpticalCommsIO.Orientation.HORIZONTAL);
-    }
-    else {
-      vertPan.activate(io, OpticalCommsIO.Orientation.VERTICAL);
-    }
-  }
-
-  @Override
-  public void display(String text, int size, boolean append)
-  {
-    vertPan.display(text, size, append);
-    horizPan.display(text, size, append);
-  }
-
-  @Override
-  public void setOrientation(OpticalCommsIO.Orientation hv)
-  {
-    if (hv == OpticalCommsIO.Orientation.HORIZONTAL)
-      horizPan.activate(currentIO, hv);
-    else
-      vertPan.activate(currentIO, hv);   }
-
-  @Override
-  public void setBackground(Color bg)
-  {
-    vertPan.setBackground(bg);
-    horizPan.setBackground(bg);
-  }
-
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/OpticalCommsConstants.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/OpticalCommsConstants.java
deleted file mode 100644
index 65ce8c5053d667999870f332b8848111bf659636..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/OpticalCommsConstants.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.elements.gui;
-
-/**
- * OpticalCommsConstants.java created on Apr 14, 2017
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class OpticalCommsConstants
-{
-  public final static String LINEEND = System.getProperty("line.separator");
-  
-  public final static String WINDOWTITLE = "Optical Signalling TDA -- Naval Research Program";
-  public final static String SAILORWINDOW_KEY = "SailorWindowKey";
-  
-  public final static String OPTICALCOMMSWINDOW_X_KEY = "OpticalCommsWindowXKey";
-  public final static String OPTICALCOMMSWINDOW_Y_KEY = "OpticalCommsWindowYKey";
-  public final static String OPTICALCOMMSWINDOW_W_KEY = "OpticalCommsWindowWKey";
-  public final static String OPTICALCOMMSWINDOW_H_KEY = "OpticalCommsWindowHKey";
-  public final static String OPTICALCOMMSWINDOW_X_DEFAULT = "0";
-  public final static String OPTICALCOMMSWINDOW_Y_DEFAULT = "0";
-  public final static String OPTICALCOMMSWINDOW_W_DEFAULT = "1200";
-  public final static String OPTICALCOMMSWINDOW_H_DEFAULT = "900";
-  
-  public final static String SAILOR_SPLASH_IMAGE      = "NPSNRPJointLogo.png";
-  public final static String SAILOR_LOGO_BUTTON_IMAGE = "NPSNRPJointLogoNoWords.png";
-  public final static int    SAILOR_LOGO_BUTTON_HEIGHT = 66;
-  
-  public final static String SAILORMORSEZOOM_KEY     = "SailorMorseZoomKey";
-  public final static String SAILORFLAGSZOOM_KEY     = "SailorFlagsZoomKey";
-  public final static String SAILORSEMAPHOREZOOM_KEY = "SailorSemaphoreZoomKey";
-  public final static String SAILORCOMPOSITEZOOM_KEY = "SailorCompositeZoomKey";
-  
-  public final static String SAILORMORSEBACKGROUND_KEY     = "SailorMorseBackgroundKey";
-  public final static String SAILORFLAGSBACKGROUND_KEY     = "SailorFlagsBackgroundKey";
-  public final static String SAILORSEMAPHOREBACKGROUND_KEY = "SailorSemaphoreBackgroundKey";
-  public final static String SAILORCOMPOSITEBACKGROUND_KEY = "SailorCompositeBackgroundKey";
-  
-  public final static String SAILORMORSEORIENTATION_KEY     = "SailorMorseOrientationKey";
-  public final static String SAILORFLAGSORIENTATION_KEY     = "SailorFlagsOrientationKey";
-  public final static String SAILORSEMAPHOREORIENTATION_KEY = "SailorSemaphoreOrientationKey";
-  public final static String SAILORCOMPOSITEORIENTATION_KEY = "SailorCompositeOrientationKey";
-  
-  public final static String SAILORMODE_KEY = "SailorModeKey"; 
-  public final static String SAILORFLAGSVOCAB_KEY = "SailorVocabKey";
-  public final static String SAILORVOLUME_KEY = "SailorVolumeKey";
-  
-  public final static String SAILORMORSEAPPEND_KEY = "SailorMorseAppendKey";
-  public final static String SAILORFLAGSAPPEND_KEY = "SailorFlagsAppendKey";
-  public final static String SAILORSEMAPHOREAPPEND_KEY = "SailorSemaphoreAppendKey";
-  public final static String SAILORCOMPOSITEAPPEND_KEY = "SailorCompositeAppendKey";
-  
-  public final static String BACKGROUNDWHITE     = "white background";
-  public final static String BACKGROUNDLIGHTGRAY = "light gray background";
-  public final static String BACKGROUNDDARKGRAY  = "dark gray background";
-  public final static String BACKGROUNDBLACK     = "black background";
-  public final static String[] BACKGROUNDS = {BACKGROUNDWHITE,BACKGROUNDLIGHTGRAY,BACKGROUNDDARKGRAY,BACKGROUNDBLACK};
-  
-  public final static String ORIENTATIONVERTICAL   = "vertical";
-  public final static String ORIENTATIONHORIZONTAL = "horizontal";
-  public final static String[] ORIENTATIONS = {ORIENTATIONHORIZONTAL,ORIENTATIONVERTICAL};
-  
-  public final static String MODECOMPOSITE = "Composite";
-  public final static String MODEMORSE     = "Morse code";
-  public final static String MODEFLAGS     = "Signal flags";
-  public final static String MODESEMAPHORE = "Semaphore";
-  public final static String[] MODES = {MODECOMPOSITE,MODEMORSE,MODEFLAGS,MODESEMAPHORE};
-  public enum Mode {
-    composite,morse,flags,semaphore;
-  }
-  
-  public final static String FLAGSVOCABALPHANATO = "Alpha + NATO Num";     
-  public final static String FLAGSVOCABALPHAICS = "Alpha + ICS Num";
-  public final static String FLAGSVOCABSINGLE = "Single flag ICS";
-  public final static String FLAGSVOCABMULTIPLE = "Multiple flag";
-  public final static String FLAGSVOCABSPECIALNATO = "Special NATO";
-  public final static String FLAGSVOCABMANEUVER = "Navy maneuver";
-  public final static String[] VOCABULARIES = {FLAGSVOCABALPHAICS,FLAGSVOCABALPHANATO,FLAGSVOCABSINGLE,FLAGSVOCABMULTIPLE,FLAGSVOCABSPECIALNATO,FLAGSVOCABMANEUVER};
-
-  public final static String FLAGSIMAGESDIRECTORY = "Flags images directory";
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/OpticalCommsDecodeWindow.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/OpticalCommsDecodeWindow.form
deleted file mode 100644
index 8a729ad3580688e0d4814d340dd3c4803c758a03..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/OpticalCommsDecodeWindow.form
+++ /dev/null
@@ -1,325 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
-  <NonVisualComponents>
-    <Component class="javax.swing.JButton" name="backwardButt">
-      <Properties>
-        <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
-          <Connection code="IconFontSwing.buildIcon(FontAwesome.BACKWARD,13)" type="code"/>
-        </Property>
-      </Properties>
-    </Component>
-    <Component class="javax.swing.JButton" name="stopButt">
-      <Properties>
-        <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
-          <Connection code="IconFontSwing.buildIcon(FontAwesome.STOP,13)" type="code"/>
-        </Property>
-      </Properties>
-    </Component>
-    <Component class="javax.swing.ButtonGroup" name="radioGroup">
-    </Component>
-  </NonVisualComponents>
-  <Properties>
-    <Property name="defaultCloseOperation" type="int" value="3"/>
-    <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-      <Dimension value="[400, 300]"/>
-    </Property>
-  </Properties>
-  <SyntheticProperties>
-    <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
-    <SyntheticProperty name="generateCenter" type="boolean" value="false"/>
-  </SyntheticProperties>
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,2,6,0,0,4,78"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-  <SubComponents>
-    <Container class="javax.swing.JPanel" name="videoPanel">
-      <Properties>
-        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-          <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
-            <EtchetBorder bevelType="0"/>
-          </Border>
-        </Property>
-        <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-          <Dimension value="[400, 400]"/>
-        </Property>
-        <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-          <Dimension value="[400, 400]"/>
-        </Property>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="1" gridWidth="1" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="5" insetsLeft="5" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-
-      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignCardLayout"/>
-      <SubComponents>
-        <Container class="javax.swing.JPanel" name="imagesPanel">
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignCardLayout" value="org.netbeans.modules.form.compat2.layouts.DesignCardLayout$CardConstraintsDescription">
-              <CardConstraints cardName="images"/>
-            </Constraint>
-          </Constraints>
-
-          <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
-          <SubComponents>
-            <Container class="javax.swing.JPanel" name="buttonPan">
-              <Constraints>
-                <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
-                  <BorderConstraints direction="South"/>
-                </Constraint>
-              </Constraints>
-
-              <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-              <SubComponents>
-                <Component class="javax.swing.JButton" name="stepBackwardButt">
-                  <Properties>
-                    <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
-                      <Connection code="IconFontSwing.buildIcon(FontAwesome.STEP_BACKWARD,13)" type="code"/>
-                    </Property>
-                    <Property name="toolTipText" type="java.lang.String" value="Last image"/>
-                  </Properties>
-                  <Events>
-                    <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="stepBackwardButtActionPerformed"/>
-                  </Events>
-                  <Constraints>
-                    <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-                      <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="13" weightX="0.5" weightY="0.0"/>
-                    </Constraint>
-                  </Constraints>
-                </Component>
-                <Component class="javax.swing.JButton" name="stepForwardButt">
-                  <Properties>
-                    <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
-                      <Connection code="IconFontSwing.buildIcon(FontAwesome.STEP_FORWARD,13)" type="code"/>
-                    </Property>
-                    <Property name="toolTipText" type="java.lang.String" value="Next image"/>
-                  </Properties>
-                  <Events>
-                    <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="stepForwardButtActionPerformed"/>
-                  </Events>
-                  <Constraints>
-                    <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-                      <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="0.5" weightY="0.0"/>
-                    </Constraint>
-                  </Constraints>
-                </Component>
-                <Component class="javax.swing.JButton" name="zoomButt">
-                  <Properties>
-                    <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
-                      <Connection code="IconFontSwing.buildIcon(FontAwesome.SEARCH_PLUS,13)" type="code"/>
-                    </Property>
-                  </Properties>
-                  <Events>
-                    <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="zoomButtActionPerformed"/>
-                  </Events>
-                  <Constraints>
-                    <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-                      <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="13" weightX="0.0" weightY="0.0"/>
-                    </Constraint>
-                  </Constraints>
-                </Component>
-                <Component class="javax.swing.JButton" name="chooseFolderButt">
-                  <Properties>
-                    <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
-                      <Connection code="IconFontSwing.buildIcon(FontAwesome.FOLDER_OPEN_O,13)" type="code"/>
-                    </Property>
-                  </Properties>
-                  <Events>
-                    <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="chooseFolderButtActionPerformed"/>
-                  </Events>
-                  <Constraints>
-                    <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-                      <GridBagConstraints gridX="-1" gridY="-1" gridWidth="0" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-                    </Constraint>
-                  </Constraints>
-                </Component>
-              </SubComponents>
-            </Container>
-          </SubComponents>
-        </Container>
-        <Container class="javax.swing.JPanel" name="cameraPanel">
-          <Properties>
-            <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-              <Border info="org.netbeans.modules.form.compat2.border.LineBorderInfo">
-                <LineBorder>
-                  <Color PropertyName="color" blue="33" green="ff" red="33" type="rgb"/>
-                </LineBorder>
-              </Border>
-            </Property>
-          </Properties>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignCardLayout" value="org.netbeans.modules.form.compat2.layouts.DesignCardLayout$CardConstraintsDescription">
-              <CardConstraints cardName="camera"/>
-            </Constraint>
-          </Constraints>
-
-          <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
-          <SubComponents>
-            <Container class="javax.swing.JPanel" name="cameraImagePan">
-              <Constraints>
-                <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
-                  <BorderConstraints direction="Center"/>
-                </Constraint>
-              </Constraints>
-
-              <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
-            </Container>
-            <Container class="javax.swing.JPanel" name="cameraButtonPan">
-              <Properties>
-                <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-                  <Border info="org.netbeans.modules.form.compat2.border.LineBorderInfo">
-                    <LineBorder>
-                      <Color PropertyName="color" blue="ff" green="0" red="0" type="rgb"/>
-                    </LineBorder>
-                  </Border>
-                </Property>
-              </Properties>
-              <Constraints>
-                <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
-                  <BorderConstraints direction="South"/>
-                </Constraint>
-              </Constraints>
-
-              <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-              <SubComponents>
-                <Component class="javax.swing.JButton" name="pauseButt">
-                  <Properties>
-                    <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
-                      <Connection code="IconFontSwing.buildIcon(FontAwesome.PAUSE,13)" type="code"/>
-                    </Property>
-                    <Property name="toolTipText" type="java.lang.String" value="Pause"/>
-                  </Properties>
-                  <Constraints>
-                    <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-                      <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="13" weightX="0.5" weightY="0.0"/>
-                    </Constraint>
-                  </Constraints>
-                </Component>
-                <Component class="javax.swing.JButton" name="playButt">
-                  <Properties>
-                    <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
-                      <Connection code="IconFontSwing.buildIcon(FontAwesome.PLAY,13)" type="code"/>
-                    </Property>
-                    <Property name="toolTipText" type="java.lang.String" value="Play"/>
-                  </Properties>
-                  <Constraints>
-                    <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-                      <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="0.5" weightY="0.0"/>
-                    </Constraint>
-                  </Constraints>
-                </Component>
-              </SubComponents>
-            </Container>
-          </SubComponents>
-        </Container>
-      </SubComponents>
-    </Container>
-    <Container class="javax.swing.JScrollPane" name="decodeTableScroller">
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="1" gridY="0" gridWidth="1" gridHeight="0" fill="1" ipadX="0" ipadY="0" insetsTop="5" insetsLeft="0" insetsBottom="5" insetsRight="5" anchor="10" weightX="1.0" weightY="1.0"/>
-        </Constraint>
-      </Constraints>
-
-      <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
-      <SubComponents>
-        <Container class="edu.nps.moves.qrtda.elements.gui.DecodeTableGridBag" name="decodeTableGridBag">
-
-          <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBoxLayout">
-            <Property name="axis" type="int" value="1"/>
-          </Layout>
-        </Container>
-      </SubComponents>
-    </Container>
-    <Component class="javax.swing.JButton" name="chooseButt">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="CHOOSE"/>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="chooseButtActionPerformed"/>
-      </Events>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="2" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Container class="javax.swing.JScrollPane" name="loggerTAScroller">
-      <AuxValues>
-        <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
-      </AuxValues>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="3" gridWidth="1" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="5" insetsBottom="5" insetsRight="0" anchor="10" weightX="0.0" weightY="1.0"/>
-        </Constraint>
-      </Constraints>
-
-      <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
-      <SubComponents>
-        <Component class="javax.swing.JTextArea" name="loggerTA">
-          <Properties>
-            <Property name="columns" type="int" value="20"/>
-            <Property name="rows" type="int" value="5"/>
-          </Properties>
-        </Component>
-      </SubComponents>
-    </Container>
-    <Container class="javax.swing.JPanel" name="radioButtPan">
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-
-      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-      <SubComponents>
-        <Component class="javax.swing.JRadioButton" name="cameraRadioButt">
-          <Properties>
-            <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
-              <ComponentRef name="radioGroup"/>
-            </Property>
-            <Property name="text" type="java.lang.String" value="camera"/>
-          </Properties>
-          <Events>
-            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="cameraRadioButtActionPerformed"/>
-          </Events>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="0" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="18" weightX="0.0" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-        <Component class="javax.swing.JRadioButton" name="imageDirRadioButt">
-          <Properties>
-            <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
-              <ComponentRef name="radioGroup"/>
-            </Property>
-            <Property name="selected" type="boolean" value="true"/>
-            <Property name="text" type="java.lang.String" value="image directory"/>
-          </Properties>
-          <Events>
-            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="imageDirRadioButtActionPerformed"/>
-          </Events>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="1" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="18" weightX="0.0" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-      </SubComponents>
-    </Container>
-  </SubComponents>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/OpticalCommsDecodeWindow.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/OpticalCommsDecodeWindow.java
deleted file mode 100644
index bf66ab7626effa75c141d8e67dda995aad95a118..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/OpticalCommsDecodeWindow.java
+++ /dev/null
@@ -1,601 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.elements.gui;
-
-import com.tinkerpop.pipes.util.Pipeline;
-import edu.nps.moves.misc.EmptyIcon;
-import edu.nps.moves.misc.TextObject;
-import edu.nps.moves.qrtda.QRPreferences;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.gui.DecodeTableGridBag.Decoded;
-import static edu.nps.moves.qrtda.elements.gui.OpticalCommsConstants.FLAGSIMAGESDIRECTORY;
-import static edu.nps.moves.qrtda.elements.gui.OpticalCommsConstants.LINEEND;
-import edu.nps.moves.qrtda.elements.misc.RunScriptsMenuItem.RunScriptsMenuBar;
-import edu.nps.moves.qrtda.morseArt.MorseArtAndSound;
-import edu.nps.moves.qrtda.semaphoreArt.SemaphoreArt;
-import edu.nps.moves.qrtda.signalflagsArt.SignalFlagArt;
-import java.awt.*;
-import java.awt.event.ActionEvent;
-import java.awt.image.BufferedImage;
-import java.io.File;
-import java.io.IOException;
-import java.net.URL;
-import java.util.Collection;
-import javax.imageio.ImageIO;
-import javax.swing.*;
-import jiconfont.icons.FontAwesome;
-import jiconfont.swing.IconFontSwing;
-/**
- * OpticalCommsDecodeWindow.java created on Apr 25, 2017
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class OpticalCommsDecodeWindow extends JFrame
-{
-  public static final int ROWHEIGHT = 40;
-  public static final String IMAGES = "images"; // must match guibuilder
-  public static final String CAMERA = "camera";
-
-  public static OpticalCommsDecodeWindow show(TdaEnvironment env, Pipeline pipeline)
-  {
-    OpticalCommsDecodeWindow win = new OpticalCommsDecodeWindow(env,pipeline);
-    win.setSize(800,600);
-    win.setLocationRelativeTo(null); // see doc
-    win.setVisible(true);
-    return win;
-  }
-  
-  private final TdaEnvironment env;
-  public OpticalCommsDecodeWindow(TdaEnvironment env, Pipeline pipeline)
-  {
-    IconFontSwing.register(FontAwesome.getIconFont());
-    initComponents();
-    super.setJMenuBar(new RunScriptsMenuBar(this));
-    this.env = env;
-
-    setTitle("Image Decoding");
-    backwardButt.setVisible(false);
-    stopButt.setVisible(false);
-    /*addARow('a');
-    addARow('b');
-    addARow('c');
-    addARow('s');
-    addARow('t');
-    addARow('u');
-    addARow('1');
-    addARow('2');
-    addARow('3');
-    addARow('v');
-    addARow('w');
-    addARow('x');
-    addARow('z');*/
-    initImagePanel();
-  }
-  
-  private void addARow(char c)
-  {
-    try {
-      JComponent capture = getScreenImage();
-      String flag = SignalFlagArt.getCharacterMap().get(c);
-      Icon flagIcon = null;
-      if(flag == null)
-        flagIcon = new EmptyIcon(ROWHEIGHT);
-      else
-        flagIcon = SignalFlagArt.getIcon(flag, ROWHEIGHT);
-      
-      String sema = SemaphoreArt.getCharacterMap().get(c);
-      Icon semaIcon = null;
-      if(sema == null )
-        semaIcon = new EmptyIcon(ROWHEIGHT);
-      else
-        semaIcon = SemaphoreArt.getIcon(sema, ROWHEIGHT);
-      JComponent morse = MorseArtAndSound.getLetterCombined(SignalFlagArt.displayable(c), ROWHEIGHT, null);
-      if(morse == null) {
-        morse = new JLabel();
-        morse.setPreferredSize(new Dimension(ROWHEIGHT,ROWHEIGHT));
-      }
-      String meaning = SignalFlagArt.specialMeaning(new String(new char[]{c}));
-      Decoded dec;
-      decodeTableGridBag.addDecodedRow(dec=new Decoded(capture, SignalFlagArt.displayable(c), flagIcon, semaIcon, morse, meaning));
-      logSelection(dec);
-    }
-    catch (IOException t) {
-      System.out.println(t);
-    }
-  }
-  
-  private void logSelection(Decoded dec)
-  {
-    char c = TextObject.convertToAscii(dec.alpha);
-    boolean appended = false;
-    if(Character.isLetterOrDigit(c)) {       
-      loggerTA.append(new String(new char[]{c,' '}));
-      appended = true;
-    }
-    if(dec.meaning!=null && dec.meaning.length()>0) {
-      loggerTA.append(dec.meaning);
-      appended  = true;
-    }
-    if(appended)
-      loggerTA.append(LINEEND);
-  }
-  private JComponent getRawScreenImage()
-  {
-    Component comp = null;
-    if(cameraRadioButt.isSelected()) {
-      comp = ((BorderLayout)cameraImagePan.getLayout()).getLayoutComponent(BorderLayout.CENTER);
-    }
-    else {
-      comp = ((BorderLayout)imagesPanel.getLayout()).getLayoutComponent(BorderLayout.CENTER);
-    }
-    return (JComponent)comp;
-  }
-  
-  private JComponent getScreenImage()
-  {
-    Component comp = getRawScreenImage();
-    if(comp != null) {
-      JLabel lab = (JLabel)comp;
-      ImageIcon ii = (ImageIcon)lab.getIcon();
-      Image im = ii.getImage();
-      return new JLabel(new ImageIcon(im.getScaledInstance(ROWHEIGHT, -1, Image.SCALE_SMOOTH)));
-    }    
-    return fauxScreenCapture();
-  }
-  
-  int wh = 0;
-  private JComponent fauxScreenCapture()
-  {
-    String imgName = "capture" + (wh + 1) + ".jpg";
-    wh++;
-    wh %= 3;
-    try {
-      BufferedImage img = ImageIO.read(SignalFlagArt.class.getResource(imgName));
-      return new JLabel(new ImageIcon(img.getScaledInstance(-1, ROWHEIGHT, Image.SCALE_SMOOTH)));
-    }
-    catch (IOException t) {
-      System.out.println("No image from " + imgName);
-      return new JLabel();
-    }
-  }
-  
-  public JPanel getVideoHolder()
-  {
-    return cameraImagePan;   
-  }
-  
-  private void initImagePanel()
-  {
-    String dir = QRPreferences.getInstance().get(FLAGSIMAGESDIRECTORY,null);
-    if(dir != null) {
-      currentDirectory = new File(dir);
-      if(!currentDirectory.exists())
-        return;
-      makeFileList();
-      resetImageBrowser();
-    }
-  }
-  
-  JFileChooser fc = null;
-  File currentDirectory = null;
-  File[] fileList = null;
-  private void chooseFolder()
-  {
-    if(fc == null) {
-      fc = new JFileChooser();
-      fc.setMultiSelectionEnabled(false);
-      fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
-      String dir = QRPreferences.getInstance().get(FLAGSIMAGESDIRECTORY,null);
-      if(dir != null)
-        fc.setCurrentDirectory(new File(dir));
-    }
-    int ret = fc.showOpenDialog(this);
-    if(ret == JFileChooser.APPROVE_OPTION) {
-      currentDirectory = fc.getSelectedFile();
-      QRPreferences.getInstance().put(FLAGSIMAGESDIRECTORY, currentDirectory.getAbsolutePath());
-      makeFileList();
-      resetImageBrowser();
-    }
-  }
-  private void makeFileList()
-  {
-    fileList = currentDirectory.listFiles((dir,name)->{
-        String lc = name.toLowerCase();
-        return lc.endsWith(".jpg") | lc.endsWith(".jpeg") | lc.endsWith(".gif") | lc.endsWith(".png");
-      }); 
-  }
-  int currentIndex = -1;
-  ImageIcon currentImage = null;
-  private void resetImageBrowser()
-  {
-    if(fileList.length<=0) {
-      currentIndex = -1;
-      currentImage = null;
-    }
-    currentIndex = 0;
-    loadImage();
-  }
-  
-  private void loadImage()
-  {
-    removeImage();
-    if(currentIndex >= 0) {
-      try {
-        URL url = fileList[currentIndex].toURI().toURL();                
-        BufferedImage img = ImageIO.read(url);
-        currentImage = new ImageIcon(img.getScaledInstance(-1, 396, Image.SCALE_SMOOTH));
-        //currentImage = new ImageIcon(url,url.toExternalForm());
-        imagesPanel.add(new JLabel(currentImage), BorderLayout.CENTER);
-        imagesPanel.revalidate();
-      }
-      catch(IOException t) {
-        System.out.println("Exception in OpticalCommsDecodeWindow.loadImage(): "+t.getClass().getSimpleName()+": "+t.getLocalizedMessage());
-      }
-      stepForwardButt.setEnabled(currentIndex < fileList.length-1);
-      stepBackwardButt.setEnabled(currentIndex > 0);
-    }
-  }
-  
-  private void removeImage()
-  {
-    Component comp = ((BorderLayout)imagesPanel.getLayout()).getLayoutComponent(BorderLayout.CENTER);
-    if(comp != null)
-      imagesPanel.remove(comp);
-  }
-  
-  private void stepForward()
-  {
-    if(currentIndex >= fileList.length-1)
-      return; // at end
-    currentIndex++;
-    loadImage();
-  }
-  
-  private void stepBackward()
-  {
-    if(currentIndex <= 0)
-      return; // at beginning
-    currentIndex--;
-    loadImage();
-  }
-  
-  private void chooseFlag()
-  {
-    AllFlagsDialog dialog = new AllFlagsDialog(this, true);
-    dialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
-    dialog.setSize(new Dimension(735,520));
-    dialog.setLocationRelativeTo(this);
-    dialog.setVisible(true);
-    Collection<Character> coll = dialog.getSelectedCharacters();
-    if(!coll.isEmpty()) {
-      coll.forEach((c) -> addARow(c));
-    }
-    imagesPanel.revalidate();  // remove this
-
-  }
-  
-  private void radioButtAction(ActionEvent evt)
-  {
-    CardLayout cards = (CardLayout)videoPanel.getLayout();
-    if(cameraRadioButt.isSelected()){
-      cards.show(videoPanel, CAMERA);
-    }
-    else {
-      cards.show(videoPanel, IMAGES);
-    }
-  }
-  
-  private void zoomPressed()
-  {
-    JComponent comp = getRawScreenImage();
-    if(comp != null) {
-      JLabel lab = (JLabel)comp;
-      ImageIcon ii = (ImageIcon)lab.getIcon();
-      Image im = ii.getImage();
-      ZoomDialog.show(im,this,true);
-    }
-  }
-  /** This method is called from within the constructor to
-   * initialize the form.
-   * WARNING: Do NOT modify this code. The content of this method is
-   * always regenerated by the Form Editor.
-   */
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-    java.awt.GridBagConstraints gridBagConstraints;
-
-    backwardButt = new javax.swing.JButton();
-    stopButt = new javax.swing.JButton();
-    radioGroup = new javax.swing.ButtonGroup();
-    videoPanel = new javax.swing.JPanel();
-    imagesPanel = new javax.swing.JPanel();
-    buttonPan = new javax.swing.JPanel();
-    stepBackwardButt = new javax.swing.JButton();
-    stepForwardButt = new javax.swing.JButton();
-    zoomButt = new javax.swing.JButton();
-    chooseFolderButt = new javax.swing.JButton();
-    cameraPanel = new javax.swing.JPanel();
-    cameraImagePan = new javax.swing.JPanel();
-    cameraButtonPan = new javax.swing.JPanel();
-    pauseButt = new javax.swing.JButton();
-    playButt = new javax.swing.JButton();
-    decodeTableScroller = new javax.swing.JScrollPane();
-    decodeTableGridBag = new edu.nps.moves.qrtda.elements.gui.DecodeTableGridBag();
-    chooseButt = new javax.swing.JButton();
-    loggerTAScroller = new javax.swing.JScrollPane();
-    loggerTA = new javax.swing.JTextArea();
-    radioButtPan = new javax.swing.JPanel();
-    cameraRadioButt = new javax.swing.JRadioButton();
-    imageDirRadioButt = new javax.swing.JRadioButton();
-
-    backwardButt.setIcon(IconFontSwing.buildIcon(FontAwesome.BACKWARD,13));
-
-    stopButt.setIcon(IconFontSwing.buildIcon(FontAwesome.STOP,13));
-
-    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
-    setMinimumSize(new java.awt.Dimension(400, 300));
-    getContentPane().setLayout(new java.awt.GridBagLayout());
-
-    videoPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED));
-    videoPanel.setMinimumSize(new java.awt.Dimension(400, 400));
-    videoPanel.setPreferredSize(new java.awt.Dimension(400, 400));
-    videoPanel.setLayout(new java.awt.CardLayout());
-
-    imagesPanel.setLayout(new java.awt.BorderLayout());
-
-    buttonPan.setLayout(new java.awt.GridBagLayout());
-
-    stepBackwardButt.setIcon(IconFontSwing.buildIcon(FontAwesome.STEP_BACKWARD,13));
-    stepBackwardButt.setToolTipText("Last image");
-    stepBackwardButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        stepBackwardButtActionPerformed(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
-    gridBagConstraints.weightx = 0.5;
-    buttonPan.add(stepBackwardButt, gridBagConstraints);
-
-    stepForwardButt.setIcon(IconFontSwing.buildIcon(FontAwesome.STEP_FORWARD,13));
-    stepForwardButt.setToolTipText("Next image");
-    stepForwardButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        stepForwardButtActionPerformed(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
-    gridBagConstraints.weightx = 0.5;
-    buttonPan.add(stepForwardButt, gridBagConstraints);
-
-    zoomButt.setIcon(IconFontSwing.buildIcon(FontAwesome.SEARCH_PLUS,13));
-    zoomButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        zoomButtActionPerformed(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
-    buttonPan.add(zoomButt, gridBagConstraints);
-
-    chooseFolderButt.setIcon(IconFontSwing.buildIcon(FontAwesome.FOLDER_OPEN_O,13));
-    chooseFolderButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        chooseFolderButtActionPerformed(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    buttonPan.add(chooseFolderButt, gridBagConstraints);
-
-    imagesPanel.add(buttonPan, java.awt.BorderLayout.SOUTH);
-
-    videoPanel.add(imagesPanel, "images");
-
-    cameraPanel.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(51, 255, 51)));
-    cameraPanel.setLayout(new java.awt.BorderLayout());
-
-    cameraImagePan.setLayout(new java.awt.BorderLayout());
-    cameraPanel.add(cameraImagePan, java.awt.BorderLayout.CENTER);
-
-    cameraButtonPan.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 255)));
-    cameraButtonPan.setLayout(new java.awt.GridBagLayout());
-
-    pauseButt.setIcon(IconFontSwing.buildIcon(FontAwesome.PAUSE,13));
-    pauseButt.setToolTipText("Pause");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
-    gridBagConstraints.weightx = 0.5;
-    cameraButtonPan.add(pauseButt, gridBagConstraints);
-
-    playButt.setIcon(IconFontSwing.buildIcon(FontAwesome.PLAY,13));
-    playButt.setToolTipText("Play");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
-    gridBagConstraints.weightx = 0.5;
-    cameraButtonPan.add(playButt, gridBagConstraints);
-
-    cameraPanel.add(cameraButtonPan, java.awt.BorderLayout.SOUTH);
-
-    videoPanel.add(cameraPanel, "camera");
-
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
-    gridBagConstraints.insets = new java.awt.Insets(5, 5, 0, 0);
-    getContentPane().add(videoPanel, gridBagConstraints);
-
-    decodeTableScroller.setViewportView(decodeTableGridBag);
-
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 1;
-    gridBagConstraints.gridy = 0;
-    gridBagConstraints.gridheight = java.awt.GridBagConstraints.REMAINDER;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
-    gridBagConstraints.weightx = 1.0;
-    gridBagConstraints.weighty = 1.0;
-    gridBagConstraints.insets = new java.awt.Insets(5, 0, 5, 5);
-    getContentPane().add(decodeTableScroller, gridBagConstraints);
-
-    chooseButt.setText("CHOOSE");
-    chooseButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        chooseButtActionPerformed(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 2;
-    getContentPane().add(chooseButt, gridBagConstraints);
-
-    loggerTA.setColumns(20);
-    loggerTA.setRows(5);
-    loggerTAScroller.setViewportView(loggerTA);
-
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 3;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
-    gridBagConstraints.weighty = 1.0;
-    gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 0);
-    getContentPane().add(loggerTAScroller, gridBagConstraints);
-
-    radioButtPan.setLayout(new java.awt.GridBagLayout());
-
-    radioGroup.add(cameraRadioButt);
-    cameraRadioButt.setText("camera");
-    cameraRadioButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        cameraRadioButtActionPerformed(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 0;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
-    radioButtPan.add(cameraRadioButt, gridBagConstraints);
-
-    radioGroup.add(imageDirRadioButt);
-    imageDirRadioButt.setSelected(true);
-    imageDirRadioButt.setText("image directory");
-    imageDirRadioButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        imageDirRadioButtActionPerformed(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 1;
-    gridBagConstraints.gridy = 0;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
-    radioButtPan.add(imageDirRadioButt, gridBagConstraints);
-
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 0;
-    getContentPane().add(radioButtPan, gridBagConstraints);
-
-    pack();
-  }// </editor-fold>//GEN-END:initComponents
-
-  private void chooseFolderButtActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_chooseFolderButtActionPerformed
-  {//GEN-HEADEREND:event_chooseFolderButtActionPerformed
-    chooseFolder();
-  }//GEN-LAST:event_chooseFolderButtActionPerformed
-
-  private void stepForwardButtActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_stepForwardButtActionPerformed
-  {//GEN-HEADEREND:event_stepForwardButtActionPerformed
-    stepForward();
-  }//GEN-LAST:event_stepForwardButtActionPerformed
-
-  private void stepBackwardButtActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_stepBackwardButtActionPerformed
-  {//GEN-HEADEREND:event_stepBackwardButtActionPerformed
-    stepBackward();
-  }//GEN-LAST:event_stepBackwardButtActionPerformed
-
-  private void chooseButtActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_chooseButtActionPerformed
-  {//GEN-HEADEREND:event_chooseButtActionPerformed
-    chooseFlag();
-  }//GEN-LAST:event_chooseButtActionPerformed
-
-  private void cameraRadioButtActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_cameraRadioButtActionPerformed
-  {//GEN-HEADEREND:event_cameraRadioButtActionPerformed
-    radioButtAction(evt);
-  }//GEN-LAST:event_cameraRadioButtActionPerformed
-
-  private void imageDirRadioButtActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_imageDirRadioButtActionPerformed
-  {//GEN-HEADEREND:event_imageDirRadioButtActionPerformed
-    radioButtAction(evt);
-  }//GEN-LAST:event_imageDirRadioButtActionPerformed
-
-  private void zoomButtActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_zoomButtActionPerformed
-  {//GEN-HEADEREND:event_zoomButtActionPerformed
-    zoomPressed();
-  }//GEN-LAST:event_zoomButtActionPerformed
-
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  private javax.swing.JButton backwardButt;
-  private javax.swing.JPanel buttonPan;
-  private javax.swing.JPanel cameraButtonPan;
-  private javax.swing.JPanel cameraImagePan;
-  private javax.swing.JPanel cameraPanel;
-  private javax.swing.JRadioButton cameraRadioButt;
-  private javax.swing.JButton chooseButt;
-  private javax.swing.JButton chooseFolderButt;
-  private edu.nps.moves.qrtda.elements.gui.DecodeTableGridBag decodeTableGridBag;
-  private javax.swing.JScrollPane decodeTableScroller;
-  private javax.swing.JRadioButton imageDirRadioButt;
-  private javax.swing.JPanel imagesPanel;
-  private javax.swing.JTextArea loggerTA;
-  private javax.swing.JScrollPane loggerTAScroller;
-  private javax.swing.JButton pauseButt;
-  private javax.swing.JButton playButt;
-  private javax.swing.JPanel radioButtPan;
-  private javax.swing.ButtonGroup radioGroup;
-  private javax.swing.JButton stepBackwardButt;
-  private javax.swing.JButton stepForwardButt;
-  private javax.swing.JButton stopButt;
-  private javax.swing.JPanel videoPanel;
-  private javax.swing.JButton zoomButt;
-  // End of variables declaration//GEN-END:variables
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/OpticalCommsDisplay.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/OpticalCommsDisplay.java
deleted file mode 100644
index fe4e846195c14dca33c10c930debe35496422ab4..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/OpticalCommsDisplay.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.elements.gui;
-
-import edu.nps.moves.qrtda.elements.gui.OpticalCommsIO.Orientation;
-import java.awt.Color;
-
-/**
- * OpticalCommsDisplay.java created on Apr 13, 2017
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public interface OpticalCommsDisplay
-{
-  /**
-   * Initialize the display with the given orientation.  
-   * Use the passed OpticalCommsIO object to always set the appropriate display and input component.
-   * @param io
-   * @param hv 
-   */
-  public void activate(OpticalCommsIO io, Orientation hv);
-  
-  /**
-   * Display the text at the given size.  If append = true, do not discard the existing display
-   * but insert a space character to separate the given text from the existing. The
-   * text parameter may be null or zero-length, which would serve to clear the display if append
-   * = false. This may be called with
-   * @param text
-   * @param size
-   * @param append 
-   */
-  public void display(String text, int size, boolean append);
-  
-/**
- * Show the existing text vertically or horizontally.  Use the OpticalCommsIO object given in the
- * activate call to change display or input widget;
- * @param orientation 
- */
-  public void setOrientation(Orientation orientation);
-  
-  /**
-   * May need to adjust foreground to make text readable against new background
-   * @param bg 
-   */
-  public void setBackground(Color bg);
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/OpticalCommsIO.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/OpticalCommsIO.java
deleted file mode 100644
index 19d022aebf2821013b3591b5b53c60400570d6e4..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/OpticalCommsIO.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.elements.gui;
-
-import edu.nps.moves.misc.TextObject;
-import javax.swing.JComponent;
-
-/**
- * OpticalCommsIO.java created on Apr 13, 2017
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public interface OpticalCommsIO
-{
-  /**
-   * This is the component, typically a JPanel, which displays the translated text.
-   * @param comp 
-   */
-  public void setDisplayComponent(JComponent comp);
-  
-  /**
-   * This is the component, normally including a JTextField, which the user will use to generate text
-   * for the display component to render.  In the current code, it should effectively occupy a single line
-   * in the GUI.
-   * @param comp 
-   */
-  public void setInputComponent(JComponent comp);
-  
-  /**
-   * This is called from an input component when text is entered
-   * @param s 
-   */
-  public void textEntered(String s);
-  
-  public void textEntered(TextObject to);
-  
-  public static enum Orientation {
-    HORIZONTAL,
-    VERTICAL
-  }
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/OpticalCommsNRPSplash.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/OpticalCommsNRPSplash.form
deleted file mode 100644
index 3ec9bdaa5887271d8582f56a93c4f89a0f42ba5e..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/OpticalCommsNRPSplash.form
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
-  <Properties>
-    <Property name="defaultCloseOperation" type="int" value="2"/>
-    <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-      <Dimension value="[900, 500]"/>
-    </Property>
-  </Properties>
-  <SyntheticProperties>
-    <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
-    <SyntheticProperty name="generateCenter" type="boolean" value="false"/>
-  </SyntheticProperties>
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,2,29,0,0,3,-61"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout">
-    <Property name="useNullLayout" type="boolean" value="true"/>
-  </Layout>
-  <SubComponents>
-    <Component class="javax.swing.JLabel" name="lab">
-      <Properties>
-        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-          <Border info="org.netbeans.modules.form.compat2.border.SoftBevelBorderInfo">
-            <BevelBorder/>
-          </Border>
-        </Property>
-        <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
-          <Color id="Hand Cursor"/>
-        </Property>
-      </Properties>
-      <Events>
-        <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="mouseClickHandler"/>
-      </Events>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
-          <AbsoluteConstraints x="0" y="0" width="900" height="500"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="clickLab">
-      <Properties>
-        <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
-          <Font name="Lucida Grande" size="13" style="2"/>
-        </Property>
-        <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
-          <Color blue="80" green="80" id="gray" palette="1" red="80" type="palette"/>
-        </Property>
-        <Property name="text" type="java.lang.String" value="click to continue"/>
-        <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
-          <Color id="Hand Cursor"/>
-        </Property>
-      </Properties>
-      <Events>
-        <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="mouseClickHandler"/>
-      </Events>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout" value="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout$AbsoluteConstraintsDescription">
-          <AbsoluteConstraints x="370" y="290" width="-1" height="-1"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-  </SubComponents>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/OpticalCommsNRPSplash.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/OpticalCommsNRPSplash.java
deleted file mode 100644
index 1fd8d129134201cbfc56e10caa56b272cd45b315..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/OpticalCommsNRPSplash.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements.gui;
-
-import javax.swing.JDialog;
-import javax.swing.JFrame;
-import java.awt.Image;
-import java.awt.image.BufferedImage;
-import java.io.IOException;
-import javax.imageio.ImageIO;
-import javax.swing.ImageIcon;
-import static edu.nps.moves.qrtda.elements.gui.OpticalCommsConstants.SAILOR_SPLASH_IMAGE;
-/**
- * OpticalCommsNRPSplash.java created on Apr 21, 2017 MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class OpticalCommsNRPSplash extends JDialog
-{
-  JFrame parent;
-
-  public OpticalCommsNRPSplash(JFrame parent, boolean modal)
-  {
-    super(parent, modal);
-    this.parent = parent;
-    super.setUndecorated(true);
-
-    initComponents();
-
-    try { 
-      BufferedImage img = ImageIO.read(getClass().getResource(SAILOR_SPLASH_IMAGE));
-      lab.setIcon(new ImageIcon(img.getScaledInstance(900, -1, Image.SCALE_SMOOTH)));
-    }
-    catch (IOException ex) {
-      throw new RuntimeException("Can't load splash image");
-    }
-    super.getContentPane().setComponentZOrder(clickLab, 0);  // on top,  max (lowest) is componentcount-1
-
-  }
-
-  @Override
-  public void setVisible(boolean b)
-  {
-    setLocationRelativeTo(parent);
-    super.setVisible(b);
-  }
-
-  /**
-   * This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The content of this method is always regenerated by the Form Editor.
-   */
-
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-
-    lab = new javax.swing.JLabel();
-    clickLab = new javax.swing.JLabel();
-
-    setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
-    setPreferredSize(new java.awt.Dimension(900, 500));
-    getContentPane().setLayout(null);
-
-    lab.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
-    lab.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
-    lab.addMouseListener(new java.awt.event.MouseAdapter()
-    {
-      public void mouseClicked(java.awt.event.MouseEvent evt)
-      {
-        mouseClickHandler(evt);
-      }
-    });
-    getContentPane().add(lab);
-    lab.setBounds(0, 0, 900, 500);
-
-    clickLab.setFont(new java.awt.Font("Lucida Grande", 2, 13)); // NOI18N
-    clickLab.setForeground(java.awt.Color.gray);
-    clickLab.setText("click to continue");
-    clickLab.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
-    clickLab.addMouseListener(new java.awt.event.MouseAdapter()
-    {
-      public void mouseClicked(java.awt.event.MouseEvent evt)
-      {
-        mouseClickHandler(evt);
-      }
-    });
-    getContentPane().add(clickLab);
-    clickLab.setBounds(370, 290, 106, 16);
-
-    pack();
-  }// </editor-fold>//GEN-END:initComponents
-
-  private void mouseClickHandler(java.awt.event.MouseEvent evt)//GEN-FIRST:event_mouseClickHandler
-  {//GEN-HEADEREND:event_mouseClickHandler
-    setVisible(false);
-    dispose();
-  }//GEN-LAST:event_mouseClickHandler
-
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  private javax.swing.JLabel clickLab;
-  private javax.swing.JLabel lab;
-  // End of variables declaration//GEN-END:variables
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/OpticalCommsWindow.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/OpticalCommsWindow.form
deleted file mode 100644
index 69c8f9f7b3bf214be801c02edee6cb29b1d9074c..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/OpticalCommsWindow.form
+++ /dev/null
@@ -1,412 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.8" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
-  <NonVisualComponents>
-    <Component class="javax.swing.JButton" name="backButt">
-      <Properties>
-        <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
-          <Connection code="IconFontSwing.buildIcon(FontAwesome.BACKWARD,13)" type="code"/>
-        </Property>
-        <Property name="toolTipText" type="java.lang.String" value=""/>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="backwardPressed"/>
-      </Events>
-    </Component>
-    <Component class="javax.swing.JButton" name="playStopButt">
-      <Properties>
-        <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
-          <Connection code="IconFontSwing.buildIcon(FontAwesome.PLAY,13)" type="code"/>
-        </Property>
-        <Property name="toolTipText" type="java.lang.String" value="Play displayed Morse message"/>
-        <Property name="actionCommand" type="java.lang.String" value="play"/>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="pausePlayPressed"/>
-      </Events>
-    </Component>
-    <Component class="javax.swing.JButton" name="forwardButt">
-      <Properties>
-        <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
-          <Connection code="IconFontSwing.buildIcon(FontAwesome.FORWARD,13)" type="code"/>
-        </Property>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="forwardPressed"/>
-      </Events>
-    </Component>
-    <Component class="javax.swing.JCheckBox" name="audioCB">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="audio auto-play"/>
-        <Property name="toolTipText" type="java.lang.String" value=""/>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="autoPlayCBHandler"/>
-      </Events>
-    </Component>
-    <Component class="edu.nps.moves.qrtda.elements.gui.SignalFlagsOpticalDisplay" name="signalFlagsOpticalDisplay">
-    </Component>
-    <Component class="edu.nps.moves.qrtda.elements.gui.SemaphoreOpticalDisplay" name="semaphoreOpticalDisplay">
-    </Component>
-    <Component class="edu.nps.moves.qrtda.elements.gui.MorseOpticalDisplay" name="morseOpticalDisplay">
-    </Component>
-    <Component class="edu.nps.moves.qrtda.elements.gui.CompositeOpticalDisplay" name="compositeOpticalDisplay">
-    </Component>
-    <Component class="javax.swing.ButtonGroup" name="orientationBG">
-    </Component>
-  </NonVisualComponents>
-  <Properties>
-    <Property name="defaultCloseOperation" type="int" value="3"/>
-  </Properties>
-  <SyntheticProperties>
-    <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
-    <SyntheticProperty name="generateCenter" type="boolean" value="false"/>
-  </SyntheticProperties>
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,2,-91,0,0,2,-43"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-  <SubComponents>
-    <Container class="javax.swing.JPanel" name="topPan">
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="-1" gridY="-1" gridWidth="0" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="5" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-
-      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-      <SubComponents>
-        <Component class="javax.swing.JComboBox" name="backgroundCombo">
-          <Properties>
-            <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
-              <Connection code="new DefaultComboBoxModel(BACKGROUNDS)" type="code"/>
-            </Property>
-            <Property name="toolTipText" type="java.lang.String" value="&lt;html&gt;Choose background color of display&lt;p&gt;(make a separate choice for each medium)"/>
-          </Properties>
-          <Events>
-            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="backgroundColorHandler"/>
-          </Events>
-          <AuxValues>
-            <AuxValue name="JavaCodeGenerator_TypeParameters" type="java.lang.String" value="&lt;String&gt;"/>
-          </AuxValues>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="-1" gridY="-1" gridWidth="2" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-        <Component class="javax.swing.JLabel" name="titleLab">
-          <Properties>
-            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
-              <Font name="Lucida Grande" size="24" style="1"/>
-            </Property>
-            <Property name="horizontalAlignment" type="int" value="0"/>
-            <Property name="toolTipText" type="java.lang.String" value=""/>
-          </Properties>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="-1" gridY="-1" gridWidth="9" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="5" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="11" weightX="1.0" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-        <Component class="javax.swing.JRadioButton" name="orientationHorizontalRB">
-          <Properties>
-            <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
-              <ComponentRef name="orientationBG"/>
-            </Property>
-            <Property name="selected" type="boolean" value="true"/>
-            <Property name="text" type="java.lang.String" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
-              <Connection code="ORIENTATIONHORIZONTAL" type="code"/>
-            </Property>
-            <Property name="toolTipText" type="java.lang.String" value="&lt;html&gt;Select to view images horizontally&lt;p&gt;(make a separate choice for each medium)"/>
-          </Properties>
-          <Events>
-            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="horizVertHandler"/>
-          </Events>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-        <Component class="javax.swing.JRadioButton" name="orientationVerticalRB">
-          <Properties>
-            <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
-              <ComponentRef name="orientationBG"/>
-            </Property>
-            <Property name="text" type="java.lang.String" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
-              <Connection code="ORIENTATIONVERTICAL" type="code"/>
-            </Property>
-            <Property name="toolTipText" type="java.lang.String" value="&lt;html&gt;Select to view images vertically&lt;p&gt;(make a separate choice for each medium)"/>
-          </Properties>
-          <Events>
-            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="horizVertHandler"/>
-          </Events>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-      </SubComponents>
-    </Container>
-    <Container class="javax.swing.JScrollPane" name="scrollPane">
-      <Properties>
-        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-          <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
-            <EtchetBorder/>
-          </Border>
-        </Property>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="-1" gridY="1" gridWidth="0" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="1.0"/>
-        </Constraint>
-      </Constraints>
-
-      <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
-    </Container>
-    <Container class="javax.swing.JPanel" name="buttonPan">
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="2" gridWidth="0" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="5" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-
-      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-      <SubComponents>
-        <Component class="javax.swing.JLabel" name="jLabel1">
-          <Properties>
-            <Property name="text" type="java.lang.String" value="medium"/>
-            <Property name="toolTipText" type="java.lang.String" value=""/>
-          </Properties>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="0" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="8" insetsBottom="0" insetsRight="8" anchor="10" weightX="0.0" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-        <Component class="javax.swing.JComboBox" name="modeCombo">
-          <Properties>
-            <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
-              <Connection code="new DefaultComboBoxModel(MODES)" type="code"/>
-            </Property>
-            <Property name="toolTipText" type="java.lang.String" value="&lt;html&gt;Choose to view text as&lt;p&gt;&amp;nbsp;&amp;nbsp;1 morse code&lt;p&gt;&amp;nbsp;&amp;nbsp;2 signal flags&lt;p&gt;&amp;nbsp;&amp;nbsp;3 semaphore flags&lt;p&gt;&amp;nbsp;&amp;nbsp;4 a composite of all 3&lt;/html&gt;"/>
-          </Properties>
-          <Events>
-            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="modeChanged"/>
-          </Events>
-          <AuxValues>
-            <AuxValue name="JavaCodeGenerator_TypeParameters" type="java.lang.String" value="&lt;String&gt;"/>
-          </AuxValues>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="1" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="5" anchor="17" weightX="0.0" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-        <Component class="javax.swing.JLabel" name="volLab">
-          <Properties>
-            <Property name="text" type="java.lang.String" value="volume"/>
-          </Properties>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="2" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="11" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-        <Component class="javax.swing.JSlider" name="volumeSlider">
-          <Properties>
-            <Property name="maximum" type="int" value="10"/>
-            <Property name="minimum" type="int" value="-10"/>
-            <Property name="snapToTicks" type="boolean" value="true"/>
-            <Property name="toolTipText" type="java.lang.String" value="Adjust volume of morse audio"/>
-            <Property name="value" type="int" value="0"/>
-            <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-              <Dimension value="[100, 29]"/>
-            </Property>
-            <Property name="requestFocusEnabled" type="boolean" value="false"/>
-          </Properties>
-          <Events>
-            <EventHandler event="stateChanged" listener="javax.swing.event.ChangeListener" parameters="javax.swing.event.ChangeEvent" handler="volumeHandler"/>
-          </Events>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="3" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-        <Component class="javax.swing.JCheckBox" name="appendCB">
-          <Properties>
-            <Property name="text" type="java.lang.String" value="append"/>
-            <Property name="toolTipText" type="java.lang.String" value="Check to append to, not replace, the current images"/>
-          </Properties>
-          <Events>
-            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="appendCBHandler"/>
-          </Events>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="4" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-        <Component class="javax.swing.JLabel" name="zoomLab">
-          <Properties>
-            <Property name="text" type="java.lang.String" value="zoom"/>
-            <Property name="toolTipText" type="java.lang.String" value=""/>
-          </Properties>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="5" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="5" anchor="10" weightX="0.0" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-        <Component class="javax.swing.JButton" name="plusButt">
-          <Properties>
-            <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
-              <Connection code="IconFontSwing.buildIcon(FontAwesome.PLUS,13)" type="code"/>
-            </Property>
-            <Property name="toolTipText" type="java.lang.String" value="&lt;html&gt;Show larger images&lt;p&gt;(make a separate choice for each medium)"/>
-            <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-              <Dimension value="[20, 29]"/>
-            </Property>
-          </Properties>
-          <Events>
-            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="plusHandler"/>
-          </Events>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="6" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="5" anchor="13" weightX="0.0" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-        <Component class="javax.swing.JButton" name="minusButt">
-          <Properties>
-            <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
-              <Connection code="IconFontSwing.buildIcon(FontAwesome.MINUS,13)" type="code"/>
-            </Property>
-            <Property name="toolTipText" type="java.lang.String" value="&lt;html&gt;Show smaller images&lt;p&gt;(make a separate choice for each medium)"/>
-            <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-              <Dimension value="[20, 29]"/>
-            </Property>
-          </Properties>
-          <Events>
-            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="minusHandler"/>
-          </Events>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="7" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="5" anchor="17" weightX="0.0" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-      </SubComponents>
-    </Container>
-    <Container class="javax.swing.JPanel" name="entryHolder">
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="5" gridWidth="11" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="5" insetsLeft="0" insetsBottom="5" insetsRight="0" anchor="10" weightX="1.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-
-      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
-    </Container>
-    <Component class="javax.swing.JButton" name="clearButt">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="clear"/>
-        <Property name="toolTipText" type="java.lang.String" value="Clear text field and image display"/>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="clearHandler"/>
-      </Events>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="11" gridY="5" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="5" insetsLeft="0" insetsBottom="5" insetsRight="0" anchor="13" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="logLab">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="log"/>
-        <Property name="toolTipText" type="java.lang.String" value=""/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="6" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="5" insetsBottom="0" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Container class="javax.swing.JPanel" name="jPanel1">
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="7" gridWidth="0" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-
-      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-      <SubComponents>
-        <Container class="javax.swing.JScrollPane" name="textScroller">
-          <Properties>
-            <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-              <Dimension value="[198, 83]"/>
-            </Property>
-          </Properties>
-          <AuxValues>
-            <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
-          </AuxValues>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="0" gridY="7" gridWidth="11" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="5" insetsBottom="5" insetsRight="5" anchor="10" weightX="1.0" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-
-          <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
-          <SubComponents>
-            <Component class="javax.swing.JTextArea" name="loggingTA">
-              <Properties>
-                <Property name="editable" type="boolean" value="false"/>
-                <Property name="columns" type="int" value="20"/>
-                <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
-                  <Font name="Lucida Grande" size="10" style="0"/>
-                </Property>
-                <Property name="rows" type="int" value="5"/>
-                <Property name="toolTipText" type="java.lang.String" value="View application events"/>
-                <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-                  <Dimension value="[12, 200]"/>
-                </Property>
-              </Properties>
-              <AuxValues>
-                <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
-              </AuxValues>
-            </Component>
-          </SubComponents>
-        </Container>
-        <Component class="javax.swing.JButton" name="logoButt">
-          <Properties>
-            <Property name="toolTipText" type="java.lang.String" value="&lt;html&gt;&lt;center&gt;Naval Research Program&lt;br/&gt;Click to visit web page&lt;/center&gt;&lt;/html&gt;"/>
-            <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
-              <Color id="Hand Cursor"/>
-            </Property>
-          </Properties>
-          <Events>
-            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="logoButtClicked"/>
-          </Events>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="11" gridY="7" gridWidth="1" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="5" insetsRight="5" anchor="10" weightX="0.0" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-      </SubComponents>
-    </Container>
-  </SubComponents>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/OpticalCommsWindow.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/OpticalCommsWindow.java
deleted file mode 100644
index 16430a61e204f37190bfc2fd61effc3bfdb8d804..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/OpticalCommsWindow.java
+++ /dev/null
@@ -1,954 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.elements.gui;
-
-import edu.nps.moves.misc.TextObject;
-import edu.nps.moves.qrtda.QRPreferences;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.QRFlowLink;
-import static edu.nps.moves.qrtda.elements.SailorImageCreator.SAILORMEDIUM;
-import static edu.nps.moves.qrtda.elements.SailorImageDisplayer.SAILORMORSEAUDIOAUTOPLAY;
-import edu.nps.moves.qrtda.elements.misc.SailorText.SailorMedium;
-import edu.nps.moves.qrtda.sound.SoundPlayer;
-import java.awt.*;
-import javax.swing.JFrame;
-import javax.swing.Timer;
-import javax.swing.*;
-import jiconfont.icons.FontAwesome;
-import jiconfont.swing.IconFontSwing;
-import static edu.nps.moves.qrtda.elements.gui.OpticalCommsConstants.*;
-import java.awt.event.ComponentAdapter;
-import java.awt.event.ComponentEvent;
-import java.awt.image.BufferedImage;
-import java.io.IOException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-import javax.imageio.ImageIO;
-
-/**
- * SailorWindow.java created on Feb 28, 2017
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class OpticalCommsWindow extends JFrame implements OpticalCommsIO
-{
-  private final QRFlowLink<?,?> qlink;
-  private final TdaEnvironment env;
-  private final int SIZE_DEFAULT = 100;
-  private final int SIZE_MIN = 25;
-  private final int SIZE_INCR = 5;
-  private final int VOLUME_MINIMUM = -40;
-  private final StringBuilder currentTextSB = new StringBuilder();
-  private final StringBuilder currentTextSBUnicode = new StringBuilder();
-  private int componentSize = SIZE_DEFAULT;
-  
-  private boolean eventHandlersOn = false;
-  private OpticalCommsDisplay currentDisplay;
-  private OpticalCommsNRPSplash splash;
-  public OpticalCommsWindow(QRFlowLink<?,?> qlink, TdaEnvironment env)
-  {
-    //QRPreferences.getInstance().dumpPreferences();
-    QRPreferences prefs = QRPreferences.getInstance();
-    
-    this.qlink = qlink;   
-    this.env = env;
-
-    IconFontSwing.register(FontAwesome.getIconFont());
-
-    eventHandlersOn = false;
-    initComponents();
-    
-    super.setTitle(WINDOWTITLE);  
-
-    super.getRootPane().setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
-    
-    modeCombo.setSelectedItem(env.getOptionValue(SAILORMEDIUM));
-
-    backButt.setVisible(false);
-    forwardButt.setVisible(false);
-
-    loadImages();
-    
-    calibrateVolumeSlider();
-    volumeSlider.setValue(Integer.parseInt(prefs.get(SAILORVOLUME_KEY, ""+0)));
-    
-    eventHandlersOn = true;
-    
-    modeChanged(null);
-    
-    int x = Integer.parseInt(prefs.get(OPTICALCOMMSWINDOW_X_KEY, OPTICALCOMMSWINDOW_X_DEFAULT));
-    int y = Integer.parseInt(prefs.get(OPTICALCOMMSWINDOW_Y_KEY, OPTICALCOMMSWINDOW_Y_DEFAULT));
-    int w = Integer.parseInt(prefs.get(OPTICALCOMMSWINDOW_W_KEY, OPTICALCOMMSWINDOW_W_DEFAULT));
-    int h = Integer.parseInt(prefs.get(OPTICALCOMMSWINDOW_H_KEY, OPTICALCOMMSWINDOW_H_DEFAULT));
-    super.setBounds(x, y, w, h);
-    
-    splash = new OpticalCommsNRPSplash(this,true);
-    Timer swingTimer = new Timer(250,e->splash.setVisible(true));
-    swingTimer.setRepeats(false);
-    swingTimer.start();
-    
-    super.addComponentListener(new ComponentAdapter() {
-      @Override
-      public void componentMoved(ComponentEvent e)
-      {
-        Point p = OpticalCommsWindow.this.getLocation();
-        QRPreferences prefs = QRPreferences.getInstance();
-        prefs.put(OPTICALCOMMSWINDOW_X_KEY, ""+p.x);
-        prefs.put(OPTICALCOMMSWINDOW_Y_KEY, ""+p.y);
-      }
-      @Override
-      public void componentResized(ComponentEvent e)
-      {
-        Dimension d = OpticalCommsWindow.this.getSize();
-        QRPreferences prefs = QRPreferences.getInstance();
-        prefs.put(OPTICALCOMMSWINDOW_W_KEY, ""+d.width);
-        prefs.put(OPTICALCOMMSWINDOW_H_KEY, ""+d.height);
-      }    
-    });
-  }
-  
-  private void loadImages()
-  {
-    try {
-      BufferedImage img = ImageIO.read(getClass().getResource(SAILOR_LOGO_BUTTON_IMAGE));
-      logoButt.setIcon(new ImageIcon(img.getScaledInstance(-1, SAILOR_LOGO_BUTTON_HEIGHT, Image.SCALE_SMOOTH)));
-      
-    }
-    catch (IOException ex) {
-      Logger.getLogger(OpticalCommsWindow.class.getName()).log(Level.SEVERE, null, ex);
-    }
-  }
-  private Orientation decodeOrientationCombo()
-  {
-    if(orientationHorizontalRB.isSelected())
-      return Orientation.HORIZONTAL;
-    return Orientation.VERTICAL;
-  }
-  
-  private void handleSwitchToSemaphore()
-  {
-    handleSwitch(semaphoreOpticalDisplay,SAILORSEMAPHOREORIENTATION_KEY,SAILORSEMAPHOREAPPEND_KEY,SAILORSEMAPHOREBACKGROUND_KEY,SAILORSEMAPHOREZOOM_KEY);
-  }
-  
-  private void handleSwitchToMorse()
-  {
-    handleSwitch(morseOpticalDisplay,SAILORMORSEORIENTATION_KEY,SAILORMORSEAPPEND_KEY,SAILORMORSEBACKGROUND_KEY,SAILORMORSEZOOM_KEY);
-    audioCB.setEnabled(true);
-    playStopButt.setEnabled(true);
-  }
-  
-  private void handleSwitchToComposite()
-  {
-    handleSwitch(compositeOpticalDisplay,SAILORCOMPOSITEORIENTATION_KEY,SAILORCOMPOSITEAPPEND_KEY,SAILORCOMPOSITEBACKGROUND_KEY,SAILORCOMPOSITEZOOM_KEY);
-  }
-  
-  private void handleSwitchToFlags()
-  {
-    handleSwitch(signalFlagsOpticalDisplay,SAILORFLAGSORIENTATION_KEY,SAILORFLAGSAPPEND_KEY,SAILORFLAGSBACKGROUND_KEY,SAILORFLAGSZOOM_KEY);    
-  }
-  
-  private void handleSwitch(OpticalCommsDisplay disp, String orientKey, String appendKey, String backgrKey, String zoomKey)
-  {
-    audioCB.setEnabled(false);
-    playStopButt.setEnabled(false);
-
-    eventHandlersOn=false;
-      audioCB.setSelected(Boolean.parseBoolean(env.getOptionValue(SAILORMORSEAUDIOAUTOPLAY)));
-      if(QRPreferences.getInstance().get(orientKey,ORIENTATIONHORIZONTAL).equals(ORIENTATIONHORIZONTAL))
-        orientationHorizontalRB.doClick();
-      else
-        orientationVerticalRB.doClick();
-      currentDisplay = disp;
-      currentDisplay.activate(this, decodeOrientationCombo());
-    
-      appendCB.setSelected(Boolean.parseBoolean(QRPreferences.getInstance().get(appendKey,"false")));
-    eventHandlersOn=true;
-    
-    backgroundCombo.setSelectedItem(QRPreferences.getInstance().get(backgrKey,BACKGROUNDWHITE));
-    int zoom = Integer.parseInt(QRPreferences.getInstance().get(zoomKey,""+SIZE_DEFAULT));
-    loggingTA.append("zoom "+zoom + LINEEND);
-    setComponentSize(zoom);    
-  }
-
-  /* thise three methods are specified by the OpticalCommsIO i/f and are hit by the current OpticalCommDisplay*/
-  private JComponent displayComponent;
-  @Override
-  public void setDisplayComponent(JComponent comp)
-  {
-    displayComponent = comp;
-    scrollPane.setViewportView(comp);
-  }
-
-  @Override
-  public void setInputComponent(JComponent comp)
-  {
-    entryHolder.removeAll();
-    entryHolder.add(comp,BorderLayout.CENTER);
-    entryHolder.revalidate();
-  }
-
-  @Override
-  public void textEntered(String s)
-  {
-    boolean append = appendCB.isSelected();
-    currentDisplay.display(s, componentSize, append);  
-    SwingUtilities.invokeLater(bottomScroller);
-
-    if(currentTextSB.length()>0){currentTextSB.append(' ');currentTextSBUnicode.append(' ');}
-    if(!append){
-      currentTextSB.setLength(0);
-      currentTextSBUnicode.setLength(0);
-    }
-    currentTextSB.append(s.trim());
-    currentTextSBUnicode.append((s.trim()));
-  
-  
-    titleLab.setText(currentTextSB.toString().toUpperCase());
-    loggingTA.append(s+LINEEND);
-    
-    if(volumeSlider.getValue()>VOLUME_MINIMUM)
-      if(isMorse())
-        SoundPlayer.playMorse(s.toCharArray());
-      else
-        SoundPlayer.playPhonetic(s.toCharArray());  
-  }
-
-  @Override
-  public void textEntered(TextObject to)
-  {
-    boolean append = appendCB.isSelected();
-    currentDisplay.display(to.unicode, componentSize, append);  
-    SwingUtilities.invokeLater(bottomScroller);
-
-    if(currentTextSB.length()>0){currentTextSB.append(' ');currentTextSBUnicode.append(' ');}
-    if(!append) {
-      currentTextSB.setLength(0); currentTextSBUnicode.setLength(0);}
-    currentTextSB.append(to.ascii.trim());
-    currentTextSBUnicode.append(to.unicode.trim());
-  
-    titleLab.setText(currentTextSB.toString().toUpperCase());
-    loggingTA.append(to.ascii+LINEEND);
-    
-    if(volumeSlider.getValue()>VOLUME_MINIMUM)
-      if(isMorse())
-        SoundPlayer.playMorse(to.ascii.toCharArray());
-      else
-        SoundPlayer.playPhonetic(to.ascii.toCharArray());
-  }
-  
-  Runnable bottomScroller = new Runnable()
-  {
-    @Override
-    public void run()
-    {
-      Dimension vpSize = scrollPane.getViewport().getExtentSize();
-      Dimension dSize = displayComponent.getSize();
-
-      int width = dSize.width - vpSize.width;
-      int height = dSize.height - vpSize.height;
-      if(orientationVerticalRB.isSelected())
-        scrollPane.getViewport().setViewPosition(new Point(width, 0));
-      else
-        scrollPane.getViewport().setViewPosition(new Point(0, height));
-    }
-  };
-  
-  public SailorMedium getSailorMedium()
-  {
-    switch(modeCombo.getSelectedItem().toString()) {
-      case MODEMORSE:
-        return SailorMedium.MORSE;
-      case MODEFLAGS:
-        return SailorMedium.FLAGS;
-      case MODESEMAPHORE:
-        return SailorMedium.SEMAPHORE;
-      default: //case MODECOMPOSITE:
-        return SailorMedium.COMPOSITE;
-    }
-  }
-  
-  public int getImageSize()
-  {
-    return componentSize;
-  }
-  
-  private void calibrateVolumeSlider()
-  {
-    int[] mm = SoundPlayer.getVolumeSliderMinMax();
-    volumeSlider.setMinimum(VOLUME_MINIMUM); //mm[0]);
-    volumeSlider.setMaximum(mm[1]);
-  }
-  
-  private void setComponentSize(int sz)
-  {
-    componentSize = sz;
-    minusButt.setEnabled(componentSize > SIZE_MIN);
-  }
-
-  private void reload()
-  {
-    boolean append = appendCB.isSelected();
-    appendCB.setSelected(false); // replace
-    
-    switch (getSailorMedium()) {
-      case COMPOSITE:
-        handleSwitchToComposite();
-        break;
-      case MORSE:
-        handleSwitchToMorse();
-        break;
-      case FLAGS:
-        handleSwitchToFlags();
-        break;
-      case SEMAPHORE:
-        handleSwitchToSemaphore();
-        break;
-    }
-    currentDisplay.display(currentTextSBUnicode.toString(),componentSize,false); //currentTextSB.toString(), componentSize, false);
-    appendCB.setSelected(append);
-  }
-  
-  private void saveZoomValue(int sz)
-  {
-    switch (getSailorMedium()) {
-      case COMPOSITE:
-        QRPreferences.getInstance().put(SAILORCOMPOSITEZOOM_KEY, ""+sz);
-        break;
-      case MORSE:
-        QRPreferences.getInstance().put(SAILORMORSEZOOM_KEY, ""+sz);
-        break;
-      case FLAGS:
-        QRPreferences.getInstance().put(SAILORFLAGSZOOM_KEY, ""+sz);
-        break;
-      case SEMAPHORE:
-        QRPreferences.getInstance().put(SAILORSEMAPHOREZOOM_KEY, ""+sz);
-        break;
-    }
-  }
-  
-  private void saveBackground(String s)
-  {
-    switch (getSailorMedium()) {
-     case COMPOSITE:
-        QRPreferences.getInstance().put(SAILORCOMPOSITEBACKGROUND_KEY, s);
-        break;
-      case MORSE:
-        QRPreferences.getInstance().put(SAILORMORSEBACKGROUND_KEY,s);
-        break;
-      case FLAGS:
-        QRPreferences.getInstance().put(SAILORFLAGSBACKGROUND_KEY,s);
-        break;
-      case SEMAPHORE:
-        QRPreferences.getInstance().put(SAILORSEMAPHOREBACKGROUND_KEY,s);
-        break;
-    }
-  }
-  
-  private void saveOrientation(String s)
-  {
-    switch (getSailorMedium()) {
-     case COMPOSITE:
-        QRPreferences.getInstance().put(SAILORCOMPOSITEORIENTATION_KEY, s);
-        break;
-      case MORSE:
-        QRPreferences.getInstance().put(SAILORMORSEORIENTATION_KEY,s);
-        break;
-      case FLAGS:
-        QRPreferences.getInstance().put(SAILORFLAGSORIENTATION_KEY,s);
-        break;
-      case SEMAPHORE:
-        QRPreferences.getInstance().put(SAILORSEMAPHOREORIENTATION_KEY,s);
-        break;
-    }   
-  }
-  
-  private boolean isMorse()
-  {
-    return modeCombo.getSelectedItem().toString().equals(MODEMORSE);
-  }
-  
-  /** This method is called from within the constructor to
-   * initialize the form.
-   * WARNING: Do NOT modify this code. The content of this method is
-   * always regenerated by the Form Editor.
-   */
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-    java.awt.GridBagConstraints gridBagConstraints;
-
-    backButt = new javax.swing.JButton();
-    playStopButt = new javax.swing.JButton();
-    forwardButt = new javax.swing.JButton();
-    audioCB = new javax.swing.JCheckBox();
-    signalFlagsOpticalDisplay = new edu.nps.moves.qrtda.elements.gui.SignalFlagsOpticalDisplay();
-    semaphoreOpticalDisplay = new edu.nps.moves.qrtda.elements.gui.SemaphoreOpticalDisplay();
-    morseOpticalDisplay = new edu.nps.moves.qrtda.elements.gui.MorseOpticalDisplay();
-    compositeOpticalDisplay = new edu.nps.moves.qrtda.elements.gui.CompositeOpticalDisplay();
-    orientationBG = new javax.swing.ButtonGroup();
-    topPan = new javax.swing.JPanel();
-    backgroundCombo = new javax.swing.JComboBox<>();
-    titleLab = new javax.swing.JLabel();
-    orientationHorizontalRB = new javax.swing.JRadioButton();
-    orientationVerticalRB = new javax.swing.JRadioButton();
-    scrollPane = new javax.swing.JScrollPane();
-    buttonPan = new javax.swing.JPanel();
-    jLabel1 = new javax.swing.JLabel();
-    modeCombo = new javax.swing.JComboBox<>();
-    volLab = new javax.swing.JLabel();
-    volumeSlider = new javax.swing.JSlider();
-    appendCB = new javax.swing.JCheckBox();
-    zoomLab = new javax.swing.JLabel();
-    plusButt = new javax.swing.JButton();
-    minusButt = new javax.swing.JButton();
-    entryHolder = new javax.swing.JPanel();
-    clearButt = new javax.swing.JButton();
-    logLab = new javax.swing.JLabel();
-    jPanel1 = new javax.swing.JPanel();
-    textScroller = new javax.swing.JScrollPane();
-    loggingTA = new javax.swing.JTextArea();
-    logoButt = new javax.swing.JButton();
-
-    backButt.setIcon(IconFontSwing.buildIcon(FontAwesome.BACKWARD,13));
-    backButt.setToolTipText("");
-    backButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        backwardPressed(evt);
-      }
-    });
-
-    playStopButt.setIcon(IconFontSwing.buildIcon(FontAwesome.PLAY,13));
-    playStopButt.setToolTipText("Play displayed Morse message");
-    playStopButt.setActionCommand("play");
-    playStopButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        pausePlayPressed(evt);
-      }
-    });
-
-    forwardButt.setIcon(IconFontSwing.buildIcon(FontAwesome.FORWARD,13));
-    forwardButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        forwardPressed(evt);
-      }
-    });
-
-    audioCB.setText("audio auto-play");
-    audioCB.setToolTipText("");
-    audioCB.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        autoPlayCBHandler(evt);
-      }
-    });
-
-    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
-    getContentPane().setLayout(new java.awt.GridBagLayout());
-
-    topPan.setLayout(new java.awt.GridBagLayout());
-
-    backgroundCombo.setModel(new DefaultComboBoxModel(BACKGROUNDS));
-    backgroundCombo.setToolTipText("<html>Choose background color of display<p>(make a separate choice for each medium)");
-    backgroundCombo.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        backgroundColorHandler(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridwidth = 2;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
-    topPan.add(backgroundCombo, gridBagConstraints);
-
-    titleLab.setFont(new java.awt.Font("Lucida Grande", 1, 24)); // NOI18N
-    titleLab.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
-    titleLab.setToolTipText("");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridwidth = 9;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
-    gridBagConstraints.weightx = 1.0;
-    gridBagConstraints.insets = new java.awt.Insets(5, 0, 0, 0);
-    topPan.add(titleLab, gridBagConstraints);
-
-    orientationBG.add(orientationHorizontalRB);
-    orientationHorizontalRB.setSelected(true);
-    orientationHorizontalRB.setText(ORIENTATIONHORIZONTAL);
-    orientationHorizontalRB.setToolTipText("<html>Select to view images horizontally<p>(make a separate choice for each medium)");
-    orientationHorizontalRB.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        horizVertHandler(evt);
-      }
-    });
-    topPan.add(orientationHorizontalRB, new java.awt.GridBagConstraints());
-
-    orientationBG.add(orientationVerticalRB);
-    orientationVerticalRB.setText(ORIENTATIONVERTICAL);
-    orientationVerticalRB.setToolTipText("<html>Select to view images vertically<p>(make a separate choice for each medium)");
-    orientationVerticalRB.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        horizVertHandler(evt);
-      }
-    });
-    topPan.add(orientationVerticalRB, new java.awt.GridBagConstraints());
-
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0);
-    getContentPane().add(topPan, gridBagConstraints);
-
-    scrollPane.setBorder(javax.swing.BorderFactory.createEtchedBorder());
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
-    gridBagConstraints.weighty = 1.0;
-    getContentPane().add(scrollPane, gridBagConstraints);
-
-    buttonPan.setLayout(new java.awt.GridBagLayout());
-
-    jLabel1.setText("medium");
-    jLabel1.setToolTipText("");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 0;
-    gridBagConstraints.insets = new java.awt.Insets(0, 8, 0, 8);
-    buttonPan.add(jLabel1, gridBagConstraints);
-
-    modeCombo.setModel(new DefaultComboBoxModel(MODES));
-    modeCombo.setToolTipText("<html>Choose to view text as<p>&nbsp;&nbsp;1 morse code<p>&nbsp;&nbsp;2 signal flags<p>&nbsp;&nbsp;3 semaphore flags<p>&nbsp;&nbsp;4 a composite of all 3</html>");
-    modeCombo.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        modeChanged(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 1;
-    gridBagConstraints.gridy = 0;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
-    gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 5);
-    buttonPan.add(modeCombo, gridBagConstraints);
-
-    volLab.setText("volume");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 2;
-    gridBagConstraints.gridy = 0;
-    gridBagConstraints.insets = new java.awt.Insets(0, 11, 0, 0);
-    buttonPan.add(volLab, gridBagConstraints);
-
-    volumeSlider.setMaximum(10);
-    volumeSlider.setMinimum(-10);
-    volumeSlider.setSnapToTicks(true);
-    volumeSlider.setToolTipText("Adjust volume of morse audio");
-    volumeSlider.setValue(0);
-    volumeSlider.setPreferredSize(new java.awt.Dimension(100, 29));
-    volumeSlider.setRequestFocusEnabled(false);
-    volumeSlider.addChangeListener(new javax.swing.event.ChangeListener()
-    {
-      public void stateChanged(javax.swing.event.ChangeEvent evt)
-      {
-        volumeHandler(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 3;
-    gridBagConstraints.gridy = 0;
-    buttonPan.add(volumeSlider, gridBagConstraints);
-
-    appendCB.setText("append");
-    appendCB.setToolTipText("Check to append to, not replace, the current images");
-    appendCB.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        appendCBHandler(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 4;
-    gridBagConstraints.gridy = 0;
-    gridBagConstraints.weightx = 1.0;
-    buttonPan.add(appendCB, gridBagConstraints);
-
-    zoomLab.setText("zoom");
-    zoomLab.setToolTipText("");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 5;
-    gridBagConstraints.gridy = 0;
-    gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 5);
-    buttonPan.add(zoomLab, gridBagConstraints);
-
-    plusButt.setIcon(IconFontSwing.buildIcon(FontAwesome.PLUS,13));
-    plusButt.setToolTipText("<html>Show larger images<p>(make a separate choice for each medium)");
-    plusButt.setPreferredSize(new java.awt.Dimension(20, 29));
-    plusButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        plusHandler(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 6;
-    gridBagConstraints.gridy = 0;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
-    gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 5);
-    buttonPan.add(plusButt, gridBagConstraints);
-
-    minusButt.setIcon(IconFontSwing.buildIcon(FontAwesome.MINUS,13));
-    minusButt.setToolTipText("<html>Show smaller images<p>(make a separate choice for each medium)");
-    minusButt.setPreferredSize(new java.awt.Dimension(20, 29));
-    minusButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        minusHandler(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 7;
-    gridBagConstraints.gridy = 0;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
-    gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 5);
-    buttonPan.add(minusButt, gridBagConstraints);
-
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 2;
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.weightx = 1.0;
-    gridBagConstraints.insets = new java.awt.Insets(5, 0, 0, 0);
-    getContentPane().add(buttonPan, gridBagConstraints);
-
-    entryHolder.setLayout(new java.awt.BorderLayout());
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 5;
-    gridBagConstraints.gridwidth = 11;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.weightx = 1.0;
-    gridBagConstraints.insets = new java.awt.Insets(5, 0, 5, 0);
-    getContentPane().add(entryHolder, gridBagConstraints);
-
-    clearButt.setText("clear");
-    clearButt.setToolTipText("Clear text field and image display");
-    clearButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        clearHandler(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 11;
-    gridBagConstraints.gridy = 5;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
-    gridBagConstraints.insets = new java.awt.Insets(5, 0, 5, 0);
-    getContentPane().add(clearButt, gridBagConstraints);
-
-    logLab.setText("log");
-    logLab.setToolTipText("");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 6;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
-    gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 0);
-    getContentPane().add(logLab, gridBagConstraints);
-
-    jPanel1.setLayout(new java.awt.GridBagLayout());
-
-    textScroller.setMinimumSize(new java.awt.Dimension(198, 83));
-
-    loggingTA.setEditable(false);
-    loggingTA.setColumns(20);
-    loggingTA.setFont(new java.awt.Font("Lucida Grande", 0, 10)); // NOI18N
-    loggingTA.setRows(5);
-    loggingTA.setToolTipText("View application events");
-    loggingTA.setMinimumSize(new java.awt.Dimension(12, 200));
-    textScroller.setViewportView(loggingTA);
-
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 7;
-    gridBagConstraints.gridwidth = 11;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
-    gridBagConstraints.weightx = 1.0;
-    gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5);
-    jPanel1.add(textScroller, gridBagConstraints);
-
-    logoButt.setToolTipText("<html><center>Naval Research Program<br/>Click to visit web page</center></html>");
-    logoButt.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
-    logoButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        logoButtClicked(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 11;
-    gridBagConstraints.gridy = 7;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
-    gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 5);
-    jPanel1.add(logoButt, gridBagConstraints);
-
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 7;
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.weightx = 1.0;
-    getContentPane().add(jPanel1, gridBagConstraints);
-
-    pack();
-  }// </editor-fold>//GEN-END:initComponents
-
-  private void modeChanged(java.awt.event.ActionEvent evt)//GEN-FIRST:event_modeChanged
-  {//GEN-HEADEREND:event_modeChanged
-    if(!eventHandlersOn)
-      return;
-
-    String mode = modeCombo.getSelectedItem().toString();
-    env.setOptionValue(SAILORMEDIUM,mode);
-
-    switch(mode) {
-      case MODEMORSE:
-       loggingTA.append("MORSE"+LINEEND);
-       handleSwitchToMorse();
-        break;
-      case MODESEMAPHORE:
-        loggingTA.append("SEMAPHORE"+LINEEND);
-        handleSwitchToSemaphore();
-        break;
-     case MODECOMPOSITE:
-        loggingTA.append("COMPOSITE"+LINEEND);
-        handleSwitchToComposite();
-        break;
-      case MODEFLAGS:
-        loggingTA.append("SIGNAL FLAGS"+LINEEND);
-        handleSwitchToFlags();
-    }
-    currentDisplay.display(currentTextSBUnicode.toString(),componentSize,false); //currentTextSB.toString(), componentSize, false);
-  }//GEN-LAST:event_modeChanged
-
-  private void backwardPressed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_backwardPressed
-  {//GEN-HEADEREND:event_backwardPressed
-    System.out.println("backwardpressed");
-  }//GEN-LAST:event_backwardPressed
-
-  private void pausePlayPressed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_pausePlayPressed
-  {//GEN-HEADEREND:event_pausePlayPressed
-    String actCmd = playStopButt.getActionCommand();
-    
-    if(actCmd.toLowerCase().equals("play")) {
-      playStopButt.setActionCommand("stop");
-      playStopButt.setIcon(IconFontSwing.buildIcon(FontAwesome.STOP,13));
-      playStopButt.setToolTipText("Stop audio");
-
-   //test   MorseArtAndSound.play(entryTF.getText().trim());
-    }
-    else {
-      playStopButt.setActionCommand("play");
-      playStopButt.setIcon(IconFontSwing.buildIcon(FontAwesome.PLAY,13));
-      playStopButt.setToolTipText("Play displayed Morse message");
-      
-    //  MorseArtAndSound.stop();
-    }    
-  }//GEN-LAST:event_pausePlayPressed
-
-  private void forwardPressed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_forwardPressed
-                                 
-  {//GEN-HEADEREND:event_forwardPressed
-    System.out.println("Forwardpressed");
-  }//GEN-LAST:event_forwardPressed
-                                   
-  private void clearHandler(java.awt.event.ActionEvent evt)//GEN-FIRST:event_clearHandler
-  {//GEN-HEADEREND:event_clearHandler
-    if(!eventHandlersOn)
-      return;
-    currentDisplay.display("", componentSize, false);
-
-    currentTextSB.setLength(0);currentTextSBUnicode.setLength(0);
-    titleLab.setText("Optical Signalling TDA");
-  }//GEN-LAST:event_clearHandler
-
-  private void plusHandler(java.awt.event.ActionEvent evt)//GEN-FIRST:event_plusHandler
-  {//GEN-HEADEREND:event_plusHandler
-    if(!eventHandlersOn)
-      return;
-    componentSize += SIZE_INCR;
-    loggingTA.append("zoom "+componentSize + LINEEND);
-    saveZoomValue(componentSize);
-    minusButt.setEnabled(true);
-    reload();
-  }//GEN-LAST:event_plusHandler
-
-  private void minusHandler(java.awt.event.ActionEvent evt)//GEN-FIRST:event_minusHandler
-  {//GEN-HEADEREND:event_minusHandler
-    if(!eventHandlersOn)
-      return;
-    componentSize = Math.max(componentSize-SIZE_INCR, SIZE_MIN);
-    loggingTA.append("zoom "+componentSize + LINEEND);
-    minusButt.setEnabled(componentSize > SIZE_MIN);
-    saveZoomValue(componentSize);
-    reload();
-  }//GEN-LAST:event_minusHandler
-
-  private void autoPlayCBHandler(java.awt.event.ActionEvent evt)//GEN-FIRST:event_autoPlayCBHandler
-  {//GEN-HEADEREND:event_autoPlayCBHandler
-    env.setOptionValue(SAILORMORSEAUDIOAUTOPLAY,audioCB.isSelected());
-  }//GEN-LAST:event_autoPlayCBHandler
-
-  private void backgroundColorHandler(java.awt.event.ActionEvent evt)//GEN-FIRST:event_backgroundColorHandler
-  {//GEN-HEADEREND:event_backgroundColorHandler
-    if(!eventHandlersOn)
-      return;
-    String clr = backgroundCombo.getSelectedItem().toString();
-    saveBackground(clr);
-    switch (clr) {
-      case BACKGROUNDWHITE:
-        currentDisplay.setBackground(Color.white);
-        break;
-      case BACKGROUNDLIGHTGRAY:
-        currentDisplay.setBackground(Color.lightGray);
-        break;
-      case BACKGROUNDDARKGRAY:
-        currentDisplay.setBackground(Color.darkGray);
-        break;
-      case BACKGROUNDBLACK:
-        currentDisplay.setBackground(Color.black);
-        break;
-    }
-    loggingTA.append(clr+LINEEND);
-  }//GEN-LAST:event_backgroundColorHandler
-
-  private void appendCBHandler(java.awt.event.ActionEvent evt)//GEN-FIRST:event_appendCBHandler
-  {//GEN-HEADEREND:event_appendCBHandler
-    String tf = (appendCB.isSelected()?"true":"false");
-    switch (getSailorMedium()) {
-      case COMPOSITE:
-        QRPreferences.getInstance().put(SAILORCOMPOSITEAPPEND_KEY, tf);
-        break;
-      case MORSE:
-        QRPreferences.getInstance().put(SAILORMORSEAPPEND_KEY, tf);
-        break;
-      case FLAGS:
-        QRPreferences.getInstance().put(SAILORFLAGSAPPEND_KEY, tf);
-        break;
-      case SEMAPHORE:
-        QRPreferences.getInstance().put(SAILORSEMAPHOREAPPEND_KEY, tf);
-        break;
-    }
-  }//GEN-LAST:event_appendCBHandler
-
-  private void volumeHandler(javax.swing.event.ChangeEvent evt)//GEN-FIRST:event_volumeHandler
-  {//GEN-HEADEREND:event_volumeHandler
-    if(!eventHandlersOn)
-      return;
-    
-    JSlider source = (JSlider) evt.getSource();
-    if (!source.getValueIsAdjusting())
-      QRPreferences.getInstance().put(SAILORVOLUME_KEY, "" + (int) source.getValue());
-  }//GEN-LAST:event_volumeHandler
-
-  private void logoButtClicked(java.awt.event.ActionEvent evt)//GEN-FIRST:event_logoButtClicked
-  {//GEN-HEADEREND:event_logoButtClicked
-    try {
-      Desktop desktop = Desktop.getDesktop();
-      desktop.browse(new URI("http://my.nps.edu/web/naval-research-program/"));
-    }
-    catch (URISyntaxException | IOException ex) {
-      Logger.getLogger(OpticalCommsWindow.class.getName()).log(Level.SEVERE, null, ex);
-    }
-   
-  }//GEN-LAST:event_logoButtClicked
-
-  private void horizVertHandler(java.awt.event.ActionEvent evt)//GEN-FIRST:event_horizVertHandler
-  {//GEN-HEADEREND:event_horizVertHandler
-    String val = orientationHorizontalRB.isSelected()?ORIENTATIONHORIZONTAL:ORIENTATIONVERTICAL;
-    loggingTA.append("orientation "+val+LINEEND);
-    if(!eventHandlersOn)
-      return;
-    
-    saveOrientation(val);
-    currentDisplay.setOrientation((val.equals(ORIENTATIONVERTICAL)?Orientation.VERTICAL:Orientation.HORIZONTAL));
-
-  }//GEN-LAST:event_horizVertHandler
-  
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  private javax.swing.JCheckBox appendCB;
-  private javax.swing.JCheckBox audioCB;
-  private javax.swing.JButton backButt;
-  private javax.swing.JComboBox<String> backgroundCombo;
-  private javax.swing.JPanel buttonPan;
-  private javax.swing.JButton clearButt;
-  private edu.nps.moves.qrtda.elements.gui.CompositeOpticalDisplay compositeOpticalDisplay;
-  private javax.swing.JPanel entryHolder;
-  private javax.swing.JButton forwardButt;
-  private javax.swing.JLabel jLabel1;
-  private javax.swing.JPanel jPanel1;
-  private javax.swing.JLabel logLab;
-  javax.swing.JTextArea loggingTA;
-  private javax.swing.JButton logoButt;
-  private javax.swing.JButton minusButt;
-  private javax.swing.JComboBox<String> modeCombo;
-  private edu.nps.moves.qrtda.elements.gui.MorseOpticalDisplay morseOpticalDisplay;
-  private javax.swing.ButtonGroup orientationBG;
-  private javax.swing.JRadioButton orientationHorizontalRB;
-  private javax.swing.JRadioButton orientationVerticalRB;
-  private javax.swing.JButton playStopButt;
-  private javax.swing.JButton plusButt;
-  private javax.swing.JScrollPane scrollPane;
-  private edu.nps.moves.qrtda.elements.gui.SemaphoreOpticalDisplay semaphoreOpticalDisplay;
-  private edu.nps.moves.qrtda.elements.gui.SignalFlagsOpticalDisplay signalFlagsOpticalDisplay;
-  private javax.swing.JScrollPane textScroller;
-  private javax.swing.JLabel titleLab;
-  private javax.swing.JPanel topPan;
-  private javax.swing.JLabel volLab;
-  private javax.swing.JSlider volumeSlider;
-  private javax.swing.JLabel zoomLab;
-  // End of variables declaration//GEN-END:variables
-  
- }
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRCameraFrameGrabberPanel.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRCameraFrameGrabberPanel.form
deleted file mode 100755
index 847f09b222a0296216839f55dbaec97f8796cbdb..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRCameraFrameGrabberPanel.form
+++ /dev/null
@@ -1,281 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.5" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
-  <Properties>
-    <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-      <Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo">
-        <EmptyBorder bottom="5" left="5" right="5" top="5"/>
-      </Border>
-    </Property>
-  </Properties>
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,0,-65,0,0,0,-2"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-  <SubComponents>
-    <Component class="javax.swing.JLabel" name="titleLabel">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="Camera Frame Grabber"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="0" gridWidth="0" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="spacer">
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="50" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="1.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JButton" name="beginButt">
-      <Properties>
-        <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
-          <Color blue="0" green="99" red="33" type="rgb"/>
-        </Property>
-        <Property name="text" type="java.lang.String" value="begin frame grab"/>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="beginHandler"/>
-      </Events>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="5" gridWidth="0" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JSeparator" name="jSeparator1">
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="4" gridWidth="0" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JButton" name="endButt">
-      <Properties>
-        <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
-          <Color blue="0" green="0" red="99" type="rgb"/>
-        </Property>
-        <Property name="text" type="java.lang.String" value="end frame grab"/>
-        <Property name="enabled" type="boolean" value="false"/>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="endLoopHandler"/>
-      </Events>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="6" gridWidth="0" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Container class="javax.swing.JPanel" name="spinnerPan">
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="2" gridWidth="0" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-
-      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-      <SubComponents>
-        <Component class="javax.swing.JLabel" name="jLabel3">
-          <Properties>
-            <Property name="text" type="java.lang.String" value="sec"/>
-          </Properties>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-        <Component class="javax.swing.JSpinner" name="secSpinner">
-          <Properties>
-            <Property name="model" type="javax.swing.SpinnerModel" editor="org.netbeans.modules.form.editors2.SpinnerModelEditor">
-              <SpinnerModel initial="0" maximum="9" minimum="0" numberType="java.lang.Long" stepSize="1" type="number"/>
-            </Property>
-          </Properties>
-          <Events>
-            <EventHandler event="stateChanged" listener="javax.swing.event.ChangeListener" parameters="javax.swing.event.ChangeEvent" handler="spinnerChangeListener"/>
-          </Events>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="0" gridY="1" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-        <Component class="javax.swing.JLabel" name="jLabel4">
-          <Properties>
-            <Property name="text" type="java.lang.String" value="10ths"/>
-          </Properties>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-        <Component class="javax.swing.JSpinner" name="tenthsSpinner">
-          <Properties>
-            <Property name="model" type="javax.swing.SpinnerModel" editor="org.netbeans.modules.form.editors2.SpinnerModelEditor">
-              <SpinnerModel initial="0" maximum="9" minimum="0" numberType="java.lang.Long" stepSize="1" type="number"/>
-            </Property>
-          </Properties>
-          <Events>
-            <EventHandler event="stateChanged" listener="javax.swing.event.ChangeListener" parameters="javax.swing.event.ChangeEvent" handler="spinnerChangeListener"/>
-          </Events>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="1" gridY="1" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-        <Component class="javax.swing.JLabel" name="jLabel5">
-          <Properties>
-            <Property name="text" type="java.lang.String" value="100ths"/>
-          </Properties>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-        <Component class="javax.swing.JSpinner" name="hundredthsSpinner">
-          <Properties>
-            <Property name="model" type="javax.swing.SpinnerModel" editor="org.netbeans.modules.form.editors2.SpinnerModelEditor">
-              <SpinnerModel initial="0" maximum="9" minimum="0" numberType="java.lang.Long" stepSize="1" type="number"/>
-            </Property>
-          </Properties>
-          <Events>
-            <EventHandler event="stateChanged" listener="javax.swing.event.ChangeListener" parameters="javax.swing.event.ChangeEvent" handler="spinnerChangeListener"/>
-          </Events>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="2" gridY="1" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-        <Component class="javax.swing.JLabel" name="jLabel6">
-          <Properties>
-            <Property name="text" type="java.lang.String" value="1000ths"/>
-          </Properties>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-        <Component class="javax.swing.JSpinner" name="thousandthsSpinner">
-          <Properties>
-            <Property name="model" type="javax.swing.SpinnerModel" editor="org.netbeans.modules.form.editors2.SpinnerModelEditor">
-              <SpinnerModel initial="0" maximum="9" minimum="0" numberType="java.lang.Long" stepSize="1" type="number"/>
-            </Property>
-          </Properties>
-          <Events>
-            <EventHandler event="stateChanged" listener="javax.swing.event.ChangeListener" parameters="javax.swing.event.ChangeEvent" handler="spinnerChangeListener"/>
-          </Events>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="3" gridY="1" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-      </SubComponents>
-    </Container>
-    <Container class="javax.swing.JPanel" name="topPan">
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="1" gridWidth="0" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-
-      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-      <SubComponents>
-        <Container class="javax.swing.JPanel" name="jPanel1">
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="-1" gridY="-1" gridWidth="0" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-
-          <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-          <SubComponents>
-            <Component class="javax.swing.JLabel" name="cameraComboLab">
-              <Properties>
-                <Property name="text" type="java.lang.String" value="camera"/>
-              </Properties>
-              <Constraints>
-                <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-                  <GridBagConstraints gridX="0" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="13" weightX="0.0" weightY="0.0"/>
-                </Constraint>
-              </Constraints>
-            </Component>
-            <Component class="javax.swing.JComboBox" name="cameraCombo">
-              <Properties>
-                <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
-                  <StringArray count="3">
-                    <StringItem index="0" value="abcdefg hijklmn"/>
-                    <StringItem index="1" value="hijklmn opqrstu"/>
-                    <StringItem index="2" value="abcdefg  opqrstu"/>
-                  </StringArray>
-                </Property>
-              </Properties>
-              <Events>
-                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="cameraComboActionPerformed"/>
-              </Events>
-              <Constraints>
-                <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-                  <GridBagConstraints gridX="-1" gridY="-1" gridWidth="0" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="1.0" weightY="0.0"/>
-                </Constraint>
-              </Constraints>
-            </Component>
-          </SubComponents>
-        </Container>
-        <Component class="javax.swing.JLabel" name="jLabel1">
-          <Properties>
-            <Property name="text" type="java.lang.String" value="minimum grab interval"/>
-          </Properties>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="0" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="5" insetsLeft="5" insetsBottom="5" insetsRight="5" anchor="13" weightX="1.0" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-        <Component class="javax.swing.JLabel" name="jLabel2">
-          <Properties>
-            <Property name="text" type="java.lang.String" value="ms"/>
-          </Properties>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="2" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="5" insetsLeft="5" insetsBottom="5" insetsRight="5" anchor="17" weightX="1.0" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-        <Component class="javax.swing.JLabel" name="msValueLab">
-          <Properties>
-            <Property name="text" type="java.lang.String" value="xx"/>
-            <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-              <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
-                <EtchetBorder/>
-              </Border>
-            </Property>
-          </Properties>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="1" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-      </SubComponents>
-    </Container>
-  </SubComponents>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRCameraFrameGrabberPanel.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRCameraFrameGrabberPanel.java
deleted file mode 100644
index 993570c66448071d09b5ddc83688d7ccdc57178a..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRCameraFrameGrabberPanel.java
+++ /dev/null
@@ -1,426 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements.gui;
-
-import com.github.sarxos.webcam.Webcam;
-import edu.nps.moves.qrtda.elements.QRCameraFrameGrabber;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import static edu.nps.moves.qrtda.elements.QRCameraFrameGrabber.WEBCAMNAMEOPTION;
-import java.awt.Dimension;
-import java.util.List;
-import javax.swing.JPanel;
-import javax.swing.DefaultComboBoxModel;
-
-/**
- * QRCameraFrameGrabberPanel.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class QRCameraFrameGrabberPanel extends JPanel
-{ 
-  private static final long serialVersionUID = 6303157483660491334L;
-  private final QRCameraFrameGrabber grabber;
-  private final TdaEnvironment env;
-  private boolean initting = false;
-
-  public QRCameraFrameGrabberPanel(QRCameraFrameGrabber grabber, String title, TdaEnvironment env)
-  {
-    this.grabber = grabber;
-    this.env = env;
-    initting = true;
-    
-    initComponents();
-    
-    titleLabel.setText(title);
-    
-    Dimension d = cameraCombo.getPreferredSize();
-    List<Webcam> wlis = Webcam.getWebcams();
-
-    DefaultComboBoxModel mod = new DefaultComboBoxModel();
-    for(Webcam wc : wlis) {
-      String nm = wc.getName();
-      mod.addElement(nm);   
-    }
-    cameraCombo.setModel(mod);
-    cameraCombo.setPreferredSize(d);
- 
-    setSelected(env.getOptionValue(WEBCAMNAMEOPTION),mod);
-
-    _setSleepTime(); 
-    initting = false;
-  }
-  
-  public void setPipeIndex(int idx)
-  {
-    // no index titleLabel.setText("" + idx + " " + titleLabel.getText());
-  }
-
-  private void setSelected(String camName, DefaultComboBoxModel mod)
-  {
-    int sz = mod.getSize();
-    String sel = null;
-    for(int i=0;i<sz;i++) {
-      String nm = mod.getElementAt(i).toString();
-      if(nm.equals(camName)) {
-        sel = nm;
-        break;
-      }
-      if(nm.contains(camName)) {
-        sel = nm;
-        break;
-      }        
-    }
-    if(sel != null) {
-      mod.setSelectedItem(sel);
-    }
-  }
-  
-  /**
-   * This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The content of this method is always
-   * regenerated by the Form Editor.
-   */
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-    java.awt.GridBagConstraints gridBagConstraints;
-
-    titleLabel = new javax.swing.JLabel();
-    spacer = new javax.swing.JLabel();
-    beginButt = new javax.swing.JButton();
-    jSeparator1 = new javax.swing.JSeparator();
-    endButt = new javax.swing.JButton();
-    spinnerPan = new javax.swing.JPanel();
-    jLabel3 = new javax.swing.JLabel();
-    secSpinner = new javax.swing.JSpinner();
-    jLabel4 = new javax.swing.JLabel();
-    tenthsSpinner = new javax.swing.JSpinner();
-    jLabel5 = new javax.swing.JLabel();
-    hundredthsSpinner = new javax.swing.JSpinner();
-    jLabel6 = new javax.swing.JLabel();
-    thousandthsSpinner = new javax.swing.JSpinner();
-    topPan = new javax.swing.JPanel();
-    jPanel1 = new javax.swing.JPanel();
-    cameraComboLab = new javax.swing.JLabel();
-    cameraCombo = new javax.swing.JComboBox();
-    jLabel1 = new javax.swing.JLabel();
-    jLabel2 = new javax.swing.JLabel();
-    msValueLab = new javax.swing.JLabel();
-
-    setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5));
-    setLayout(new java.awt.GridBagLayout());
-
-    titleLabel.setText("Camera Frame Grabber");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 0;
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    add(titleLabel, gridBagConstraints);
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 50;
-    gridBagConstraints.weighty = 1.0;
-    add(spacer, gridBagConstraints);
-
-    beginButt.setForeground(new java.awt.Color(51, 153, 0));
-    beginButt.setText("begin frame grab");
-    beginButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        beginHandler(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 5;
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    add(beginButt, gridBagConstraints);
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 4;
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.weightx = 1.0;
-    add(jSeparator1, gridBagConstraints);
-
-    endButt.setForeground(new java.awt.Color(153, 0, 0));
-    endButt.setText("end frame grab");
-    endButt.setEnabled(false);
-    endButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        endLoopHandler(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 6;
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    add(endButt, gridBagConstraints);
-
-    spinnerPan.setLayout(new java.awt.GridBagLayout());
-
-    jLabel3.setText("sec");
-    spinnerPan.add(jLabel3, new java.awt.GridBagConstraints());
-
-    secSpinner.setModel(new javax.swing.SpinnerNumberModel(Long.valueOf(0L), Long.valueOf(0L), Long.valueOf(9L), Long.valueOf(1L)));
-    secSpinner.addChangeListener(new javax.swing.event.ChangeListener()
-    {
-      public void stateChanged(javax.swing.event.ChangeEvent evt)
-      {
-        spinnerChangeListener(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.weightx = 1.0;
-    spinnerPan.add(secSpinner, gridBagConstraints);
-
-    jLabel4.setText("10ths");
-    spinnerPan.add(jLabel4, new java.awt.GridBagConstraints());
-
-    tenthsSpinner.setModel(new javax.swing.SpinnerNumberModel(Long.valueOf(0L), Long.valueOf(0L), Long.valueOf(9L), Long.valueOf(1L)));
-    tenthsSpinner.addChangeListener(new javax.swing.event.ChangeListener()
-    {
-      public void stateChanged(javax.swing.event.ChangeEvent evt)
-      {
-        spinnerChangeListener(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 1;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.weightx = 1.0;
-    spinnerPan.add(tenthsSpinner, gridBagConstraints);
-
-    jLabel5.setText("100ths");
-    spinnerPan.add(jLabel5, new java.awt.GridBagConstraints());
-
-    hundredthsSpinner.setModel(new javax.swing.SpinnerNumberModel(Long.valueOf(0L), Long.valueOf(0L), Long.valueOf(9L), Long.valueOf(1L)));
-    hundredthsSpinner.addChangeListener(new javax.swing.event.ChangeListener()
-    {
-      public void stateChanged(javax.swing.event.ChangeEvent evt)
-      {
-        spinnerChangeListener(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 2;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.weightx = 1.0;
-    spinnerPan.add(hundredthsSpinner, gridBagConstraints);
-
-    jLabel6.setText("1000ths");
-    spinnerPan.add(jLabel6, new java.awt.GridBagConstraints());
-
-    thousandthsSpinner.setModel(new javax.swing.SpinnerNumberModel(Long.valueOf(0L), Long.valueOf(0L), Long.valueOf(9L), Long.valueOf(1L)));
-    thousandthsSpinner.addChangeListener(new javax.swing.event.ChangeListener()
-    {
-      public void stateChanged(javax.swing.event.ChangeEvent evt)
-      {
-        spinnerChangeListener(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 3;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.weightx = 1.0;
-    spinnerPan.add(thousandthsSpinner, gridBagConstraints);
-
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 2;
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.weightx = 1.0;
-    add(spinnerPan, gridBagConstraints);
-
-    topPan.setLayout(new java.awt.GridBagLayout());
-
-    jPanel1.setLayout(new java.awt.GridBagLayout());
-
-    cameraComboLab.setText("camera");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
-    jPanel1.add(cameraComboLab, gridBagConstraints);
-
-    cameraCombo.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "abcdefg hijklmn", "hijklmn opqrstu", "abcdefg  opqrstu" }));
-    cameraCombo.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        cameraComboActionPerformed(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
-    gridBagConstraints.weightx = 1.0;
-    jPanel1.add(cameraCombo, gridBagConstraints);
-
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.weightx = 1.0;
-    topPan.add(jPanel1, gridBagConstraints);
-
-    jLabel1.setText("minimum grab interval");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
-    gridBagConstraints.weightx = 1.0;
-    gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
-    topPan.add(jLabel1, gridBagConstraints);
-
-    jLabel2.setText("ms");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 2;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
-    gridBagConstraints.weightx = 1.0;
-    gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
-    topPan.add(jLabel2, gridBagConstraints);
-
-    msValueLab.setText("xx");
-    msValueLab.setBorder(javax.swing.BorderFactory.createEtchedBorder());
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 1;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
-    topPan.add(msValueLab, gridBagConstraints);
-
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.weightx = 1.0;
-    add(topPan, gridBagConstraints);
-  }// </editor-fold>//GEN-END:initComponents
-
-  private void beginHandler(java.awt.event.ActionEvent evt)//GEN-FIRST:event_beginHandler
-  {//GEN-HEADEREND:event_beginHandler
-    beginButt.setEnabled(false);
-    endButt.setEnabled(true);
-    grabber.beginFrameGrab();
-  }//GEN-LAST:event_beginHandler
-   
-  private void endLoopHandler(java.awt.event.ActionEvent evt)//GEN-FIRST:event_endLoopHandler
-  {//GEN-HEADEREND:event_endLoopHandler
-    grabber.killLoop();
-    beginButt.setEnabled(true);
-    endButt.setEnabled(false);
-  }//GEN-LAST:event_endLoopHandler
-
-  private boolean settingSpinners = false;
-  private void spinnerChangeListener(javax.swing.event.ChangeEvent evt)//GEN-FIRST:event_spinnerChangeListener
-  {//GEN-HEADEREND:event_spinnerChangeListener
-    if(!settingSpinners) {
-      long time = _getSleepTime();
-      env.setOptionValue(QRCameraFrameGrabber.FRAMEGRABINTERVALOPTION, ""+time);
-    }
-  }//GEN-LAST:event_spinnerChangeListener
-
-  private void cameraComboActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_cameraComboActionPerformed
-  {//GEN-HEADEREND:event_cameraComboActionPerformed
-    if(initting)
-      return;
-    String nuts = cameraCombo.getSelectedItem().toString();
-    env.setOptionValue(QRCameraFrameGrabber.WEBCAMNAMEOPTION, cameraCombo.getSelectedItem().toString());
-  }//GEN-LAST:event_cameraComboActionPerformed
-
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  private javax.swing.JButton beginButt;
-  private javax.swing.JComboBox cameraCombo;
-  private javax.swing.JLabel cameraComboLab;
-  private javax.swing.JButton endButt;
-  private javax.swing.JSpinner hundredthsSpinner;
-  private javax.swing.JLabel jLabel1;
-  private javax.swing.JLabel jLabel2;
-  private javax.swing.JLabel jLabel3;
-  private javax.swing.JLabel jLabel4;
-  private javax.swing.JLabel jLabel5;
-  private javax.swing.JLabel jLabel6;
-  private javax.swing.JPanel jPanel1;
-  private javax.swing.JSeparator jSeparator1;
-  private javax.swing.JLabel msValueLab;
-  private javax.swing.JSpinner secSpinner;
-  private javax.swing.JLabel spacer;
-  private javax.swing.JPanel spinnerPan;
-  private javax.swing.JSpinner tenthsSpinner;
-  private javax.swing.JSpinner thousandthsSpinner;
-  private javax.swing.JLabel titleLabel;
-  private javax.swing.JPanel topPan;
-  // End of variables declaration//GEN-END:variables
-
-  private void _setSleepTime()
-  {
-    //long ms = Long.parseLong(env.opt.frameGrabInterval.value());
-    long ms = Long.parseLong(env.getOptionValue(QRCameraFrameGrabber.FRAMEGRABINTERVALOPTION));
-
-    settingSpinners=true;
-    
-    long sec = ms/1000;
-    long rest = ms%1000;
-    long ten = rest/100;
-    rest = rest%100;
-    long hun = rest/10;
-    rest = rest%10;
-    
-    sec = Math.min(sec,9); // check
-    
-    secSpinner.setValue(sec);
-    tenthsSpinner.setValue(ten);
-    hundredthsSpinner.setValue(hun);
-    thousandthsSpinner.setValue(rest);
-    
-    msValueLab.setText(""+ms);
-    settingSpinners=false;
-    
-    grabber.setFrameSleep(ms);
-  }
-   
-  private long _getSleepTime()
-  {
-    
-    long ret = ((Long) secSpinner.getValue()) * 1000L
-             + ((Long) tenthsSpinner.getValue()) * 100L
-             + ((Long) hundredthsSpinner.getValue()) * 10L
-             + ((Long) thousandthsSpinner.getValue());
-    msValueLab.setText(""+ret);
-
-    return ret;
-  }
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRCommsFrame.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRCommsFrame.form
deleted file mode 100755
index 39bf412bd0a510d6638df650688928ae4af6fd3e..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRCommsFrame.form
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
-  <SyntheticProperties>
-    <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
-    <SyntheticProperty name="generateCenter" type="boolean" value="false"/>
-  </SyntheticProperties>
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-  </AuxValues>
-
-  <Layout>
-    <DimensionLayout dim="0">
-      <Group type="103" groupAlignment="0" attributes="0">
-          <EmptySpace min="0" pref="400" max="32767" attributes="0"/>
-      </Group>
-    </DimensionLayout>
-    <DimensionLayout dim="1">
-      <Group type="103" groupAlignment="0" attributes="0">
-          <EmptySpace min="0" pref="300" max="32767" attributes="0"/>
-      </Group>
-    </DimensionLayout>
-  </Layout>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRCommsFrame.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRCommsFrame.java
deleted file mode 100755
index 6d026e58ebd7a6771dc616533ffe742a73107d0d..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRCommsFrame.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements.gui;
-
-import edu.nps.moves.qrtda.TdaEnvironment;
-
-/**
- * QRCommsFrame.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class QRCommsFrame extends javax.swing.JFrame
-{
-  private final TdaEnvironment env;
-  public QRCommsFrame(TdaEnvironment env)
-  {
-    this.env = env;
-    initComponents();
-    super.setSize(100, 100);
-  }
-
-  /**
-   * This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The content of this method is always
-   * regenerated by the Form Editor.
-   */
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-
-    org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
-    getContentPane().setLayout(layout);
-    layout.setHorizontalGroup(
-      layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
-      .add(0, 400, Short.MAX_VALUE)
-    );
-    layout.setVerticalGroup(
-      layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
-      .add(0, 300, Short.MAX_VALUE)
-    );
-
-    pack();
-  }// </editor-fold>//GEN-END:initComponents
-
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  // End of variables declaration//GEN-END:variables
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRDeSequencerPanel.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRDeSequencerPanel.form
deleted file mode 100755
index 85c4f4b2445538a8f7250bde4d3df91a15f941e9..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRDeSequencerPanel.form
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,0,56,0,0,1,24"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-  <SubComponents>
-    <Component class="javax.swing.JLabel" name="jLabel1">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="QR de-sequencer"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="-1" gridY="-1" gridWidth="0" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="jLabel4">
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="2" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="1.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JCheckBox" name="openWindowCheckBox">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="Open received text in separate window"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-  </SubComponents>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRDeSequencerPanel.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRDeSequencerPanel.java
deleted file mode 100755
index b90fc1acfd23b786696896f415116c327d370ab2..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRDeSequencerPanel.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements.gui;
-
-/**
- * QRDeSequencerPanel.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class QRDeSequencerPanel extends javax.swing.JPanel
-{
-  public QRDeSequencerPanel()
-  {
-    initComponents();
-  }
-  
-  public boolean isShowResult()
-  {
-    return openWindowCheckBox.isSelected();
-  }
-  
-  public void setShowResult(boolean wh)
-  {
-    openWindowCheckBox.setSelected(wh);
-  }
-  
-  /**
-   * This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The content of this method is always
-   * regenerated by the Form Editor.
-   */
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-    java.awt.GridBagConstraints gridBagConstraints;
-
-    jLabel1 = new javax.swing.JLabel();
-    jLabel4 = new javax.swing.JLabel();
-    openWindowCheckBox = new javax.swing.JCheckBox();
-
-    setLayout(new java.awt.GridBagLayout());
-
-    jLabel1.setText("QR de-sequencer");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    add(jLabel1, gridBagConstraints);
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 2;
-    gridBagConstraints.weighty = 1.0;
-    add(jLabel4, gridBagConstraints);
-
-    openWindowCheckBox.setText("Open received text in separate window");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 1;
-    add(openWindowCheckBox, gridBagConstraints);
-  }// </editor-fold>//GEN-END:initComponents
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  private javax.swing.JLabel jLabel1;
-  private javax.swing.JLabel jLabel4;
-  private javax.swing.JCheckBox openWindowCheckBox;
-  // End of variables declaration//GEN-END:variables
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRDelayPanel.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRDelayPanel.form
deleted file mode 100755
index b26bd692004a30571735ae6c1145c502b0b8c5c9..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRDelayPanel.form
+++ /dev/null
@@ -1,72 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,0,54,0,0,0,-58"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-  <SubComponents>
-    <Component class="javax.swing.JLabel" name="jLabel1">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="QRDelay"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="-1" gridY="-1" gridWidth="0" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="jLabel2">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="delay"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JSpinner" name="spinner">
-      <Properties>
-        <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-          <Dimension value="[100, 28]"/>
-        </Property>
-      </Properties>
-      <Events>
-        <EventHandler event="stateChanged" listener="javax.swing.event.ChangeListener" parameters="javax.swing.event.ChangeEvent" handler="spinnerStateChanged"/>
-      </Events>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="1" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="jLabel3">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="msec"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="2" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="6" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="jLabel4">
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="2" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="1.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-  </SubComponents>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRDelayPanel.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRDelayPanel.java
deleted file mode 100755
index fece84bc7846c64ba415fde82ceb1fdf665dc98d..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRDelayPanel.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements.gui;
-
-import edu.nps.moves.qrtda.TdaEnvironment;
-import static edu.nps.moves.qrtda.elements.QRDelay.DELAYOPTION;
-import javax.swing.SpinnerNumberModel;
-
-/**
- * QRDelayPanel.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class QRDelayPanel extends javax.swing.JPanel
-{
-  private TdaEnvironment env;
-  private boolean initting = false;
-  public QRDelayPanel(TdaEnvironment env)
-  {
-    initting=true;
-    initComponents();
-    
-    Integer value = 100;
-    Integer min = 0;
-    Integer max = 10000;
-    Integer step = 10;
-    SpinnerNumberModel model = new SpinnerNumberModel(value, min, max, step);
-    spinner.setModel(model);
-    
-    spinner.setValue(env.getOptionValue(DELAYOPTION));
-    initting=false;   
-  }
-    
-  public void setDelay(String s)
-  {
-    spinner.setValue(Integer.parseInt(s));
-  }
-  
-  public int getDelay()
-  {
-    return (Integer)spinner.getValue();
-  }
-  
-  public void setPipeIndex(int idx)
-  {
-    jLabel1.setText(""+idx+" "+jLabel1.getText());
-  }
-
-  /**
-   * This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The content of this method is always
-   * regenerated by the Form Editor.
-   */
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-    java.awt.GridBagConstraints gridBagConstraints;
-
-    jLabel1 = new javax.swing.JLabel();
-    jLabel2 = new javax.swing.JLabel();
-    spinner = new javax.swing.JSpinner();
-    jLabel3 = new javax.swing.JLabel();
-    jLabel4 = new javax.swing.JLabel();
-
-    setLayout(new java.awt.GridBagLayout());
-
-    jLabel1.setText("QRDelay");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    add(jLabel1, gridBagConstraints);
-
-    jLabel2.setText("delay");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 1;
-    add(jLabel2, gridBagConstraints);
-
-    spinner.setPreferredSize(new java.awt.Dimension(100, 28));
-    spinner.addChangeListener(new javax.swing.event.ChangeListener()
-    {
-      public void stateChanged(javax.swing.event.ChangeEvent evt)
-      {
-        spinnerStateChanged(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 1;
-    gridBagConstraints.gridy = 1;
-    add(spinner, gridBagConstraints);
-
-    jLabel3.setText("msec");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 2;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.insets = new java.awt.Insets(0, 6, 0, 0);
-    add(jLabel3, gridBagConstraints);
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 2;
-    gridBagConstraints.weighty = 1.0;
-    add(jLabel4, gridBagConstraints);
-  }// </editor-fold>//GEN-END:initComponents
-
-  private void spinnerStateChanged(javax.swing.event.ChangeEvent evt)//GEN-FIRST:event_spinnerStateChanged
-  {//GEN-HEADEREND:event_spinnerStateChanged
-    if(!initting)
-      env.setOptionValue(DELAYOPTION, spinner.getValue());
-  }//GEN-LAST:event_spinnerStateChanged
-
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  private javax.swing.JLabel jLabel1;
-  private javax.swing.JLabel jLabel2;
-  private javax.swing.JLabel jLabel3;
-  private javax.swing.JLabel jLabel4;
-  private javax.swing.JSpinner spinner;
-  // End of variables declaration//GEN-END:variables
-
- }
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRDirectoryWatcherPanel.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRDirectoryWatcherPanel.form
deleted file mode 100755
index 30eb095802c625dbf917dbf5a0f9f7d0f2e95423..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRDirectoryWatcherPanel.form
+++ /dev/null
@@ -1,120 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,0,-72,0,0,1,64"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-  <SubComponents>
-    <Component class="javax.swing.JLabel" name="titleLabel">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="QR image directory watcher"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="0" gridWidth="0" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JTextArea" name="ta">
-      <Properties>
-        <Property name="editable" type="boolean" value="false"/>
-        <Property name="columns" type="int" value="2"/>
-        <Property name="lineWrap" type="boolean" value="true"/>
-        <Property name="rows" type="int" value="2"/>
-        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-          <Border info="org.netbeans.modules.form.compat2.border.LineBorderInfo">
-            <LineBorder>
-              <Color PropertyName="color" blue="c0" green="c0" id="lightGray" palette="1" red="c0" type="palette"/>
-            </LineBorder>
-          </Border>
-        </Property>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="2" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="5" insetsRight="0" anchor="10" weightX="1.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JButton" name="selectButt">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="select directory"/>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="selectDirectoryHandler"/>
-      </Events>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="3" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="spacer">
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="50" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="1.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="jLabel3">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="directory"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="5" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JButton" name="beginButt">
-      <Properties>
-        <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
-          <Color blue="0" green="99" red="33" type="rgb"/>
-        </Property>
-        <Property name="text" type="java.lang.String" value="begin watch loop"/>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="beginHandler"/>
-      </Events>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="5" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JSeparator" name="jSeparator1">
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="4" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JButton" name="endButt">
-      <Properties>
-        <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
-          <Color blue="0" green="0" red="99" type="rgb"/>
-        </Property>
-        <Property name="text" type="java.lang.String" value="end watch loop"/>
-        <Property name="enabled" type="boolean" value="false"/>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="endLoopHandler"/>
-      </Events>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="6" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-  </SubComponents>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRDirectoryWatcherPanel.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRDirectoryWatcherPanel.java
deleted file mode 100755
index 4b2b09101bdd288f8b74035f4944e6614b30c533..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRDirectoryWatcherPanel.java
+++ /dev/null
@@ -1,249 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements.gui;
-
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.QRFlowLink;
-import java.io.File;
-import javax.swing.JFileChooser;
-
-/**
- * QRDirectoryWatcherPanel.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class QRDirectoryWatcherPanel extends javax.swing.JPanel
-{
-  private JFileChooser chooser;
-  private final DirectoryWatcher watcher;
-  private final TdaEnvironment env;
-  private QRFlowLink<?,?> qlink;
-  String initialPath = "imageDirectory";
-
-  public QRDirectoryWatcherPanel(TdaEnvironment env, DirectoryWatcher watcher, String title, String initialPath)
-  {
-    this.watcher = watcher;
-    if(watcher instanceof QRFlowLink<?,?>)
-      qlink = (QRFlowLink<?,?>)watcher;
-    this.env = env;
-    this.initialPath = initialPath;
-    initComponents();
-    
-    // test
-    ta.setText(initialPath);
-    titleLabel.setText(title);
-    
-    File dir = getChooserDirectory();
-    getChooser(dir); // reset it
-  }
-  
-  public String getDirectoryPath()
-  {
-    return ta.getText().trim();
-  }
-  
-  public void setDirectoryPath(String s)
-  {
-    ta.setText(s);
-    chooser=null;
-    getChooser(getChooserDirectory());
-  }
-  
-  private File getChooserDirectory()
-  {
-    String fn = ta.getText().trim();
-    File dir = new File(fn);
-    if(dir.exists())
-      ;
-    else
-      dir = new File(System.getProperty("user.dir"),fn);
-    
-    if(!dir.exists() || !dir.isDirectory() && qlink != null) {
-      env.postLog(fn+" not found or is not directory",qlink.getPipeline());
-      return null;
-    }
-    return dir;
-  }
-  
-  private JFileChooser getChooser(File start)
-  {
-    if (chooser == null) {
-      chooser = new JFileChooser(start);
-      chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
-      chooser.setMultiSelectionEnabled(false);
-    }
-    return chooser;
-  }  
-  
-  public void setPipeIndex(int idx)
-  {
-    titleLabel.setText(""+idx+" "+titleLabel.getText());
-  }
-
-  /**
-   * This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The content of this method is always
-   * regenerated by the Form Editor.
-   */
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-    java.awt.GridBagConstraints gridBagConstraints;
-
-    titleLabel = new javax.swing.JLabel();
-    ta = new javax.swing.JTextArea();
-    selectButt = new javax.swing.JButton();
-    spacer = new javax.swing.JLabel();
-    jLabel3 = new javax.swing.JLabel();
-    beginButt = new javax.swing.JButton();
-    jSeparator1 = new javax.swing.JSeparator();
-    endButt = new javax.swing.JButton();
-
-    setLayout(new java.awt.GridBagLayout());
-
-    titleLabel.setText("QR image directory watcher");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 0;
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    add(titleLabel, gridBagConstraints);
-
-    ta.setEditable(false);
-    ta.setColumns(2);
-    ta.setLineWrap(true);
-    ta.setRows(2);
-    ta.setBorder(javax.swing.BorderFactory.createLineBorder(java.awt.Color.lightGray));
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 2;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.weightx = 1.0;
-    gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0);
-    add(ta, gridBagConstraints);
-
-    selectButt.setText("select directory");
-    selectButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        selectDirectoryHandler(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 3;
-    add(selectButt, gridBagConstraints);
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 50;
-    gridBagConstraints.weighty = 1.0;
-    add(spacer, gridBagConstraints);
-
-    jLabel3.setText("directory");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
-    gridBagConstraints.insets = new java.awt.Insets(5, 0, 0, 0);
-    add(jLabel3, gridBagConstraints);
-
-    beginButt.setForeground(new java.awt.Color(51, 153, 0));
-    beginButt.setText("begin watch loop");
-    beginButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        beginHandler(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 5;
-    add(beginButt, gridBagConstraints);
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 4;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.weightx = 1.0;
-    add(jSeparator1, gridBagConstraints);
-
-    endButt.setForeground(new java.awt.Color(153, 0, 0));
-    endButt.setText("end watch loop");
-    endButt.setEnabled(false);
-    endButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        endLoopHandler(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 6;
-    add(endButt, gridBagConstraints);
-  }// </editor-fold>//GEN-END:initComponents
-
-  private void selectDirectoryHandler(java.awt.event.ActionEvent evt)//GEN-FIRST:event_selectDirectoryHandler
-  {//GEN-HEADEREND:event_selectDirectoryHandler
-    getChooser(null);
-    
-    int ret = chooser.showOpenDialog(this);
-    if(ret == JFileChooser.CANCEL_OPTION)
-      return;
-    ta.setEditable(true);
-    String path =chooser.getSelectedFile().getAbsolutePath();
-    ta.setText(path);
-    ta.setEditable(false);    
-  }//GEN-LAST:event_selectDirectoryHandler
-
-  private void beginHandler(java.awt.event.ActionEvent evt)//GEN-FIRST:event_beginHandler
-  {//GEN-HEADEREND:event_beginHandler
-    String path = ta.getText().trim();
-    beginButt.setEnabled(false);
-    endButt.setEnabled(true);
-    watcher.beginDirectoryWatch(path);   
-  }//GEN-LAST:event_beginHandler
-
-  public void endLoop()
-  {
-    beginButt.setEnabled(true);
-    endButt.setEnabled(false);
-  }
-  
-  private void endLoopHandler(java.awt.event.ActionEvent evt)//GEN-FIRST:event_endLoopHandler
-  {//GEN-HEADEREND:event_endLoopHandler
-    watcher.killLoop();
-  }//GEN-LAST:event_endLoopHandler
-
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  private javax.swing.JButton beginButt;
-  private javax.swing.JButton endButt;
-  private javax.swing.JLabel jLabel3;
-  private javax.swing.JSeparator jSeparator1;
-  private javax.swing.JButton selectButt;
-  private javax.swing.JLabel spacer;
-  private javax.swing.JTextArea ta;
-  private javax.swing.JLabel titleLabel;
-  // End of variables declaration//GEN-END:variables
-
-  }
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRGeneratorPanel.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRGeneratorPanel.form
deleted file mode 100755
index 5344b169a52e3148a248970c61232199456839da..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRGeneratorPanel.form
+++ /dev/null
@@ -1,124 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.5" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
-  <Properties>
-    <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-      <Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo">
-        <EmptyBorder bottom="5" left="5" right="5" top="5"/>
-      </Border>
-    </Property>
-  </Properties>
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,0,-99,0,0,0,-56"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-  <SubComponents>
-    <Component class="javax.swing.JLabel" name="typeLab">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="Image edge size"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="5" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="jLabel1">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="Error Correction Level"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="3" gridWidth="1" gridHeight="1" fill="0" ipadX="5" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JComboBox" name="errcorrLevelCB">
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="errcorrLevelCBActionPerformed"/>
-      </Events>
-      <AuxValues>
-        <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="1"/>
-      </AuxValues>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="4" gridWidth="0" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="20" insetsBottom="0" insetsRight="0" anchor="17" weightX="1.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="jLabel2">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="Margin (default = 4 squares)"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="5" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JSpinner" name="marginSpinner">
-      <Properties>
-        <Property name="model" type="javax.swing.SpinnerModel" editor="org.netbeans.modules.form.editors2.SpinnerModelEditor">
-          <SpinnerModel initial="4" maximum="100" minimum="0" numberType="java.lang.Integer" stepSize="1" type="number"/>
-        </Property>
-      </Properties>
-      <Events>
-        <EventHandler event="stateChanged" listener="javax.swing.event.ChangeListener" parameters="javax.swing.event.ChangeEvent" handler="marginSpinnerStateChanged"/>
-      </Events>
-      <AuxValues>
-        <AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="1"/>
-      </AuxValues>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="6" gridWidth="0" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="20" insetsBottom="0" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="jLabel3">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="QR generator"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="0" gridWidth="0" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="spacer">
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="7" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="1.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JTextField" name="sizeTF">
-      <Properties>
-        <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-          <Dimension value="[100, 28]"/>
-        </Property>
-        <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-          <Dimension value="[100, 28]"/>
-        </Property>
-      </Properties>
-      <Events>
-        <EventHandler event="focusLost" listener="java.awt.event.FocusListener" parameters="java.awt.event.FocusEvent" handler="sizeTFFocusLost"/>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="sizeTFActionPerformed"/>
-      </Events>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="2" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="20" insetsBottom="0" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-  </SubComponents>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRGeneratorPanel.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRGeneratorPanel.java
deleted file mode 100755
index 0e5eab5b227274aecb0e056acb3203d6389b0c22..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRGeneratorPanel.java
+++ /dev/null
@@ -1,223 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements.gui;
-
-import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import static edu.nps.moves.qrtda.elements.QRGenerator.*;
-import javax.swing.DefaultComboBoxModel;
-import javax.swing.JOptionPane;
-
-/**
- * QRGeneratorPanel.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class QRGeneratorPanel extends javax.swing.JPanel
-{
-  private final TdaEnvironment env;
-  public QRGeneratorPanel(TdaEnvironment tda)
-  {
-    env = tda;
-    initComponents();
-    marginSpinner.setValue(Integer.parseInt(env.getOptionValue(IMAGEMARGINOPTION)));
-    sizeTF.setText(env.getOptionValue(PIXELSIZEOPTION));
-    initializeCorrectionLevelCombo();    
-    errcorrLevelCB.setSelectedItem(env.getOptionValue(ERRORCORRECTIONOPTION));
-  }
-  
-  // Make the combo hold strings
-  private void initializeCorrectionLevelCombo()
-  {
-    ErrorCorrectionLevel[] corLevs = ErrorCorrectionLevel.values();
-    String[] names = new String[corLevs.length];
-    for(int i=0;i<corLevs.length;i++)
-      names[i] = corLevs[i].name();
-    errcorrLevelCB.setModel(new DefaultComboBoxModel(names));   
-  }
-  
-  public void setPipeIndex(int idx)
-  {
-    // leave off index jLabel3.setText(""+idx+" "+jLabel3.getText());
-  }
-
-  /**
-   * This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The content of this method is always
-   * regenerated by the Form Editor.
-   */
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-    java.awt.GridBagConstraints gridBagConstraints;
-
-    typeLab = new javax.swing.JLabel();
-    jLabel1 = new javax.swing.JLabel();
-    errcorrLevelCB = new javax.swing.JComboBox();
-    jLabel2 = new javax.swing.JLabel();
-    marginSpinner = new javax.swing.JSpinner();
-    jLabel3 = new javax.swing.JLabel();
-    spacer = new javax.swing.JLabel();
-    sizeTF = new javax.swing.JTextField();
-
-    setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5));
-    setLayout(new java.awt.GridBagLayout());
-
-    typeLab.setText("Image edge size");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.ipadx = 5;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
-    add(typeLab, gridBagConstraints);
-
-    jLabel1.setText("Error Correction Level");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 3;
-    gridBagConstraints.ipadx = 5;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
-    add(jLabel1, gridBagConstraints);
-
-    errcorrLevelCB.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        errcorrLevelCBActionPerformed(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 4;
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
-    gridBagConstraints.weightx = 1.0;
-    gridBagConstraints.insets = new java.awt.Insets(0, 20, 0, 0);
-    add(errcorrLevelCB, gridBagConstraints);
-
-    jLabel2.setText("Margin (default = 4 squares)");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 5;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
-    add(jLabel2, gridBagConstraints);
-
-    marginSpinner.setModel(new javax.swing.SpinnerNumberModel(4, 0, 100, 1));
-    marginSpinner.addChangeListener(new javax.swing.event.ChangeListener()
-    {
-      public void stateChanged(javax.swing.event.ChangeEvent evt)
-      {
-        marginSpinnerStateChanged(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 6;
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
-    gridBagConstraints.insets = new java.awt.Insets(0, 20, 0, 0);
-    add(marginSpinner, gridBagConstraints);
-
-    jLabel3.setText("QR generator");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 0;
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    add(jLabel3, gridBagConstraints);
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 7;
-    gridBagConstraints.weighty = 1.0;
-    add(spacer, gridBagConstraints);
-
-    sizeTF.setMinimumSize(new java.awt.Dimension(100, 28));
-    sizeTF.setPreferredSize(new java.awt.Dimension(100, 28));
-    sizeTF.addFocusListener(new java.awt.event.FocusAdapter()
-    {
-      public void focusLost(java.awt.event.FocusEvent evt)
-      {
-        sizeTFFocusLost(evt);
-      }
-    });
-    sizeTF.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        sizeTFActionPerformed(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 2;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
-    gridBagConstraints.insets = new java.awt.Insets(0, 20, 0, 0);
-    add(sizeTF, gridBagConstraints);
-  }// </editor-fold>//GEN-END:initComponents
-
-  private void sizeTFActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_sizeTFActionPerformed
-  {//GEN-HEADEREND:event_sizeTFActionPerformed
-    String val = sizeTF.getText().trim();
-    try {
-      Integer.parseInt(val);
-    }
-    catch(NumberFormatException t) {
-      JOptionPane.showMessageDialog(this, "Format Error", "The entered value must be an integer", JOptionPane.ERROR_MESSAGE);
-      return;
-    }
-    env.setOptionValue(PIXELSIZEOPTION, val);
-  }//GEN-LAST:event_sizeTFActionPerformed
-
-  private void errcorrLevelCBActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_errcorrLevelCBActionPerformed
-  {//GEN-HEADEREND:event_errcorrLevelCBActionPerformed
-    Object obj = errcorrLevelCB.getSelectedItem();
-    String s = obj.toString();
-    env.setOptionValue(ERRORCORRECTIONOPTION, errcorrLevelCB.getSelectedItem().toString());
-  }//GEN-LAST:event_errcorrLevelCBActionPerformed
-
-  private void marginSpinnerStateChanged(javax.swing.event.ChangeEvent evt)//GEN-FIRST:event_marginSpinnerStateChanged
-  {//GEN-HEADEREND:event_marginSpinnerStateChanged
-    env.setOptionValue(IMAGEMARGINOPTION, marginSpinner.getValue().toString());
-
-  }//GEN-LAST:event_marginSpinnerStateChanged
-
-  private void sizeTFFocusLost(java.awt.event.FocusEvent evt)//GEN-FIRST:event_sizeTFFocusLost
-  {//GEN-HEADEREND:event_sizeTFFocusLost
-    sizeTFActionPerformed(null);
-  }//GEN-LAST:event_sizeTFFocusLost
-
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  public javax.swing.JComboBox errcorrLevelCB;
-  private javax.swing.JLabel jLabel1;
-  private javax.swing.JLabel jLabel2;
-  private javax.swing.JLabel jLabel3;
-  public javax.swing.JSpinner marginSpinner;
-  private javax.swing.JTextField sizeTF;
-  private javax.swing.JLabel spacer;
-  private javax.swing.JLabel typeLab;
-  // End of variables declaration//GEN-END:variables
-
- }
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRImageLegendAppenderPanel.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRImageLegendAppenderPanel.form
deleted file mode 100644
index ea16e0859c3db3d86c79318c6315f1a0904d42f7..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRImageLegendAppenderPanel.form
+++ /dev/null
@@ -1,91 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.5" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
-  <Properties>
-    <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-      <Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo">
-        <EmptyBorder bottom="5" left="5" right="5" top="5"/>
-      </Border>
-    </Property>
-  </Properties>
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,0,90,0,0,0,-8"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-  <SubComponents>
-    <Component class="javax.swing.JLabel" name="titleLab">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="QR Legend Appender"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="0" gridWidth="0" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="5" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="onOffLab">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="append legend"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="1" gridWidth="2" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="13" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JCheckBox" name="appendCB">
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="appendCBActionPerformed"/>
-      </Events>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="2" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="percentLab">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="image height percentage"/>
-        <Property name="enabled" type="boolean" value="false"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="4" gridWidth="2" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="13" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JSpinner" name="percentSpinner">
-      <Properties>
-        <Property name="model" type="javax.swing.SpinnerModel" editor="org.netbeans.modules.form.editors2.SpinnerModelEditor">
-          <SpinnerModel initial="0.25" maximum="1.0" minimum="0.0" numberType="java.lang.Float" stepSize="0.05" type="number"/>
-        </Property>
-        <Property name="enabled" type="boolean" value="false"/>
-      </Properties>
-      <Events>
-        <EventHandler event="stateChanged" listener="javax.swing.event.ChangeListener" parameters="javax.swing.event.ChangeEvent" handler="percentSpinnerStateChanged"/>
-      </Events>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="-1" gridY="4" gridWidth="0" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="11" weightX="1.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="spacer">
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="1.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-  </SubComponents>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRImageLegendAppenderPanel.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRImageLegendAppenderPanel.java
deleted file mode 100644
index 6d9da653296308f39decf6df7391025435b80acb..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRImageLegendAppenderPanel.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements.gui;
-
-import edu.nps.moves.qrtda.TdaEnvironment;
-import javax.swing.JFileChooser;
-import static edu.nps.moves.qrtda.elements.QRImageLegendAppender.*;
-
-/**
- * QRImageLegendAppenderPanel.java created on Jun 29, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class QRImageLegendAppenderPanel extends javax.swing.JPanel
-{
-  private static final long serialVersionUID = -1589070123399492189L;
-  private JFileChooser chooser;
-  private final TdaEnvironment env;
-  public QRImageLegendAppenderPanel(TdaEnvironment env)
-  {
-    this.env = env;
-    initComponents();
-  
-    percentSpinner.setValue(Float.parseFloat(env.getOptionValue(IMAGEAPPENDERPERCENTOPTION))); 
-    appendCB.setSelected(Boolean.parseBoolean(env.getOptionValue(IMAGEAPPENDERENABLEDOPTION)));
-    
-    appendCBActionPerformed(null);
-  }
-
-  public void setPipeIndex(int idx)
-  {
-    titleLab.setText(""+idx+" "+titleLab.getText());
-  }
-    
-  private void widgetEnabler(boolean on)
-  {
-    percentSpinner.setEnabled(on);
-    percentLab.setEnabled(on);
-  }
-  
-  /**
-   * This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The content of this method is always
-   * regenerated by the Form Editor.
-   */
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-    java.awt.GridBagConstraints gridBagConstraints;
-
-    titleLab = new javax.swing.JLabel();
-    onOffLab = new javax.swing.JLabel();
-    appendCB = new javax.swing.JCheckBox();
-    percentLab = new javax.swing.JLabel();
-    percentSpinner = new javax.swing.JSpinner();
-    spacer = new javax.swing.JLabel();
-
-    setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5));
-    setLayout(new java.awt.GridBagLayout());
-
-    titleLab.setText("QR Legend Appender");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 0;
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0);
-    add(titleLab, gridBagConstraints);
-
-    onOffLab.setText("append legend");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.gridwidth = 2;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
-    add(onOffLab, gridBagConstraints);
-
-    appendCB.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        appendCBActionPerformed(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 2;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
-    add(appendCB, gridBagConstraints);
-
-    percentLab.setText("image height percentage");
-    percentLab.setEnabled(false);
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 4;
-    gridBagConstraints.gridwidth = 2;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
-    add(percentLab, gridBagConstraints);
-
-    percentSpinner.setModel(new javax.swing.SpinnerNumberModel(Float.valueOf(0.25f), Float.valueOf(0.0f), Float.valueOf(1.0f), Float.valueOf(0.05f)));
-    percentSpinner.setEnabled(false);
-    percentSpinner.addChangeListener(new javax.swing.event.ChangeListener()
-    {
-      public void stateChanged(javax.swing.event.ChangeEvent evt)
-      {
-        percentSpinnerStateChanged(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridy = 4;
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
-    gridBagConstraints.weightx = 1.0;
-    add(percentSpinner, gridBagConstraints);
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.weighty = 1.0;
-    add(spacer, gridBagConstraints);
-  }// </editor-fold>//GEN-END:initComponents
-
-  private void appendCBActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_appendCBActionPerformed
-  {//GEN-HEADEREND:event_appendCBActionPerformed
-    boolean on = appendCB.isSelected();
-    env.setOptionValue(IMAGEAPPENDERENABLEDOPTION, Boolean.toString(on));
-    widgetEnabler(on);
-  }//GEN-LAST:event_appendCBActionPerformed
-
-  private void percentSpinnerStateChanged(javax.swing.event.ChangeEvent evt)//GEN-FIRST:event_percentSpinnerStateChanged
-  {//GEN-HEADEREND:event_percentSpinnerStateChanged
-    env.setOptionValue(IMAGEAPPENDERPERCENTOPTION, percentSpinner.getValue().toString());
-  }//GEN-LAST:event_percentSpinnerStateChanged
-
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  private javax.swing.JCheckBox appendCB;
-  private javax.swing.JLabel onOffLab;
-  private javax.swing.JLabel percentLab;
-  private javax.swing.JSpinner percentSpinner;
-  private javax.swing.JLabel spacer;
-  private javax.swing.JLabel titleLab;
-  // End of variables declaration//GEN-END:variables
- }
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRImageOverlayerPanel.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRImageOverlayerPanel.form
deleted file mode 100644
index 9324d781aade7a419b26feb3446eda018973a7d4..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRImageOverlayerPanel.form
+++ /dev/null
@@ -1,161 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.5" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
-  <Properties>
-    <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-      <Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo">
-        <EmptyBorder bottom="5" left="5" right="5" top="5"/>
-      </Border>
-    </Property>
-  </Properties>
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,0,-112,0,0,1,-126"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-  <SubComponents>
-    <Component class="javax.swing.JLabel" name="titleLab">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="QR Image Overlayer"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="0" gridWidth="0" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="5" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="onOffLab">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="image overlay"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="1" gridWidth="2" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="13" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JCheckBox" name="overlayCB">
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="overlayCBActionPerformed"/>
-      </Events>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="2" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JTextField" name="fileNameTF">
-      <Properties>
-        <Property name="toolTipText" type="java.lang.String" value=""/>
-        <Property name="enabled" type="boolean" value="false"/>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="fileNameTFActionPerformed"/>
-      </Events>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="2" gridY="2" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="transpLab">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="transparency"/>
-        <Property name="enabled" type="boolean" value="false"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="3" gridWidth="2" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="13" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JSpinner" name="transparencySpinner">
-      <Properties>
-        <Property name="model" type="javax.swing.SpinnerModel" editor="org.netbeans.modules.form.editors2.SpinnerModelEditor">
-          <SpinnerModel initial="1.0" maximum="1.0" minimum="0.0" numberType="java.lang.Float" stepSize="0.05" type="number"/>
-        </Property>
-        <Property name="enabled" type="boolean" value="false"/>
-      </Properties>
-      <Events>
-        <EventHandler event="stateChanged" listener="javax.swing.event.ChangeListener" parameters="javax.swing.event.ChangeEvent" handler="transparencySpinnerStateChanged"/>
-      </Events>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="-1" gridY="3" gridWidth="0" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="rationLab">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="size ratio"/>
-        <Property name="enabled" type="boolean" value="false"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="4" gridWidth="2" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="13" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JSpinner" name="ratioSpinner">
-      <Properties>
-        <Property name="model" type="javax.swing.SpinnerModel" editor="org.netbeans.modules.form.editors2.SpinnerModelEditor">
-          <SpinnerModel initial="0.25" maximum="1.0" minimum="0.0" numberType="java.lang.Float" stepSize="0.05" type="number"/>
-        </Property>
-        <Property name="enabled" type="boolean" value="false"/>
-      </Properties>
-      <Events>
-        <EventHandler event="stateChanged" listener="javax.swing.event.ChangeListener" parameters="javax.swing.event.ChangeEvent" handler="ratioSpinnerStateChanged"/>
-      </Events>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="-1" gridY="4" gridWidth="0" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="11" weightX="1.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="spacer">
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="1.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Container class="javax.swing.JPanel" name="setFilePan">
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="1" gridY="2" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="13" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-
-      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout"/>
-      <SubComponents>
-        <Component class="javax.swing.JButton" name="chooserButt">
-          <Properties>
-            <Property name="text" type="java.lang.String" value="set"/>
-            <Property name="enabled" type="boolean" value="false"/>
-            <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-              <Dimension value="[30, 20]"/>
-            </Property>
-          </Properties>
-          <Events>
-            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="chooserButtActionPerformed"/>
-          </Events>
-        </Component>
-        <Component class="javax.swing.JLabel" name="fileLab">
-          <Properties>
-            <Property name="text" type="java.lang.String" value="file"/>
-            <Property name="enabled" type="boolean" value="false"/>
-          </Properties>
-        </Component>
-      </SubComponents>
-    </Container>
-  </SubComponents>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRImageOverlayerPanel.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRImageOverlayerPanel.java
deleted file mode 100644
index 257675f9d624dc31ee5d37da93862d8064f4f88b..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRImageOverlayerPanel.java
+++ /dev/null
@@ -1,276 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements.gui;
-
-import edu.nps.moves.qrtda.TdaEnvironment;
-import javax.swing.JFileChooser;
-import static edu.nps.moves.qrtda.elements.QRImageOverlayer.*;
-
-/**
- * QRImageOverlayerPanel.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class QRImageOverlayerPanel extends javax.swing.JPanel
-{
-  private JFileChooser chooser;
-  private final TdaEnvironment env;
-  public QRImageOverlayerPanel(TdaEnvironment env)
-  {
-    this.env = env;
-    initComponents();
-  
-    String path=env.getOptionValue(IMAGEOVERLAYFILEPATHOPTION);
-    fileNameTF.setText(path);
-    transparencySpinner.setValue(Float.parseFloat(env.getOptionValue(IMAGEOVERLAYTRANSPARENCYOPTION)));
-    ratioSpinner.setValue(Float.parseFloat(env.getOptionValue(IMAGEOVERLAYSIZERATIONOPTION))); 
-    overlayCB.setSelected(Boolean.parseBoolean(env.getOptionValue(IMAGEOVERLAYACTIVEOPTION)));
-    
-    overlayCBActionPerformed(null);
-  }
-
-  public void setPipeIndex(int idx)
-  {
-    titleLab.setText(""+idx+" "+titleLab.getText());
-  }
-
-  private void showChooser()
-  {
-    if(chooser == null) {
-      chooser = new JFileChooser();
-      chooser.setCurrentDirectory(TdaEnvironment.artDirectory);
-      chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
-      chooser.setMultiSelectionEnabled(false);
-      
-    }
-    int res = chooser.showOpenDialog(this);
-    if(res == JFileChooser.APPROVE_OPTION) {
-      fileNameTF.setText(env.optimizeArtFile(chooser.getSelectedFile()));
-      fileNameTFActionPerformed(null);
-    }
-  }
-    
-  private void widgetEnabler(boolean on)
-  {
-    chooserButt.setEnabled(on);
-    fileLab.setEnabled(on);
-    fileNameTF.setEnabled(on);
-
-    ratioSpinner.setEnabled(on);
-    rationLab.setEnabled(on);
-
-    transpLab.setEnabled(on);
-    transparencySpinner.setEnabled(on);
-  }
-  
-  /**
-   * This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The content of this method is always
-   * regenerated by the Form Editor.
-   */
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-    java.awt.GridBagConstraints gridBagConstraints;
-
-    titleLab = new javax.swing.JLabel();
-    onOffLab = new javax.swing.JLabel();
-    overlayCB = new javax.swing.JCheckBox();
-    fileNameTF = new javax.swing.JTextField();
-    transpLab = new javax.swing.JLabel();
-    transparencySpinner = new javax.swing.JSpinner();
-    rationLab = new javax.swing.JLabel();
-    ratioSpinner = new javax.swing.JSpinner();
-    spacer = new javax.swing.JLabel();
-    setFilePan = new javax.swing.JPanel();
-    chooserButt = new javax.swing.JButton();
-    fileLab = new javax.swing.JLabel();
-
-    setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5));
-    setLayout(new java.awt.GridBagLayout());
-
-    titleLab.setText("QR Image Overlayer");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 0;
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0);
-    add(titleLab, gridBagConstraints);
-
-    onOffLab.setText("image overlay");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.gridwidth = 2;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
-    add(onOffLab, gridBagConstraints);
-
-    overlayCB.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        overlayCBActionPerformed(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 2;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
-    add(overlayCB, gridBagConstraints);
-
-    fileNameTF.setToolTipText("");
-    fileNameTF.setEnabled(false);
-    fileNameTF.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        fileNameTFActionPerformed(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 2;
-    gridBagConstraints.gridy = 2;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.weightx = 1.0;
-    add(fileNameTF, gridBagConstraints);
-
-    transpLab.setText("transparency");
-    transpLab.setEnabled(false);
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 3;
-    gridBagConstraints.gridwidth = 2;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
-    add(transpLab, gridBagConstraints);
-
-    transparencySpinner.setModel(new javax.swing.SpinnerNumberModel(Float.valueOf(1.0f), Float.valueOf(0.0f), Float.valueOf(1.0f), Float.valueOf(0.05f)));
-    transparencySpinner.setEnabled(false);
-    transparencySpinner.addChangeListener(new javax.swing.event.ChangeListener()
-    {
-      public void stateChanged(javax.swing.event.ChangeEvent evt)
-      {
-        transparencySpinnerStateChanged(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridy = 3;
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    add(transparencySpinner, gridBagConstraints);
-
-    rationLab.setText("size ratio");
-    rationLab.setEnabled(false);
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 4;
-    gridBagConstraints.gridwidth = 2;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
-    add(rationLab, gridBagConstraints);
-
-    ratioSpinner.setModel(new javax.swing.SpinnerNumberModel(Float.valueOf(0.25f), Float.valueOf(0.0f), Float.valueOf(1.0f), Float.valueOf(0.05f)));
-    ratioSpinner.setEnabled(false);
-    ratioSpinner.addChangeListener(new javax.swing.event.ChangeListener()
-    {
-      public void stateChanged(javax.swing.event.ChangeEvent evt)
-      {
-        ratioSpinnerStateChanged(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridy = 4;
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
-    gridBagConstraints.weightx = 1.0;
-    add(ratioSpinner, gridBagConstraints);
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.weighty = 1.0;
-    add(spacer, gridBagConstraints);
-
-    chooserButt.setText("set");
-    chooserButt.setEnabled(false);
-    chooserButt.setPreferredSize(new java.awt.Dimension(30, 20));
-    chooserButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        chooserButtActionPerformed(evt);
-      }
-    });
-    setFilePan.add(chooserButt);
-
-    fileLab.setText("file");
-    fileLab.setEnabled(false);
-    setFilePan.add(fileLab);
-
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 1;
-    gridBagConstraints.gridy = 2;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
-    add(setFilePan, gridBagConstraints);
-  }// </editor-fold>//GEN-END:initComponents
-
-  private void overlayCBActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_overlayCBActionPerformed
-  {//GEN-HEADEREND:event_overlayCBActionPerformed
-    boolean on = overlayCB.isSelected();
-    env.setOptionValue(IMAGEOVERLAYACTIVEOPTION, Boolean.toString(on));
-    widgetEnabler(on);
-  }//GEN-LAST:event_overlayCBActionPerformed
-
-  private void fileNameTFActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_fileNameTFActionPerformed
-  {//GEN-HEADEREND:event_fileNameTFActionPerformed
-    env.setOptionValue(IMAGEOVERLAYFILEPATHOPTION, fileNameTF.getText().trim());
-  }//GEN-LAST:event_fileNameTFActionPerformed
-
-  private void transparencySpinnerStateChanged(javax.swing.event.ChangeEvent evt)//GEN-FIRST:event_transparencySpinnerStateChanged
-  {//GEN-HEADEREND:event_transparencySpinnerStateChanged
-    env.setOptionValue(IMAGEOVERLAYTRANSPARENCYOPTION, transparencySpinner.getValue().toString());
-  }//GEN-LAST:event_transparencySpinnerStateChanged
-
-  private void ratioSpinnerStateChanged(javax.swing.event.ChangeEvent evt)//GEN-FIRST:event_ratioSpinnerStateChanged
-  {//GEN-HEADEREND:event_ratioSpinnerStateChanged
-    env.setOptionValue(IMAGEOVERLAYSIZERATIONOPTION, ratioSpinner.getValue().toString());
-  }//GEN-LAST:event_ratioSpinnerStateChanged
-
-  private void chooserButtActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_chooserButtActionPerformed
-  {//GEN-HEADEREND:event_chooserButtActionPerformed
-    showChooser();
-  }//GEN-LAST:event_chooserButtActionPerformed
-
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  private javax.swing.JButton chooserButt;
-  private javax.swing.JLabel fileLab;
-  private javax.swing.JTextField fileNameTF;
-  private javax.swing.JLabel onOffLab;
-  private javax.swing.JCheckBox overlayCB;
-  private javax.swing.JSpinner ratioSpinner;
-  private javax.swing.JLabel rationLab;
-  private javax.swing.JPanel setFilePan;
-  private javax.swing.JLabel spacer;
-  private javax.swing.JLabel titleLab;
-  private javax.swing.JLabel transpLab;
-  private javax.swing.JSpinner transparencySpinner;
-  // End of variables declaration//GEN-END:variables
- }
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRImagePanelDisplayerOptions.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRImagePanelDisplayerOptions.form
deleted file mode 100644
index 3271a7ed0757bbccb2bb0a92cee51c69cf529ea2..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRImagePanelDisplayerOptions.form
+++ /dev/null
@@ -1,64 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,0,76,0,0,0,-30"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-  <SubComponents>
-    <Component class="javax.swing.JCheckBox" name="jCheckBox1">
-      <Properties>
-        <Property name="selected" type="boolean" value="true"/>
-        <Property name="text" type="java.lang.String" value="display image"/>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jCheckBox1ActionPerformed"/>
-      </Events>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="-1" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="10" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="jLabel1">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="(disabling local image display may"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="1" gridWidth="0" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="jLabel6">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="improve throughput)"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="2" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="jLabel5">
-      <Properties>
-        <Property name="toolTipText" type="java.lang.String" value=""/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="3" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="1.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-  </SubComponents>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRImagePanelDisplayerOptions.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRImagePanelDisplayerOptions.java
deleted file mode 100644
index e0c84e7f058c729430a95cc0b0c9d45410172cbd..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRImagePanelDisplayerOptions.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements.gui;
-
-/**
- * QRImagePanelDisplayerOptions.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class QRImagePanelDisplayerOptions extends javax.swing.JPanel
-{
-  private final YesNoListener lis;
-  
-  public QRImagePanelDisplayerOptions(YesNoListener lis)
-  {
-    this.lis = lis;
-    initComponents();
-  }
-    
-  public boolean isDisplayImage()
-  {
-    return jCheckBox1.isSelected();
-  }
-
-  /**
-   * This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The content of this method is always
-   * regenerated by the Form Editor.
-   */
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-    java.awt.GridBagConstraints gridBagConstraints;
-
-    jCheckBox1 = new javax.swing.JCheckBox();
-    jLabel1 = new javax.swing.JLabel();
-    jLabel6 = new javax.swing.JLabel();
-    jLabel5 = new javax.swing.JLabel();
-
-    setLayout(new java.awt.GridBagLayout());
-
-    jCheckBox1.setSelected(true);
-    jCheckBox1.setText("display image");
-    jCheckBox1.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        jCheckBox1ActionPerformed(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridy = 0;
-    gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 0);
-    add(jCheckBox1, gridBagConstraints);
-
-    jLabel1.setText("(disabling local image display may");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    add(jLabel1, gridBagConstraints);
-
-    jLabel6.setText("improve throughput)");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 2;
-    add(jLabel6, gridBagConstraints);
-
-    jLabel5.setToolTipText("");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 3;
-    gridBagConstraints.weighty = 1.0;
-    add(jLabel5, gridBagConstraints);
-  }// </editor-fold>//GEN-END:initComponents
-
-  private void jCheckBox1ActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_jCheckBox1ActionPerformed
-  {//GEN-HEADEREND:event_jCheckBox1ActionPerformed
-    if(lis != null)
-      lis.yesSelected(jCheckBox1.isSelected());
-  }//GEN-LAST:event_jCheckBox1ActionPerformed
-
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  private javax.swing.JCheckBox jCheckBox1;
-  private javax.swing.JLabel jLabel1;
-  private javax.swing.JLabel jLabel5;
-  private javax.swing.JLabel jLabel6;
-  // End of variables declaration//GEN-END:variables
-
- }
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRImageSaveToFilePanel.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRImageSaveToFilePanel.form
deleted file mode 100755
index 847f003958a91dc923788dd13c9d5c086650b0d3..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRImageSaveToFilePanel.form
+++ /dev/null
@@ -1,168 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
-  <Properties>
-    <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-      <Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo">
-        <EmptyBorder bottom="5" left="5" right="5" top="5"/>
-      </Border>
-    </Property>
-  </Properties>
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,48,0,0,1,20"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-  <SubComponents>
-    <Component class="javax.swing.JLabel" name="titleLab">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="QR image file saver"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="-1" gridWidth="0" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JCheckBox" name="enableSavingCB">
-      <Properties>
-        <Property name="selected" type="boolean" value="true"/>
-        <Property name="text" type="java.lang.String" value="save images"/>
-        <Property name="horizontalTextPosition" type="int" value="10"/>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="enableSavingCBActionPerformed"/>
-      </Events>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="1" gridWidth="0" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="typeLab">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="image type"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="5" insetsBottom="0" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JComboBox" name="typeCB">
-      <Properties>
-        <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
-          <StringArray count="6">
-            <StringItem index="0" value="png"/>
-            <StringItem index="1" value="jpeg"/>
-            <StringItem index="2" value="bmp"/>
-            <StringItem index="3" value="wbmp"/>
-            <StringItem index="4" value="gif"/>
-            <StringItem index="5" value=" "/>
-          </StringArray>
-        </Property>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="1" gridY="2" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="prefixLab">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="file name prefix"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="-1" gridWidth="0" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="5" insetsLeft="5" insetsBottom="0" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JTextField" name="prefixTF">
-      <Properties>
-        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-          <Border info="org.netbeans.modules.form.compat2.border.LineBorderInfo">
-            <LineBorder>
-              <Color PropertyName="color" blue="c0" green="c0" id="lightGray" palette="1" red="c0" type="palette"/>
-            </LineBorder>
-          </Border>
-        </Property>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="-1" gridWidth="0" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="directoryLab">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="directory"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="-1" gridWidth="0" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="5" insetsLeft="5" insetsBottom="0" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JTextArea" name="directoryTA">
-      <Properties>
-        <Property name="editable" type="boolean" value="false"/>
-        <Property name="columns" type="int" value="20"/>
-        <Property name="lineWrap" type="boolean" value="true"/>
-        <Property name="rows" type="int" value="2"/>
-        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-          <Border info="org.netbeans.modules.form.compat2.border.LineBorderInfo">
-            <LineBorder>
-              <Color PropertyName="color" blue="c0" green="c0" id="lightGray" palette="1" red="c0" type="palette"/>
-            </LineBorder>
-          </Border>
-        </Property>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="-1" gridWidth="0" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="5" insetsRight="0" anchor="10" weightX="1.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JButton" name="selectButt">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="select directory"/>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="selectDirectoryHandler"/>
-      </Events>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="-1" gridWidth="0" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JCheckBox" name="overwriteCheckB">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="overwrite"/>
-        <Property name="horizontalTextPosition" type="int" value="10"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="9" gridWidth="0" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="spacer">
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="-1" gridWidth="-1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="1.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-  </SubComponents>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRImageSaveToFilePanel.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRImageSaveToFilePanel.java
deleted file mode 100755
index 29772cf8975acf4f16eed34fd980de110fe9cd59..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRImageSaveToFilePanel.java
+++ /dev/null
@@ -1,231 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements.gui;
-
-import edu.nps.moves.qrtda.TdaEnvironment;
-import static edu.nps.moves.qrtda.elements.QRImageSaveToFile.*;
-import javax.swing.JFileChooser;
-
-/**
- * QRImageSaveToFilePanel.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class QRImageSaveToFilePanel extends javax.swing.JPanel
-{
-  private static final long serialVersionUID = -1033454806976642698L;
-  private JFileChooser chooser;
-  private final TdaEnvironment env;
-  
-  public QRImageSaveToFilePanel(TdaEnvironment env)
-  {
-    this.env = env;
-    initComponents();
-    
-    typeCB.setSelectedItem(env.getOptionValue(QRIMAGEFORMATOPTION));
-    prefixTF.setText(env.getOptionValue(QRFILENAMEPREFIXOPTION));
-    directoryTA.setText(env.getOptionValue(QRIMAGEDIRECTORYPATHOPTION));
-    overwriteCheckB.setSelected(Boolean.parseBoolean(env.getOptionValue(QROVERWRITEIMAGEOPTION)));
-    enableSavingCB.setSelected(Boolean.parseBoolean(env.getOptionValue(QRIMAGESAVEENABLEDOPTION)));
-
-    enableSavingCBActionPerformed(null);
-  }
-
-  private void widgetEnabler(boolean wh)
-  {
-    directoryTA.setEnabled(wh);
-    prefixTF.setEnabled(wh);
-    selectButt.setEnabled(wh);
-    typeCB.setEnabled(wh);
-    overwriteCheckB.setEnabled(wh);
-    directoryLab.setEnabled(wh);
-    prefixLab.setEnabled(wh);
-    typeLab.setEnabled(wh);
-  }
-  /**
-   * This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The content of this method is always
-   * regenerated by the Form Editor.
-   */
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-    java.awt.GridBagConstraints gridBagConstraints;
-
-    titleLab = new javax.swing.JLabel();
-    enableSavingCB = new javax.swing.JCheckBox();
-    typeLab = new javax.swing.JLabel();
-    typeCB = new javax.swing.JComboBox();
-    prefixLab = new javax.swing.JLabel();
-    prefixTF = new javax.swing.JTextField();
-    directoryLab = new javax.swing.JLabel();
-    directoryTA = new javax.swing.JTextArea();
-    selectButt = new javax.swing.JButton();
-    overwriteCheckB = new javax.swing.JCheckBox();
-    spacer = new javax.swing.JLabel();
-
-    setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5));
-    setLayout(new java.awt.GridBagLayout());
-
-    titleLab.setText("QR image file saver");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    add(titleLab, gridBagConstraints);
-
-    enableSavingCB.setSelected(true);
-    enableSavingCB.setText("save images");
-    enableSavingCB.setHorizontalTextPosition(javax.swing.SwingConstants.LEADING);
-    enableSavingCB.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        enableSavingCBActionPerformed(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
-    add(enableSavingCB, gridBagConstraints);
-
-    typeLab.setText("image type");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
-    gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 0);
-    add(typeLab, gridBagConstraints);
-
-    typeCB.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "png", "jpeg", "bmp", "wbmp", "gif", " " }));
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 1;
-    gridBagConstraints.gridy = 2;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
-    add(typeCB, gridBagConstraints);
-
-    prefixLab.setText("file name prefix");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
-    gridBagConstraints.insets = new java.awt.Insets(5, 5, 0, 0);
-    add(prefixLab, gridBagConstraints);
-
-    prefixTF.setBorder(javax.swing.BorderFactory.createLineBorder(java.awt.Color.lightGray));
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.weightx = 1.0;
-    add(prefixTF, gridBagConstraints);
-
-    directoryLab.setText("directory");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
-    gridBagConstraints.insets = new java.awt.Insets(5, 5, 0, 0);
-    add(directoryLab, gridBagConstraints);
-
-    directoryTA.setEditable(false);
-    directoryTA.setColumns(20);
-    directoryTA.setLineWrap(true);
-    directoryTA.setRows(2);
-    directoryTA.setBorder(javax.swing.BorderFactory.createLineBorder(java.awt.Color.lightGray));
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.weightx = 1.0;
-    gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0);
-    add(directoryTA, gridBagConstraints);
-
-    selectButt.setText("select directory");
-    selectButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        selectDirectoryHandler(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
-    add(selectButt, gridBagConstraints);
-
-    overwriteCheckB.setText("overwrite");
-    overwriteCheckB.setHorizontalTextPosition(javax.swing.SwingConstants.LEADING);
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 9;
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
-    add(overwriteCheckB, gridBagConstraints);
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.RELATIVE;
-    gridBagConstraints.weighty = 1.0;
-    add(spacer, gridBagConstraints);
-  }// </editor-fold>//GEN-END:initComponents
-
-  private void selectDirectoryHandler(java.awt.event.ActionEvent evt)//GEN-FIRST:event_selectDirectoryHandler
-  {//GEN-HEADEREND:event_selectDirectoryHandler
-    if(chooser == null) {
-      chooser = new JFileChooser();
-      chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
-      chooser.setMultiSelectionEnabled(false);
-    }
-    int ret = chooser.showOpenDialog(this);
-    if(ret == JFileChooser.CANCEL_OPTION)
-      return;
-    directoryTA.setEditable(true);
-    String path =chooser.getSelectedFile().getAbsolutePath();
-    directoryTA.setText(path);
-    directoryTA.setEditable(false);    
-  }//GEN-LAST:event_selectDirectoryHandler
-
-  private void enableSavingCBActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_enableSavingCBActionPerformed
-  {//GEN-HEADEREND:event_enableSavingCBActionPerformed
-    boolean on = enableSavingCB.isSelected();
-    env.setOptionValue(QRIMAGESAVEENABLEDOPTION, Boolean.toString(on));
-    widgetEnabler(on);
-  }//GEN-LAST:event_enableSavingCBActionPerformed
- 
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  private javax.swing.JLabel directoryLab;
-  private javax.swing.JTextArea directoryTA;
-  private javax.swing.JCheckBox enableSavingCB;
-  private javax.swing.JCheckBox overwriteCheckB;
-  private javax.swing.JLabel prefixLab;
-  private javax.swing.JTextField prefixTF;
-  private javax.swing.JButton selectButt;
-  private javax.swing.JLabel spacer;
-  private javax.swing.JLabel titleLab;
-  private javax.swing.JComboBox typeCB;
-  private javax.swing.JLabel typeLab;
-  // End of variables declaration//GEN-END:variables
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRSequencerPanel.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRSequencerPanel.form
deleted file mode 100755
index 0a55b5934fb49356545aa1c498f7589869946dd8..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRSequencerPanel.form
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,0,97,0,0,1,23"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-  <SubComponents>
-    <Component class="javax.swing.JLabel" name="titleLabel">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="Jmdns QR Encoded File Receiver"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JSeparator" name="jSeparator1">
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="1" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="sp">
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="7" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="1.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JCheckBox" name="advertiseCB">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="Advertise QR image receiver"/>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="advertiseCBClicked"/>
-      </Events>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="2" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JCheckBox" name="enableCB">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="Enable QR image receiving"/>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="enableCBClick"/>
-      </Events>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="3" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-  </SubComponents>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRSequencerPanel.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRSequencerPanel.java
deleted file mode 100755
index ba126d09166bd2bdaae9a98ab604bd33fac75118..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRSequencerPanel.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements.gui;
-
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.JmDnsQRReceiver3;
-
-/**
- * QRSequencerPanel.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class QRSequencerPanel extends javax.swing.JPanel
-{
-  private final TdaEnvironment env;
-  private final JmDnsQRReceiver3 mother;
-  
-  public QRSequencerPanel(TdaEnvironment env, JmDnsQRReceiver3 receiver)
-  {
-    this.env = env;
-    mother = receiver;
-    initComponents();
-  }
-  
-  public boolean isReceivingEnabled()
-  {
-    return enableCB.isSelected();
-  }
-     
-  /**
-   * This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The content of this method is always
-   * regenerated by the Form Editor.
-   */
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-    java.awt.GridBagConstraints gridBagConstraints;
-
-    titleLabel = new javax.swing.JLabel();
-    jSeparator1 = new javax.swing.JSeparator();
-    sp = new javax.swing.JLabel();
-    advertiseCB = new javax.swing.JCheckBox();
-    enableCB = new javax.swing.JCheckBox();
-
-    setLayout(new java.awt.GridBagLayout());
-
-    titleLabel.setText("Jmdns QR Encoded File Receiver");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 0;
-    add(titleLabel, gridBagConstraints);
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.weightx = 1.0;
-    add(jSeparator1, gridBagConstraints);
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 7;
-    gridBagConstraints.weighty = 1.0;
-    add(sp, gridBagConstraints);
-
-    advertiseCB.setText("Advertise QR image receiver");
-    advertiseCB.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        advertiseCBClicked(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 2;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
-    add(advertiseCB, gridBagConstraints);
-
-    enableCB.setText("Enable QR image receiving");
-    enableCB.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        enableCBClick(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 3;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
-    add(enableCB, gridBagConstraints);
-  }// </editor-fold>//GEN-END:initComponents
-
-  private void advertiseCBClicked(java.awt.event.ActionEvent evt)//GEN-FIRST:event_advertiseCBClicked
-  {//GEN-HEADEREND:event_advertiseCBClicked
-    mother.setAdvertising(advertiseCB.isSelected());
-  }//GEN-LAST:event_advertiseCBClicked
-
-  private void enableCBClick(java.awt.event.ActionEvent evt)//GEN-FIRST:event_enableCBClick
-  {//GEN-HEADEREND:event_enableCBClick
-    mother.setReceivingEnabled(enableCB.isSelected());
-  }//GEN-LAST:event_enableCBClick
- 
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  private javax.swing.JCheckBox advertiseCB;
-  private javax.swing.JCheckBox enableCB;
-  private javax.swing.JSeparator jSeparator1;
-  private javax.swing.JLabel sp;
-  private javax.swing.JLabel titleLabel;
-  // End of variables declaration//GEN-END:variables
-
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRSourceContentPanel.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRSourceContentPanel.form
deleted file mode 100755
index 73929a1274bb4e6277505c440420405bf080aa44..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRSourceContentPanel.form
+++ /dev/null
@@ -1,99 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,-93,0,0,1,46"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-  <SubComponents>
-    <Component class="javax.swing.JLabel" name="typeLab">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="QR content type"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="5" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JComboBox" name="typeCB">
-      <Properties>
-        <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
-          <Connection code="new DefaultComboBoxModel(ParsedResultType.values())" type="code"/>
-        </Property>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="typeCBHandler"/>
-      </Events>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="1" gridY="1" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="1.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="contentLab">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="Content"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="2" gridWidth="0" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Container class="javax.swing.JScrollPane" name="jScrollPane1">
-      <AuxValues>
-        <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
-      </AuxValues>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="3" gridWidth="0" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="1.0"/>
-        </Constraint>
-      </Constraints>
-
-      <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
-      <SubComponents>
-        <Component class="javax.swing.JTextArea" name="ta">
-          <Properties>
-            <Property name="lineWrap" type="boolean" value="true"/>
-            <Property name="rows" type="int" value="2"/>
-            <Property name="wrapStyleWord" type="boolean" value="true"/>
-          </Properties>
-        </Component>
-      </SubComponents>
-    </Container>
-    <Component class="javax.swing.JButton" name="jButton1">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="Begin processing"/>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="beginHandler"/>
-      </Events>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="4" gridWidth="0" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="jLabel1">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="QR manual source editor"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="0" gridWidth="0" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-  </SubComponents>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRSourceContentPanel.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRSourceContentPanel.java
deleted file mode 100755
index 5b7d051bdbd1e3abda5e56de6dca3148c0c0d795..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRSourceContentPanel.java
+++ /dev/null
@@ -1,211 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements.gui;
-
-import com.google.zxing.client.result.ParsedResultType;
-import edu.nps.moves.qrtda.qr.QRInput;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import java.util.Arrays;
-import javax.swing.DefaultComboBoxModel;
-import javax.swing.JOptionPane;
-
-import static com.google.zxing.client.result.ParsedResultType.TEXT;
-import edu.nps.moves.qrtda.elements.QRFlowLink;
-
-/**
- * QRSourceContentPanel.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class QRSourceContentPanel extends javax.swing.JPanel
-{
-  private final TdaEnvironment tda;
-  private final QRFlowLink<?,?> qlink;
-  public QRSourceContentPanel(TdaEnvironment tda, QRFlowLink<?,?> qlink)
-  {
-    this.tda = tda;
-    this.qlink = qlink;
-    initComponents();
-    typeCB.setSelectedItem(ParsedResultType.TEXT);
-  }
-
-  /**
-   * This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The content of this method is always
-   * regenerated by the Form Editor.
-   */
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-    java.awt.GridBagConstraints gridBagConstraints;
-
-    typeLab = new javax.swing.JLabel();
-    typeCB = new javax.swing.JComboBox();
-    contentLab = new javax.swing.JLabel();
-    jScrollPane1 = new javax.swing.JScrollPane();
-    ta = new javax.swing.JTextArea();
-    jButton1 = new javax.swing.JButton();
-    jLabel1 = new javax.swing.JLabel();
-
-    setLayout(new java.awt.GridBagLayout());
-
-    typeLab.setText("QR content type");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.ipadx = 5;
-    add(typeLab, gridBagConstraints);
-
-    typeCB.setModel(new DefaultComboBoxModel(ParsedResultType.values()));
-    typeCB.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        typeCBHandler(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 1;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
-    gridBagConstraints.weightx = 1.0;
-    add(typeCB, gridBagConstraints);
-
-    contentLab.setText("Content");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 2;
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    add(contentLab, gridBagConstraints);
-
-    ta.setLineWrap(true);
-    ta.setRows(2);
-    ta.setWrapStyleWord(true);
-    jScrollPane1.setViewportView(ta);
-
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 3;
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
-    gridBagConstraints.weightx = 1.0;
-    gridBagConstraints.weighty = 1.0;
-    add(jScrollPane1, gridBagConstraints);
-
-    jButton1.setText("Begin processing");
-    jButton1.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        beginHandler(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 4;
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    add(jButton1, gridBagConstraints);
-
-    jLabel1.setText("QR manual source editor");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 0;
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    add(jLabel1, gridBagConstraints);
-  }// </editor-fold>//GEN-END:initComponents
-
-  private void typeCBHandler(java.awt.event.ActionEvent evt)//GEN-FIRST:event_typeCBHandler
-  {//GEN-HEADEREND:event_typeCBHandler
-    ParsedResultType typ = (ParsedResultType)typeCB.getSelectedItem();
-    String pref = "";
-    switch(typ) {
-      case ADDRESSBOOK:
-        pref = "MECARD:";
-        break;
-      case EMAIL_ADDRESS:
-        pref = "mailto:";
-        break;
-      case PRODUCT:
-        pref = "";
-        break;
-      case URI:
-        pref = "start with \"http:\", \"ftp:\", etc.";
-        break;
-      case GEO:
-        pref = "geo:";
-        break;
-      case TEL:
-        pref = "tel:";
-        break;
-      case SMS:
-        pref = "sms:";
-        break;
-      case CALENDAR:
-        pref = "";
-        break;
-      case WIFI:
-        pref = "WIFI:";
-        break;
-      case ISBN:
-        pref = "";
-        break;
-      case TEXT:
-      default:
-        pref = "";
-        break;       
-    }
-  }//GEN-LAST:event_typeCBHandler
-
-  private void beginHandler(java.awt.event.ActionEvent evt)//GEN-FIRST:event_beginHandler
-  {//GEN-HEADEREND:event_beginHandler
-    String errMsg = null;
-    ParsedResultType typ = (ParsedResultType)typeCB.getSelectedItem();
-    if(typ == null)
-      errMsg = "Choose a QR data type";
-    else {
-      String txt = ta.getText();
-      if(txt == null || txt.length() <=0)
-        errMsg = "Enter textual content";
-      else {
-        QRInput qri = new QRInput(typ,txt);
-        qlink.getPipeline().setStarts((Arrays.asList(qri)));
-        qlink.getPipeline().iterate();
-      }     
-    }
-    if(errMsg != null)
-      JOptionPane.showMessageDialog(jButton1, errMsg);
-  }//GEN-LAST:event_beginHandler
-
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  private javax.swing.JLabel contentLab;
-  private javax.swing.JButton jButton1;
-  private javax.swing.JLabel jLabel1;
-  private javax.swing.JScrollPane jScrollPane1;
-  private javax.swing.JTextArea ta;
-  private javax.swing.JComboBox typeCB;
-  private javax.swing.JLabel typeLab;
-  // End of variables declaration//GEN-END:variables
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRTextDirectorySourcePanel.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRTextDirectorySourcePanel.form
deleted file mode 100755
index 76dc0b610e85ef9ec887ce2bfad16b3358b882a6..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRTextDirectorySourcePanel.form
+++ /dev/null
@@ -1,103 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,0,-99,0,0,1,68"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-  <SubComponents>
-    <Component class="javax.swing.JLabel" name="titleLabel">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="QR itext directory source"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="0" gridWidth="0" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JTextArea" name="ta">
-      <Properties>
-        <Property name="editable" type="boolean" value="false"/>
-        <Property name="columns" type="int" value="2"/>
-        <Property name="lineWrap" type="boolean" value="true"/>
-        <Property name="rows" type="int" value="2"/>
-        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-          <Border info="org.netbeans.modules.form.compat2.border.LineBorderInfo">
-            <LineBorder>
-              <Color PropertyName="color" blue="c0" green="c0" id="lightGray" palette="1" red="c0" type="palette"/>
-            </LineBorder>
-          </Border>
-        </Property>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="2" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="5" insetsRight="0" anchor="10" weightX="1.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JButton" name="selectButt">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="select directory"/>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="selectDirectoryHandler"/>
-      </Events>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="3" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="spacer">
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="50" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="1.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="jLabel3">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="directory"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="5" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JButton" name="beginButt">
-      <Properties>
-        <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
-          <Color blue="0" green="99" red="33" type="rgb"/>
-        </Property>
-        <Property name="text" type="java.lang.String" value="begin data flow"/>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="beginHandler"/>
-      </Events>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="5" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JSeparator" name="jSeparator1">
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="4" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-  </SubComponents>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRTextDirectorySourcePanel.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRTextDirectorySourcePanel.java
deleted file mode 100755
index 4f784f45ba0c66cce3db7da21b8cef4e13e0cee6..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/QRTextDirectorySourcePanel.java
+++ /dev/null
@@ -1,237 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements.gui;
-
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.QRFlowLink;
-import java.io.File;
-import java.io.FilenameFilter;
-import java.util.ArrayList;
-import javax.swing.JFileChooser;
-import javax.swing.JPanel;
-
-/**
- * QRTextDirectorySourcePanel.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class QRTextDirectorySourcePanel extends JPanel
-{
-  TdaEnvironment env;
-  private JFileChooser chooser;
-  String initialPath = "textDirectory";
-  private QRFlowLink<?,?> qlink;
-  
-  public QRTextDirectorySourcePanel(TdaEnvironment env, QRFlowLink<?,?> qlink)
-  {
-    initComponents();
-    this.env = env;
-
-    ta.setText(initialPath);
-    File dir = getChooserDirectory();
-    getChooser(dir);
-  }
-
-  final void setDirectoryPath(String s)
-  {
-    ta.setText(s);
-  }
-
-  /**
-   * This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The content of this method is always
-   * regenerated by the Form Editor.
-   */
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-    java.awt.GridBagConstraints gridBagConstraints;
-
-    titleLabel = new javax.swing.JLabel();
-    ta = new javax.swing.JTextArea();
-    selectButt = new javax.swing.JButton();
-    spacer = new javax.swing.JLabel();
-    jLabel3 = new javax.swing.JLabel();
-    beginButt = new javax.swing.JButton();
-    jSeparator1 = new javax.swing.JSeparator();
-
-    setLayout(new java.awt.GridBagLayout());
-
-    titleLabel.setText("QR itext directory source");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 0;
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    add(titleLabel, gridBagConstraints);
-
-    ta.setEditable(false);
-    ta.setColumns(2);
-    ta.setLineWrap(true);
-    ta.setRows(2);
-    ta.setBorder(javax.swing.BorderFactory.createLineBorder(java.awt.Color.lightGray));
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 2;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.weightx = 1.0;
-    gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0);
-    add(ta, gridBagConstraints);
-
-    selectButt.setText("select directory");
-    selectButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        selectDirectoryHandler(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 3;
-    add(selectButt, gridBagConstraints);
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 50;
-    gridBagConstraints.weighty = 1.0;
-    add(spacer, gridBagConstraints);
-
-    jLabel3.setText("directory");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
-    gridBagConstraints.insets = new java.awt.Insets(5, 0, 0, 0);
-    add(jLabel3, gridBagConstraints);
-
-    beginButt.setForeground(new java.awt.Color(51, 153, 0));
-    beginButt.setText("begin data flow");
-    beginButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        beginHandler(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 5;
-    add(beginButt, gridBagConstraints);
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 4;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.weightx = 1.0;
-    add(jSeparator1, gridBagConstraints);
-  }// </editor-fold>//GEN-END:initComponents
-
-  private JFileChooser getChooser(File start)
-  {
-    if (chooser == null) {
-      chooser = new JFileChooser(start);
-      chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
-      chooser.setMultiSelectionEnabled(false);
-    }
-    return chooser;
-  }
-  
-  private File getChooserDirectory()
-  {
-    String fn = ta.getText().trim();
-    File dir = new File(fn);
-    if(dir.exists())
-      ;
-    else
-      dir = new File(System.getProperty("user.dir"),fn);
-    
-    if(!dir.exists() || !dir.isDirectory()) {
-      env.postLog(fn+" not found or is not directory",qlink.getPipeline());
-      return null;
-    }
-    return dir;
-  }
-  
-  private void selectDirectoryHandler(java.awt.event.ActionEvent evt)//GEN-FIRST:event_selectDirectoryHandler
-  {//GEN-HEADEREND:event_selectDirectoryHandler
-    if (chooser == null) {
-      chooser = new JFileChooser();
-      chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
-      chooser.setMultiSelectionEnabled(false);
-    }
-    int ret = chooser.showOpenDialog(this);
-    if (ret == JFileChooser.CANCEL_OPTION) {
-      return;
-    }
-    ta.setEditable(true);
-    String path = chooser.getSelectedFile().getAbsolutePath();
-    ta.setText(path);
-    ta.setEditable(false);
-  }//GEN-LAST:event_selectDirectoryHandler
-
-  private void beginHandler(java.awt.event.ActionEvent evt)//GEN-FIRST:event_beginHandler
-  {//GEN-HEADEREND:event_beginHandler
-
-    File dir = getChooserDirectory();
-    if(dir != null && dir.exists() && dir.isDirectory()) {
-    }
-    else {
-      env.postLog("path not found or is not directory",qlink.getPipeline());
-      return;
-    }
-    final String[] children = dir.list(new FilenameFilter()
-    {
-      @Override
-      public boolean accept(File dir, String name)
-      {
-        name = name.toLowerCase();
-        return name.endsWith(".txt") || name.endsWith(".text");
-      }
-    });
-
-    final ArrayList<String> lis = new ArrayList<>();
-    String path = dir.getAbsolutePath();
-    for(String s : children) {
-      lis.add(path+File.separator+s);
-    }
-    Thread thr = new Thread(new Runnable()
-    {
-      @Override
-      public void run()
-      {
-        qlink.getPipeline().setStarts(lis);
-        qlink.getPipeline().iterate();  // this executes our pipe components in this thread
-      }
-    });
-    thr.setPriority(Thread.NORM_PRIORITY);
-    thr.setDaemon(true);
-    thr.start();
-  }//GEN-LAST:event_beginHandler
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  private javax.swing.JButton beginButt;
-  private javax.swing.JLabel jLabel3;
-  private javax.swing.JSeparator jSeparator1;
-  private javax.swing.JButton selectButt;
-  private javax.swing.JLabel spacer;
-  private javax.swing.JTextArea ta;
-  private javax.swing.JLabel titleLabel;
-  // End of variables declaration//GEN-END:variables
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ResetListener.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ResetListener.java
deleted file mode 100755
index fda705c7556f6392f0c2f47e4b8887cdafe7c57b..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ResetListener.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements.gui;
-
-/**
- * ResetListener.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public interface ResetListener
-{
-  public void resetDuplicate();  
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SailorHelperPanel.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SailorHelperPanel.form
deleted file mode 100755
index fcccdba0124e72b8abadece190e28ef696842adc..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SailorHelperPanel.form
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
-  <Properties>
-    <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-      <Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo">
-        <EmptyBorder bottom="5" left="5" right="5" top="5"/>
-      </Border>
-    </Property>
-  </Properties>
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,0,-126,0,0,1,23"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-  <SubComponents>
-    <Component class="javax.swing.JLabel" name="jLabel1">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="Sailor Helper"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="5" insetsLeft="5" insetsBottom="5" insetsRight="5" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="jLabel2">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="This panel is not used"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="5" insetsLeft="5" insetsBottom="5" insetsRight="5" anchor="17" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="rcvrLab">
-      <Properties>
-        <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
-          <Color blue="ff" green="ff" id="white" palette="1" red="ff" type="palette"/>
-        </Property>
-        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-          <Border info="org.netbeans.modules.form.compat2.border.LineBorderInfo">
-            <LineBorder>
-              <Color PropertyName="color" blue="c0" green="c0" id="lightGray" palette="1" red="c0" type="palette"/>
-            </LineBorder>
-          </Border>
-        </Property>
-        <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-          <Dimension value="[245, 18]"/>
-        </Property>
-        <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-          <Dimension value="[245, 18]"/>
-        </Property>
-        <Property name="opaque" type="boolean" value="true"/>
-        <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-          <Dimension value="[245, 18]"/>
-        </Property>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="2" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="5" insetsLeft="5" insetsBottom="5" insetsRight="5" anchor="11" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JButton" name="openChatButt">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="this button is not used"/>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="openChatButtActionPerformed"/>
-      </Events>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="3" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="5" insetsLeft="5" insetsBottom="5" insetsRight="5" anchor="11" weightX="0.0" weightY="1.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-  </SubComponents>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SailorHelperPanel.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SailorHelperPanel.java
deleted file mode 100644
index 7faaec9eaa92ca3620e6607f13ee29cc8e140571..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SailorHelperPanel.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements.gui;
-
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.ChatReceive;
-import edu.nps.moves.qrtda.elements.QRFlowLink;
-import java.awt.Dimension;
-import javax.swing.JPanel;
-
-/**
- * ChatSendPanel.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class SailorHelperPanel extends JPanel
-{
-  private ChatWindow chatWin;
-  private final TdaEnvironment env;
-  private final QRFlowLink<?,?> qlink;
-  public SailorHelperPanel(TdaEnvironment env, QRFlowLink<?,?>qlink)
-  {
-    this.env = env;
-    this.qlink = qlink;
-    initComponents();
-  }
-   
-  public void setPipeIndex(int idx)
-  {
-    jLabel1.setText(""+idx+" "+jLabel1.getText());
-  }
-
-  public void setBoundReceiver(ChatReceive rcvr)
-  {
-    Dimension d = rcvrLab.getPreferredSize();
-    rcvrLab.setText(rcvr.toString());
-    rcvrLab.setPreferredSize(d);
-    rcvrLab.setMaximumSize(d);
-    rcvrLab.setMinimumSize(d);
-  }
-  
-  public ChatWindow getChatWindow()
-  {
-    return chatWin;
-  }
-  
-  /**
-   * This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The content of this method is always
-   * regenerated by the Form Editor.
-   */
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-    java.awt.GridBagConstraints gridBagConstraints;
-
-    jLabel1 = new javax.swing.JLabel();
-    jLabel2 = new javax.swing.JLabel();
-    rcvrLab = new javax.swing.JLabel();
-    openChatButt = new javax.swing.JButton();
-
-    setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5));
-    setLayout(new java.awt.GridBagLayout());
-
-    jLabel1.setText("Sailor Helper");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 0;
-    gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
-    add(jLabel1, gridBagConstraints);
-
-    jLabel2.setText("This panel is not used");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
-    gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
-    add(jLabel2, gridBagConstraints);
-
-    rcvrLab.setBackground(java.awt.Color.white);
-    rcvrLab.setBorder(javax.swing.BorderFactory.createLineBorder(java.awt.Color.lightGray));
-    rcvrLab.setMaximumSize(new java.awt.Dimension(245, 18));
-    rcvrLab.setMinimumSize(new java.awt.Dimension(245, 18));
-    rcvrLab.setOpaque(true);
-    rcvrLab.setPreferredSize(new java.awt.Dimension(245, 18));
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 2;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
-    gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
-    add(rcvrLab, gridBagConstraints);
-
-    openChatButt.setText("this button is not used");
-    openChatButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        openChatButtActionPerformed(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 3;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
-    gridBagConstraints.weighty = 1.0;
-    gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
-    add(openChatButt, gridBagConstraints);
-  }// </editor-fold>//GEN-END:initComponents
-
-  private void openChatButtActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_openChatButtActionPerformed
-  {//GEN-HEADEREND:event_openChatButtActionPerformed
-    if(chatWin == null)
-      chatWin = new ChatWindow(env,this.getTopLevelAncestor(),qlink);
-    chatWin.setVisible(true);
-  }//GEN-LAST:event_openChatButtActionPerformed
-
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  private javax.swing.JLabel jLabel1;
-  private javax.swing.JLabel jLabel2;
-  private javax.swing.JButton openChatButt;
-  private javax.swing.JLabel rcvrLab;
-  // End of variables declaration//GEN-END:variables
-
-  public void showReceivedText(String txt)
-  {
-    if(chatWin != null)
-      chatWin.receivedText(txt);  }
- }
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SailorImageCreatorPanel.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SailorImageCreatorPanel.form
deleted file mode 100755
index e92ba6434d41da7b88efa684fdff2d19ce4e8f3f..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SailorImageCreatorPanel.form
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
-  <Properties>
-    <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-      <Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo">
-        <EmptyBorder bottom="5" left="5" right="5" top="5"/>
-      </Border>
-    </Property>
-  </Properties>
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,0,-126,0,0,1,23"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-  <SubComponents>
-    <Component class="javax.swing.JLabel" name="jLabel1">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="Chat Send"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="5" insetsLeft="5" insetsBottom="5" insetsRight="5" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="jLabel2">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="Receiver binding: "/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="5" insetsLeft="5" insetsBottom="5" insetsRight="5" anchor="17" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="rcvrLab">
-      <Properties>
-        <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
-          <Color blue="ff" green="ff" id="white" palette="1" red="ff" type="palette"/>
-        </Property>
-        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-          <Border info="org.netbeans.modules.form.compat2.border.LineBorderInfo">
-            <LineBorder>
-              <Color PropertyName="color" blue="c0" green="c0" id="lightGray" palette="1" red="c0" type="palette"/>
-            </LineBorder>
-          </Border>
-        </Property>
-        <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-          <Dimension value="[245, 18]"/>
-        </Property>
-        <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-          <Dimension value="[245, 18]"/>
-        </Property>
-        <Property name="opaque" type="boolean" value="true"/>
-        <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-          <Dimension value="[245, 18]"/>
-        </Property>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="2" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="5" insetsLeft="5" insetsBottom="5" insetsRight="5" anchor="11" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JButton" name="openChatButt">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="open chat window"/>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="openChatButtActionPerformed"/>
-      </Events>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="3" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="5" insetsLeft="5" insetsBottom="5" insetsRight="5" anchor="11" weightX="0.0" weightY="1.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-  </SubComponents>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SailorImageCreatorPanel.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SailorImageCreatorPanel.java
deleted file mode 100644
index c98ecff6c39710b54879a792db8af77d412efe83..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SailorImageCreatorPanel.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements.gui;
-
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.ChatReceive;
-import edu.nps.moves.qrtda.elements.QRFlowLink;
-import java.awt.Dimension;
-import javax.swing.JPanel;
-
-/**
- * ChatSendPanel.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class SailorImageCreatorPanel extends JPanel
-{
-  private ChatWindow chatWin;
-  private final TdaEnvironment env;
-  private final QRFlowLink<?,?> qlink;
-  public SailorImageCreatorPanel(TdaEnvironment env, QRFlowLink<?,?>qlink)
-  {
-    this.env = env;
-    this.qlink = qlink;
-    initComponents();
-  }
-   
-  public void setPipeIndex(int idx)
-  {
-    jLabel1.setText(""+idx+" "+jLabel1.getText());
-  }
-
-  public void setBoundReceiver(ChatReceive rcvr)
-  {
-    Dimension d = rcvrLab.getPreferredSize();
-    rcvrLab.setText(rcvr.toString());
-    rcvrLab.setPreferredSize(d);
-    rcvrLab.setMaximumSize(d);
-    rcvrLab.setMinimumSize(d);
-  }
-  
-  public ChatWindow getChatWindow()
-  {
-    return chatWin;
-  }
-  
-  /**
-   * This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The content of this method is always
-   * regenerated by the Form Editor.
-   */
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-    java.awt.GridBagConstraints gridBagConstraints;
-
-    jLabel1 = new javax.swing.JLabel();
-    jLabel2 = new javax.swing.JLabel();
-    rcvrLab = new javax.swing.JLabel();
-    openChatButt = new javax.swing.JButton();
-
-    setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5));
-    setLayout(new java.awt.GridBagLayout());
-
-    jLabel1.setText("Chat Send");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 0;
-    gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
-    add(jLabel1, gridBagConstraints);
-
-    jLabel2.setText("Receiver binding: ");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
-    gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
-    add(jLabel2, gridBagConstraints);
-
-    rcvrLab.setBackground(java.awt.Color.white);
-    rcvrLab.setBorder(javax.swing.BorderFactory.createLineBorder(java.awt.Color.lightGray));
-    rcvrLab.setMaximumSize(new java.awt.Dimension(245, 18));
-    rcvrLab.setMinimumSize(new java.awt.Dimension(245, 18));
-    rcvrLab.setOpaque(true);
-    rcvrLab.setPreferredSize(new java.awt.Dimension(245, 18));
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 2;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
-    gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
-    add(rcvrLab, gridBagConstraints);
-
-    openChatButt.setText("open chat window");
-    openChatButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        openChatButtActionPerformed(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 3;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
-    gridBagConstraints.weighty = 1.0;
-    gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
-    add(openChatButt, gridBagConstraints);
-  }// </editor-fold>//GEN-END:initComponents
-
-  private void openChatButtActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_openChatButtActionPerformed
-  {//GEN-HEADEREND:event_openChatButtActionPerformed
-    if(chatWin == null)
-      chatWin = new ChatWindow(env,this.getTopLevelAncestor(),qlink);
-    chatWin.setVisible(true);
-  }//GEN-LAST:event_openChatButtActionPerformed
-
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  private javax.swing.JLabel jLabel1;
-  private javax.swing.JLabel jLabel2;
-  private javax.swing.JButton openChatButt;
-  private javax.swing.JLabel rcvrLab;
-  // End of variables declaration//GEN-END:variables
-
-  public void showReceivedText(String txt)
-  {
-    if(chatWin != null)
-      chatWin.receivedText(txt);  }
- }
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SailorImageDisplayerPanel.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SailorImageDisplayerPanel.form
deleted file mode 100755
index 877c2fd529f65054c2eb745dbcb8f27b955c0655..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SailorImageDisplayerPanel.form
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
-  <Properties>
-    <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-      <Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo">
-        <EmptyBorder bottom="5" left="5" right="5" top="5"/>
-      </Border>
-    </Property>
-  </Properties>
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,0,-126,0,0,1,23"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-  <SubComponents>
-    <Component class="javax.swing.JLabel" name="jLabel1">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="Sailor Image Displayer"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="5" insetsLeft="5" insetsBottom="5" insetsRight="5" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-  </SubComponents>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SailorImageDisplayerPanel.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SailorImageDisplayerPanel.java
deleted file mode 100644
index 23d3a18ebe047960199c9d4464aabc88430b2086..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SailorImageDisplayerPanel.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements.gui;
-
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.QRFlowLink;
-import javax.swing.JPanel;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-/**
- * SailorImageDisplayerPanel.java created on Feb 28, 2017
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class SailorImageDisplayerPanel extends JPanel
-{
-  private final Logger logger=LogManager.getLogger(SailorImageDisplayerPanel.class.getName());
-
-  private final TdaEnvironment env;
-  private final QRFlowLink<?,?> qlink;
-  public SailorImageDisplayerPanel(TdaEnvironment env, QRFlowLink<?,?>qlink)
-  {
-    this.env = env;
-    this.qlink = qlink;
-    initComponents();
-  }
-   
-  public void setPipeIndex(int idx)
-  {
-    jLabel1.setText(""+idx+" "+jLabel1.getText());
-  }
-
-   
-  /**
-   * This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The content of this method is always
-   * regenerated by the Form Editor.
-   */
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-    java.awt.GridBagConstraints gridBagConstraints;
-
-    jLabel1 = new javax.swing.JLabel();
-
-    setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5));
-    setLayout(new java.awt.GridBagLayout());
-
-    jLabel1.setText("Sailor Image Displayer");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 0;
-    gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
-    add(jLabel1, gridBagConstraints);
-  }// </editor-fold>//GEN-END:initComponents
-
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  private javax.swing.JLabel jLabel1;
-  // End of variables declaration//GEN-END:variables
-
- }
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SailorWindow.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SailorWindow.form
deleted file mode 100644
index 1f7a80f428e49e3d06e3b6e01c76199d2b66434a..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SailorWindow.form
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
-  <Properties>
-    <Property name="defaultCloseOperation" type="int" value="3"/>
-  </Properties>
-  <SyntheticProperties>
-    <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
-    <SyntheticProperty name="generateCenter" type="boolean" value="false"/>
-  </SyntheticProperties>
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,2,-91,0,0,2,-43"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SailorWindow.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SailorWindow.java
deleted file mode 100644
index 8c9ba29aad093a1a394a131ccf78e7daec2fce36..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SailorWindow.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.elements.gui;
-
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.QRFlowLink;
-import edu.nps.moves.qrtda.elements.misc.SailorText.SailorMedium;
-import javax.swing.JComponent;
-import javax.swing.JFrame;
-
-/**
- * SailorWindow.java created on Feb 28, 2017
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * This has been replaced by OpticalCommsWindow.  It remains as a skeleton to be referenced by SailorHelper,
- * SailorImageCreator and SailorImageDisplayer as specified in sailorHelper.json (which is still used to 
- * launch OpticalCommsWindow.
- * 
- * todo: fully implement the OpticalCommsWindow functionality as a QRFlowLink data stream/element.
-                    
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class SailorWindow extends JFrame
-{
-  public final static String SAILORWINDOW_KEY = "SailorWindowKey";
-
-  public SailorWindow()
-  {
-  }
-  
-  public SailorWindow(QRFlowLink<?,?> qlink, TdaEnvironment env)
-  {
-    this();
-  }
-  public SailorMedium getSailorMedium()
-  {
-    return SailorMedium.COMPOSITE;
-  }
-  
-  public int getImageSize()
-  {
-    return 100;
-  }
-  
-  public void displayImages(JComponent[][] images)
-  {
-  }
-
-
-  /** This method is called from within the constructor to
-   * initialize the form.
-   * WARNING: Do NOT modify this code. The content of this method is
-   * always regenerated by the Form Editor.
-   */
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-    java.awt.GridBagConstraints gridBagConstraints;
-
-    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
-    getContentPane().setLayout(new java.awt.GridBagLayout());
-
-    pack();
-  }// </editor-fold>//GEN-END:initComponents
-
-  
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  // End of variables declaration//GEN-END:variables
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SemaphoreEntryPanel.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SemaphoreEntryPanel.form
deleted file mode 100644
index ef48bcc090a0ac15c0d409101de71f03dd9992d1..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SemaphoreEntryPanel.form
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
-  <NonVisualComponents>
-    <Container class="javax.swing.JPopupMenu" name="specialPopup">
-
-      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout">
-        <Property name="useNullLayout" type="boolean" value="true"/>
-      </Layout>
-    </Container>
-  </NonVisualComponents>
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,0,47,0,0,2,71"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-  <SubComponents>
-    <Component class="javax.swing.JButton" name="specialButt">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="Special signals"/>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="specialButtClicked"/>
-      </Events>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JTextField" name="textField">
-      <Properties>
-        <Property name="toolTipText" type="java.lang.String" value=""/>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="textHandler"/>
-      </Events>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JButton" name="enterButt">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="enter"/>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="enterButtClickHandler"/>
-      </Events>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-  </SubComponents>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SemaphoreEntryPanel.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SemaphoreEntryPanel.java
deleted file mode 100644
index 76914c24f78a982e3038ab69833c4d179422da5c..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SemaphoreEntryPanel.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.elements.gui;
-
-import edu.nps.moves.qrtda.semaphoreArt.SemaphoreArt;
-import javax.swing.JMenuItem;
-import javax.swing.JPanel;
-
-/**
- * SemaphoreEntryPanel.java created on Apr 7, 2017
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class SemaphoreEntryPanel extends JPanel
-{
-  private final OpticalCommsIO io;
-    
-  public SemaphoreEntryPanel(OpticalCommsIO io)
-  {
-    initComponents();
-    
-    for(String[] sa : SemaphoreArt.SPECIALMENU) {
-      SpecialMenuItem mi = new SpecialMenuItem(sa[0],sa);
-      mi.addActionListener( ev->{
-        SpecialMenuItem smi = (SpecialMenuItem)ev.getSource();    
-        String charString = smi.data[1];
-        setValue(charString);
-      });
-      specialPopup.add(mi);
-    }  
-    this.io = io;
-  }
-  
-  public void setValue(String value)
-  {
-    textField.setText(value);
-    textField.requestFocus();
-    textField.selectAll();
-  }
-  
-  public void clear()
-  {
-    textField.setText(null);
-  }
-  
-  public static class SpecialMenuItem extends JMenuItem
-  {
-    public String[] data;
-    public SpecialMenuItem(String s, String[] data)
-    {
-      super(s);
-      this.data = data;
-    }
-  }
-  /** This method is called from within the constructor to
-   * initialize the form.
-   * WARNING: Do NOT modify this code. The content of this method is
-   * always regenerated by the Form Editor.
-   */
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-    java.awt.GridBagConstraints gridBagConstraints;
-
-    specialPopup = new javax.swing.JPopupMenu();
-    specialButt = new javax.swing.JButton();
-    textField = new javax.swing.JTextField();
-    enterButt = new javax.swing.JButton();
-
-    setLayout(new java.awt.GridBagLayout());
-
-    specialButt.setText("Special signals");
-    specialButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        specialButtClicked(evt);
-      }
-    });
-    add(specialButt, new java.awt.GridBagConstraints());
-
-    textField.setToolTipText("");
-    textField.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        textHandler(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.weightx = 1.0;
-    add(textField, gridBagConstraints);
-
-    enterButt.setText("enter");
-    enterButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        enterButtClickHandler(evt);
-      }
-    });
-    add(enterButt, new java.awt.GridBagConstraints());
-  }// </editor-fold>//GEN-END:initComponents
-
-  private void specialButtClicked(java.awt.event.ActionEvent evt)//GEN-FIRST:event_specialButtClicked
-  {//GEN-HEADEREND:event_specialButtClicked
-    specialPopup.show(this, 0, 0);
-  }//GEN-LAST:event_specialButtClicked
-
-  private void textHandler(java.awt.event.ActionEvent evt)//GEN-FIRST:event_textHandler
-  {//GEN-HEADEREND:event_textHandler
-    io.textEntered(textField.getText().trim());
-    textField.selectAll();
-  }//GEN-LAST:event_textHandler
-
-  private void enterButtClickHandler(java.awt.event.ActionEvent evt)//GEN-FIRST:event_enterButtClickHandler
-  {//GEN-HEADEREND:event_enterButtClickHandler
-    io.textEntered(textField.getText().trim());
-    textField.requestFocus();
-    textField.selectAll();
-  }//GEN-LAST:event_enterButtClickHandler
-
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  private javax.swing.JButton enterButt;
-  private javax.swing.JButton specialButt;
-  private javax.swing.JPopupMenu specialPopup;
-  private javax.swing.JTextField textField;
-  // End of variables declaration//GEN-END:variables
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SemaphoreHorizontalOptical.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SemaphoreHorizontalOptical.java
deleted file mode 100644
index 29509d41be148017da3ea4d2787a5b29912afdb1..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SemaphoreHorizontalOptical.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.elements.gui;
-
-import java.lang.reflect.Method;
-
-/**
- * SemaphoreVerticalOptical.java created on Apr 17, 2017
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class SemaphoreHorizontalOptical extends HorizontalGridOptical
-{
-  private SemaphoreEntryPanel panel;
-  public SemaphoreHorizontalOptical(Method getArt)
-  {
-    super(getArt);  
-  }
-  
-  @Override
-  public void activate(OpticalCommsIO io, OpticalCommsIO.Orientation hv)
-  {
-    super.activate(io, hv);
-    io.setInputComponent(panel = new SemaphoreEntryPanel(io));
-  }
-
-  @Override
-  public void display(String text, int size, boolean append)
-  {
-    super.display(text, size, append);
-    if(panel != null)
-      panel.setValue(text);
-  }
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SemaphoreOpticalDisplay.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SemaphoreOpticalDisplay.java
deleted file mode 100644
index 2fd631cde39572e7b49f07ae3e6d972b70e2d296..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SemaphoreOpticalDisplay.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.elements.gui;
-
-import edu.nps.moves.qrtda.semaphoreArt.SemaphoreArt;
-import java.awt.Color;
-import java.lang.reflect.Method;
-
-/**
- * SemaphoreOpticalDisplay.java created on Apr 13, 2017
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class SemaphoreOpticalDisplay implements OpticalCommsDisplay
-{
-  private final SemaphoreVerticalOptical vertPan;
-  private final SemaphoreHorizontalOptical horizPan;
-  
-  private OpticalCommsIO currentIO;
-  
-  public SemaphoreOpticalDisplay()
-  {
-    Method artGetter = null;
-    try {
-      artGetter = SemaphoreArt.class.getMethod("getStringComponents"/*"getAlphaString"*/, new Class[]{String.class, int.class, Color.class});
-    }
-    catch (NoSuchMethodException | SecurityException ex) {
-      throw new RuntimeException("Program error in SignalFlagsOpticalDisplay constructor");
-    }
-    vertPan = new SemaphoreVerticalOptical(artGetter);
-    horizPan = new SemaphoreHorizontalOptical(artGetter);
-  }
-  
-  @Override
-  public void activate(OpticalCommsIO io, OpticalCommsIO.Orientation hv)
-  {
-    currentIO = io;
-    if (hv == OpticalCommsIO.Orientation.HORIZONTAL) {
-      horizPan.activate(io, OpticalCommsIO.Orientation.HORIZONTAL);
-    }
-    else {
-      vertPan.activate(io, OpticalCommsIO.Orientation.VERTICAL);
-    }
-  }
-
-  @Override
-  public void display(String text, int size, boolean append)
-  {
-    vertPan.display(text, size, append);
-    horizPan.display(text, size, append);
-  }
-
-  @Override
-  public void setOrientation(OpticalCommsIO.Orientation hv)
-  {
-    if (hv == OpticalCommsIO.Orientation.HORIZONTAL)
-      horizPan.activate(currentIO, hv);
-    else
-      vertPan.activate(currentIO, hv);
-  }
-
-  @Override
-  public void setBackground(Color bg)
-  {
-    vertPan.setBackground(bg);
-    horizPan.setBackground(bg);
-  }
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SemaphoreVerticalOptical.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SemaphoreVerticalOptical.java
deleted file mode 100644
index 3b29d3b6c3dac07b69053052899ec45bc46df2fa..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SemaphoreVerticalOptical.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.elements.gui;
-
-import java.lang.reflect.Method;
-
-/**
- * SemaphoreVerticalOptical.java created on Apr 17, 2017
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class SemaphoreVerticalOptical extends VerticalGridOptical
-{
-  private SemaphoreEntryPanel panel;
-  
-  public SemaphoreVerticalOptical(Method getArt)
-  {
-    super(getArt);
-  }
-  
-  @Override
-  public void activate(OpticalCommsIO io, OpticalCommsIO.Orientation hv)
-  {
-    super.activate(io, hv);
-    io.setInputComponent(panel = new SemaphoreEntryPanel(io));
-  }
-  
-  @Override
-  public void display(String text, int size, boolean append)
-  {
-    super.display(text, size, append);
-    if(panel != null)
-      panel.setValue(text);
-  }
-
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ShowWindow.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ShowWindow.form
deleted file mode 100755
index eda509ffd54fdaadbfe79d349e0d72bb93af39b0..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ShowWindow.form
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
-  <Properties>
-    <Property name="defaultCloseOperation" type="int" value="3"/>
-  </Properties>
-  <SyntheticProperties>
-    <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
-    <SyntheticProperty name="generateCenter" type="boolean" value="false"/>
-  </SyntheticProperties>
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,44,0,0,1,-112"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
-  <SubComponents>
-    <Container class="javax.swing.JScrollPane" name="jScrollPane1">
-      <AuxValues>
-        <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
-      </AuxValues>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
-          <BorderConstraints direction="Center"/>
-        </Constraint>
-      </Constraints>
-
-      <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
-      <SubComponents>
-        <Component class="javax.swing.JTextArea" name="ta">
-          <Properties>
-            <Property name="columns" type="int" value="20"/>
-            <Property name="lineWrap" type="boolean" value="true"/>
-            <Property name="rows" type="int" value="5"/>
-            <Property name="wrapStyleWord" type="boolean" value="true"/>
-          </Properties>
-        </Component>
-      </SubComponents>
-    </Container>
-  </SubComponents>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ShowWindow.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ShowWindow.java
deleted file mode 100755
index d4369080e21be4f5f340eef7d684096911cbed0f..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ShowWindow.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements.gui;
-
-import java.awt.Component;
-import javax.swing.JFrame;
-
-/**
- * ShowWindow.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class ShowWindow extends JFrame
-{
-  public ShowWindow(String s, Component parent)
-  {
-    initComponents();
-    ta.setText(s);
-    super.setSize(600, 800);
-    super.setLocationRelativeTo(parent);
-    super.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
-  }
-
-  public void showWindow()
-  {
-    setVisible(true);
-  }
-  /**
-   * This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The content of this method is always
-   * regenerated by the Form Editor.
-   */
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-
-    jScrollPane1 = new javax.swing.JScrollPane();
-    ta = new javax.swing.JTextArea();
-
-    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
-
-    ta.setColumns(20);
-    ta.setLineWrap(true);
-    ta.setRows(5);
-    ta.setWrapStyleWord(true);
-    jScrollPane1.setViewportView(ta);
-
-    getContentPane().add(jScrollPane1, java.awt.BorderLayout.CENTER);
-
-    pack();
-  }// </editor-fold>//GEN-END:initComponents
-
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  private javax.swing.JScrollPane jScrollPane1;
-  private javax.swing.JTextArea ta;
-  // End of variables declaration//GEN-END:variables
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SignalFlagsEntryPanel.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SignalFlagsEntryPanel.form
deleted file mode 100644
index 0c2526dde22ef4324ed782957ba1f6df21fd01be..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SignalFlagsEntryPanel.form
+++ /dev/null
@@ -1,166 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
-  <NonVisualComponents>
-    <Container class="javax.swing.JPopupMenu" name="singleFlagPopup">
-
-      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout">
-        <Property name="useNullLayout" type="boolean" value="true"/>
-      </Layout>
-    </Container>
-    <Container class="javax.swing.JPopupMenu" name="multipleFlagPopup">
-
-      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout">
-        <Property name="useNullLayout" type="boolean" value="true"/>
-      </Layout>
-    </Container>
-    <Container class="javax.swing.JPopupMenu" name="specialFlagPopup">
-
-      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout">
-        <Property name="useNullLayout" type="boolean" value="true"/>
-      </Layout>
-    </Container>
-    <Container class="javax.swing.JPopupMenu" name="maneuverFlagPopup">
-
-      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout">
-        <Property name="useNullLayout" type="boolean" value="true"/>
-      </Layout>
-    </Container>
-  </NonVisualComponents>
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,0,37,0,0,2,74"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-  <SubComponents>
-    <Component class="javax.swing.JLabel" name="jLabel1">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="Vocabulary"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="5" insetsBottom="0" insetsRight="5" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JButton" name="questionButt">
-      <Properties>
-        <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
-          <Connection code="IconFontSwing.buildIcon(FontAwesome.QUESTION,18)" type="code"/>
-        </Property>
-        <Property name="toolTipText" type="java.lang.String" value="Explain vocabulary options"/>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="questionClicked"/>
-      </Events>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="5" insetsBottom="0" insetsRight="5" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JComboBox" name="vocabCombo">
-      <Properties>
-        <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
-          <Connection code="new DefaultComboBoxModel(VOCABULARIES)" type="code"/>
-        </Property>
-        <Property name="toolTipText" type="java.lang.String" value="Choose vocabulary"/>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="vocabHandler"/>
-      </Events>
-      <AuxValues>
-        <AuxValue name="JavaCodeGenerator_TypeParameters" type="java.lang.String" value="&lt;String&gt;"/>
-      </AuxValues>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Container class="javax.swing.JPanel" name="cardPanel">
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="5" insetsBottom="0" insetsRight="5" anchor="10" weightX="1.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-
-      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignCardLayout"/>
-      <SubComponents>
-        <Component class="javax.swing.JTextField" name="textField">
-          <Properties>
-            <Property name="toolTipText" type="java.lang.String" value="Type text here (or use plus button for some vocabularies)"/>
-          </Properties>
-          <Events>
-            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="textFieldHandler"/>
-          </Events>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignCardLayout" value="org.netbeans.modules.form.compat2.layouts.DesignCardLayout$CardConstraintsDescription">
-              <CardConstraints cardName="textCard"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-        <Container class="javax.swing.JPanel" name="flagsPanel">
-          <Properties>
-            <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-              <Border info="org.netbeans.modules.form.compat2.border.LineBorderInfo">
-                <LineBorder>
-                  <Color PropertyName="color" blue="c0" green="c0" id="lightGray" palette="1" red="c0" type="palette"/>
-                </LineBorder>
-              </Border>
-            </Property>
-            <Property name="verifyInputWhenFocusTarget" type="boolean" value="false"/>
-          </Properties>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignCardLayout" value="org.netbeans.modules.form.compat2.layouts.DesignCardLayout$CardConstraintsDescription">
-              <CardConstraints cardName="flagsCard"/>
-            </Constraint>
-          </Constraints>
-
-          <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-          <SubComponents>
-            <Component class="javax.swing.JButton" name="addButt">
-              <Properties>
-                <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
-                  <Connection code="IconFontSwing.buildIcon(FontAwesome.PLUS,18)" type="code"/>
-                </Property>
-                <Property name="toolTipText" type="java.lang.String" value="Choose from vocabulary list"/>
-              </Properties>
-              <Events>
-                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="plusButtHandler"/>
-              </Events>
-              <Constraints>
-                <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-                  <GridBagConstraints gridX="100" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="13" weightX="1.0" weightY="0.0"/>
-                </Constraint>
-              </Constraints>
-            </Component>
-          </SubComponents>
-        </Container>
-      </SubComponents>
-    </Container>
-    <Component class="javax.swing.JButton" name="enterButt">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="enter"/>
-        <Property name="toolTipText" type="java.lang.String" value="Submit text to be displayed"/>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="enterButtClickHandler"/>
-      </Events>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="5" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-  </SubComponents>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SignalFlagsEntryPanel.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SignalFlagsEntryPanel.java
deleted file mode 100644
index 815a23e88d6d9c49bb396df7aa8a6da55c15aa10..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SignalFlagsEntryPanel.java
+++ /dev/null
@@ -1,381 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.elements.gui;
-
-import edu.nps.moves.misc.TextObject;
-import edu.nps.moves.qrtda.QRPreferences;
-import edu.nps.moves.qrtda.signalflagsArt.SignalFlagArt;
-import edu.nps.moves.qrtda.signalflagsArt.SignalFlagArt.FlagImageIcon;
-import edu.nps.moves.qrtda.signalflagsArt.SignalFlagArt.FlagsMenuItem;
-import java.awt.*;
-import java.awt.event.ActionEvent;
-import java.io.IOException;
-import javax.swing.*;
-import jiconfont.icons.FontAwesome;
-import jiconfont.swing.IconFontSwing;
-import static edu.nps.moves.qrtda.elements.gui.OpticalCommsConstants.*;
-/**
- * SignalFlagsEntryPanel.java created on Apr 5, 2017
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class SignalFlagsEntryPanel extends JPanel
-{
-  public static final String TEXTFIELD_CARD = "textCard";   // must match those set in gui builder
-  public static final String FLAGSPANEL_CARD = "flagsCard";
-  
-  private String currentCard = TEXTFIELD_CARD;
-  private OpticalCommsIO io;
-  public SignalFlagsEntryPanel(OpticalCommsIO io)
-  {
-    this();
-    this.io = io;
-  }
-  
-  public SignalFlagsEntryPanel()
-  {
-    IconFontSwing.register(FontAwesome.getIconFont());
-
-    initComponents();
-
-    Font font = textField.getFont();
-    textField.setFont(font.deriveFont(font.getSize2D()+8.f));
-    font = vocabCombo.getFont();   
-    vocabCombo.setFont(font.deriveFont(font.getSize2D()+8.f));  //doesn't work on mac
-    
-    font = questionButt.getFont();   
-    questionButt.setFont(font.deriveFont(font.getSize2D()+8.f));
-   
-    font = addButt.getFont();
-    addButt.setFont(font.deriveFont(font.getSize2D()+8.f));
-    
-    SignalFlagArt.loadSingleFlagPopup(singleFlagPopup,e->menuListener(e));
-    SignalFlagArt.loadMultipleFlagPopup(multipleFlagPopup,e->menuListener(e));
-    SignalFlagArt.loadSpecialFlagPopup(specialFlagPopup,e->menuListener(e));
-    SignalFlagArt.loadManeuverFlagPopup(maneuverFlagPopup, e->menuListener(e));
-    
-    vocabCombo.setSelectedItem(QRPreferences.getInstance().get(SAILORFLAGSVOCAB_KEY, FLAGSVOCABALPHANATO));
-  }
-  
-  public void setValue(String charString)
-  {
-    textField.setText(charString);
-
-    clearFlags();
-    if(currentCard.equals(TEXTFIELD_CARD))
-      return;
-    
-    // flags
-    if( charString != null && charString.length()>0) {
-      try {
-        FlagImageIcon[] iiArr = SignalFlagArt.getIcons(charString, 20);
-        if(iiArr != null) {
-          putInEntryField(iiArr, true);
-         textField.setText(getStringFromIcons(iiArr));
-        }
-      }
-      catch (IOException ex) {
-        System.out.println("Exception in SignalFlagsEntryPanel.menuListener: " + ex.getLocalizedMessage());
-        return;
-      }
-    }
-    revalidate();  // relayout
-    repaint();     // redraw
-    
-    textField.requestFocus();  //doesn't work
-    textField.selectAll();     //doesn't work
-  }
-  
-  private String getStringFromIcons(FlagImageIcon[] ia)
-  {
-    StringBuilder sb = new StringBuilder();
-    for(FlagImageIcon fii : ia)
-      sb.append(fii.charStr);
-    return sb.toString();
-  }
-  
-  private void clearFlags()
-  {
-    for (Component c : flagsPanel.getComponents()) {
-      if (!(c instanceof JButton))
-        flagsPanel.remove(c);
-    }
-  }
-
-  public void clear()
-  {
-    setValue(null);    
-  }
-  
-//  public Object getEntry()
-//  {
-//    if(textField.isVisible())
-//      return textField.getText();
-//    if(flagsPanel.isVisible()) {
-//      Component[] comps = flagsPanel.getComponents();
-//      ArrayList<Component> arrLis = new ArrayList<>();
-//      for(Component c : comps)
-//        if(!(c instanceof JButton))
-//          arrLis.add(c);
-//      return arrLis.toArray();
-//    }
-//    return null;
-//  }
-  
-  private void menuListener(ActionEvent ev)
-  {
-    FlagsMenuItem fmi = (FlagsMenuItem)ev.getSource();
-    
-    String charString = fmi.data[1];
-    setValue(charString);
-  }
-  
-  private void putInEntryField(ImageIcon[] iiArr, boolean clear)
-  { 
-    GridBagConstraints constr = new GridBagConstraints();
-    int c = flagsPanel.getComponentCount();
-    constr.gridx = c-1;  // remember plus button at tail
-    constr.gridy = 0;
-    constr.insets = new Insets(0,3,0,3); //top left bottom right
-    for(int i=0;i<iiArr.length;i++) {
-      flagsPanel.add(new JLabel(iiArr[i]),constr);
-      constr.gridx++;
-    }
-  }
-  
-  private String checkForAlternateDigits(String s)
-  {
-    if(!vocabCombo.getSelectedItem().toString().equals(FLAGSVOCABALPHANATO))
-      return s;
-    
-    char[] ca = s.toCharArray();
-    for(int i=0;i<ca.length; i++)
-      if(Character.isDigit(ca[i]))
-        ca[i] = SignalFlagArt.ascii2natoDigits.get(ca[i]);
-    return new String(ca);  
-  }
-  
-  private JFrame findMyFrame()
-  {
-
-    Container container = this;
-    do {
-      container = container.getParent();
-    } while (!(container instanceof JFrame));
-    return (JFrame)container;
-  }
-  
-  /** This method is called from within the constructor to
-   * initialize the form.
-   * WARNING: Do NOT modify this code. The content of this method is
-   * always regenerated by the Form Editor.
-   */
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-    java.awt.GridBagConstraints gridBagConstraints;
-
-    singleFlagPopup = new javax.swing.JPopupMenu();
-    multipleFlagPopup = new javax.swing.JPopupMenu();
-    specialFlagPopup = new javax.swing.JPopupMenu();
-    maneuverFlagPopup = new javax.swing.JPopupMenu();
-    jLabel1 = new javax.swing.JLabel();
-    questionButt = new javax.swing.JButton();
-    vocabCombo = new javax.swing.JComboBox<>();
-    cardPanel = new javax.swing.JPanel();
-    textField = new javax.swing.JTextField();
-    flagsPanel = new javax.swing.JPanel();
-    addButt = new javax.swing.JButton();
-    enterButt = new javax.swing.JButton();
-
-    setLayout(new java.awt.GridBagLayout());
-
-    jLabel1.setText("Vocabulary");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
-    add(jLabel1, gridBagConstraints);
-
-    questionButt.setIcon(IconFontSwing.buildIcon(FontAwesome.QUESTION,18));
-    questionButt.setToolTipText("Explain vocabulary options");
-    questionButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        questionClicked(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
-    add(questionButt, gridBagConstraints);
-
-    vocabCombo.setModel(new DefaultComboBoxModel(VOCABULARIES));
-    vocabCombo.setToolTipText("Choose vocabulary");
-    vocabCombo.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        vocabHandler(evt);
-      }
-    });
-    add(vocabCombo, new java.awt.GridBagConstraints());
-
-    cardPanel.setLayout(new java.awt.CardLayout());
-
-    textField.setToolTipText("Type text here (or use plus button for some vocabularies)");
-    textField.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        textFieldHandler(evt);
-      }
-    });
-    cardPanel.add(textField, "textCard");
-
-    flagsPanel.setBorder(javax.swing.BorderFactory.createLineBorder(java.awt.Color.lightGray));
-    flagsPanel.setVerifyInputWhenFocusTarget(false);
-    flagsPanel.setLayout(new java.awt.GridBagLayout());
-
-    addButt.setIcon(IconFontSwing.buildIcon(FontAwesome.PLUS,18));
-    addButt.setToolTipText("Choose from vocabulary list");
-    addButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        plusButtHandler(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 100;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
-    gridBagConstraints.weightx = 1.0;
-    flagsPanel.add(addButt, gridBagConstraints);
-
-    cardPanel.add(flagsPanel, "flagsCard");
-
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.weightx = 1.0;
-    gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
-    add(cardPanel, gridBagConstraints);
-
-    enterButt.setText("enter");
-    enterButt.setToolTipText("Submit text to be displayed");
-    enterButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        enterButtClickHandler(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 5);
-    add(enterButt, gridBagConstraints);
-  }// </editor-fold>//GEN-END:initComponents
-
-  private void plusButtHandler(java.awt.event.ActionEvent evt)//GEN-FIRST:event_plusButtHandler
-  {//GEN-HEADEREND:event_plusButtHandler
-    String s = vocabCombo.getSelectedItem().toString();
-    switch(s) {
-      
-      case FLAGSVOCABSINGLE:
-        singleFlagPopup.show(cardPanel, 0, 0);
-        break;
-      case FLAGSVOCABMULTIPLE:
-        multipleFlagPopup.show(cardPanel, 0, 0);
-        break;
-      case FLAGSVOCABSPECIALNATO:
-        specialFlagPopup.show(cardPanel, 0, 0);
-        break;
-      case FLAGSVOCABMANEUVER:
-        maneuverFlagPopup.show(cardPanel, 0, 0);
-    }
-  }//GEN-LAST:event_plusButtHandler
-
-  private void vocabHandler(java.awt.event.ActionEvent evt)//GEN-FIRST:event_vocabHandler
-  {//GEN-HEADEREND:event_vocabHandler
-    String s = vocabCombo.getSelectedItem().toString();
-    switch(s) {
-      case FLAGSVOCABALPHANATO:
-      case FLAGSVOCABALPHAICS:
-        ((CardLayout)cardPanel.getLayout()).show(cardPanel, TEXTFIELD_CARD);
-        currentCard=TEXTFIELD_CARD;
-        break;
-      case FLAGSVOCABSINGLE:
-      case FLAGSVOCABMULTIPLE:
-      case FLAGSVOCABSPECIALNATO:
-      case FLAGSVOCABMANEUVER:
-        ((CardLayout)cardPanel.getLayout()).show(cardPanel, FLAGSPANEL_CARD);
-        currentCard=FLAGSPANEL_CARD;
-    }
-    QRPreferences.getInstance().put(SAILORFLAGSVOCAB_KEY,s);
-    
-    Container c = this;
-    while((c = c.getParent()) != null) {
-      if(c instanceof OpticalCommsWindow) {
-        ((OpticalCommsWindow)c).loggingTA.append(s + LINEEND);
-        break;
-      }
-    }
-  }//GEN-LAST:event_vocabHandler
-
-  private void enterButtClickHandler(java.awt.event.ActionEvent evt)//GEN-FIRST:event_enterButtClickHandler
-  {//GEN-HEADEREND:event_enterButtClickHandler
-    String s = textField.getText().trim();
-    s = checkForAlternateDigits(s);
-    io.textEntered(new TextObject(s));
-    textField.requestFocus();
-    textField.selectAll();
-  }//GEN-LAST:event_enterButtClickHandler
-
-  private void textFieldHandler(java.awt.event.ActionEvent evt)//GEN-FIRST:event_textFieldHandler
-  {//GEN-HEADEREND:event_textFieldHandler
-    String s = textField.getText().trim();
-    s = checkForAlternateDigits(s);
-    io.textEntered(new TextObject(s));
-    textField.selectAll();
-  }//GEN-LAST:event_textFieldHandler
-
-  private void questionClicked(java.awt.event.ActionEvent evt)//GEN-FIRST:event_questionClicked
-  {//GEN-HEADEREND:event_questionClicked
-    new SignalFlagsVocabularyHelpDialog(findMyFrame(),"Signal Flag Vocabularies",true).setVisible(true);
-  }//GEN-LAST:event_questionClicked
-
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  private javax.swing.JButton addButt;
-  private javax.swing.JPanel cardPanel;
-  private javax.swing.JButton enterButt;
-  private javax.swing.JPanel flagsPanel;
-  private javax.swing.JLabel jLabel1;
-  private javax.swing.JPopupMenu maneuverFlagPopup;
-  private javax.swing.JPopupMenu multipleFlagPopup;
-  private javax.swing.JButton questionButt;
-  private javax.swing.JPopupMenu singleFlagPopup;
-  private javax.swing.JPopupMenu specialFlagPopup;
-  private javax.swing.JTextField textField;
-  private javax.swing.JComboBox<String> vocabCombo;
-  // End of variables declaration//GEN-END:variables
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SignalFlagsHorizontalOptical.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SignalFlagsHorizontalOptical.java
deleted file mode 100644
index a8f8f5d966ef032300d86ea73c5320cb01cdc0ca..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SignalFlagsHorizontalOptical.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.elements.gui;
-
-import java.lang.reflect.Method;
-
-/**
- * SignalFlagsVerticalOptical.java created on Apr 17, 2017
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class SignalFlagsHorizontalOptical extends HorizontalGridOptical
-{
-  private SignalFlagsEntryPanel panel;
-  
-  public SignalFlagsHorizontalOptical(Method getArt)
-  {
-    super(getArt);
-  }
-
-  @Override
-  public void activate(OpticalCommsIO io, OpticalCommsIO.Orientation hv)
-  {
-    super.activate(io, hv);
-    io.setInputComponent(panel = new SignalFlagsEntryPanel(io));
-  } 
-  
-  @Override
-  public void display(String text, int size, boolean append)
-  {
-    super.display(text, size, append);
-    if(panel != null)
-      panel.setValue(text);
-  }
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SignalFlagsOpticalDisplay.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SignalFlagsOpticalDisplay.java
deleted file mode 100644
index 9a5c33cce48182045093ed32be075cc668fad286..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SignalFlagsOpticalDisplay.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.elements.gui;
-
-import edu.nps.moves.qrtda.signalflagsArt.SignalFlagArt;
-import java.awt.Color;
-import java.lang.reflect.Method;
-
-/**
- * SignalFlagsOpticalDisplay.java created on Apr 13, 2017
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class SignalFlagsOpticalDisplay implements OpticalCommsDisplay
-{
-  private final SignalFlagsVerticalOptical vertPan;
-  private final SignalFlagsHorizontalOptical horizPan;
-
-  private OpticalCommsIO currentIO;
-
-  public SignalFlagsOpticalDisplay()
-  {
-    Method artGetter = null;
-
-    try {
-      artGetter = SignalFlagArt.class.getMethod("getStringComponents", new Class[]{String.class, int.class, Color.class});
-    }
-    catch (NoSuchMethodException | SecurityException ex) {
-      throw new RuntimeException("Program error in SignalFlagsOpticalDisplay constructor");
-    }
-    vertPan = new SignalFlagsVerticalOptical(artGetter);
-    horizPan = new SignalFlagsHorizontalOptical(artGetter);
-  }
-
-  @Override
-  public void activate(OpticalCommsIO io, OpticalCommsIO.Orientation hv)
-  {
-    currentIO = io;
-    if (hv == OpticalCommsIO.Orientation.HORIZONTAL) {
-      horizPan.activate(io, OpticalCommsIO.Orientation.HORIZONTAL);
-    }
-    else {
-      vertPan.activate(io, OpticalCommsIO.Orientation.VERTICAL);
-    }
-  }
-
-  @Override
-  public void display(String text, int size, boolean append)
-  {
-    vertPan.display(text, size, append);
-    horizPan.display(text, size, append);
-  }
-
-  @Override
-  public void setOrientation(OpticalCommsIO.Orientation hv)
-  {
-    if (hv == OpticalCommsIO.Orientation.HORIZONTAL)
-      horizPan.activate(currentIO, hv);
-    else
-      vertPan.activate(currentIO, hv);
-  }
-
-  @Override
-  public void setBackground(Color bg)
-  {
-    vertPan.setBackground(bg);
-    horizPan.setBackground(bg);
-  }
-
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SignalFlagsVerticalOptical.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SignalFlagsVerticalOptical.java
deleted file mode 100644
index f1eb4c34e1bbc25569a686f17d1817ee43bd1ace..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SignalFlagsVerticalOptical.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.elements.gui;
-
-import java.lang.reflect.Method;
-
-/**
- * SignalFlagsVerticalOptical.java created on Apr 17, 2017
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class SignalFlagsVerticalOptical extends VerticalGridOptical
-{
-  private SignalFlagsEntryPanel panel;
-  
-  public SignalFlagsVerticalOptical(Method getArt)
-  {
-    super(getArt);
-  }
-
-  @Override
-  public void activate(OpticalCommsIO io, OpticalCommsIO.Orientation hv)
-  {
-    super.activate(io, hv);
-    io.setInputComponent(panel = new SignalFlagsEntryPanel(io));
-  } 
-
-  @Override
-  public void display(String text, int size, boolean append)
-  {
-    super.display(text, size, append);
-    if(panel != null)
-      panel.setValue(text);
-  }
-  
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SignalFlagsVocabularyHelpDialog.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SignalFlagsVocabularyHelpDialog.form
deleted file mode 100644
index acded45c521b1844b4e2fc792b8187eba5d98493..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SignalFlagsVocabularyHelpDialog.form
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
-  <Properties>
-    <Property name="defaultCloseOperation" type="int" value="2"/>
-  </Properties>
-  <SyntheticProperties>
-    <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
-    <SyntheticProperty name="generateCenter" type="boolean" value="false"/>
-  </SyntheticProperties>
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,111,0,0,1,94"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-  <SubComponents>
-    <Component class="javax.swing.JLabel" name="jLabel1">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="&lt;html&gt;Signal flags are used in several contexts, which are called &quot;vocabularies&quot; here.  ICS is &quot;International Code of Signals&quot;.  Supported vocabularies are &lt;ol&gt;&#xa;&lt;li&gt;&lt;b&gt;Alpha + ICS Num&lt;/b&gt;&lt;/li&gt;ICS/NATO letters and ICS digits&#xa;&lt;li&gt;&lt;b&gt;Alpha + Nato Num&lt;/b&gt;&lt;/li&gt;ICS/NATO letters and NATO digits&#xa;&lt;li&gt;&lt;b&gt;Single flag ICS&lt;/b&gt;&lt;/li&gt;ICS flags which convey complex messages (press +)&#xa;&lt;li&gt;&lt;b&gt;Multiple flag&lt;/b&gt;&lt;/li&gt;ICS flags which convey messages with several flags (press +)&#xa;&lt;li&gt;&lt;b&gt;Special NATO&lt;/b&gt;&lt;/li&gt;First substitute, second substitute, ... (press +)&#xa;&lt;li&gt;&lt;b&gt;Navy maneuver&lt;/b&gt;&lt;/li&gt;ANS, CORPEN, SPEED, ... (press +)&#xa;&lt;/ol&gt;&#xa;"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="10" insetsLeft="10" insetsBottom="10" insetsRight="10" anchor="10" weightX="1.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JButton" name="jButton1">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="Close"/>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="closeHandler"/>
-      </Events>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="10" insetsRight="10" anchor="13" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="jLabel2">
-      <Properties>
-        <Property name="toolTipText" type="java.lang.String" value=""/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="2" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="1.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-  </SubComponents>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SignalFlagsVocabularyHelpDialog.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SignalFlagsVocabularyHelpDialog.java
deleted file mode 100644
index b16ad814924f04d75d8cd9ce0f49da49ef43067e..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/SignalFlagsVocabularyHelpDialog.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.elements.gui;
-
-import javax.swing.JDialog;
-import javax.swing.JFrame;
-import java.awt.Frame;
-import java.awt.EventQueue;
-import java.awt.event.WindowAdapter;
-import java.awt.event.WindowEvent;
-/**
- * SignalFlagsVocabularyHelpDialog.java created on Oct 6, 2017
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class SignalFlagsVocabularyHelpDialog extends JDialog
-{
-  public SignalFlagsVocabularyHelpDialog(JFrame parent, String title, boolean modal)
-  {
-    super(parent, title, modal);
-    initComponents();
-    super.setSize(400, 360);
-    super.setLocationRelativeTo(parent);
-
-    super.addWindowListener(new WindowAdapter() {
-      @Override
-      public void windowClosing(WindowEvent e) {
-        SignalFlagsVocabularyHelpDialog.this.setVisible(false);
-        dispose();
-      }
-    });
-  }
-
-  /** This method is called from within the constructor to
-   * initialize the form.
-   * WARNING: Do NOT modify this code. The content of this method is
-   * always regenerated by the Form Editor.
-   */
-   
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-    java.awt.GridBagConstraints gridBagConstraints;
-
-    jLabel1 = new javax.swing.JLabel();
-    jButton1 = new javax.swing.JButton();
-    jLabel2 = new javax.swing.JLabel();
-
-    setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
-    getContentPane().setLayout(new java.awt.GridBagLayout());
-
-    jLabel1.setText("<html>Signal flags are used in several contexts, which are called \"vocabularies\" here.  ICS is \"International Code of Signals\".  Supported vocabularies are <ol>\n<li><b>Alpha + ICS Num</b></li>ICS/NATO letters and ICS digits\n<li><b>Alpha + Nato Num</b></li>ICS/NATO letters and NATO digits\n<li><b>Single flag ICS</b></li>ICS flags which convey complex messages (press +)\n<li><b>Multiple flag</b></li>ICS flags which convey messages with several flags (press +)\n<li><b>Special NATO</b></li>First substitute, second substitute, ... (press +)\n<li><b>Navy maneuver</b></li>ANS, CORPEN, SPEED, ... (press +)\n</ol>\n");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.weightx = 1.0;
-    gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10);
-    getContentPane().add(jLabel1, gridBagConstraints);
-
-    jButton1.setText("Close");
-    jButton1.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        closeHandler(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
-    gridBagConstraints.insets = new java.awt.Insets(0, 0, 10, 10);
-    getContentPane().add(jButton1, gridBagConstraints);
-
-    jLabel2.setToolTipText("");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 2;
-    gridBagConstraints.weighty = 1.0;
-    getContentPane().add(jLabel2, gridBagConstraints);
-
-    pack();
-  }// </editor-fold>//GEN-END:initComponents
-
-  private void closeHandler(java.awt.event.ActionEvent evt)//GEN-FIRST:event_closeHandler
-  {//GEN-HEADEREND:event_closeHandler
-    setVisible(false);
-    dispose();
-  }//GEN-LAST:event_closeHandler
-
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  private javax.swing.JButton jButton1;
-  private javax.swing.JLabel jLabel1;
-  private javax.swing.JLabel jLabel2;
-  // End of variables declaration//GEN-END:variables
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/TextEntryPanel.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/TextEntryPanel.form
deleted file mode 100644
index 7a52ca792b4c8ef8a447d2016e7e3ac2300d0fa9..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/TextEntryPanel.form
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,0,39,0,0,1,-73"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-  <SubComponents>
-    <Component class="javax.swing.JTextField" name="textField">
-      <Properties>
-        <Property name="toolTipText" type="java.lang.String" value=""/>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="textHandler"/>
-      </Events>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="5" insetsBottom="0" insetsRight="5" anchor="10" weightX="1.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JButton" name="enterButt">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="enter"/>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="enterButtClickHandler"/>
-      </Events>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-  </SubComponents>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/TextEntryPanel.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/TextEntryPanel.java
deleted file mode 100644
index f6b7987ece39b2e6254432d5398853a60e9d0080..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/TextEntryPanel.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.elements.gui;
-
-import javax.swing.JPanel;
-
-/**
- * TextEntryPanel.java created on Apr 5, 2017
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class TextEntryPanel extends JPanel
-{
-  private OpticalCommsIO io;
-  public TextEntryPanel()
-  {
-    initComponents();
-  }
-  
-  public TextEntryPanel(OpticalCommsIO io)
-  {
-    this();
-    this.io = io;
-  }
-  
-  public void setValue(String s)
-  {
-    textField.setText(s);
-    textField.requestFocus();
-    textField.selectAll();
-  }
-  
-  void clear()
-  {
-    setValue(null);
-  }
-  /** This method is called from within the constructor to
-   * initialize the form.
-   * WARNING: Do NOT modify this code. The content of this method is
-   * always regenerated by the Form Editor.
-   */
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-    java.awt.GridBagConstraints gridBagConstraints;
-
-    textField = new javax.swing.JTextField();
-    enterButt = new javax.swing.JButton();
-
-    setLayout(new java.awt.GridBagLayout());
-
-    textField.setToolTipText("");
-    textField.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        textHandler(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.weightx = 1.0;
-    gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
-    add(textField, gridBagConstraints);
-
-    enterButt.setText("enter");
-    enterButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        enterButtClickHandler(evt);
-      }
-    });
-    add(enterButt, new java.awt.GridBagConstraints());
-  }// </editor-fold>//GEN-END:initComponents
-
-  private void textHandler(java.awt.event.ActionEvent evt)//GEN-FIRST:event_textHandler
-  {//GEN-HEADEREND:event_textHandler
-    io.textEntered(textField.getText().trim());
-    textField.selectAll();
-  }//GEN-LAST:event_textHandler
-
-  private void enterButtClickHandler(java.awt.event.ActionEvent evt)//GEN-FIRST:event_enterButtClickHandler
-  {//GEN-HEADEREND:event_enterButtClickHandler
-    io.textEntered(textField.getText().trim());
-    textField.requestFocus();
-    textField.selectAll();
-  }//GEN-LAST:event_enterButtClickHandler
-
-
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  private javax.swing.JButton enterButt;
-  private javax.swing.JTextField textField;
-  // End of variables declaration//GEN-END:variables
-
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ThroughputTestReceiverPanel.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ThroughputTestReceiverPanel.form
deleted file mode 100755
index d11a3570f8980c38d603b3c31481d6206934ecc8..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ThroughputTestReceiverPanel.form
+++ /dev/null
@@ -1,152 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,0,127,0,0,0,-55"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-  <SubComponents>
-    <Component class="javax.swing.JLabel" name="jLabel1">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="Throughput Test"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="-1" gridY="-1" gridWidth="0" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="5" insetsLeft="5" insetsBottom="5" insetsRight="5" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Container class="javax.swing.JPanel" name="jPanel1">
-      <Properties>
-        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-          <Border info="org.netbeans.modules.form.compat2.border.BevelBorderInfo">
-            <BevelBorder/>
-          </Border>
-        </Property>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-
-      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-      <SubComponents>
-        <Component class="javax.swing.JLabel" name="jLabel2">
-          <Properties>
-            <Property name="horizontalAlignment" type="int" value="11"/>
-            <Property name="text" type="java.lang.String" value="Throughput (char/sec)"/>
-          </Properties>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="0" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="5" anchor="13" weightX="0.0" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-        <Component class="javax.swing.JLabel" name="throughputLabel">
-          <Properties>
-            <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-              <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
-                <EtchetBorder/>
-              </Border>
-            </Property>
-            <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-              <Dimension value="[10, 20]"/>
-            </Property>
-          </Properties>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="1" gridY="0" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-        <Component class="javax.swing.JLabel" name="jLabel5">
-          <Properties>
-            <Property name="horizontalAlignment" type="int" value="11"/>
-            <Property name="text" type="java.lang.String" value="Packet rate (/sec)"/>
-          </Properties>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="0" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="5" anchor="13" weightX="0.0" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-        <Component class="javax.swing.JLabel" name="packetRateLabel">
-          <Properties>
-            <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-              <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
-                <EtchetBorder/>
-              </Border>
-            </Property>
-            <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-              <Dimension value="[10, 20]"/>
-            </Property>
-          </Properties>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="1" gridY="1" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-        <Component class="javax.swing.JLabel" name="jLabel7">
-          <Properties>
-            <Property name="horizontalAlignment" type="int" value="11"/>
-            <Property name="text" type="java.lang.String" value="Dropped frames"/>
-          </Properties>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="0" gridY="2" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="5" anchor="13" weightX="0.0" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-        <Component class="javax.swing.JLabel" name="droppedFramesLabel">
-          <Properties>
-            <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-              <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
-                <EtchetBorder/>
-              </Border>
-            </Property>
-            <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-              <Dimension value="[10, 20]"/>
-            </Property>
-          </Properties>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="1" gridY="2" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-      </SubComponents>
-    </Container>
-    <Component class="javax.swing.JLabel" name="jLabel3">
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="2" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="1.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JButton" name="resetButt">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="reset statistics"/>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="resetButtActionPerformed"/>
-      </Events>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="2" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="11" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-  </SubComponents>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ThroughputTestReceiverPanel.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ThroughputTestReceiverPanel.java
deleted file mode 100755
index 127ca8a68651e916b33cac3a9e66a703627e7d89..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ThroughputTestReceiverPanel.java
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements.gui;
-
-import edu.nps.moves.qrtda.elements.ThroughputTestReceiver;
-import java.text.DecimalFormat;
-import java.text.NumberFormat;
-import javax.swing.JPanel;
-
-/**
- * ChatReceivePanel.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class ThroughputTestReceiverPanel extends JPanel
-{
-  private static final long serialVersionUID = 6317484490438655319L;
-  private final ThroughputTestReceiver rcvr;
-  private final NumberFormat packtFmt;
-  private final NumberFormat throughputFmt;
-  public ThroughputTestReceiverPanel(ThroughputTestReceiver elem)
-  {
-    rcvr = elem;
-    packtFmt = NumberFormat.getNumberInstance();
-    if(packtFmt instanceof DecimalFormat)
-      ((DecimalFormat)packtFmt).setMaximumFractionDigits(2);
-    throughputFmt = NumberFormat.getNumberInstance();
-    if(throughputFmt instanceof DecimalFormat)
-      ((DecimalFormat)throughputFmt).setMaximumFractionDigits(1);
-    initComponents();
-  } 
-  
-  public void setPipeIndex(int idx)
-  {
-    jLabel1.setText(""+idx+" "+jLabel1.getText());
-  }
-  
-  public void setDroppedFrames(int i)
-  {
-    droppedFramesLabel.setText(""+i);
-  }
-  
-  public void setPacketRate(float i)
-  {
-    packetRateLabel.setText(packtFmt.format(i));
-  }
-  
-  public void setThroughput(float i)
-  {
-    this.throughputLabel.setText(throughputFmt.format(i));
-  }
-  
-  /**
-   * This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The content of this method is always
-   * regenerated by the Form Editor.
-   */
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-    java.awt.GridBagConstraints gridBagConstraints;
-
-    jLabel1 = new javax.swing.JLabel();
-    jPanel1 = new javax.swing.JPanel();
-    jLabel2 = new javax.swing.JLabel();
-    throughputLabel = new javax.swing.JLabel();
-    jLabel5 = new javax.swing.JLabel();
-    packetRateLabel = new javax.swing.JLabel();
-    jLabel7 = new javax.swing.JLabel();
-    droppedFramesLabel = new javax.swing.JLabel();
-    jLabel3 = new javax.swing.JLabel();
-    resetButt = new javax.swing.JButton();
-
-    setLayout(new java.awt.GridBagLayout());
-
-    jLabel1.setText("Throughput Test");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
-    add(jLabel1, gridBagConstraints);
-
-    jPanel1.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
-    jPanel1.setLayout(new java.awt.GridBagLayout());
-
-    jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING);
-    jLabel2.setText("Throughput (char/sec)");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 0;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
-    gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 5);
-    jPanel1.add(jLabel2, gridBagConstraints);
-
-    throughputLabel.setBorder(javax.swing.BorderFactory.createEtchedBorder());
-    throughputLabel.setPreferredSize(new java.awt.Dimension(10, 20));
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 1;
-    gridBagConstraints.gridy = 0;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.weightx = 1.0;
-    jPanel1.add(throughputLabel, gridBagConstraints);
-
-    jLabel5.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING);
-    jLabel5.setText("Packet rate (/sec)");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
-    gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 5);
-    jPanel1.add(jLabel5, gridBagConstraints);
-
-    packetRateLabel.setBorder(javax.swing.BorderFactory.createEtchedBorder());
-    packetRateLabel.setPreferredSize(new java.awt.Dimension(10, 20));
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 1;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.weightx = 1.0;
-    jPanel1.add(packetRateLabel, gridBagConstraints);
-
-    jLabel7.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING);
-    jLabel7.setText("Dropped frames");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 2;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
-    gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 5);
-    jPanel1.add(jLabel7, gridBagConstraints);
-
-    droppedFramesLabel.setBorder(javax.swing.BorderFactory.createEtchedBorder());
-    droppedFramesLabel.setPreferredSize(new java.awt.Dimension(10, 20));
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 1;
-    gridBagConstraints.gridy = 2;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.weightx = 1.0;
-    jPanel1.add(droppedFramesLabel, gridBagConstraints);
-
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
-    gridBagConstraints.weightx = 1.0;
-    add(jPanel1, gridBagConstraints);
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 2;
-    gridBagConstraints.weighty = 1.0;
-    add(jLabel3, gridBagConstraints);
-
-    resetButt.setText("reset statistics");
-    resetButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        resetButtActionPerformed(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 2;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
-    add(resetButt, gridBagConstraints);
-  }// </editor-fold>//GEN-END:initComponents
-
-  private void resetButtActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_resetButtActionPerformed
-  {//GEN-HEADEREND:event_resetButtActionPerformed
-    rcvr.resetStats();
-  }//GEN-LAST:event_resetButtActionPerformed
-
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  private javax.swing.JLabel droppedFramesLabel;
-  private javax.swing.JLabel jLabel1;
-  private javax.swing.JLabel jLabel2;
-  private javax.swing.JLabel jLabel3;
-  private javax.swing.JLabel jLabel5;
-  private javax.swing.JLabel jLabel7;
-  private javax.swing.JPanel jPanel1;
-  private javax.swing.JLabel packetRateLabel;
-  private javax.swing.JButton resetButt;
-  private javax.swing.JLabel throughputLabel;
-  // End of variables declaration//GEN-END:variables
-
- }
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ThroughputTestSenderPanel.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ThroughputTestSenderPanel.form
deleted file mode 100755
index 145b016991a6b9521cf92e22b84a9a7d17c63421..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ThroughputTestSenderPanel.form
+++ /dev/null
@@ -1,106 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.5" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,0,123,0,0,1,18"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-  <SubComponents>
-    <Component class="javax.swing.JLabel" name="jLabel1">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="Throughput Test Sender"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="-1" gridY="-1" gridWidth="0" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="5" insetsLeft="5" insetsBottom="5" insetsRight="5" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="jLabel2">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="Packets per second:"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="5" insetsLeft="5" insetsBottom="5" insetsRight="5" anchor="17" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="jLabel3">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="Packet size (bytes):"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="2" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JSpinner" name="rateSpinner">
-      <Properties>
-        <Property name="model" type="javax.swing.SpinnerModel" editor="org.netbeans.modules.form.editors2.SpinnerModelEditor">
-          <SpinnerModel initial="1" minimum="1" numberType="java.lang.Integer" stepSize="1" type="number"/>
-        </Property>
-        <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-          <Dimension value="[80, 28]"/>
-        </Property>
-        <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-          <Dimension value="[80, 28]"/>
-        </Property>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JSpinner" name="sizeSpinner">
-      <Properties>
-        <Property name="model" type="javax.swing.SpinnerModel" editor="org.netbeans.modules.form.editors2.SpinnerModelEditor">
-          <SpinnerModel initial="256" maximum="512" minimum="32" numberType="java.lang.Integer" stepSize="8" type="number"/>
-        </Property>
-        <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-          <Dimension value="[80, 28]"/>
-        </Property>
-        <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-          <Dimension value="[80, 28]"/>
-        </Property>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="1" gridY="2" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JButton" name="butt">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="start"/>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="startStopClicked"/>
-      </Events>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="3" gridWidth="2" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="jLabel4">
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="4" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="1.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-  </SubComponents>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ThroughputTestSenderPanel.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ThroughputTestSenderPanel.java
deleted file mode 100755
index fc8bd62d2d6c9ba90849cf993a526e3b5f83ebeb..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ThroughputTestSenderPanel.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements.gui;
-
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.ThroughputTestSender;
-import javax.swing.JPanel;
-
-/**
- * ChatReceivePanel.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class ThroughputTestSenderPanel extends JPanel
-{
-  private static final long serialVersionUID = -4905218936912029708L;
-  
-  private final ThroughputTestSender sender;
-  public ThroughputTestSenderPanel(TdaEnvironment env, ThroughputTestSender sender)
-  {
-    this.sender = sender;
-    initComponents();
-  } 
-  
-  public void setPipeIndex(int idx)
-  {
-    jLabel1.setText(""+idx+" "+jLabel1.getText());
-  }
-   
-  
-  public long getSleepMs()
-  {
-    int pps = (Integer)rateSpinner.getValue();
-    return 1000l/pps;
-  }
-  
-  public int getPacketSize()
-  {
-    return (Integer)sizeSpinner.getValue();
-  }
-  
-  /**
-   * This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The content of this method is always
-   * regenerated by the Form Editor.
-   */
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-    java.awt.GridBagConstraints gridBagConstraints;
-
-    jLabel1 = new javax.swing.JLabel();
-    jLabel2 = new javax.swing.JLabel();
-    jLabel3 = new javax.swing.JLabel();
-    rateSpinner = new javax.swing.JSpinner();
-    sizeSpinner = new javax.swing.JSpinner();
-    butt = new javax.swing.JButton();
-    jLabel4 = new javax.swing.JLabel();
-
-    setLayout(new java.awt.GridBagLayout());
-
-    jLabel1.setText("Throughput Test Sender");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
-    add(jLabel1, gridBagConstraints);
-
-    jLabel2.setText("Packets per second:");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
-    gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
-    add(jLabel2, gridBagConstraints);
-
-    jLabel3.setText("Packet size (bytes):");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 2;
-    add(jLabel3, gridBagConstraints);
-
-    rateSpinner.setModel(new javax.swing.SpinnerNumberModel(Integer.valueOf(1), Integer.valueOf(1), null, Integer.valueOf(1)));
-    rateSpinner.setMinimumSize(new java.awt.Dimension(80, 28));
-    rateSpinner.setPreferredSize(new java.awt.Dimension(80, 28));
-    add(rateSpinner, new java.awt.GridBagConstraints());
-
-    sizeSpinner.setModel(new javax.swing.SpinnerNumberModel(256, 32, 512, 8));
-    sizeSpinner.setMinimumSize(new java.awt.Dimension(80, 28));
-    sizeSpinner.setPreferredSize(new java.awt.Dimension(80, 28));
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 1;
-    gridBagConstraints.gridy = 2;
-    add(sizeSpinner, gridBagConstraints);
-
-    butt.setText("start");
-    butt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        startStopClicked(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 3;
-    gridBagConstraints.gridwidth = 2;
-    add(butt, gridBagConstraints);
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 4;
-    gridBagConstraints.weighty = 1.0;
-    add(jLabel4, gridBagConstraints);
-  }// </editor-fold>//GEN-END:initComponents
-
-  private void startStopClicked(java.awt.event.ActionEvent evt)//GEN-FIRST:event_startStopClicked
-  {//GEN-HEADEREND:event_startStopClicked
-    if(butt.getText().toLowerCase().equals("start")) {
-      butt.setText("stop");
-      sender.start();
-    }
-    else {
-      butt.setText("start");
-      sender.stop();
-    }
-  }//GEN-LAST:event_startStopClicked
-
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  private javax.swing.JButton butt;
-  private javax.swing.JLabel jLabel1;
-  private javax.swing.JLabel jLabel2;
-  private javax.swing.JLabel jLabel3;
-  private javax.swing.JLabel jLabel4;
-  private javax.swing.JSpinner rateSpinner;
-  private javax.swing.JSpinner sizeSpinner;
-  // End of variables declaration//GEN-END:variables
-
- }
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/VerticalGridOptical.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/VerticalGridOptical.java
deleted file mode 100644
index b9bd285385b7aa7257c2de6ac4d8bf00dc85ec6d..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/VerticalGridOptical.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.elements.gui;
-
-import java.awt.*;
-import java.lang.reflect.Method;
-import javax.swing.Box;
-import javax.swing.JComponent;
-
-/**
- * VerticalGridOptical.java created on Apr 13, 2017
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class VerticalGridOptical extends HVOpticalBasePanel implements OpticalCommsDisplay
-{
-  private OpticalCommsIO io;
-  private int column = -1, row = 0;
-  private final GridBagConstraints constraints = new GridBagConstraints();
-  
-  public VerticalGridOptical(Method getArt)
-  {
-    super(getArt);
-    constraints.insets = new Insets(3,3,3,3);
-    constraints.anchor = GridBagConstraints.NORTHWEST;
-  }
-  
-  @Override
-  public void addComponentNewRowOrColumn(JComponent comp)
-  {
-    column++;
-    row = 0;
-    addComponent(comp);
-  }
-
-  @Override
-  public void addComponent(JComponent comp)
-  {
-    checkAligner();
-    if(column == -1)
-      column = 0;
-    constraints.gridx = column;
-    constraints.gridy = row++;
-    add(comp,constraints); 
-  }
-  
-  private void checkAligner()
-  {
-   // put a dummy component way out on right to take up space
-    GridBagConstraints cons = new GridBagConstraints();
-    cons.gridy = 100;
-    cons.gridx = 100;
-    cons.weightx = 1.0;
-    cons.weighty = 1.0;
-    
-    add(Box.createRigidArea(new Dimension(5,5)),cons);    
-  }
-
-  @Override
-  public void setOrientation(OpticalCommsIO.Orientation orientation)
-  {
-    assert orientation == OpticalCommsIO.Orientation.VERTICAL;
-  }
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/VerticalMixedOptical.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/VerticalMixedOptical.java
deleted file mode 100644
index 4a8c55128103ba33143bbb4885de8386bce8a518..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/VerticalMixedOptical.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.elements.gui;
-
-import java.awt.Component;
-import java.awt.Dimension;
-import java.lang.reflect.Method;
-import javax.swing.Box;
-import javax.swing.BoxLayout;
-import javax.swing.JComponent;
-import javax.swing.JPanel;
-
-/**
- * HorizontalMixedOptical.java created on Apr 17, 2017
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class VerticalMixedOptical extends HVOpticalMixedWidthBasePanel
-{
-  public VerticalMixedOptical(Method getArt)
-  {
-    super(getArt);
-    super.setLayout(new BoxLayout(this,BoxLayout.LINE_AXIS));
-  }
-  
-  private JPanel currentRowCol=null;
-  
-  @Override
-  public void addComponentNewRowOrColumn(JComponent comp)
-  {
-    add(Box.createRigidArea(new Dimension(10,10)));
-
-    currentRowCol = new JPanel();
-    currentRowCol.setOpaque(false);
-    currentRowCol.setLayout(new BoxLayout(currentRowCol,BoxLayout.PAGE_AXIS));
-    comp.setAlignmentX(Component.LEFT_ALIGNMENT);   
-    currentRowCol.add(comp);
-    currentRowCol.add(Box.createRigidArea(new Dimension(10,10)));
-    
-    currentRowCol.setAlignmentX(Component.LEFT_ALIGNMENT);
-    currentRowCol.setAlignmentY(Component.TOP_ALIGNMENT);
-    add(currentRowCol);
-  }
-
-  @Override
-  public void addComponent(JComponent comp)
-  {
-    if(currentRowCol == null)
-      addComponentNewRowOrColumn(comp);
-    else {
-      comp.setAlignmentX(Component.LEFT_ALIGNMENT);
-      currentRowCol.add(comp);
-      currentRowCol.add(Box.createRigidArea(new Dimension(10,10)));  
-    }
-  }
-
-  @Override
-  public void setOrientation(OpticalCommsIO.Orientation orientation)
-  {
-    assert orientation == OpticalCommsIO.Orientation.VERTICAL;
-  }
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/YesNoListener.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/YesNoListener.java
deleted file mode 100644
index 42ab8d037bf4a891879340ce49df91eb62ee319a..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/YesNoListener.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.elements.gui;
-
-/**
- * YesNoListener.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public interface YesNoListener
-{
-  public void yesSelected(boolean yes);
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ZoomDialog.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ZoomDialog.form
deleted file mode 100644
index 0fbedb051eb040e2bf8f57746f90d3b00545a9c2..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ZoomDialog.form
+++ /dev/null
@@ -1,74 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
-  <Properties>
-    <Property name="defaultCloseOperation" type="int" value="2"/>
-  </Properties>
-  <SyntheticProperties>
-    <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
-    <SyntheticProperty name="generateCenter" type="boolean" value="false"/>
-  </SyntheticProperties>
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
-  <SubComponents>
-    <Container class="javax.swing.JScrollPane" name="jScrollPane1">
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
-          <BorderConstraints direction="Center"/>
-        </Constraint>
-      </Constraints>
-
-      <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
-      <SubComponents>
-        <Container class="javax.swing.JPanel" name="contentPanel">
-          <Properties>
-            <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-              <Border info="org.netbeans.modules.form.compat2.border.LineBorderInfo">
-                <LineBorder>
-                  <Color PropertyName="color" blue="66" green="33" red="ff" type="rgb"/>
-                </LineBorder>
-              </Border>
-            </Property>
-          </Properties>
-
-          <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
-        </Container>
-      </SubComponents>
-    </Container>
-    <Container class="javax.swing.JPanel" name="jPanel1">
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
-          <BorderConstraints direction="South"/>
-        </Constraint>
-      </Constraints>
-
-      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-      <SubComponents>
-        <Component class="javax.swing.JButton" name="closeButt">
-          <Properties>
-            <Property name="text" type="java.lang.String" value="close"/>
-          </Properties>
-          <Events>
-            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="closeButtActionPerformed"/>
-          </Events>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="0" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="13" weightX="1.0" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-      </SubComponents>
-    </Container>
-  </SubComponents>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ZoomDialog.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ZoomDialog.java
deleted file mode 100644
index e51eea7d1820e312ea2cbedac36fd7cc796f00ef..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/gui/ZoomDialog.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.elements.gui;
-
-import java.awt.BorderLayout;
-import java.awt.Dimension;
-import javax.swing.JDialog;
-import javax.swing.JFrame;
-import java.awt.Frame;
-import java.awt.Image;
-import javax.swing.ImageIcon;
-import javax.swing.JLabel;
-/**
- * ZoomDialog.java created on Apr 28, 2017
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class ZoomDialog extends JDialog
-{
-  public ZoomDialog(Frame parent, boolean modal)
-  {
-    super(parent, modal);
-    initComponents();
-  }
-  public void setImage(Image im)
-  {
-    JLabel lab = new JLabel(new ImageIcon(im));
-    contentPanel.add(lab, BorderLayout.CENTER);
-  }
-  /** This method is called from within the constructor to
-   * initialize the form.
-   * WARNING: Do NOT modify this code. The content of this method is
-   * always regenerated by the Form Editor.
-   */
-   
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-    java.awt.GridBagConstraints gridBagConstraints;
-
-    jScrollPane1 = new javax.swing.JScrollPane();
-    contentPanel = new javax.swing.JPanel();
-    jPanel1 = new javax.swing.JPanel();
-    closeButt = new javax.swing.JButton();
-
-    setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
-
-    contentPanel.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(255, 51, 102)));
-    contentPanel.setLayout(new java.awt.BorderLayout());
-    jScrollPane1.setViewportView(contentPanel);
-
-    getContentPane().add(jScrollPane1, java.awt.BorderLayout.CENTER);
-
-    jPanel1.setLayout(new java.awt.GridBagLayout());
-
-    closeButt.setText("close");
-    closeButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        closeButtActionPerformed(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 0;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
-    gridBagConstraints.weightx = 1.0;
-    jPanel1.add(closeButt, gridBagConstraints);
-
-    getContentPane().add(jPanel1, java.awt.BorderLayout.SOUTH);
-
-    pack();
-  }// </editor-fold>//GEN-END:initComponents
-
-  private void closeButtActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_closeButtActionPerformed
-  {//GEN-HEADEREND:event_closeButtActionPerformed
-    setVisible(false);
-  }//GEN-LAST:event_closeButtActionPerformed
-
-  public static void show(Image im, JFrame parent, boolean modal)
-  {
-    ZoomDialog dialog = new ZoomDialog(parent, modal);
-    dialog.setSize(new Dimension(640,480));
-    dialog.setImage(im);
-    dialog.setLocationRelativeTo(parent);
-    dialog.setVisible(true);
-  }
-
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  private javax.swing.JButton closeButt;
-  private javax.swing.JPanel contentPanel;
-  private javax.swing.JPanel jPanel1;
-  private javax.swing.JScrollPane jScrollPane1;
-  // End of variables declaration//GEN-END:variables
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/ElementArray.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/ElementArray.java
deleted file mode 100755
index 8c808b8993a19da4e93f185a1e5f8040c41db94f..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/ElementArray.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
-Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
-in source and binary forms, with or without modification, are permitted provided that the
-following conditions are met:
-
-Redistributions of source code must retain the above copyright notice, this list of conditions
-and the following disclaimer. Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the documentation and/or other
-materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
-Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
-http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
-WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-package edu.nps.moves.qrtda.elements.misc;
-
-import edu.nps.moves.qrtda.elements.QRFlowLink;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.util.*;
-import javax.swing.JComponent;
-import javax.swing.JTree;
-import javax.swing.tree.DefaultMutableTreeNode;
-import org.reflections.Reflections;
-
-/**
- * ElementArray.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class ElementArray extends ArrayList<JComponent>
-{
-  static class ElementData
-  {
-    public String simpleName;
-    public String shortDescription;
-    public String longDescription;
-    public Class  edClass;
-    public PipeCategory category;
-  }
-  static private ElementData[] array = new ElementData[0];
-  
-  static {
-    Reflections reflections = new Reflections(QRFlowLink.class.getPackage().getName());//"edu.nps.moves.qrtda.elements");
-
-    Set<Class<? extends QRFlowLink>> subTypes = reflections.getSubTypesOf(QRFlowLink.class);
-    buildSortedElementData(subTypes);    
-  }
-  
-  static private void buildSortedElementData(Set<Class<? extends QRFlowLink>> subTypes)
-  {
-    ArrayList<ElementData> lis = new ArrayList<>();
-    
-    for(Class<? extends QRFlowLink> c : subTypes) {
-      try {
-        Constructor con = c.getConstructor(TdaEnvironment.class, ReadyListener.class);
-        QRFlowLink qrf = (QRFlowLink)con.newInstance(null,null);
-        ElementData ed = new ElementData();
-        ed.edClass = c;
-        ed.simpleName = qrf.getHandle();
-        ed.longDescription = qrf.getLongDescription();
-        ed.shortDescription = qrf.getShortDescription();
-        ed.category = qrf.getCategory();
-        lis.add(ed);       
-      }
-      catch (IllegalAccessException | IllegalArgumentException | InstantiationException | NoSuchMethodException | SecurityException | InvocationTargetException ex) {
-        System.out.println("woops "+ex.getClass().getSimpleName()+": "+ex.getLocalizedMessage());
-        ex.printStackTrace();
-      }
-    }
-    Collections.sort(lis, new Comparator<ElementData>()
-    {
-      @Override
-      public int compare(ElementData t, ElementData t1)
-      {
-        String s1 = t.category+t.simpleName;
-        String s2 = t1.category+t1.simpleName;
-        return s1.compareTo(s2);
-      }      
-    });
-    
-    ElementData[] arr = new ElementData[lis.size()];
-    array = lis.toArray(arr);
-  }
-  
-  static public ElementData[] elementArray()
-  {
-    return array;
-  }
-  
-  static public JTree elementTree()
-  {
-    DefaultMutableTreeNode root = new DefaultMutableTreeNode("Dataflow processing elements");
-    DefaultMutableTreeNode categoryNode=null;
-    for (ElementData ed : array) {
-      if(categoryNode==null || !categoryNode.toString().equals(ed.category.toString())) {
-        categoryNode = new DefaultMutableTreeNode(ed.category.toString());
-        root.add(categoryNode);
-      }
-      DefaultMutableTreeNode node;
-      categoryNode.add(node=new DefaultMutableTreeNode(ed.simpleName));
-    }
-    return new JTree(root);
-  }
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/ElementCategory.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/ElementCategory.java
deleted file mode 100644
index 7cd7e0c31af92c7195b4420e0a18ffd03545179e..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/ElementCategory.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.elements.misc;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * ElementCategory.java created on May 20, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * A marker for options/parameters used by pipe elements
- * 
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.FIELD)
-public @interface ElementCategory
-{
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/ElementDescriptionLong.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/ElementDescriptionLong.java
deleted file mode 100644
index 24c9cc230a1d3e060514af662b534a2005c3a958..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/ElementDescriptionLong.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.elements.misc;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * ElementDescriptionLong.java created on May 20, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * A marker for options/parameters used by pipe elements
- * 
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.FIELD)
-public @interface ElementDescriptionLong
-{
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/ElementDescriptionShort.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/ElementDescriptionShort.java
deleted file mode 100644
index 376a21ab55b1d18e867967f1bca723a36ed79303..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/ElementDescriptionShort.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.elements.misc;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * ElementDescriptionShort.java created on May 20, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * A marker for options/parameters used by pipe elements
- * 
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.FIELD)
-public @interface ElementDescriptionShort
-{
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/ElementEditDialog.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/ElementEditDialog.form
deleted file mode 100755
index e4c0f9fc4c955ca8a0c48db55ecbe44159112399..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/ElementEditDialog.form
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
-  <Properties>
-    <Property name="defaultCloseOperation" type="int" value="2"/>
-  </Properties>
-  <SyntheticProperties>
-    <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
-    <SyntheticProperty name="generateCenter" type="boolean" value="false"/>
-  </SyntheticProperties>
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,44,0,0,1,-112"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-  <SubComponents>
-    <Container class="javax.swing.JScrollPane" name="jScrollPane1">
-      <AuxValues>
-        <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
-      </AuxValues>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="0" gridWidth="1" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="1.0"/>
-        </Constraint>
-      </Constraints>
-
-      <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
-      <SubComponents>
-        <Component class="javax.swing.JTree" name="jTree1">
-          <Properties>
-            <Property name="model" type="javax.swing.tree.TreeModel" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
-              <Connection code="jTree1.getModel()" type="code"/>
-            </Property>
-          </Properties>
-          <AuxValues>
-            <AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="ElementArray.elementTree()"/>
-          </AuxValues>
-        </Component>
-      </SubComponents>
-    </Container>
-  </SubComponents>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/ElementEditDialog.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/ElementEditDialog.java
deleted file mode 100755
index 5288f8e328c7d4a6da129d7610dfd02aa5ccbe42..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/ElementEditDialog.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements.misc;
-
-import edu.nps.moves.qrtda.TdaEnvironment;
-
-/**
- * ElementEditDialog.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class ElementEditDialog extends javax.swing.JDialog
-{
-  private final TdaEnvironment env;
-
-  public ElementEditDialog(java.awt.Frame parent, boolean modal, TdaEnvironment env)
-  {
-    super(parent, modal);
-    this.env = env;
-    initComponents();
-    
-    for (int i = 0; i < jTree1.getRowCount(); i++)
-      jTree1.expandRow(i);
-
-    super.setSize(300,500);
-  }
-
-  /**
-   * This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The content of this method is always
-   * regenerated by the Form Editor.
-   */
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-    java.awt.GridBagConstraints gridBagConstraints;
-
-    jScrollPane1 = new javax.swing.JScrollPane();
-    jTree1 = ElementArray.elementTree();
-
-    setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
-    getContentPane().setLayout(new java.awt.GridBagLayout());
-
-    jTree1.setModel(jTree1.getModel());
-    jScrollPane1.setViewportView(jTree1);
-
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 0;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
-    gridBagConstraints.weightx = 1.0;
-    gridBagConstraints.weighty = 1.0;
-    getContentPane().add(jScrollPane1, gridBagConstraints);
-
-    pack();
-  }// </editor-fold>//GEN-END:initComponents
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  private javax.swing.JScrollPane jScrollPane1;
-  private javax.swing.JTree jTree1;
-  // End of variables declaration//GEN-END:variables
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/ElementHandle.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/ElementHandle.java
deleted file mode 100644
index e9480fbb2c9eff817a0c67b8029a6fd3d7ca2936..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/ElementHandle.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.elements.misc;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * ElementHandle.java created on May 20, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * A marker for options/parameters used by pipe elements
- * 
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.FIELD)
-public @interface ElementHandle
-{
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/ElementOption.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/ElementOption.java
deleted file mode 100644
index 8514a92cd952c62d78d623c58c0808ef083b4836..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/ElementOption.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.elements.misc;
-
-/**
- * ElementOption.java created on May 15, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class ElementOption
-{
-  private final Object defalt;
-  private Object value;
-  private String name;
-  boolean explicitlySet = false;
-  
-  public ElementOption(String nameVal)
-  {
-    this(nameVal,null);
-  }
-  
-  public ElementOption(String nameVal, Object defaltVal)
-  {     
-    defalt = defaltVal==null?"":defaltVal;
-    name = nameVal;
-    value = defaltVal;
-  }
-  
-  public ElementOption(NameDefault nameDefObj)
-  {
-    name = nameDefObj.getName();
-    Object def = nameDefObj.getDefault();
-    value = defalt = def==null?"":def;   
-  }
-  
-  public String defaultValue()
-  {
-    return defalt.toString();
-  }
-
-  public String value()
-  {
-    return value==null?null:value.toString();
-  }
-
-  public void setValue(Object value)
-  {
-     this.value = value;
-     explicitlySet=true;
-  }
-    
-  public String name()
-  {
-    return name;
-  }
-  
-  public boolean isExplicitlySet()
-  {
-    return explicitlySet;
-  }
-}
-    
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/JsonConfigPipeLine.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/JsonConfigPipeLine.java
deleted file mode 100644
index ad5833ac1366d2670f85638dc57b6cdd06690ffc..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/JsonConfigPipeLine.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
-Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
-in source and binary forms, with or without modification, are permitted provided that the
-following conditions are met:
-
-Redistributions of source code must retain the above copyright notice, this list of conditions
-and the following disclaimer. Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the documentation and/or other
-materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
-Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
-http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
-WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-package edu.nps.moves.qrtda.elements.misc;
-
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-
-/**
- * JsonConfigPipeLine.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class JsonConfigPipeLine
-{
-  private String name="";
-  private String description = "";
-  private double version = 1.0f;
-  private boolean headless = false;
-  //private StreamType streamType = StreamType.ENCODE;
-  
-  private ArrayList<Object> pipeElements;
-  
-  public JsonConfigPipeLine(){}
-  public JsonConfigPipeLine(LinkedHashMap hm)
-  {
-    name =hm.get("name").toString();
-    description = hm.get("description").toString();
-    version = (double)hm.get("version");
-    
-    pipeElements = new ArrayList<>();
-    ArrayList<Object> elLis = (ArrayList<Object>)hm.get("pipeElements");
-    if(elLis == null)
-      return;
-    for(int i=0;i<elLis.size();i++) {
-      pipeElements.add(new PipeElement((LinkedHashMap)elLis.get(i)));
-    }
-  }
-  
-  public String getName(){return name;}
-  public void setName(String name){this.name = name;}
-  
-  public String getDescription(){return description;}
-  public void setDescription(String description){this.description = description;}
-
-  public double getVersion(){return version;}
-  public void setVersion(double version){this.version = version;}
-
-  public boolean isHeadless(){return headless;}
-  public void setHeadless(boolean headless){this.headless = headless;}
-
-  public ArrayList<Object> getPipeElements(){return pipeElements;}
-  public void setPipeElements(ArrayList<Object> pipeElement){this.pipeElements = pipeElement;}
-  
-  public static class PipeElement
-  {
-    private String className;
-    ArrayList<Object>option;
-    
-    public PipeElement(){}
-    public PipeElement(LinkedHashMap hm)
-    {
-      className = (String) hm.get("className");
-      option = new ArrayList<>();
-      
-      Object optObj = hm.get("option");
-      if(optObj == null)
-        return;
-      
-      if (optObj instanceof LinkedHashMap) {
-        LinkedHashMap opts = (LinkedHashMap) hm.get("option");
-        if(!opts.isEmpty())
-          option.add(new Option(opts.get("key").toString(), opts.get("value").toString()));
-      }
-      else {
-        ArrayList thisARlis = (ArrayList) optObj;
-        for(int i=0;i<thisARlis.size();i++) {
-          LinkedHashMap map = (LinkedHashMap)thisARlis.get(i);
-          option.add(new Option(map.get("key").toString(),map.get("value").toString()));
-        }
-      }
-    }
-    public String getClassName(){return className;}
-    public void setClassName(String className){this.className = className;}
-
-    public ArrayList<Object> getOption(){return option;}
-    public void setOption(ArrayList<Object> option){this.option = option;}        
-  }
-  
-  public static class Option
-  {
-    private String key;
-    private String value;
-    
-    public Option(){}
-    public Option(String key, String value)
-    {
-      this.key = key;
-      this.value = value;
-    }
-    public String getKey(){return key;}
-    public void setKey(String key){this.key = key;}
-
-    public String getValue(){return value;}
-    public void setValue(String value){this.value = value;}
- } 
-  
-  public static class JsonConfigPipeLineSet
-  {
-    private ArrayList<Object> pipeLines;
-    private boolean headless;
-    private String name = "";
-    private String fileName = "";
-    private String description = "";
-    private double version = 1.0f;
-  
-    public JsonConfigPipeLineSet()
-    {     
-    }
-    
-    public JsonConfigPipeLineSet(ArrayList<Object> pipeLines)
-    {
-      this.pipeLines = pipeLines;
-    }
-    
-    public ArrayList<Object> getPipeLines(){return pipeLines;}
-    public void setPipeLines(ArrayList<Object> pipeLines){this.pipeLines = pipeLines;}   
-    
-    public boolean isHeadless(){return headless;} 
-    public void setHeadless(boolean b){headless = b;}  
-    
-    public String getName(){return name;}
-    public void setName(String name){this.name = name;}
-    
-    public String getDescription(){return description;}
-    public void setDescription(String description){this.description = description;}
-    
-    public String getFileName(){return fileName;}
-    public void setFileName(String fileName){this.fileName = fileName;}
-    
-    public double getVersion(){return version;}
-    public void setVersion(double version){this.version = version;}
-  }
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/JsonConfigSaver.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/JsonConfigSaver.java
deleted file mode 100644
index 723ae6802068693e0f0d711dd2a53d5e47c9bbe7..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/JsonConfigSaver.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
-Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
-in source and binary forms, with or without modification, are permitted provided that the
-following conditions are met:
-
-Redistributions of source code must retain the above copyright notice, this list of conditions
-and the following disclaimer. Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the documentation and/or other
-materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
-Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
-http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
-WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-package edu.nps.moves.qrtda.elements.misc;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.ObjectWriter;
-import edu.nps.moves.qrtda.QRPreferences;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.QRFlowLink;
-import edu.nps.moves.qrtda.elements.misc.JsonConfigPipeLine.JsonConfigPipeLineSet;
-import edu.nps.moves.qrtda.elements.misc.JsonConfigPipeLine.Option;
-import edu.nps.moves.qrtda.elements.misc.JsonConfigPipeLine.PipeElement;
-import edu.nps.moves.qrtda.swing.QRTdaGuiPanel;
-import java.io.File;
-import java.io.IOException;
-import java.util.*;
-import javax.swing.*;
-
-/**
- * JsonConfigSaver.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class JsonConfigSaver
-{
-  private static JFileChooser chooser;
-
-  private static JsonConfigSaver meObj;
-  private JsonConfigSaver()
-  {
-  }
-  
-  public static JsonConfigSaver instance()
-  {
-    if(meObj == null)
-      meObj = new JsonConfigSaver();
-    return meObj;
-  }
-  private JFileChooser getChooser(TdaEnvironment env)
-  {
-    if(chooser == null) {     
-      String path = QRPreferences.getInstance().get(QRPreferences.JSON_SAVE_CHOOSER_PATH,TdaEnvironment.configsDirectory.getAbsolutePath());
-      chooser = new JFileChooser(path);
-      chooser.setMultiSelectionEnabled(false);
-      chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
-    }
-    return chooser;
-  }
-  
-  public void save(JComponent parent, TdaEnvironment env, QRTdaGuiPanel pan, QRFlowLink[] elementLis)
-  {
-    QRFlowLink[][] arrArr = new QRFlowLink[1][1];
-    arrArr[0] = elementLis;
-    String[]nmArr = new String[1];
-    nmArr[0]=pan.getDataFlowName();
-    String[]desArr = new String[1];
-    desArr[0]=pan.getDataFlowDescription();
-    saveAll(parent, env, nmArr, desArr, arrArr);
-  }
-  
-  public void saveAll(JComponent parent, TdaEnvironment env, String name[], String description[], QRFlowLink[]... elements)
-  {
-    JFileChooser ch = getChooser(env);
-    ch.setSelectedFile(new File("qrDataFlows.json"));
-    int ret = ch.showSaveDialog(null);
-    if (ret == JFileChooser.CANCEL_OPTION) {
-      return;
-    }
-    ArrayList<Object>pipeLines = new ArrayList<>();
-    JsonConfigPipeLineSet pipeSet = new JsonConfigPipeLineSet(pipeLines);
-    pipeSet.setName("name set in JsonConfigSaver/todo");
-    pipeSet.setDescription("description set in JsonConfigSaver/todo");
-    int count = elements.length;
-    
-    
-    for(int i=0;i<count;i++) {
-      QRFlowLink[] linkArr = elements[i];
-      JsonConfigPipeLine jcpl = new JsonConfigPipeLine();
-      jcpl.setName(name[i]);
-      jcpl.setDescription(description[i]);
-      if(count == 1) {  // if single pipeline, name the set after the first
-        pipeSet.setName(name[i]);
-        pipeSet.setDescription(description[i]);
-      }
-      ArrayList<Object> elementsArrLis = new ArrayList<>(linkArr.length);
-      jcpl.setPipeElements(elementsArrLis);
-      
-      for(QRFlowLink link : linkArr) {
-        PipeElement pe = new PipeElement();
-        pe.setClassName(link.getClass().getName());
-
-        ArrayList<Object> options = new ArrayList<>();
-        ArrayList<String> onames = link.getOptionNames();
-        for(String opName : onames) {
-          String val = env.getOptionValue(opName);
-          options.add(new Option(opName,val));
-        }
-        pe.setOption(options);
-        elementsArrLis.add(pe);
-      } 
-      pipeLines.add(jcpl);
-    }
-    String filePath = ch.getSelectedFile().getAbsolutePath();
-    String parentDir = ch.getSelectedFile().getParent();
-    
-    QRPreferences.getInstance().put(QRPreferences.JSON_SAVE_CHOOSER_PATH,parentDir);
-
-    ObjectMapper mapper = new ObjectMapper();
-    ObjectWriter oWriter = mapper.writerWithDefaultPrettyPrinter();
-    try {
-      oWriter.writeValue(new File(filePath), pipeSet);
-    }
-    catch (IOException iox) {
-      System.out.println("WHOA");
-    }
-  }
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/NameDefault.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/NameDefault.java
deleted file mode 100644
index 59374b3023805b91c68e5dc7c6fd216dd6210329..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/NameDefault.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.elements.misc;
-
-/**
- * NameDefault.java created on May 19, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class NameDefault
-{
-  private final String name;
-  private final String description;
-  private final String argumentHandle;
-  private final Object defalt;
-  private final Class<?> type;
-  
-  public NameDefault(String name, String description, Object defalt, Class<?> type, String argumentHandle)
-  {
-    this.name = name;
-    this.description = description;
-    this.defalt = defalt;
-    this.type = type;
-    this.argumentHandle = argumentHandle;
-  }
-  public String getName()
-  {
-    return name;
-  }
-  public Object getDefault()
-  {
-    return defalt;
-  }
-  public Class<?> getType()
-  {
-    return type;
-  }
-  public String getDescription()
-  {
-    return description;
-  }
-  public String getArgumentHandle()
-  {
-    return argumentHandle;
-  }
-  @Override
-  public String toString()
-  {
-    StringBuilder sb = new StringBuilder("name: ");
-    sb.append(name);
-    sb.append(", description: ");
-    sb.append(description);
-    sb.append(", default: ");
-    sb.append(defalt);
-    sb.append(", argumentHandle: ");
-    sb.append(argumentHandle);
-    sb.append(", type: ");
-    sb.append(type!=null?type.getSimpleName():"null");
-    return sb.toString();
-  }
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/NoCaptureDeviceFound.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/NoCaptureDeviceFound.java
deleted file mode 100644
index c0f075940fc40562e2eae33af7a92599e5ae2188..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/NoCaptureDeviceFound.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
-Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
-in source and binary forms, with or without modification, are permitted provided that the
-following conditions are met:
-
-Redistributions of source code must retain the above copyright notice, this list of conditions
-and the following disclaimer. Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the documentation and/or other
-materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
-Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
-http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
-WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-package edu.nps.moves.qrtda.elements.misc;
-
-/**
- * NoCaptureDeviceFound.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class NoCaptureDeviceFound extends Exception
-{
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/PipeButton.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/PipeButton.java
deleted file mode 100755
index fa9f1388f16c598b2dd2c7604ea8568a5a224776..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/PipeButton.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
-Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
-in source and binary forms, with or without modification, are permitted provided that the
-following conditions are met:
-
-Redistributions of source code must retain the above copyright notice, this list of conditions
-and the following disclaimer. Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the documentation and/or other
-materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
-Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
-http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
-WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-package edu.nps.moves.qrtda.elements.misc;
-
-import edu.nps.moves.qrtda.elements.QRFlowLink;
-import edu.nps.moves.qrtda.elements.gui.EmptyGui;
-import java.awt.Color;
-import java.awt.event.ActionListener;
-import javax.swing.JButton;
-
-/**
- * PipeButton.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class PipeButton extends JButton
-{
-  private final QRFlowLink link;
-  private final Color defaultColor;
-  private final Color green = new Color(51, 153, 0);
-  private final Color red = new Color(153, 0, 0);
-  
-  public PipeButton(QRFlowLink link, ActionListener listener, Integer idx)
-  {
-    super(link.getHandle());
-    
-    defaultColor = super.getForeground();
-    
-    if(link.getGui() instanceof EmptyGui)
-      italicize();
-    
-    if(idx!= null)
-      indicize(idx);
-    
-    super.setToolTipText(link.getShortDescription());
-    this.link = link;
-    super.addActionListener(listener);
-  }
-  
-  private void italicize()
-  {
-    String s = getText();
-    if(s.toLowerCase().startsWith("<html>"))
-      s = s.substring(6,s.length());
-    setText("<html><i> "+s+"</i>");
-  }
-  
-  private void indicize(int idx)
-  {
-    String s = getText();
-    if(s.toLowerCase().startsWith("<html>"))
-      s = s.substring(6,s.length());
-    setText("<html><b>"+idx+" </b>"+s);   
-  }
-  
-  public QRFlowLink getQRFlowLink()
-  {
-    return link;
-  }
-
-  public void showOff()
-  {
-    setForeground(red);
-  }
-  
-  public void showOn()
-  {
-    setForeground(green);
-  }
-  
-  public void showDefault()
-  {
-    setForeground(defaultColor);
-  }
-
-  public void showOnOrOff(boolean tf)
-  {
-    if(tf)
-      showOn();
-    else
-      showOff();
-  }
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/PipeCategory.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/PipeCategory.java
deleted file mode 100644
index ebc61804f7e9c2ec40610a68be2e274c41916d8e..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/PipeCategory.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements.misc;
-
-/**
- * PipeCategory.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public enum PipeCategory
-{
-  TEXT_SOURCE("Text source"),
-  TEXT_SINK("Text sink"),
-  IMAGE_SOURCE("Image source"),
-  IMAGE_SINK("Image sink"),
-  
-  COMMS("Miscellaneous communications"),
-  DECRYPTION("Message decryption"),
-  ENCRYPTION("Message encryption"),
-  FILE_SYSTEM("File system actions"),
-  INFORMATIONAL("Informational"),
-  MESSAGING("Messaging"),
-  MISCELLANEOUS("Miscellaneous"),
-  QR_DECODING("QR image decoding"),
-  QR_GENERATION("QR image generation");
-  
-  private final String description;
-  
-  private PipeCategory(String description)
-  {
-    this.description = description;
-  }
-  
-  public String getDescription()
-  {
-    return description;
-  }
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/QRAvailableElements.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/QRAvailableElements.java
deleted file mode 100644
index 383ad0739c6de54810b55fad8ee6a7e2b30084b4..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/QRAvailableElements.java
+++ /dev/null
@@ -1,393 +0,0 @@
-/*
-Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
-in source and binary forms, with or without modification, are permitted provided that the
-following conditions are met:
-
-Redistributions of source code must retain the above copyright notice, this list of conditions
-and the following disclaimer. Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the documentation and/or other
-materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
-Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
-http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
-WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements.misc;
-
-import edu.nps.moves.qrtda.elements.QRFlowLink;
-import java.io.*;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.*;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.nio.file.*;
-import java.nio.file.FileSystem;
-import java.util.*;
-import java.util.jar.JarEntry;
-import java.util.jar.JarFile;
-import java.util.stream.Collectors;
-
-/**
- * QRAvailableElements.java created on May 14, 2015 MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class QRAvailableElements
-{
-
-  static final String elementPath = "edu/nps/moves/qrtda/elements";
-  static final int    numPathSeps = 5; // with last
-  static final String elementPackage = "edu.nps.moves.qrtda.elements";
-
-  static final String guiPath = "edu/nps/moves/qrtda/elements/gui";
-  static final String guiPackage = "edu.nps.moves.qrtda.elements.gui";
-
-  static final String jarSeparator = "!";
-  static final String fileSep = System.getProperty("file.separator");
-  static final char   fileSepChar = fileSep.charAt(0);
-  static final char   pathSepChar = '/';
-  static final char   packageSepChar = '.';
-  static final String nestedClassStr = "$";
-
-  public static HashMap<String, QRElementDescriptor> elementMap = new HashMap<>();
-  public static HashSet<Class<?>> guiPackageSet = new HashSet<>();
-
-  static {
-    fillMap();
-    fillGuiSet();
-  }
-
-  public static HashMap<String, QRElementDescriptor> getElementMap()
-  {
-    return elementMap;
-  }
-
-  public static Set<Class<?>> getGuiPackageClasses()
-  {
-    return guiPackageSet;
-  }
-
-  public static QRElementDescriptor getElementDescriptor(String name)
-  {
-    return elementMap.get(name);
-  }
-
-  private static void fillGuiSet()
-  {
-    List<Class<?>> lis = classesInPackage(guiPackage, guiPath, null);
-    for (Class<?> c : lis) {
-      guiPackageSet.add(c);
-    }
-  }
-
-  private static void fillMap()
-  {
-    List<Class<?>> lis = classesInPackage(elementPackage, elementPath, QRFlowLink.class);
-    for (Class c : lis) {
-      addElementClass(c);
-    }
-  }
-  
-  public static List<PathAndStream> packageContents(String pkgPath)
-  {
-    URL url = QRAvailableElements.class.getClassLoader().getResource(pkgPath);
-    String file = url.getFile();
-    ArrayList<PathAndStream> ar = new ArrayList<>();
-    
-    if (file.contains(jarSeparator)) {
-      FileSystem fs = null;
-      try {
-        fs = FileSystems.newFileSystem(url.toURI(), new HashMap());
-        Path pth = fs.getPath(pkgPath);
-        Object[] oa = Files.list(pth).toArray();
-        for (Object obj : oa) {
-          Path p = (Path)obj;
-          String s = p.toString();
-          if(s.startsWith("/"))
-            s = s.substring(1);
-          InputStream is = QRAvailableElements.class.getClassLoader().getResourceAsStream(s); 
-          ar.add(new PathAndStream(p,is));
-        }
-        fs.close();
-      }
-      catch (IOException | URISyntaxException t) {
-        System.out.println("packageContents exception:" + t.getClass().getSimpleName() + " " + t.getLocalizedMessage());
-        try{if(fs != null)fs.close();}catch(IOException ex){}
-      }
-
-      return ar;
-    }
-    else {
-      File dir = new File(file);
-      if (dir.exists()) {
-        File[] lst = dir.listFiles();
-        for (File f : lst) {
-          try {
-            ar.add(new PathAndStream(f.toPath(), new FileInputStream(f)));
-          }
-          catch(FileNotFoundException t) {
-            System.out.println("QRAvailableElements.packageContents(): "+t.getLocalizedMessage());
-          }
-        }
-      }
-      return ar;
-    }
-  }
-  
-  public static List<Class<?>> classesInPackage(String pkgName, String pkgPath, Class<?> parent)
-  {
-    List<Class<?>> pLis = new ArrayList<>();
-    URL url = QRAvailableElements.class.getClassLoader().getResource(pkgPath); // find this jar on clspath
-    String file = url.getFile();
-    if (file.contains(jarSeparator)) { //file.startsWith("file")) {
-      FileSystem fs = null;
-      try {
-        try {
-          fs = FileSystems.newFileSystem(url.toURI(), new HashMap());
-        }
-        catch(FileSystemAlreadyExistsException fsex) {
-         System.out.println("oops");// fs = FileSystems.getFileSystem(url.toURI());
-        }
-
-        Path pth = fs.getPath(pkgPath); //elementPath);
-        pLis = Files.list(pth)
-          //.map(p->{System.out.println("p: "+p.toString());return p;})
-          .filter(p -> p.toString().endsWith(".class"))
-          .filter(p -> !p.toString().contains(nestedClassStr))
-          .map(p -> p.toString().replace(".class", ""))
-          .map(str -> str.replace(pathSepChar, packageSepChar))
-          .map(str -> str.substring(1)) // lose first .
-          //.map(str->{System.out.println("str: "+str);return str;})
-          .map(str -> {
-            try {
-             // System.out.println("clsnm: "+str);
-              return Class.forName(str);
-            }
-            catch (ClassNotFoundException ex) {
-              return null;
-            }
-            
-          })
-          .filter(c -> c != null)
-          .filter(c -> {
-            if (parent != null) {
-              boolean isAbstract = Modifier.isAbstract(c.getModifiers());
-              return (parent.isAssignableFrom(c) && !c.equals(parent) && !isAbstract);
-            }
-            return true;
-          })
-          .collect(Collectors.toList());
-      }
-      catch(Exception e) {
-        System.out.println(e.getClass().getName()+" "+e.getLocalizedMessage());
-      } 
-      try {fs.close();}catch(Throwable t){System.out.println(t);}
-      return pLis;
-    }
-    else { //if (!file.contains(jarSeparator)) {
-      File dir = new File(file);
-      if (dir.exists()) {
-        File[] lst = dir.listFiles();
-        for (File f : lst) {
-          String pth = f.getPath();
-          if (pth.endsWith(".class")) {
-            if (!pth.contains(nestedClassStr)) {
-              int idx = pth.lastIndexOf(fileSep);
-              String clsnm = pth.substring(idx + 1, pth.length() - 6);
-              try {
-                Class c = Class.forName(pkgName + "." + clsnm);
-                if (parent != null) {
-                  boolean isAbstract = Modifier.isAbstract(c.getModifiers());
-                  if (parent.isAssignableFrom(c) && !c.equals(parent) && !isAbstract) {
-                    pLis.add(c);
-                  }
-                }
-                else
-                  pLis.add(c);
-              }
-
-              catch (Exception ex) {
-                System.out.println("Error finding " + pth + " QR pipe elements: " + ex.getClass().getSimpleName() + "/ " + ex.getLocalizedMessage());
-              }
-            }
-          }
-        }
-      }
-    }
-    return pLis;
-  }
-public static List<Class<?>> xclassesInPackage(String pkgName, String pkgPath, Class<?> parent)
-  {
-    int targetPathSeps = countSeps(pkgPath, fileSepChar) + 1;
-
-    ArrayList<Class<?>> arLis = new ArrayList<>();
-    // Find the jar file absolute path
-    URL url = QRAvailableElements.class.getClassLoader().getResource(pkgPath); // find this jar on clspath
-    String file = url.getFile();
-    if (file.startsWith("file")) {
-      String[] sa = file.split(jarSeparator); // get the "file:/....." part
-      String jarPath = sa[0].substring(5); // remove the "file:"
-      try {
-        JarFile jf = new JarFile(new File(jarPath), false, JarFile.OPEN_READ);
-        Enumeration<JarEntry> en = jf.entries();
-        String pathTest = pkgPath + fileSepChar;
-        // Cycle through and get the files listed in the directory;  the search also returns the enclosing dir, so check for that
-        while (en.hasMoreElements()) {
-          JarEntry je = en.nextElement();
-          String name = je.getName();
-          if (name.startsWith(pathTest) && !name.endsWith(fileSep)) {
-            if (countSeps(name, fileSepChar) == targetPathSeps) {
-              if (!name.contains(nestedClassStr)) {
-                String clsnm = name.replace(fileSepChar, packageSepChar);
-                clsnm = clsnm.replace(".class", "");
-                Class c = Class.forName(clsnm);
-                if (parent != null) {
-                  boolean isAbstract = Modifier.isAbstract(c.getModifiers());
-                  if (parent.isAssignableFrom(c) && !c.equals(parent) && !isAbstract) {
-                    arLis.add(c);
-                  }
-                }
-                else
-                  arLis.add(c);
-              }
-            }
-          }
-        }
-      }
-      catch (IOException | ClassNotFoundException ex) {
-        System.out.println("Error finding classes in jar: " + ex.getClass().getSimpleName() + ": " + ex.getLocalizedMessage());
-      }
-    }
-    else if (!file.contains(jarSeparator)) {
-      File dir = new File(file);
-      if (dir.exists()) {
-        File[] lst = dir.listFiles();
-        for (File f : lst) {
-          String pth = f.getPath();
-          if (pth.endsWith(".class")) {
-            if (!pth.contains(nestedClassStr)) {
-              int idx = pth.lastIndexOf(fileSep);
-              String clsnm = pth.substring(idx + 1, pth.length() - 6);
-              try {
-                Class c = Class.forName(pkgName + "." + clsnm);
-                if (parent != null) {
-                  boolean isAbstract = Modifier.isAbstract(c.getModifiers());
-                  if (parent.isAssignableFrom(c) && !c.equals(parent) && !isAbstract) {
-                    arLis.add(c);
-                  }
-                }
-                else
-                  arLis.add(c);
-              }
-
-              catch (Exception ex) {
-                System.out.println("Error finding " + pth + " QR pipe elements: " + ex.getClass().getSimpleName() + "/ " + ex.getLocalizedMessage());
-              }
-            }
-          }
-        }
-      }
-    }
-    return arLis;
-  }
-
-  public static QRElementDescriptor addElementClass(Class<? extends QRFlowLink> cls)
-  {
-    Class c = cls;
-    if (cls.getGenericSuperclass() instanceof Class)
-      c = (Class) cls.getGenericSuperclass();
-    Class input = (Class) ((ParameterizedType) c.getGenericSuperclass()).getActualTypeArguments()[0];
-    Class output = (Class) ((ParameterizedType) c.getGenericSuperclass()).getActualTypeArguments()[1];
-
-    QRElementDescriptor qed = new QRElementDescriptor(cls, input, output);
-    return elementMap.put(cls.getSimpleName(), qed);
-  }
-
-  public static class QRElementDescriptor
-  {
-
-    public Class<? extends QRFlowLink> element;
-    public PipeCategory category;
-    public Class input;
-    public Class output;
-    public String handle;
-    public String longDescription;
-    public String shortDescription;
-
-    public QRElementDescriptor(Class<? extends QRFlowLink> element, Class input, Class output)
-    {
-      this.element = element;
-      this.input = input;
-      this.output = output;
-      getInfo(element, this);
-    }
-
-    @Override
-    public String toString()
-    {
-      return element.getSimpleName();
-    }
-  }
-
-  private static Object getAnnotationValue(Class<?> cls, Class annoClass)
-  {
-    try {
-      for (Field field : cls.getDeclaredFields()) {
-        Annotation[] annos = field.getDeclaredAnnotationsByType(annoClass);
-        if (annos != null && annos.length > 0) {
-          // that field is annotated, read its value
-          return field.get(null);
-        }
-      }
-    }
-    catch (IllegalAccessException ex) {
-
-    }
-    return null;
-  }
-
-  private static void getInfo(Class<? extends QRFlowLink> cls, QRElementDescriptor qed)
-  {
-    Object handle = getAnnotationValue(cls, ElementHandle.class);
-    Object pipeCat = getAnnotationValue(cls, ElementCategory.class);
-    Object descLong = getAnnotationValue(cls, ElementDescriptionLong.class);
-    Object descShort = getAnnotationValue(cls, ElementDescriptionShort.class);
-
-    if (handle == null || pipeCat == null || descLong == null || descShort == null)
-      throw new RuntimeException("Can't get info for " + cls.getSimpleName());
-    qed.handle = handle.toString();
-    qed.category = (PipeCategory) pipeCat;
-    qed.longDescription = descLong.toString();
-    qed.shortDescription = descShort.toString();
-  }
-
-  private static int countSeps(String s, char sep)
-  {
-    int occurrences = 0;
-    for (char c : s.toCharArray()) {
-      if (c == sep)
-        occurrences++;
-    }
-    return occurrences;
-  }
-
-  public static class PathAndStream
-  {
-    public Path p;
-    public InputStream is;
-    public PathAndStream(Path p, InputStream is)
-    {
-      this.p = p;
-      this.is = is;
-    }
-  }
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/QRWebcamResolutions.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/QRWebcamResolutions.java
deleted file mode 100644
index dedaaefd3e5f8672c209653c5f94ad06c1ced92e..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/QRWebcamResolutions.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.elements.misc;
-
-import java.awt.Dimension;
-
-/**
- * QRWebcamResolutions.java created on Jun 24, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class QRWebcamResolutions
-{
-  public static final Dimension R4K      = new Dimension(3840,2160); //16:9
-  public static final Dimension R27K     = new Dimension(2704,1520); //16:9
-  public static final Dimension R27K_43  = new Dimension(2704,2028); //4:3
-  public static final Dimension R1440_43 = new Dimension(1920,1440); //4:3
-  public static final Dimension R1080    = new Dimension(1920,1080); //16:9
-  public static final Dimension R960_43  = new Dimension(1280,960);  //4:3
-  public static final Dimension R720     = new Dimension(1280,720);  //16:9
-  public static final Dimension RWVGA    = new Dimension(848,480);   //16:9
-  
-  public static final Dimension[] HERO4_RESOLUTIONS = {R4K,R27K,R27K_43,R1440_43,R1080,R960_43,R720,RWVGA};
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/QrtdaParameter.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/QrtdaParameter.java
deleted file mode 100644
index a666c2a49943aca13f46e6faf4c40ae2200b0c53..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/QrtdaParameter.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.elements.misc;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * QrtdaParameter.java created on May 19, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * A marker for options/parameters used by pipe elements
- * 
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.FIELD)
-public @interface QrtdaParameter
-{
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/ReadyListener.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/ReadyListener.java
deleted file mode 100755
index 79ece668139c9390243bbed27b7acd6620c59cbf..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/ReadyListener.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements.misc;
-
-import edu.nps.moves.qrtda.elements.QRFlowLink;
-
-/**
- * ReadyListener.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public interface ReadyListener
-{
-  public void setReady(QRFlowLink link, boolean tf);
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/RunScriptsMenuItem.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/RunScriptsMenuItem.java
deleted file mode 100644
index 77be5b7458aecb1b8540d80339e87b00c465567e..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/RunScriptsMenuItem.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.elements.misc;
-
-import edu.nps.moves.qrtda.elements.gui.InstallRunScriptsDialog;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import javax.swing.JFrame;
-import javax.swing.JMenu;
-import javax.swing.JMenuBar;
-import javax.swing.JMenuItem;
-
-/**
- * RunScriptsMenuItem.java created on May 1, 2017
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class RunScriptsMenuItem extends JMenuItem implements ActionListener
-{
-  private final JFrame frame;
-  public RunScriptsMenuItem(JFrame fr)
-  {
-    super("Install run scripts...");
-    super.addActionListener(this);
-    this.frame = fr;
-  }
-
-  @Override
-  public void actionPerformed(ActionEvent e)
-  {
-    InstallRunScriptsDialog.display(frame,true);
-  }
- 
-  public static class RunScriptsMenuBar extends JMenuBar
-  {
-    public RunScriptsMenuBar(JFrame frame)
-    {
-      JMenu jm;
-      super.add(jm = new JMenu("Install scripts"));
-      jm.add(new RunScriptsMenuItem(frame));
-    }
-  }
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/SailorText.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/SailorText.java
deleted file mode 100644
index e6649b49bdbdad09ddc2d2cfaf728f0948403eb5..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/SailorText.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.elements.misc;
-
-/**
- * SailorText.java created on Mar 7, 2017 MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class SailorText
-{
-
-  public enum SailorMedium
-  {
-    MORSE, FLAGS, SEMAPHORE, COMPOSITE
-  };
-
-  public SailorMedium medium;
-  public String text;
-
-  public SailorText(SailorMedium medium, String text)
-  {
-    this.medium = medium;
-    this.text = text;
-  }
-
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/SvgImageLoader.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/SvgImageLoader.java
deleted file mode 100644
index a89162b3d93b71a18bfc101a37bb6917845e4c78..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/elements/misc/SvgImageLoader.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.elements.misc;
-
-import static org.apache.batik.transcoder.SVGAbstractTranscoder.KEY_WIDTH;
-import static org.apache.batik.transcoder.SVGAbstractTranscoder.KEY_HEIGHT;
-import static org.apache.batik.transcoder.XMLAbstractTranscoder.KEY_DOCUMENT_ELEMENT;
-import static org.apache.batik.transcoder.XMLAbstractTranscoder.KEY_DOCUMENT_ELEMENT_NAMESPACE_URI;
-import static org.apache.batik.transcoder.XMLAbstractTranscoder.KEY_DOM_IMPLEMENTATION;
-import static org.apache.batik.util.SVGConstants.SVG_NAMESPACE_URI;
-import static org.apache.batik.util.SVGConstants.SVG_SVG_TAG;
-
-import org.apache.batik.anim.dom.SVGDOMImplementation;
-import org.apache.batik.transcoder.TranscoderException;
-import org.apache.batik.transcoder.TranscoderInput;
-import org.apache.batik.transcoder.TranscoderOutput;
-import org.apache.batik.transcoder.TranscodingHints;
-import org.apache.batik.transcoder.image.ImageTranscoder;
-
-import java.awt.image.BufferedImage;
-import java.io.IOException;
-import java.net.URL;
-
-/** Loads SVG images from disk. See https://en.wikipedia.org/wiki/Scalable_Vector_Graphics. */
-public class SvgImageLoader {
-
-  /**
-   * Reads in an SVG image file and return it as a BufferedImage with the given width and a height
-   * where the original aspect ratio is preserved.
-   *
-   * @param url URL referencing the SVG image file, which is typically an XML file
-   * @param height height in pixels the returned BufferedImage should be
-   *
-   * @return a valid image representing the SVG file
-   * @throws IOException if the file cannot be parsed as valid SVG
-   */
-  public static BufferedImage LoadSvgWithHeight(URL url, float height) throws IOException
-  {
-    return loadSvg_Common(url, getHints(true,height));
-  }
-  
- /**
-   * Reads in an SVG image file and return it as a BufferedImage with the given width and a height
-   * where the original aspect ratio is preserved.
-   *
-   * @param url URL referencing the SVG image file, which is typically an XML file
-   * @param width width in pixels the returned BufferedImage should be
-   *
-   * @return a valid image representing the SVG file
-   * @throws IOException if the file cannot be parsed as valid SVG
-   */ public static BufferedImage LoadSvgWithWidth(URL url, float width) throws IOException
-  {
-    return loadSvg_Common(url, getHints(false,width));
-  }
-  
-  private static BufferedImage loadSvg_Common(URL url, TranscodingHints hints) throws IOException
-  {
-    SvgTranscoder transcoder = new SvgTranscoder();
-    transcoder.setTranscodingHints(hints);
-    try {
-      TranscoderInput input = new TranscoderInput(url.openStream());
-      transcoder.transcode(input, null);
-    }
-    catch (NullPointerException | TranscoderException e) {
-      throw new IOException("Error parsing SVG file " + url, e);
-    }
-    BufferedImage image = transcoder.getImage();
-    //System.out.printf("Read '%s' SVG image from disk requested with width=%.1f, sized as %dx%d pixels.",
-        //new File(url.getFile()).getName(), width, image.getWidth(), image.getHeight());
-    return image;    
-  }
-  
-  private static TranscodingHints getHints(boolean height, float sz) {
-    TranscodingHints hints = new TranscodingHints();
-    hints.put(KEY_DOM_IMPLEMENTATION, SVGDOMImplementation.getDOMImplementation());
-    hints.put(KEY_DOCUMENT_ELEMENT_NAMESPACE_URI, SVG_NAMESPACE_URI);
-    hints.put(KEY_DOCUMENT_ELEMENT, SVG_SVG_TAG);
-    hints.put(height?KEY_HEIGHT:KEY_WIDTH, sz);
-    return hints;
-  }
-
-  private static class SvgTranscoder extends ImageTranscoder {
-
-    private BufferedImage image = null;
-
-    @Override
-    public BufferedImage createImage(int width, int height) {
-      image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
-      return image;
-    }
-
-    @Override
-    public void writeImage(BufferedImage img, TranscoderOutput out) {}
-
-    BufferedImage getImage() {
-      return image;
-    }
-  }
-  
-}
\ No newline at end of file
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/fx/QRTdaFXMain.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/fx/QRTdaFXMain.java
deleted file mode 100755
index e54fe7d8af25bc165d76db7551675c8dd11a487c..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/fx/QRTdaFXMain.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.fx;
-
-import javafx.application.Application;
-import javafx.fxml.FXMLLoader;
-import javafx.scene.Scene;
-import javafx.scene.layout.AnchorPane;
-import javafx.stage.Stage;
-
-/**
- * QRTdaFXMain.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class QRTdaFXMain extends Application
-{
-  @Override
-  public void start(Stage primaryStage)
-  {
-    try {
-      AnchorPane page = (AnchorPane) FXMLLoader.load(QRTdaFXMain.class.getResource("QRTdaGuiLayout.fxml"));
-      Scene scene = new Scene(page);
-      primaryStage.setScene(scene);
-      primaryStage.setTitle("dummy title");
-      primaryStage.show();
-    }
-    catch (Exception ex) {
-      //Logger.getRootLogger().setLevel(Level.ERROR);
-      //Logger.getLogger(QRTdaFXMain.class.getName()).log(Level.FATAL, null, ex);
-    }
-
-  }
-
-  /**
-   * The main() method is ignored in correctly deployed JavaFX application. main() serves only as fallback in case the application can not be launched through
-   * deployment artifacts, e.g., in IDEs with limited FX support. NetBeans ignores main().
-   *
-   * @param args the command line arguments
-   */
-  public static void main(String[] args)
-  {
-    Application.launch(QRTdaFXMain.class, (java.lang.String[]) null);
-
-  }
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/fx/QRTdaGuiLayout.fxml b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/fx/QRTdaGuiLayout.fxml
deleted file mode 100755
index e4185fa43222abf9f2fc6b39268d331997d500c2..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/fx/QRTdaGuiLayout.fxml
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<?import java.lang.*?>
-<?import java.net.*?>
-<?import java.util.*?>
-<?import javafx.scene.*?>
-<?import javafx.scene.control.*?>
-<?import javafx.scene.layout.*?>
-
-<AnchorPane id="AnchorPane" prefHeight="800.0" prefWidth="900.0" styleClass="mainFxmlClass, theme" xmlns:fx="http://javafx.com/fxml" fx:controller="edu.nps.moves.qrtda.fx.QRTdaGuiLayoutController">
-  <children>
-    <MenuBar layoutX="0.0" AnchorPane.topAnchor="0.0">
-      <menus>
-        <Menu mnemonicParsing="false" text="File">
-          <items>
-            <MenuItem mnemonicParsing="false" onAction="#newEncodeWindowMIhandler" text="New Encode Window" fx:id="newEncodeWindowMI" />
-            <MenuItem mnemonicParsing="false" onAction="#newDecodeWindowHandler" text="Unspecified Action" fx:id="newDecodeWindowMI" />
-          </items>
-        </Menu>
-        <Menu mnemonicParsing="false" text="Edit">
-          <items>
-            <MenuItem mnemonicParsing="false" text="Delete" />
-          </items>
-        </Menu>
-        <Menu mnemonicParsing="false" text="Help">
-          <items>
-            <MenuItem mnemonicParsing="false" text="About" />
-          </items>
-        </Menu>
-      </menus>
-    </MenuBar>
-    <SplitPane dividerPositions="0.803088803088803" focusTraversable="true" orientation="VERTICAL" prefHeight="777.0" prefWidth="900.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="23.0">
-      <items>
-        <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="100.0" prefWidth="160.0">
-          <children>
-            <SplitPane dividerPositions="0.2788888888888889" focusTraversable="true" prefHeight="397.0" prefWidth="900.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
-              <items>
-                <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="160.0" prefWidth="100.0">
-                  <children>
-                    <Label alignment="TOP_CENTER" layoutX="95.0" text="Data Flow" AnchorPane.topAnchor="14.0" />
-                    <SplitPane dividerPositions="0.49834437086092714" focusTraversable="true" orientation="VERTICAL" prefHeight="604.0" prefWidth="248.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0">
-                      <items>
-                        <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="291.0000999999975" prefWidth="234.0">
-                          <children>
-                            <Label alignment="TOP_RIGHT" text="Click to view options" AnchorPane.leftAnchor="63.0" AnchorPane.rightAnchor="63.0" AnchorPane.topAnchor="4.0" />
-                            <FlowPane fx:id="elementButtonsPane" prefHeight="265.0" prefWidth="220.0" AnchorPane.bottomAnchor="9.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="24.0" />
-                          </children>
-                        </AnchorPane>
-                        <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="293.0" prefWidth="220.0" />
-                      </items>
-                    </SplitPane>
-                  </children>
-                </AnchorPane>
-                <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="632.9999000000025" prefWidth="646.0" />
-              </items>
-            </SplitPane>
-          </children>
-        </AnchorPane>
-        <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="100.0" prefWidth="160.0">
-          <children>
-            <TextArea prefHeight="397.0" prefWidth="900.0" wrapText="true" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
-          </children>
-        </AnchorPane>
-      </items>
-    </SplitPane>
-  </children>
-  <stylesheets>
-    <URL value="@qrtdaguilayout.css" />
-  </stylesheets>
-</AnchorPane>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/fx/QRTdaGuiLayoutController.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/fx/QRTdaGuiLayoutController.java
deleted file mode 100755
index 9434e0a7e35bbfad5f7b03a72e41a1bad665dce3..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/fx/QRTdaGuiLayoutController.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.fx;
-
-import java.net.URL;
-import java.util.ResourceBundle;
-import javafx.event.ActionEvent;
-import javafx.fxml.FXML;
-import javafx.fxml.Initializable;
-import javafx.scene.control.MenuItem;
-import javafx.scene.layout.FlowPane;
-
-/**
- * QRTdaGuiLayoutController.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class QRTdaGuiLayoutController implements Initializable
-{
-  @FXML
-  private ResourceBundle resources;
-  @FXML
-  private URL location;
-  @FXML
-  private FlowPane elementButtonsPane;
-  @FXML
-  private MenuItem newDecodeWindowMI;
-  @FXML
-  private MenuItem newEncodeWindowMI;
-
-  @FXML
-  void newDecodeWindowHandler(ActionEvent event)
-  {
-  }
-
-  @FXML
-  void newEncodeWindowMIhandler(ActionEvent event)
-  {
-  }
-
-  @FXML
-  @Override
-  public void initialize(URL url, ResourceBundle rb)
-  {
-    assert elementButtonsPane != null : "fx:id=\"elementButtonsPane\" was not injected: check your FXML file 'QRTdaGuiLayout.fxml'.";
-    assert newDecodeWindowMI != null : "fx:id=\"newDecodeWindowMI\" was not injected: check your FXML file 'QRTdaGuiLayout.fxml'.";
-    assert newEncodeWindowMI != null : "fx:id=\"newEncodeWindowMI\" was not injected: check your FXML file 'QRTdaGuiLayout.fxml'.";
-  }
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/fx/qrtdaguilayout.css b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/fx/qrtdaguilayout.css
deleted file mode 100755
index 621405783e32b825509ca19e1a5374a2be8064ae..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/fx/qrtdaguilayout.css
+++ /dev/null
@@ -1,68 +0,0 @@
-
-.theme {
-    master-color: grey;
-    -fx-background-color: derive(master-color, 70%);
-    -fx-font-size: 14px;
-}
-
-.split-pane {
-    -fx-padding: 0;
-    -fx-border-width: 0;
-    -fx-background-color: derive(master-color, 100%);
-}
-
-.button {
-    -fx-background-color:
-        linear-gradient(
-            derive(master-color, 120%), 
-            derive(master-color, 90%)
-        ),
-        radial-gradient(
-            center 50% -40%, 
-            radius 180%, 
-            derive(master-color, 95%) 55%, 
-            derive(master-color, 75%) 55%
-        );
-    -fx-background-radius: 4, 3;
-    -fx-background-insets: 0, 1;
-    -fx-effect: dropshadow( three-pass-box , rgba(0,0,0,0.55) , 5, 0.0 , 0 , 1 );
-    -fx-text-fill: derive(master-color, -60%);
-    -fx-padding: 3 11 3 11;
-}
-
-.darkList {
-    -fx-background-color: derive(master-color, -60%);
-}
-
-.darkList .list-cell {
-    -fx-padding: 6 0 0 13;
-    -fx-background-color: derive(master-color, -60%);
-    -fx-text-fill: lightgrey;
-}
-
-.darkList .list-cell:focused {
-    -fx-text-fill: white;
-}
-
-.table-view {
-    -fx-border-width: 0;
-    -fx-border-color: red;
-}
-
-.text-area, .text-field {
-    -fx-background-radius: 4;
-    -fx-border-radius: 4;
-}
-
-.text-area {
-    -fx-padding: 2;
-}
-
-.text-field {
-    -fx-padding: 3 6 3 6;
-}
-
-.label {
-    -fx-text-fill: derive(master-color, -20%);
-    -fx-font-size: 12px;
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/morseArt/MorseArtAndSound.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/morseArt/MorseArtAndSound.java
deleted file mode 100644
index 869d9bdf30f6c56ebf1789fcb1fff7f5f7c633af..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/morseArt/MorseArtAndSound.java
+++ /dev/null
@@ -1,357 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.morseArt;
-
-import edu.nps.moves.misc.StdAudio;
-import edu.nps.moves.qrtda.elements.misc.SvgImageLoader;
-import edu.nps.moves.qrtda.semaphoreArt.LabeledComponent;
-import java.awt.Color;
-import java.awt.Dimension;
-import java.awt.GridBagConstraints;
-import java.awt.GridBagLayout;
-import java.awt.image.BufferedImage;
-import java.io.IOException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import javax.swing.*;
-import static edu.nps.moves.qrtda.Constants.HIRES_TABLE_TEXT_FACTOR;
-
-/**
- * MorseArtAndSound.java created on Mar 1, 2017
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-
-public class MorseArtAndSound
-{
-  private static final String DOTSVGFILE = "Dotspace.svg";
-  private static final String DASHSVGFILE= "Dashspace.svg";
-  private static final String DOTSVGFILE_WHITE = "DotspaceWhite.svg";
-  private static final String DASHSVGFILE_WHITE = "DashspaceWhite.svg";
-  private static final String SPACESVGFILE="Space.svg";
-  
-  private static final Object[][] code = {
-    {'a',new boolean[]{false,true}},             // dit dah
-    {'b',new boolean[]{true,false,false,false}}, // dah dit dit dit
-    {'c',new boolean[]{true,false,true,false}},  // dah dit dah dit
-    {'d',new boolean[]{true,false,false}},       // dah dit dit
-    {'e',new boolean[]{false}},                  // dit
-    {'f',new boolean[]{false,false,true,false}}, // dit dit dah dit
-    {'g',new boolean[]{true,true,false}},        // dah dah dit
-    {'h',new boolean[]{false,false,false,false}},// dit dit dit dit
-    {'i',new boolean[]{false,false}},            // dit dit
-    {'j',new boolean[]{false,true,true,true}},   // dit dah dah dah
-    {'k',new boolean[]{true,false,true}},        // dah dit dah
-    {'l',new boolean[]{false,true,false,false}}, // dit dah dit dit
-    {'m',new boolean[]{true,true}},              // dah dah
-    {'n',new boolean[]{true,false}},             // dah dit
-    {'o',new boolean[]{true,true,true}},         // dah dah dah
-    {'p',new boolean[]{false,true,true,false}},  // dit dah dah dit
-    {'q',new boolean[]{true,true,false,true}},   // dah dah dit dah
-    {'r',new boolean[]{false,true,false}},       // dit dah dit
-    {'s',new boolean[]{false,false,false}},      // dit dit dit
-    {'t',new boolean[]{true}},                   // dah
-    {'u',new boolean[]{false,false,true}},       // dit dit dah
-    {'v',new boolean[]{false,false,false,true}}, // dit dit dit dah
-    {'w',new boolean[]{false,true,true}},        // dit dah dah
-    {'x',new boolean[]{true,false,false,true}},  // dah dit dit dah
-    {'y',new boolean[]{true,false,true,true}},   // dah dit dah dah
-    {'z',new boolean[]{true,true,false,false}},  // dah dah dit dit
-    
-    {'1',new boolean[]{false,true,true,true,true}},     // dit dah dah dah dah
-    {'2',new boolean[]{false,false,true,true,true}},    // dit dit dah dah dah
-    {'3',new boolean[]{false,false,false,true,true}},   // dit dit dit dah dah
-    {'4',new boolean[]{false,false,false,false,true}},  // dit dit dit dit dah
-    {'5',new boolean[]{false,false,false,false,false}}, // dit dit dit dit dit
-    {'6',new boolean[]{true,false,false,false,false}},  // dah dit dit dit dit
-    {'7',new boolean[]{true,true,false,false,false}},   // dah dah dit dit dit
-    {'8',new boolean[]{true,true,true,false,false}},    // dah dah dah dit dit
-    {'9',new boolean[]{true,true,true,true,false}},     // dah dah dah dah dit
-    {'0',new boolean[]{true,true,true,true,true}},      // dah dah dah dah dah
- };
-  
-  
-  private static final HashMap<Character,boolean[]> map = new HashMap<>();
-
-  static {
-    for(Object[] ar : code)
-      map.put((Character)ar[0],(boolean[])ar[1]);
-  }
-  
-  public static JComponent getLetterCombined(char c, int size, Color background)
-  {
-    Collection<JComponent> coll = getLetter(c,size,background);
-    if(coll == null || coll.size()<=0)
-      return null;
-    return combineImages(coll);
-  }
-  
-  public static Collection<JComponent> getLetter(char ch,int size, Color background)
-  {
-    boolean[] ba = map.get(Character.toLowerCase(ch));
-    if(ba== null) {
-      return null;
-    }
-    ArrayList<JComponent> arLis = new ArrayList<>();
-    for(boolean dash : ba) {
-      String filen;
-      boolean black = LabeledComponent.useBlackVsWhite(background);
-      if(dash) {
-        filen = black?DASHSVGFILE:DASHSVGFILE_WHITE;
-      }
-      else {
-        filen = black?DOTSVGFILE:DOTSVGFILE_WHITE;
-      }
-      JComponent jc = getSwingComponent(filen,size);
-      jc.setToolTipText(Character.toString(ch));
-      arLis.add(jc);
-    }
-    JComponent comp = getSwingComponent(SPACESVGFILE,size);
-    arLis.add(comp);
-
-    return arLis;//labelWrap(arLis.toArray(new JComponent[arLis.size()]),Character.toString(ch));
-
-  }
-  private static boolean[] getLetterDitDahs(char c)
-  {
-    return map.get(Character.toLowerCase(c));
-  }
-  
-  
-  private static final int MORSE_LETTER_SIZE_FACTOR_NUMERATOR = 3;
-  private static final int MORSE_LETTER_SIZE_FACTOR_DENOM = 10;
-
-  public static JComponent[][] getAlphaString(String s, int size, Color background)
-  {
-    char[] ca = s.trim().toCharArray();
-    ArrayList<ArrayList<JComponent>> lisLis = new ArrayList<>();
-    ArrayList<JComponent> arLis = new ArrayList<>();
-    lisLis.add(arLis);
-    for (char c : ca) {
-      Collection<JComponent> comps = getLetter(Character.toLowerCase(c), size, background);
-      if (comps != null) {
-        JComponent jc = combineImages(comps);
-        Dimension pd = jc.getPreferredSize();
-        int letterSize = size * MORSE_LETTER_SIZE_FACTOR_NUMERATOR / MORSE_LETTER_SIZE_FACTOR_DENOM;
-        letterSize = (int)((float)letterSize * HIRES_TABLE_TEXT_FACTOR);
-
-        jc = new LabeledComponent(jc,letterSize,new String(new char[]{c}),background); //,SwingConstants.LEFT);
-        Dimension pdc = jc.getPreferredSize();
-        jc.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createLineBorder(Color.darkGray, 1),
-                                                        BorderFactory.createEmptyBorder(3, 3, 3, 3)));
-        arLis.add(jc);
-      }
-      else {
-        arLis = new ArrayList<>();
-        lisLis.add(arLis);
-      }
-    }
-    JComponent[][] ret = new JComponent[lisLis.size()][];
-    int i = 0;
-    for (ArrayList<JComponent> aLis : lisLis) {
-      ret[i++] = aLis.toArray(new JComponent[aLis.size()]);
-    }
-    return ret;
-  }
-  private static JComponent combineImages(Collection<JComponent> comps)
-  {
-    JPanel pan = new JPanel();
-    pan.setOpaque(false);
-    pan.setLayout(new GridBagLayout());//new BoxLayout(pan,BoxLayout.LINE_AXIS));
-    GridBagConstraints con = new GridBagConstraints();
-    con.gridx = GridBagConstraints.RELATIVE;
-    con.gridy = 0;
-    for(JComponent c : comps){
-        pan.add(c,con);
-    }
-    
-    Dimension d = pan.getPreferredSize();
-    pan.setMinimumSize(new Dimension(d));
-    return pan;
-  }
-  private static JComponent getSwingComponent(String fn,int size)
-  {
-    URL url = MorseArtAndSound.class.getResource(fn);   
-    try {
-      BufferedImage bi = SvgImageLoader.LoadSvgWithHeight(url, size/5);
-      JLabel lab = new JLabel(new ImageIcon(bi));
-      Dimension d = lab.getSize();
-      Dimension pd = lab.getPreferredSize();
-      lab.setMaximumSize(new Dimension(pd));
-      lab.setMinimumSize(new Dimension(pd));
-      return lab;
-    }
-    catch(IOException ex) {
-      return new JLabel(new ImageIcon(new BufferedImage(size/5,size/5,BufferedImage.TYPE_INT_ARGB)));
-    }
-  }
-/*
-  private static JComponent[] labelWrap(JComponent[] ca, String s)
-  {
-    return ca;
-  }
-  private static JComponent labelWrap(JComponent comp, String s, Color background)
-  {
-    return new LabeledComponent(comp,s.toUpperCase(),background);
-  }
-  */
-  // Sound
-  private final static double FREQ = 440.d;
-  private final static double UNITTIME_SEC = .1d;
-  private final static long   UNITTIME_MSEC = (long)(UNITTIME_SEC*1000.);
-  
-  private final static double DAH_DURATION = 3.0d * UNITTIME_SEC;
-  private final static double DIT_DURATION = /* 1.0d * */ UNITTIME_SEC;
-  
-  private final static long   INTERDIT_DURATION = /* 1* */ UNITTIME_MSEC;
-  private final static long   INTERCHAR_DURATION = 3L * UNITTIME_MSEC;
-  private final static long   INTERWORD_DURATION = 7L * UNITTIME_MSEC;
-  
-  private final static char INTERCHARSPACETOKEN = '#';
-  private final static char INTERWORDSPACETOKEN = '%';
-  
-  private final static SoundObject DAHTONE = new Tone(makeTone(FREQ,DAH_DURATION));
-  private final static SoundObject DITTONE = new Tone(makeTone(FREQ,DIT_DURATION));
-  private final static SoundObject INTERDITSPACE = new NoSound(INTERDIT_DURATION);
-  private final static SoundObject INTERCHARSPACE = new NoSound(INTERCHAR_DURATION);
-  private final static SoundObject INTERWORDSPACE= new NoSound(INTERWORD_DURATION);
-  
-  // create a pure tone of the given frequency for the given duration
-  public static double[] makeTone(double hz, double duration)
-  {
-    int n = (int) (StdAudio.SAMPLE_RATE * duration);
-    double[] a = new double[n + 1];
-    for (int i = 0; i <= n; i++) {
-      a[i] = Math.sin(2 * Math.PI * i * hz / StdAudio.SAMPLE_RATE);
-    }
-    // ramp attempt:
-    /*
-    int arLen = a.length;
-    for(int i=0;i<3000;i++) {
-      a[i]*=(double)i/3000.;
-      a[arLen-1-i]*=(3000d/(double)(i+1));
-    }
-    */
-    return a;
-  }
-  public static void play(char ch)
-  {
-    new Thread(()-> {
-      try {
-        _play(ch);
-      }
-      catch(InterruptedException ex) {
-        // we've been stopped, just exit
-      }
-    }).start();
-  }
-  
-  private static void _play(char ch) throws InterruptedException
-  {
-    switch (ch) {
-      case INTERCHARSPACETOKEN:
-        INTERCHARSPACE.play();
-        break;
-      case INTERWORDSPACETOKEN:
-        INTERWORDSPACE.play();
-        break;
-      default:
-        boolean[] ba = getLetterDitDahs(ch);
-        if(ba == null)
-          break;
-        for(boolean b : ba) {
-          if(b)
-            DAHTONE.play();
-          else
-            DITTONE.play();
-          INTERDITSPACE.play();
-        } break;
-    }
-  }
-  private static Thread playThread;
-  public static void stop()
-  {
-    if(playThread != null)
-      playThread.interrupt();  // if thread not active, no harm
-  }
-  public static void play(String str)
-  {
-    playThread = new Thread(()-> {
-      try {
-        String[] sa = str.split("\\s+");  // whitespace
-        for(String s : sa) {
-          char[] ca = s.toCharArray();
-          for (char c : ca) {
-            _play(c);
-            _play(INTERCHARSPACETOKEN);
-          }
-         _play(INTERWORDSPACETOKEN);
-        }
-      }
-      catch(InterruptedException ex) {
-        // we've been stopped, just exit
-      }    
-    });
-    playThread.start(); 
-  }
-  
-  interface SoundObject {
-    public void play() throws InterruptedException;
-  }
-  
-  static class NoSound implements SoundObject
-  {
-    long sleep;
-    public NoSound(long sleep)
-    {
-      this.sleep = sleep;
-    }
-
-    @Override
-    public void play() throws InterruptedException
-    {
-      //try {Thread.sleep(sleep);}catch(InterruptedException iex){}
-      Thread.sleep(sleep);
-    }
-  }
-  
-  static class Tone implements SoundObject
-  {
-    double[] da;
-    public Tone(double[] da)
-    {
-      this.da = da;
-    }
-    @Override
-    public void play()
-    {
-      StdAudio.play(da);
-    }
-  }
-}
- 
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/optical/AbstractOpticalEntity.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/optical/AbstractOpticalEntity.java
deleted file mode 100644
index dd3c8228c49b6ac0d49c561801cfe9a276a3af87..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/optical/AbstractOpticalEntity.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.optical;
-
-import java.util.ArrayList;
-
-/**
- * AbstractOpticalEntity.java created on Apr 19, 2017
- MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public abstract class AbstractOpticalEntity implements OpticalEntity
-{
-  protected String artId = null;
-  private char key;
-  private Character ascii = null;
-  protected String description = null;
-  private ArrayList<OpticalEntity> xchildren;
-  protected OpticalEntity[] children;
-
-  public AbstractOpticalEntity(char key, String artId)
-  {
-    this.key = key;
-    this.artId = artId;
-  }
-  
-  public AbstractOpticalEntity(char key, String artId, char ascii)
-  {
-    this(key,artId);
-    this.ascii = ascii;
-  }
-  public AbstractOpticalEntity(char key, String description, OpticalEntity... children)
-  {
-    this.key = key;
-    this.description = description;
-    this.children = children;
-  }
-  
-  @Override
-  public OpticalEntity[] getChildren()
-  {
-    return children;
-  }
-
-  @Override
-  public char getKey()
-  {
-    return key;
-  }
-
-  @Override
-  public Character getAsciiRepresentation()
-  {
-    return ascii;
-  }
-
-  @Override
-  public String getDescription()
-  {
-    return description;
-  }
-
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/optical/OpticalEntity.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/optical/OpticalEntity.java
deleted file mode 100644
index a855c1844a4e775a4b70b91ea9ca20ed5211d8ec..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/optical/OpticalEntity.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.optical;
-
-import java.util.Collection;
-import javax.swing.JComponent;
-
-/**
- * OpticalEntity.java created on Apr 19, 2017
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public interface OpticalEntity
-{
-  public OpticalEntity[] getChildren();
-  public Collection<JComponent> getComponents(int size);
-  public char getKey();
-  public Character getAsciiRepresentation();
-  public String getDescription();
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/optical/OpticalEntityClassArt.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/optical/OpticalEntityClassArt.java
deleted file mode 100644
index 00c345ab96c0ebd702fc3c5c6c23ce11c93198a1..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/optical/OpticalEntityClassArt.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.optical;
-
-import edu.nps.moves.qrtda.elements.misc.SvgImageLoader;
-import java.awt.Color;
-import java.awt.image.BufferedImage;
-import java.io.IOException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Collection;
-import javax.swing.BorderFactory;
-import javax.swing.ImageIcon;
-import javax.swing.JComponent;
-import javax.swing.JLabel;
-
-/**
- * OpticalEntityClassArt.java created on Apr 19, 2017
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class OpticalEntityClassArt extends AbstractOpticalEntity
-{
-  public OpticalEntityClassArt(char key, String artId)
-  {
-    super(key,artId);
-  }
-  
-  public OpticalEntityClassArt(char key, String artId, char ascii)
-  {
-    super(key,artId,ascii);
-  }
-  
-  public OpticalEntityClassArt(char key, String artId, char ascii, String description)
-  {
-    super(key,artId,ascii);
-    this.description = description;
-  }
-  
-  /** This class assumes the artId refers to a file located through the classpath, in the
-   * same package as this one
-   * @param size
-   * @return 
-  */
-  @Override
-  public Collection<JComponent> getComponents(int size)
-  {
-    URL url = getClass().getResource(artId);
-    JLabel lab;
-    try {
-      BufferedImage bi = SvgImageLoader.LoadSvgWithWidth(url, size);
-      lab = new JLabel(new ImageIcon(bi));
-      lab.setBorder(BorderFactory.createLineBorder(Color.lightGray));      
-    }
-    catch(IOException ex) {
-      lab = new JLabel(new ImageIcon(new BufferedImage(size,size,BufferedImage.TYPE_INT_ARGB)));
-    }
-    ArrayList<JComponent> arLis = new ArrayList<>(1);
-    arLis.add(lab);
-    return arLis;
-  }
-
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/optical/OpticalEntityGroup.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/optical/OpticalEntityGroup.java
deleted file mode 100644
index 4be6c3112ba9fdbffa62f74c5e8859fddbc6f5ab..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/optical/OpticalEntityGroup.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.optical;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import javax.swing.JComponent;
-
-/**
- * OpticalEntityGroup.java created on Apr 19, 2017
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class OpticalEntityGroup extends AbstractOpticalEntity
-{
-  public OpticalEntityGroup(char key, String description, OpticalEntity... children)
-  {
-    super(key, description, children);
-  }
-
-  @Override
-  public Collection<JComponent> getComponents(int size)
-  {
-    ArrayList<JComponent> arrLis = new ArrayList<>();
-    for(OpticalEntity ent : children)
-      arrLis.addAll(ent.getComponents(size));
-    return arrLis;
-  }
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/optical/SignalFlagsArt.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/optical/SignalFlagsArt.java
deleted file mode 100644
index 21ee0beeff4557a71e179f651c3d2af2bf268827..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/optical/SignalFlagsArt.java
+++ /dev/null
@@ -1,285 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.optical;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import javax.swing.JComponent;
-
-/**
- * SignalFlagsArt.java created on Apr 19, 2017
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class SignalFlagsArt
-{
-  // assign arbitrary char's to represent single flags
-  public static final char ICS_ZERO  = '0';
-  public static final char ICS_ONE   = '1';
-  public static final char ICS_TWO   = '2';
-  public static final char ICS_THREE = '3';
-  public static final char ICS_FOUR  = '4';
-  public static final char ICS_FIVE  = '5';
-  public static final char ICS_SIX   = '6';
-  public static final char ICS_SEVEN = '7';
-  public static final char ICS_EIGHT = '8';
-  public static final char ICS_NINE  = '9';
-
-  private static int keybase = 0xf000;
-  public static final char NATO_ZERO  = (char)keybase++;
-  public static final char NATO_ONE   = (char)keybase++;
-  public static final char NATO_TWO   = (char)keybase++;
-  public static final char NATO_THREE = (char)keybase++;
-  public static final char NATO_FOUR  = (char)keybase++;
-  public static final char NATO_FIVE  = (char)keybase++;
-  public static final char NATO_SIX   = (char)keybase++;
-  public static final char NATO_SEVEN = (char)keybase++;
-  public static final char NATO_EIGHT = (char)keybase++;
-  public static final char NATO_NINE  = (char)keybase++;
-  
-  public static final char REPEAT_ONE    = (char)keybase++;
-  public static final char REPEAT_TWO    = (char)keybase++;
-  public static final char REPEAT_THREE  = (char)keybase++;
-  public static final char REPEAT_FOUR   = (char)keybase++;
-  
-  public static final char MANEUVER_ANS    = (char)keybase++;
-  public static final char MANEUVER_PREP    = (char)keybase++;
-  public static final char MANEUVER_INT     = (char)keybase++;
-  public static final char MANEUVER_NEGAT   = (char)keybase++;
-  public static final char MANEUVER_DESIG   = (char)keybase++;
-  public static final char MANEUVER_CORPEN  = (char)keybase++;
-  public static final char MANEUVER_TURN    = (char)keybase++;
-  public static final char MANEUVER_SCREEN  = (char)keybase++;
-  public static final char MANEUVER_SPEED   = (char)keybase++;
-  public static final char MANEUVER_STATION = (char)keybase++;
-  public static final char MANEUVER_PORT    = (char)keybase++;
-  public static final char MANEUVER_STBD    = (char)keybase++;
-  public static final char MANEUVER_FORM    = (char)keybase++;
-  public static final char MANEUVER_DIV     = (char)keybase++;
-  public static final char MANEUVER_SQUAD   = (char)keybase++;
-  public static final char MANEUVER_FLOT    = (char)keybase++;
-  public static final char MANEUVER_SUBDIV  = (char)keybase++;
-  public static final char MANEUVER_EMERG   = (char)keybase++;
-
-  public static final char DIGIT_PROMPT = (char)keybase++;
-
-  public static final char DISTRESS                 = (char)keybase++;
-  public static final char ABANDON                  = (char)keybase++;
-  public static final char ABANDON_NUC              = (char)keybase++;
-  public static final char DOCTOR                   = (char)keybase++;
-  public static final char DOCTOR_BURNS             = (char)keybase++;
-  public static final char DOCTOR_RADIATION         = (char)keybase++;
-  public static final char REPEAT_DISTRESS_POS      = (char)keybase++;
-  public static final char DISTRESS_POS             = (char)keybase++;
-  public static final char CANNOT_SAVE              = (char)keybase++;
-  public static final char SHOULD_TAKE_OFF_PERSONS  = (char)keybase++;
-  public static final char WANT_TAKE_OFF_PERSONS    = (char)keybase++;
-  public static final char WILL_TAKE_OFF_PERSONS    = (char)keybase++;
-  public static final char CAN_YOU_TAKE_OFF_PERSONS = (char)keybase++;
-  public static final char ON_FIRE                  = (char)keybase++;
-  public static final char MEDICAL_ADVICE           = (char)keybase++;
-  public static final char RENDEZVOUS               = (char)keybase++;
-  public static final char HOSPITAL                 = (char)keybase++;
-  public static final char HOURS_AWAY               = (char)keybase++;
-  public static final char RADIATION                = (char)keybase++;
-  public static final char CLOUD_COVERAGE           = (char)keybase++;
-  public static final char WEATHER                  = (char)keybase++;
-  
-  private final static Object[][] art = {
-    // match graphic file to unique character
-    {"SignalFlagAlpha-USNSpec.svg",'a'},
-    {"SignalFlagBravo-USNSpec.svg",'b'},
-    {"SignalFlagCharlie-USNSpec.svg",'c'},
-    {"SignalFlagDelta-USNSpec.svg",'d'},
-    {"SignalFlagEcho-USNSpec.svg",'e'},
-    {"SignalFlagFoxtrot-USNSpec.svg",'f'},
-    {"SignalFlagGolf-USNSpec.svg",'g'},
-    {"SignalFlagHotel-USNSpec.svg",'h'},
-    {"SignalFlagIndia-USNSpec.svg",'i'},
-    {"SignalFlagJuliet-USNSpec.svg",'j'},
-    {"SignalFlagKilo-USNSpec.svg",'k'},
-    {"SignalFlagLima-USNSpec.svg",'l'},
-    {"SignalFlagMike-USNSpec.svg",'m'},
-    {"SignalFlagNovember-USNSpec.svg",'n'},
-    {"SignalFlagOscar-USNSpec.svg",'o'},
-    {"SignalFlagPapa-USNSpec.svg",'p'},
-    {"SignalFlagQuebec-USNSpec.svg",'q'},
-    {"SignalFlagRomeo-USNSpec.svg",'r'},
-    {"SignalFlagSierra-USNSpec.svg",'s'},
-    {"SignalFlagTango-USNSpec.svg",'t'},
-    {"SignalFlagUniform-USNSpec.svg",'u'},
-    {"SignalFlagVictor-USNSpec.svg",'v'},
-    {"SignalFlagWhiskey-USNSpec.svg",'w'},
-    {"SignalFlagXRay-USNSpec.svg",'x'},
-    {"SignalFlagYankee-USNSpec.svg",'y'},
-    {"SignalFlagZulu-USNSpec.svg",'z'},
-    
-    {"ICS_Zero.svg",ICS_ZERO,'0'},
-    {"ICS_One.svg",ICS_ONE,'1'},
-    {"ICS_Two.svg",ICS_TWO,'2'},
-    {"ICS_Three.svg",ICS_THREE,'3'},
-    {"ICS_Four.svg",ICS_FOUR,'4'},
-    {"ICS_Five.svg",ICS_FIVE,'5'},
-    {"ICS_Six.svg",ICS_SIX,'6'},
-    {"ICS_Seven.svg",ICS_SEVEN,'7'},
-    {"ICS_Eight.svg",ICS_EIGHT,'8'},
-    {"ICS_Nine.svg",ICS_NINE,'9'},
-    
-    {"NATO_Zero.svg",NATO_ZERO,'0'},
-    {"NATO_One.svg",NATO_ONE,'1'},
-    {"NATO_Two.svg",NATO_TWO,'2'},
-    {"NATO_Three.svg",NATO_THREE,'3'},
-    {"NATO_Four.svg",NATO_FOUR,'4'},
-    {"NATO_Five.svg",NATO_FIVE,'5'},
-    {"NATO_Six.svg",NATO_SIX,'6'},
-    {"NATO_Seven.svg",NATO_SEVEN,'7'},
-    {"NATO_Eight.svg",NATO_EIGHT,'8'},
-    {"NATO_Nine.svg",NATO_NINE,'9'},
-    
-    {"ICS_Repeat_One.svg",REPEAT_ONE},
-    {"ICS_Repeat_Two.svg",REPEAT_TWO,  },
-    {"ICS_Repeat_Three.svg",REPEAT_THREE},
-    {"ICS_Repeat_Four.svg",REPEAT_FOUR},
-    
-    {"ICS_Answer.svg",MANEUVER_ANS,' ',"Answer"},
-    {"ICS_Prepare.svg",MANEUVER_PREP,' ',"Preparative"},
-    {"ICS_Question.svg",MANEUVER_INT,' ',"Question"},
-    {"ICS_Negative.svg",MANEUVER_NEGAT,' ',"Negation"},
-    {"ICS_Designation.svg",MANEUVER_DESIG,' ',"Designation"},
-    {"ICS_Corpen.svg",MANEUVER_CORPEN,' ',"Course pennant (CORPEN)"},
-    {"ICS_Turn.svg",MANEUVER_TURN,' ',"Turna"},
-    {"ICS_Screen.svg",MANEUVER_SCREEN,' ',"Screen"},
-    {"ICS_Speed.svg",MANEUVER_SPEED,' ',"Speed"},
-    {"ICS_Station.svg",MANEUVER_STATION,' ',"Station"},
-    {"ICS_Port.svg",MANEUVER_PORT,' ',"Port"},
-    {"ICS_Starboard.svg",MANEUVER_STBD,' ',"Starboard"},
-    {"ICS_Formation.svg",MANEUVER_FORM,' ',"Formation"},
-    {"ICS_Division.svg",MANEUVER_DIV,' ',"Division"},
-    {"ICS_Squadron.svg",MANEUVER_SQUAD,' ',"Squadron"},
-    {"ICS_Group.svg",MANEUVER_FLOT,' ',"Flotilla/Group"},
-    {"ICS_Subdivision.svg",MANEUVER_SUBDIV,' ',"Subdivision"},
-    {"ICS_Emergency.svg",MANEUVER_EMERG,' ',"Emergency"},
-    
-    // define multi-flag sequences mapped by unique key
-    {DISTRESS,"Distress signal (NC)",
-      'n','c'},
-    {ABANDON,"I am abandoning my vessel (AC)",
-      'a','c'},
-    {ABANDON_NUC,"I am abandoning my vessel which has suffered a nuclear accident and is a possible source of radiation danger (AD)",
-      'a','d'},
-    {DOCTOR,"I need a doctor (AN)",
-      'a','n'}, 
-    {DOCTOR_BURNS,"I need a doctor; I have severe burns (AN1)",
-      'a','n',ICS_ONE},
-    {DOCTOR_RADIATION,"I need a doctor; I have radiation casualties (AN2)",
-      'a','n',ICS_TWO},
-    {REPEAT_DISTRESS_POS,"Repeat the distress position (EL)",
-      'e','l'}, 
-    {DISTRESS_POS,"What is the position of vessel in distress? (EL1)",
-      'e','l',ICS_ONE},
-    {CANNOT_SAVE,"I cannot save my vessel (GM)",
-      'g','m'}, 
-    {SHOULD_TAKE_OFF_PERSONS,"You should take off persons (GN)",
-      'g','n'},
-    {WANT_TAKE_OFF_PERSONS,"I wish some persons taken off; Skeleton crew will remain on board (GN1)",
-      'g','n',ICS_ONE},
-    {WILL_TAKE_OFF_PERSONS,"I will take off persons (GN2)",
-      'g','n',ICS_TWO},
-    {CAN_YOU_TAKE_OFF_PERSONS,"Can you take off persons (GN3)",
-      'g','n',ICS_THREE},
-    {ON_FIRE,"I am on fire (IT)",
-      'i','t'}, 
-    {MEDICAL_ADVICE,"I request urgent medical advice (MAA)",
-      'm','a','a'},
-    {RENDEZVOUS,"I request you to make rendezvous in position indicated (MAB)",
-      'm','a','b'}, 
-    {HOSPITAL,"I request you to arrange hospital admission (MAC)",
-      'm','a','c'},
-    {HOURS_AWAY,"I am # hours from the nearest port (MAD#)",
-      'm','a','d',DIGIT_PROMPT},
-    {RADIATION,"My vessel is a dangerous source of radiation; you may approach from my starbooard side (MS1)",
-      'm','s',ICS_ONE},
-    {CLOUD_COVERAGE,"The coverage of low cloud in octants (VG#)",
-      'v','g',DIGIT_PROMPT},
-    {WEATHER,"Nothing can be done until weather moderates (US4)",
-      'u','s',ICS_FOUR},
-
-  };
-  
-  static HashMap<Character,OpticalEntity> map = new HashMap<>();
-  
-  static {
-    // populate the hash map with single and multiple flag objects
-    ArrayList<OpticalEntity> arLis = new ArrayList<>();
-
-    for (Object[] oa : art) {
-      OpticalEntity entity;
-      if (oa[0] instanceof String) {   // single flag
-        switch (oa.length) {
-          case 4:     // name, key, ascii, description
-            entity = new OpticalEntityClassArt((char) oa[1], (String) oa[0], (char) oa[2], (String) oa[3]);
-            break;
-          case 3:     // name, key, ascii
-            entity = new OpticalEntityClassArt((char) oa[1], (String) oa[0], (char) oa[2]);
-            break;
-          default:    // name, key            
-            entity = new OpticalEntityClassArt((char) oa[1], (String) oa[0]);
-            break;
-        }
-      }
-      else {             // multiple flag groups
-        arLis.clear();
-        for (int i = 2; i < oa.length; i++)
-          arLis.add(map.get((Character) oa[i]));
-
-        entity = new OpticalEntityGroup(
-            (char) oa[0],
-            (String) oa[1],
-            arLis.toArray(new OpticalEntity[arLis.size()]));
-      }
-      map.put(entity.getKey(), entity);
-    }
-  }
-
-
-  public static Collection<JComponent> getCharacter(char ch, int size, boolean wrap)
-  {
-    OpticalEntity ent = map.get(Character.toLowerCase(ch));
-    if(ent == null) {
-      return null;
-    }
-    Collection<JComponent> coll = ent.getComponents(size);
-    /*
-    jc.setToolTipText(Character.toString(ch));
-    if(wrap)
-     return labelWrap(jc,Character.toString(ch));
-    else
-      return jc;
-    */
-    return coll;
-  }
-}
\ No newline at end of file
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/qr/QRDataStream.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/qr/QRDataStream.java
deleted file mode 100644
index c4294acaa01110a6ba5a20a4dbb3a18f9e2e0c6d..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/qr/QRDataStream.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
-Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
-in source and binary forms, with or without modification, are permitted provided that the
-following conditions are met:
-
-Redistributions of source code must retain the above copyright notice, this list of conditions
-and the following disclaimer. Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the documentation and/or other
-materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
-Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
-http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
-WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.qr;
-
-import com.tinkerpop.pipes.util.Pipeline;
-
-/**
- * QRDataStream.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class QRDataStream extends Pipeline
-{
-  private String name;
-  private String description;
-  public QRDataStream(String name, String description)
-  {
-    this.name = name;
-    this.description = description;
-  }
-
-  public String getName(){return name;}
-  public void setName(String name){this.name = name;}
-  
-  public String getDescription(){return description;}
-  public void setDescription(String description){this.description = description;}
-}
-
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/qr/QRInput.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/qr/QRInput.java
deleted file mode 100755
index e4d0c407a1b54799a45a5c71d94c4aadeeca6039..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/qr/QRInput.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.qr;
-
-import static com.google.zxing.client.result.ParsedResultType.*;
-import com.google.zxing.client.result.ParsedResultType;
-
-/**
- * QRInput.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class QRInput
-{
-  private ParsedResultType contentType;
-  private String content;
-  
-  public QRInput()
-  {
-    this(ParsedResultType.TEXT, "");
-  }
-  
-  public QRInput (ParsedResultType contentType, String content)
-  {
-    this.contentType = contentType;
-    this.content = content;
-  }
-
-  public ParsedResultType getContentType()
-  {
-    return contentType;
-  }
-
-  public void setContentType(ParsedResultType contentType)
-  {
-    this.contentType = contentType;
-  }
-
-  public String getContent()
-  {
-    return content;
-  }
-
-  public void setContent(String content)
-  {
-    this.content = content;
-  }
-
-  @Override
-  public String toString()
-  {
-    String pref;
-    switch(contentType) {
-      case ADDRESSBOOK:
-        pref = "MECARD:";
-        break;
-      case EMAIL_ADDRESS:
-        pref = "mailto:";
-        break;
-      case PRODUCT:
-        pref = "";
-        break;
-      case URI:
-        pref = "";//start with \"http:\", \"ftp:\", etc.";
-        break;
-      case GEO:
-        pref = "geo:";
-        break;
-      case TEL:
-        pref = "tel:";
-        break;
-      case SMS:
-        pref = "sms:";
-        break;
-      case CALENDAR:
-        pref = "";
-        break;
-      case WIFI:
-        pref = "WIFI:";
-        break;
-      case ISBN:
-        pref = "";
-        break;
-      case TEXT:
-      default:
-        pref = "";
-        break;  
-    }
-    return pref+getContent();
-  } 
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/semaphoreArt/LabeledComponent.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/semaphoreArt/LabeledComponent.java
deleted file mode 100644
index 0a9f9465685f2afe8c8ea21206067fd5135b9fff..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/semaphoreArt/LabeledComponent.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.semaphoreArt;
-
-import java.awt.*;
-import javax.swing.*;
-
-/**
- * LabeledComponent.java created on Mar 1, 2017
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class LabeledComponent extends JPanel
-{
-  JComponent comp;
-  JLabel label;
-  /*
-  public LabeledComponent(JComponent comp, String s, Color background)
-  {
-    this(comp,null,s,background,SwingConstants.CENTER);
-  }
-  */
-  public LabeledComponent(JComponent comp, Integer size, String s, Color background)
-  {
-    this(comp,size,s,background,SwingConstants.CENTER);
-  }
-  public LabeledComponent(JComponent comp, Integer size, String s , Color background, int align)
-  {
-    this.comp = comp;
-    super.setLayout(new GridBagLayout());
-    GridBagConstraints cons = new GridBagConstraints();
-    cons.gridx = GridBagConstraints.RELATIVE;
-    cons.gridy = 0;
-    cons.insets = new Insets(0,0,0,0);
-    super.add(comp, cons);
-    label = new JLabel(s);
-    label.setHorizontalAlignment(align);
-    sizeAndColor2Font(label,size,background);
-    cons.insets = new Insets(0,5,0,0);
-    super.add(label,cons); //BorderLayout.SOUTH);
-    
-    super.setOpaque(false);
-  }
-
-  @Override
-  public Dimension getPreferredSize()
-  {
-    Dimension d = /*comp.*/super.getPreferredSize();
-    return new Dimension(d.width,d.height);//+20);
-  }
-
-  @Override
-  public Dimension getMaximumSize()
-  {
-    return getPreferredSize();
-  }
-
-  @Override
-  public void setForeground(Color fg)
-  {
-    super.setForeground(fg);
-    if(comp != null)comp.setForeground(fg);
-    if(label != null)label.setForeground(fg);   
-  }
-  
-  private void sizeAndColor2Font(JLabel lab, Integer size, Color background)
-  {
-    lab.setForeground(LabeledComponent.getContrastingColor(background));
-    lab.setFont(label.getFont().deriveFont(Font.BOLD,pixel2fontsize(size)));
-  }
-  
-  public static Color getContrastingColor(Color background)
-  {
-    return LabeledComponent.useBlackVsWhite(background)?Color.black:Color.white;
-  }
-  
-  public static boolean useBlackVsWhite(Color background)
-  {
-    // from https://gamedev.stackexchange.com/questions/38536/given-a-rgb-color-x-how-to-find-the-most-contrasting-color-y
-    if(background == null)
-      background = Color.white;
-    double gamma = 2.2d;
-    float[] fa = background.getRGBColorComponents(null);
-    
-     double L =
-         0.2126d * Math.pow( fa[0], gamma ) +
-         0.7152d * Math.pow( fa[1], gamma ) +
-         0.0722d * Math.pow( fa[2], gamma );
-
-    return  ( L > Math.pow( 0.5, gamma ) );
-  }
-  
-  private float pixel2fontsize(Integer size)
-  {
-    if(size == null)
-      return 18.0f;
-    return (float)size * Toolkit.getDefaultToolkit().getScreenResolution() / 72.0f; //http://docs.oracle.com/javase/7/docs/api/java/awt/Font.html#getSize()
-  }
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/semaphoreArt/SemaphoreArt.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/semaphoreArt/SemaphoreArt.java
deleted file mode 100644
index 83ca3daa2613005ee4e6f3cdb33def82fb5b151f..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/semaphoreArt/SemaphoreArt.java
+++ /dev/null
@@ -1,244 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.semaphoreArt;
-
-import edu.nps.moves.misc.StringComponent;
-import edu.nps.moves.qrtda.elements.misc.SvgImageLoader;
-import java.awt.Color;
-import java.awt.image.BufferedImage;
-import java.io.IOException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.HashMap;
-import javax.swing.*;
-import static edu.nps.moves.qrtda.Constants.HIRES_TABLE_TEXT_FACTOR;
-
-/**
- * SemaphoreArt.java created on Mar 1, 2017
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-
-public class SemaphoreArt
-{
-  public static final char CANCEL            = '\u03b1';
-  public static final char ERROR_ATTENTION   = '\u03b2';
-  public static final char NUMBERS           = '\u03b3';
-  public static final char LETTERS           = '\u03b4';
-  public static final char READY             = '\u03b5';
-
-  private final static Object[][] art = {
-    {'a',"Semaphore_Alpha.svg"},//"a1.svg"},
-    {'b',"Semaphore_Bravo.svg"},//"b2.svg"},
-    {'c',"Semaphore_Charlie.svg"},//"c3.svg"},
-    {'d',"Semaphore_Delta.svg"},//"d4.svg"},
-    {'e',"Semaphore_Echo.svg"},//"e5.svg"},
-    {'f',"Semaphore_Foxtrot.svg"},//"f6.svg"},
-    {'g',"Semaphore_Golf.svg"},//"g7.svg"},
-    {'h',"Semaphore_Hotel.svg"},//"h8.svg"},
-    {'i',"Semaphore_India.svg"},//"i9.svg"},
-    {'j',"Semaphore_Juliet.svg"},//"jletters.svg"},
-    {'k',"Semaphore_Kilo.svg"},//"k0.svg"},
-    {'l',"Semaphore_Lima.svg"},//"l.svg"},
-    {'m',"Semaphore_Mike.svg"},//"m.svg"},
-    {'n',"Semaphore_November.svg"},//"n.svg"},
-    {'o',"Semaphore_Oscar.svg"},//"o.svg"},
-    {'p',"Semaphore_Papa.svg"},//"p.svg"},
-    {'q',"Semaphore_Quebec.svg"},//"q.svg"},
-    {'r',"Semaphore_Romeo.svg"},//"r.svg"},
-    {'s',"Semaphore_Sierra.svg"},//"s.svg"},
-    {'t',"Semaphore_Tango.svg"},//"t.svg"},
-    {'u',"Semaphore_Uniform.svg"},//"u.svg"},
-    {'v',"Semaphore_Victor.svg"},//"v.svg"},
-    {'w',"Semaphore_Whiskey.svg"},//"w.svg"},
-    {'x',"Semaphore_X-ray.svg"},//"x.svg"},
-    {'y',"Semaphore_Yankee.svg"},//"y.svg"},
-    {'z',"Semaphore_Zulu.svg"},//"z.svg"},
-    {'0',"k0.svg"},
-    {'1',"a1.svg"},
-    {'2',"b2.svg"},
-    {'3',"c3.svg"},
-    {'4',"d4.svg"},
-    {'5',"e5.svg"},
-    {'6',"f6.svg"},
-    {'7',"g7.svg"},
-    {'8',"h8.svg"},
-    {'9',"i9.svg"},
-    {CANCEL,"Semaphore_Cancel.svg"},
-    {ERROR_ATTENTION,"Semaphore_Error.svg"},
-    {NUMBERS,"Semaphore_Numeric.svg"},
-    {LETTERS,"jletters.svg"},
-    {READY,"Semaphore_Ready.svg"},
-  };
-  public static final String CANCEL_ART = "Semaphore_Cancel.svg"; //zz-cancel.svg";
-  public static final String ERROR_ATTENTION_ART = "Semaphore_Error.svg"; //zz-error-attention.svg";
-  public static final String NUMBERS_ART = "Semaphore_Numeric.svg"; //zz-numbers.svg";
-  public static final String LETTERS_ART = "jletters.svg";
-  public static final String READY_ART = "Semaphore_Ready.svg"; //zz-ready.svg";
-    
-  public final static String[][] SPECIALMENU = {
-    {"Cancel",         new String(new char[]{CANCEL})},
-    {"Error/Attention",new String(new char[]{ERROR_ATTENTION})},
-    {"Numbers follow", new String(new char[]{NUMBERS})},
-    {"Letters follow", new String(new char[]{LETTERS})},
-    {"Ready",          new String(new char[]{READY})},
-  };
- 
-  private final static HashMap<Character,String> map = new HashMap<>();
-  
-  public static HashMap<Character,String> getCharacterMap()
-  {
-    return map;
-  }
-  
-  public static JComponent getCancel(int size, Color background)
-  {
-    return labelWrap(getSwingComponent(CANCEL_ART,size),size,"Cancel",background);
-  }
-  public static JComponent getError(int size, Color background)
-  {
-     return labelWrap(getSwingComponent(ERROR_ATTENTION_ART,size),size,"Error/Attention",background);   
-  }
-  public static JComponent getNumbers(int size, Color background)
-  {
-    return labelWrap(getSwingComponent(NUMBERS_ART,size),size,"Numbers follow",background);    
-  }
-  public static JComponent getLetters(int size, Color background)
-  {
-     return labelWrap(getSwingComponent(LETTERS_ART,size),size,"Letters follow",background);   
-  }
-  public static JComponent getReady(int size, Color background)
-  {
-     return labelWrap(getSwingComponent(READY_ART,size),size,"Ready",background);   
-  }
-
-  static {
-    for(Object[] ar : art)
-      map.put((Character)ar[0],(String)ar[1]);
-  }
-  
-  public static JComponent getLetter(char ch, int size, Color background)
-  {
-    return getLetter(ch,size,true,background);
-  }
-
-  public static JComponent getLetter(char ch, int size, boolean wrap, Color background)
-  {
-    String fn = map.get(Character.toLowerCase(ch));
-    if(fn == null)
-      return null;
-    JComponent jc = getSwingComponent(fn,size);
-    jc.setToolTipText(Character.toString(ch));
-    if(wrap)
-      return labelWrap(jc,size,Character.toString(ch),background);
-    else
-      return jc;
-  }
-  
-  /**
-   * Translate the passed string into JComponents representing the characters.  The 1-D arrays of components represent splitting the
-   * string around (typ) space characters, i.e., single words.
-   * @param s input data
-   * @param size (pixels) to render the svg image
-   * @param background
-   * @return 2-D array of components representing the string.  
-   */
-  public static JComponent[][] getAlphaString(String s, int size, Color background)
-  {
-    char[] ca = s.toCharArray();
-    ArrayList<ArrayList<JComponent>> lisLis = new ArrayList<>();
-    ArrayList<JComponent> arLis = new ArrayList<>();
-    lisLis.add(arLis);
-    for (char c : ca) {
-      JComponent comp = getLetter(Character.toLowerCase(c), size, background);
-      if (comp != null)
-        arLis.add(comp);
-      else {
-        arLis = new ArrayList<>();
-        lisLis.add(arLis);
-      }
-    }
-    JComponent[][] ret = new JComponent[lisLis.size()][];
-    int i = 0;
-    for (ArrayList<JComponent> aLis : lisLis) {
-      ret[i++] = aLis.toArray(new JComponent[aLis.size()]);
-    }
-    return ret;
-  }
-  
- public static StringComponent[] getStringComponents(String str, int size, Color background)
-  {
-    ArrayList<StringComponent> scArrList = new ArrayList<>();
-    String[] sa = str.split("\\h");  // white space
-    for(String s : sa) {
-      char[] ca = s.toCharArray();
-      ArrayList<JComponent>arLis = new ArrayList<>();
-      for(char c : ca) {
-        JComponent comp = getLetter(Character.toLowerCase(c),size,background);
-        if(comp == null) {
-          comp = new JLabel();
-          comp.setToolTipText("no representation");
-        }
-        arLis.add(comp);
-      }
-      String tt = null; //specialMeaning(s);
-      StringComponent sc = new StringComponent(arLis.toArray(new JComponent[arLis.size()]),tt);
-      scArrList.add(sc);
-    }
-    return (StringComponent[])scArrList.toArray(new StringComponent[scArrList.size()]);
-  }
-  public static Icon getIcon(String fn, int size) throws IOException
-  {
-    URL url = SemaphoreArt.class.getResource(fn);   
-    BufferedImage bi = SvgImageLoader.LoadSvgWithWidth(url, size);
-    return new ImageIcon(bi);
-  }
-  private static JComponent getSwingComponent(String fn, int size)
-  {
-    URL url = SemaphoreArt.class.getResource(fn);   
-    try {
-      BufferedImage bi = SvgImageLoader.LoadSvgWithWidth(url, size);
-      JLabel lab = new JLabel(new ImageIcon(bi));
-      lab.setBorder(BorderFactory.createLineBorder(Color.lightGray, 1));
-      return lab;
-    }
-    catch(IOException ex) {
-      return new JLabel(new ImageIcon(new BufferedImage(size,size,BufferedImage.TYPE_INT_ARGB)));
-    }
-  }
- 
-  private static final int SEMAPHORE_LETTER_SIZE_FACTOR_NUMERATOR = 5;
-  private static final int SEMAPHORE_LETTER_SIZE_FACTOR_DENOM = 10;
-  private static JComponent labelWrap(JComponent comp, int size, String s, Color background)
-  {
-    int adjSize = size * SEMAPHORE_LETTER_SIZE_FACTOR_NUMERATOR / SEMAPHORE_LETTER_SIZE_FACTOR_DENOM;
-    adjSize = (int)((float)adjSize * HIRES_TABLE_TEXT_FACTOR);
-    
-    return new LabeledComponent(comp,adjSize,s.toUpperCase(), background);
-  }
-
-}
- 
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/signalflagsArt/SignalFlagArt.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/signalflagsArt/SignalFlagArt.java
deleted file mode 100644
index e89c977404137be995730eb53ff22adff45fb0df..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/signalflagsArt/SignalFlagArt.java
+++ /dev/null
@@ -1,557 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.signalflagsArt;
-
-import edu.nps.moves.misc.StringComponent;
-import static edu.nps.moves.qrtda.Constants.*;
-import edu.nps.moves.qrtda.elements.misc.SvgImageLoader;
-import edu.nps.moves.qrtda.semaphoreArt.LabeledComponent;
-import java.awt.Color;
-import java.awt.event.ActionListener;
-import java.awt.image.BufferedImage;
-import java.io.IOException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Set;
-import javax.swing.*;
-
-/**
- * SemaphoreArt.java created on Mar 1, 2017
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-
-public class SignalFlagArt
-{
-  // assign arbitrary char's to flags
-  public static final char NATO_ZERO  = '\u03b1';
-  public static final char NATO_ONE   = '\u03b2';
-  public static final char NATO_TWO   = '\u03b3';
-  public static final char NATO_THREE = '\u03b4';
-  public static final char NATO_FOUR  = '\u03b5';
-  public static final char NATO_FIVE  = '\u03b6';
-  public static final char NATO_SIX   = '\u03b7';
-  public static final char NATO_SEVEN = '\u03b8';
-  public static final char NATO_EIGHT = '\u03b9';
-  public static final char NATO_NINE  = '\u03ba';
-  
-  public static final char REPEAT_ONE    = '\u03bb';
-  public static final char REPEAT_TWO    = '\u03bc';
-  public static final char REPEAT_THREE  = '\u03bd';
-  public static final char REPEAT_FOUR   = '\u03be';
-  
-  public static final char MANEUVER_ANS    = '\u0ebf';
-  public static final char MANEUVER_PREP    = '\u0ec0';
-  public static final char MANEUVER_INT     = '\u0ec1';
-  public static final char MANEUVER_NEGAT   = '\u0ec2';
-  public static final char MANEUVER_DESIG   = '\u0ec3';
-  public static final char MANEUVER_CORPEN  = '\u0ec4';
-  public static final char MANEUVER_TURN    = '\u0ec5';
-  public static final char MANEUVER_SCREEN  = '\u0ec6';
-  public static final char MANEUVER_SPEED   = '\u0ec7';
-  public static final char MANEUVER_STATION = '\u0ec8';
-  public static final char MANEUVER_PORT    = '\u0ec9';
-  public static final char MANEUVER_STBD    = '\u0eca';
-  public static final char MANEUVER_FORM    = '\u0ecb';
-  public static final char MANEUVER_DIV     = '\u0ecc';
-  public static final char MANEUVER_SQUAD   = '\u0ecd';
-  public static final char MANEUVER_FLOT    = '\u0ece';
-  public static final char MANEUVER_SUBDIV  = '\u0ecf';
-  public static final char MANEUVER_EMERG   = '\u0ed0';
-
-  public static final char ICS_ZERO  = '0';
-  public static final char ICS_ONE   = '1';
-  public static final char ICS_TWO   = '2';
-  public static final char ICS_THREE = '3';
-  public static final char ICS_FOUR  = '4';
-  public static final char ICS_FIVE  = '5';
-  public static final char ICS_SIX   = '6';
-  public static final char ICS_SEVEN = '7';
-  public static final char ICS_EIGHT = '8';
-  public static final char ICS_NINE  = '9';
-
-  public static final char DIGIT_PROMPT = '\u03bf';
-  
-  private final static Object[][] art = {
-    {'a',"SignalFlagAlpha-USNSpec.svg"},
-    {'b',"SignalFlagBravo-USNSpec.svg"},
-    {'c',"SignalFlagCharlie-USNSpec.svg"},
-    {'d',"SignalFlagDelta-USNSpec.svg"},
-    {'e',"SignalFlagEcho-USNSpec.svg"},
-    {'f',"SignalFlagFoxtrot-USNSpec.svg"},
-    {'g',"SignalFlagGolf-USNSpec.svg"},
-    {'h',"SignalFlagHotel-USNSpec.svg"},
-    {'i',"SignalFlagIndia-USNSpec.svg"},
-    {'j',"SignalFlagJuliet-USNSpec.svg"},
-    {'k',"SignalFlagKilo-USNSpec.svg"},
-    {'l',"SignalFlagLima-USNSpec.svg"},
-    {'m',"SignalFlagMike-USNSpec.svg"},
-    {'n',"SignalFlagNovember-USNSpec.svg"},
-    {'o',"SignalFlagOscar-USNSpec.svg"},
-    {'p',"SignalFlagPapa-USNSpec.svg"},
-    {'q',"SignalFlagQuebec-USNSpec.svg"},
-    {'r',"SignalFlagRomeo-USNSpec.svg"},
-    {'s',"SignalFlagSierra-USNSpec.svg"},
-    {'t',"SignalFlagTango-USNSpec.svg"},
-    {'u',"SignalFlagUniform-USNSpec.svg"},
-    {'v',"SignalFlagVictor-USNSpec.svg"},
-    {'w',"SignalFlagWhiskey-USNSpec.svg"},
-    {'x',"SignalFlagXRay-USNSpec.svg"},
-    {'y',"SignalFlagYankee-USNSpec.svg"},
-    {'z',"SignalFlagZulu-USNSpec.svg"},
-    
-    {ICS_ZERO,"ICS_Zero.svg"},
-    {ICS_ONE,"ICS_One.svg"},
-    {ICS_TWO,"ICS_Two.svg"},
-    {ICS_THREE,"ICS_Three.svg"},
-    {ICS_FOUR,"ICS_Four.svg"},
-    {ICS_FIVE,"ICS_Five.svg"},
-    {ICS_SIX,"ICS_Six.svg"},
-    {ICS_SEVEN,"ICS_Seven.svg"},
-    {ICS_EIGHT,"ICS_Eight.svg"},
-    {ICS_NINE,"ICS_Niner.svg"},
-    
-    {NATO_ZERO,  "NATO_Zero.svg"},
-    {NATO_ONE,   "NATO_One.svg"},
-    {NATO_TWO,   "NATO_Two.svg"},
-    {NATO_THREE, "NATO_Three.svg"},
-    {NATO_FOUR,  "NATO_Four.svg"},
-    {NATO_FIVE,  "NATO_Five.svg"},
-    {NATO_SIX,   "NATO_Six.svg"},
-    {NATO_SEVEN, "NATO_Seven.svg"},
-    {NATO_EIGHT, "NATO_Eight.svg"},
-    {NATO_NINE,  "NATO_Niner.svg"},
-    
-    {REPEAT_ONE,   "ICS_Repeat_One.svg"},
-    {REPEAT_TWO,   "ICS_Repeat_Two.svg"},
-    {REPEAT_THREE, "ICS_Repeat_Three.svg"},
-    {REPEAT_FOUR,  "ICS_Repeat_Four.svg"},
-    
-    {MANEUVER_ANS     , "ICS_Answer.svg"},
-    {MANEUVER_PREP    , "ICS_Prepare.svg"},
-    {MANEUVER_INT     , "ICS_Question.svg"},
-    {MANEUVER_NEGAT   , "ICS_Negative.svg"},
-    {MANEUVER_DESIG   , "ICS_Designation.svg"},
-    {MANEUVER_CORPEN  , "ICS_Corpen.svg"},
-    {MANEUVER_TURN    , "ICS_Turn.svg"},
-    {MANEUVER_SCREEN  , "ICS_Screen.svg"},
-    {MANEUVER_SPEED   , "ICS_Speed.svg"},
-    {MANEUVER_STATION , "ICS_Station.svg"},
-    {MANEUVER_PORT    , "ICS_Port.svg"},
-    {MANEUVER_STBD    , "ICS_Starboard.svg"},
-    {MANEUVER_FORM    , "ICS_Formation.svg"},
-    {MANEUVER_DIV     , "ICS_Division.svg"},
-    {MANEUVER_SQUAD   , "ICS_Squadron.svg"},
-    {MANEUVER_FLOT    , "ICS_Group.svg"},
-    {MANEUVER_SUBDIV  , "ICS_Subdivision.svg"},
-    {MANEUVER_EMERG   , "ICS_Emergency.svg"},
-  };
-  
-  private static final HashMap<Character,String> map = new HashMap<>();
-  private static final HashMap<String,String> specialMeaningMap = new HashMap<>();
-  public static final HashMap<Character,Character> ascii2natoDigits = new HashMap<>();
-  private static final HashMap<Character,Character> nato2asciiDigits = new HashMap<>();
-  
-  static {
-    for(Object[] ar : art)
-      map.put((Character)ar[0],(String)ar[1]);
-    
-    ascii2natoDigits.put(ICS_ZERO, NATO_ZERO);
-    ascii2natoDigits.put(ICS_ONE, NATO_ONE);
-    ascii2natoDigits.put(ICS_TWO, NATO_TWO);
-    ascii2natoDigits.put(ICS_THREE, NATO_THREE);
-    ascii2natoDigits.put(ICS_FOUR, NATO_FOUR);
-    ascii2natoDigits.put(ICS_FIVE, NATO_FIVE);
-    ascii2natoDigits.put(ICS_SIX, NATO_SIX);
-    ascii2natoDigits.put(ICS_SEVEN, NATO_SEVEN);
-    ascii2natoDigits.put(ICS_EIGHT, NATO_EIGHT);
-    ascii2natoDigits.put(ICS_NINE, NATO_NINE);
-    
-    nato2asciiDigits.put(NATO_ZERO, ICS_ZERO);
-    nato2asciiDigits.put(NATO_ONE, ICS_ONE);
-    nato2asciiDigits.put(NATO_TWO, ICS_TWO);
-    nato2asciiDigits.put(NATO_THREE, ICS_THREE);
-    nato2asciiDigits.put(NATO_FOUR, ICS_FOUR);
-    nato2asciiDigits.put(NATO_FIVE, ICS_FIVE);
-    nato2asciiDigits.put(NATO_SIX, ICS_SIX);
-    nato2asciiDigits.put(NATO_SEVEN, ICS_SEVEN);
-    nato2asciiDigits.put(NATO_EIGHT, ICS_EIGHT);
-    nato2asciiDigits.put(NATO_NINE, ICS_NINE);
-  }
-  
-  public static Set<Character> getCharacterSet()
-  {
-    return map.keySet();
-  }
-  
-  public static HashMap<Character,String> getCharacterMap()
-  {
-    return map;
-  }
-  
-  public static JComponent getCharacter(char ch, int size, Color background)
-  {
-    return getCharacter(ch,size,Character.isLetterOrDigit(ch),background);
-  }
-  
-  public static JComponent getCharacter(char ch, int size, boolean wrap, Color background)
-  {
-    String fn = map.get(Character.toLowerCase(ch));
-    if(fn == null) {
-      return null;
-    }
-    JComponent jc = getSwingComponent(fn,size);
-    jc.setToolTipText(Character.toString(ch));
-    if(wrap)
-     return labelWrap(jc,Character.toString(ch),size,background);
-    else
-      return jc;
-  }
-  
-  /**
-   * Translate the passed string into JComponents representing the characters.  The 1-D arrays of components represent splitting the
-   * string around (typ) space characters, i.e., single words.
-   * @param s input data
-   * @param size (pixels) to render the svg image
-   * @param background
-   * @return 2-D array of components representing the string.  
-   */
-  public static JComponent[][] getAlphaString(String s, int size, Color background)
-  {
-    char[] ca = s.toCharArray();
-    ArrayList<ArrayList<JComponent>> lisLis = new ArrayList<>();
-    ArrayList<JComponent>arLis = new ArrayList<>();
-    lisLis.add(arLis);
-    for(char c : ca) {
-      JComponent comp = SignalFlagArt.getCharacter(Character.toLowerCase(c),size,background);
-      if(comp != null)
-        arLis.add(comp);
-      else {
-        arLis = new ArrayList<>();
-        lisLis.add(arLis);
-      }
-    }
-
-    JComponent[][] ret = new JComponent[lisLis.size()][];
-    int i=0;
-    for(ArrayList<JComponent> aLis : lisLis) {
-      ret[i++] = aLis.toArray(new JComponent[aLis.size()]);
-    }
-    return ret;
-  }
-
-  public static StringComponent[] getStringComponents(String str, int size, Color background)
-  {
-    ArrayList<StringComponent> scArrList = new ArrayList<>();
-    String[] sa = str.split("\\h");  // white space
-    for(String s : sa) {
-      char[] ca = s.toCharArray();
-      ArrayList<JComponent>arLis = new ArrayList<>();
-      for(char c : ca) {
-        JComponent comp = SignalFlagArt.getCharacter(Character.toLowerCase(c),size,background);
-        if(comp == null) {
-          comp = new JLabel();
-          comp.setToolTipText("no representation");
-        }
-        arLis.add(comp);
-      }
-      String tt = specialMeaning(s);
-      StringComponent sc = new StringComponent(arLis.toArray(new JComponent[arLis.size()]),tt);
-      scArrList.add(sc);
-    }
-    return (StringComponent[])scArrList.toArray(new StringComponent[scArrList.size()]);
-  }
-  public static ImageIcon getIcon(char c, int size)
-  {
-    String fn = map.get(Character.toLowerCase(c));
-    if(fn == null) {
-      return null;
-    }
-    URL url = SignalFlagArt.class.getResource(fn);   
-    try {
-      BufferedImage bi = SvgImageLoader.LoadSvgWithWidth(url, size);
-      return new ImageIcon(bi);
-    }
-    catch(IOException ex) {
-      System.out.println("error creating image for "+c+" : "+ex.getClass().getSimpleName()+" :"+ex.getLocalizedMessage());
-      return null;
-    }     
-  }
-  private static JComponent getSwingComponent(String fn, int size)
-  {
-    URL url = SignalFlagArt.class.getResource(fn);   
-    try {
-      BufferedImage bi = SvgImageLoader.LoadSvgWithWidth(url, size);
-      JLabel lab = new JLabel(new ImageIcon(bi));
-      lab.setBorder(BorderFactory.createLineBorder(Color.lightGray));
-      return lab;
-    }
-    catch(IOException ex) {
-      return new JLabel(new ImageIcon(new BufferedImage(size,size,BufferedImage.TYPE_INT_ARGB)));
-    }
-  }
-  
-  private static JComponent labelWrap(JComponent comp, String s, int size, Color background)
-  {
-    size = (int)((float)size * HIRES_TABLE_TEXT_FACTOR * HIRES_TABLE_TEXT_FACTOR_FLAGS_EXTRA);
-    return new LabeledComponent(comp,size,s.toUpperCase(),background);
-  }
-   
-  public static FlagImageIcon[] getIcons(String s, int size) throws IOException
-  {
-    String[][] fns = new String[s.length()][2];
-    for(int i=0;i<s.length();i++){
-      char c = s.charAt(i);
-      if(c == DIGIT_PROMPT) {
-        Character C = promptForDigit();
-        if(C == null)
-          return null; // no go
-        c = C;
-      }
-      fns[i][1] = new String(new char[]{c});
-      fns[i][0] = map.get(c);
-    }
-    return getIcons(fns,size);
-  }
-  
-  private static Character promptForDigit()
-  {
-    String s = JOptionPane.showInputDialog("Enter a single digit...");
-    if(s == null || s.length()<=0)
-      return null;
-    try {
-      char c = s.charAt(0);
-      int i = Integer.parseInt(new String(new char[]{c}));
-      // got a good int
-      return c;
-    }
-    catch (NumberFormatException t) {
-      return null;
-    }   
-  }
-  
-  public static FlagImageIcon[] getIcons(String[][] fns, int size) throws IOException
-  {
-    ArrayList<FlagImageIcon> arLis = new ArrayList<>();
-    int i = 0;
-    for(String[] sa : fns) {
-      String charSt = sa[1];
-      String fn = sa[0];
-      if(fn != null) {
-        FlagImageIcon fii = getIcon(fn,size);
-        fii.charStr = charSt;
-        arLis.add(fii); //iA[i++]= fii;
-      }
-    }
-    return arLis.toArray(new FlagImageIcon[arLis.size()]);
-  }
-  
-  public static FlagImageIcon getIconH(String fn, int size) throws IOException
-  {
-    URL url = SignalFlagArt.class.getResource(fn);   
-    BufferedImage bi = SvgImageLoader.LoadSvgWithHeight(url, size);
-    return new FlagImageIcon(bi);
-  }
-  
-  public static FlagImageIcon getIcon(String fn, int size) throws IOException
-  {
-    URL url = SignalFlagArt.class.getResource(fn);   
-    BufferedImage bi = SvgImageLoader.LoadSvgWithWidth(url, size);
-    return new FlagImageIcon(bi);
-  }
-   
-  // 2nd phase, support special flags popup menus
-  public static class FlagsMenuItem extends JMenuItem
-  {
-    public String[] data;
-    public FlagsMenuItem(String s, Icon ic, String[] data)
-    {
-      super(s,ic);
-      this.data = data;
-    }
-  }
-  
-  public static JPopupMenu loadPopup(String[][] entries, JPopupMenu pop, ActionListener lis)
-  {
-    for (String[] sa : entries) {
-      try {
-        JMenuItem mi = new FlagsMenuItem(sa[0], getIcon(map.get(sa[1].charAt(0)), 20), sa);
-        mi.addActionListener(lis);
-        pop.add(mi);
-      }
-      catch (IOException ex) {
-        System.out.println("IOException in SignalFlagArt.loadPopup(" + sa[1] + "):" + ex.getLocalizedMessage());
-      }
-    }
-    return pop;
-  }
-  
-  public static JPopupMenu loadSingleFlagPopup(JPopupMenu pop, ActionListener lis)
-  {
-    return loadPopup(SINGLEFLAGSMENU,pop,lis);
-  }
-  public static JPopupMenu loadMultipleFlagPopup(JPopupMenu pop, ActionListener lis)
-  {
-    return loadPopup(MULTIPLEFLAGSMENU,pop,lis);
-  }
-
-  public static JPopupMenu loadSpecialFlagPopup(JPopupMenu pop, ActionListener lis)
-  {
-    return loadPopup(SPECIALFLAGSMENU,pop,lis);
-  }
-  
-  public static JPopupMenu loadManeuverFlagPopup(JPopupMenu pop, ActionListener lis)
-  {
-    return loadPopup(MANEUVERFLAGSMENU,pop,lis);
-  }
-  
-  public final static String[][] MANEUVERFLAGSMENU = {
-    {"Code/answer (ANS)", new String(new char[]{MANEUVER_ANS})},
-    {"Preparatory (PREP)", new String(new char[]{MANEUVER_PREP})},
-    {"Question (INT)", new String(new char[]{MANEUVER_INT})},
-    {"Negation (NEGAT)", new String(new char[]{MANEUVER_NEGAT})},
-    {"Designation (DESIG)", new String(new char[]{MANEUVER_DESIG})},
-    {"Course pennant (CORPEN)", new String(new char[]{MANEUVER_CORPEN})},
-    {"TURN", new String(new char[]{MANEUVER_TURN})},
-    {"SCREEN", new String(new char[]{MANEUVER_SCREEN})},
-    {"SPEED", new String(new char[]{MANEUVER_SPEED})},
-    {"STATION", new String(new char[]{MANEUVER_STATION})},
-    {"PORT", new String(new char[]{MANEUVER_PORT})},
-    {"Starboard (STBD)", new String(new char[]{MANEUVER_STBD})},
-    {"Formation (FORM)", new String(new char[]{MANEUVER_FORM})},
-    {"Division (DIV)", new String(new char[]{MANEUVER_DIV})},
-    {"Squadron (SQUAD)", new String(new char[]{MANEUVER_SQUAD})},
-    {"Group (FLOT)", new String(new char[]{MANEUVER_FLOT})},
-    {"Subdivision (SUBDIV)", new String(new char[]{MANEUVER_SUBDIV})},
-    {"Emergency (EMERG)", new String(new char[]{MANEUVER_EMERG})},
-  };
-  
-  public final static String[][] SPECIALFLAGSMENU = {
-    {"first substitute", new String(new char[]{REPEAT_ONE})},
-    {"second substitute",new String(new char[]{REPEAT_TWO})},
-    {"third substitute", new String(new char[]{REPEAT_THREE})},
-    {"fourth substitute",new String(new char[]{REPEAT_FOUR})},
-  };
-
-  public final static String[][] MULTIPLEFLAGSMENU = {
-    {"Distress signal (NC)","nc"},
-    {"I am abandoning my vessel (AC)","ac"},
-    {"I am abandoning my vessel which has suffered a nuclear accident and is a possible source of radiation danger (AD)","ad"},
-    {"I need a doctor (AN)","an"}, 
-    {"I need a doctor; I have severe burns (AN1)",        new String(new char[]{'a','n',ICS_ONE})},
-    {"I need a doctor; I have radiation casualties (AN2)",new String(new char[]{'a','n',ICS_TWO})},
-    {"Repeat the distress position (EL)","el"}, 
-    {"What is the position of vessel in distress? (EL1)",new String(new char[]{'e','l',ICS_ONE})},
-    {"I cannot save my vessel (GM)","gm"}, 
-    {"You should take off persons (GN)","gn"},
-    {"I wish some persons taken off; Skeleton crew will remain on board (GN1)",new String(new char[]{'g','n',ICS_ONE})},
-    {"I will take off persons (GN2)",new String(new char[]{'g','n',ICS_TWO})},
-    {"Can you take off persons (GN3)",new String(new char[]{'g','n',ICS_THREE})},
-    {"I am on fire (IT)","it"}, 
-    {"I request urgent medical advice (MAA)","maa"},
-    {"I request you to make rendezvous in position indicated (MAB)","mab"}, 
-    {"I request you to arrange hospital admission (MAC)","mac"},
-    {"I am # hours from the nearest port (MAD#)",new String(new char[]{'m','a','d',DIGIT_PROMPT})},
-    {"My vessel is a dangerous source of radiation; you may approach from my starbooard side (MS1)",new String(new char[]{'m','s',ICS_ONE})},
-    {"The coverage of low cloud in octants (VG#)",new String(new char[]{'v','g',DIGIT_PROMPT})},
-    {"Nothing can be done until weather moderates (US4)",new String(new char[]{'u','s',ICS_FOUR})},
-  };
-  
-  public final static String[][] SINGLEFLAGSMENU = {
-    {"I have a diver down; keep well clear at slow speed", "a"},
-    {"I am taking in or discharging or carring dangerous goods", "c"},
-    {"Affirmative", "c"},
-    {"Keep clear of me; I am maneuvering with difficulty", "d"},
-    {"I am altering my course to starboard", "e"},
-    {"I am disabled; communicate with me", "f"},
-    {"I require a pilot", "g"},
-    {"I have a pilot on board", "h"},
-    {"I am altering my course to port", "i"},
-    {"I am on fire and have dangerous cargo on board; keep well clear of me", "j"},
-    {"I which to communicate with you", "k"},
-    {"You should stop your vessel instantly (in harbor: quarantined)", "l"},
-    {"My vessel is stopped and making no way throught the water", "m"},
-    {"Negative", "n"},
-    {"Man overboard", "o"},
-    {"All persons should report on board; vessel is about to proceed to sea", "p"},
-    {"My vessel is healthy; I request free pratique", "q"},
-    //{"r","SignalFlagRomeo-USNSpec.svg"},
-    {"I am operating astern propulsion", "s"},
-    {"Keep clear of me; I am engaged in pair trawling", "t"},
-    {"You are running into danger", "u"},
-    {"I require assistance", "v"},
-    {"I require medical assistance", "w"},
-    {"Stop carrying out your intentions and watch for my signals", "x"},
-    {"I am dragging my anchor", "y"},
-    {"I require a tug", "z"},
-  };
-  
-  public final static String[][] NATODIGITS = {
-    {"0 (NATO)",Character.toString(NATO_ZERO)},
-    {"1 (NATO)",Character.toString(NATO_ONE)},
-    {"2 (NATO)",Character.toString(NATO_TWO)},
-    {"3 (NATO)",Character.toString(NATO_THREE)},
-    {"4 (NATO)",Character.toString(NATO_FOUR)},
-    {"5 (NATO)",Character.toString(NATO_FIVE)},
-    {"6 (NATO)",Character.toString(NATO_SIX)},
-    {"7 (NATO)",Character.toString(NATO_SEVEN)},
-    {"8 (NATO)",Character.toString(NATO_EIGHT)},
-    {"9 (NATO)",Character.toString(NATO_NINE)},
-  };
-  
-  static {
-    for(String[] sa : MANEUVERFLAGSMENU) 
-      specialMeaningMap.put(sa[1], sa[0]);
-    for(String[] sa : MULTIPLEFLAGSMENU)
-      specialMeaningMap.put(sa[1], sa[0]);
-    for(String[] sa : SINGLEFLAGSMENU)
-      specialMeaningMap.put(sa[1], sa[0]);
-    for(String[] sa : SPECIALFLAGSMENU)
-      specialMeaningMap.put(sa[1], sa[0]);
-    for(String[] sa : NATODIGITS)
-      specialMeaningMap.put(sa[1], sa[0]);
-  }
-  
-  public final static String specialMeaning(String s)
-  {
-    return specialMeaningMap.get(s);
-  }
-  
-  public final static char displayable(char c)
-  {
-    Character ret = nato2asciiDigits.get(c);
-    return ret==null?c:ret;
-  }
-  
-  public static class FlagImageIcon extends ImageIcon{
-    public String charStr;
-    public FlagImageIcon(BufferedImage bi)
-    {
-      super(bi);
-    }
-  }
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/sound/SoundPlayer.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/sound/SoundPlayer.java
deleted file mode 100644
index 339e5bb9907b9d3b4e44ce882edbbcf6c84329f6..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/sound/SoundPlayer.java
+++ /dev/null
@@ -1,277 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-package edu.nps.moves.qrtda.sound;
-
-import edu.nps.moves.qrtda.QRPreferences;
-import static edu.nps.moves.qrtda.elements.gui.OpticalCommsConstants.SAILORVOLUME_KEY;
-import java.io.BufferedInputStream;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.util.HashMap;
-import java.util.concurrent.LinkedBlockingQueue;
-import javax.sound.sampled.*;
-
-/**
- * SoundPlayer.java created on Apr 11, 2017
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class SoundPlayer
-{
-  private static final Object[][] phonetic = {
-    {'a', "Alfa.wav", "Alfa"},
-    {'b', "Bravo.wav", "Bravo"},
-    {'c', "Charlie.wav", "Charlie"},
-    {'d', "Delta.wav", "Delta"},
-    {'e', "Echo.wav", "Echo"},
-    {'f', "Foxtrot.wav", "Foxtrot"},
-    {'g', "Golf.wav", "Golf"},
-    {'h', "Hotel.wav", "Hotel"},
-    {'i', "India.wav", "India"},
-    {'j', "Juliet.wav", "Juliet"},
-    {'k', "Kilo.wav", "Kilo"},
-    {'l', "Lima.wav", "Lima"},
-    {'m', "Mike.wav", "Mike"},
-    {'n', "November.wav", "November"},
-    {'o', "Oscar.wav", "Oscar"},
-    {'p', "Papa.wav", "Papa"},
-    {'q', "Quebec.wav", "Quebec"},
-    {'r', "Romeo.wav", "Romeo"},
-    {'s', "Sierra.wav", "Sierra"},
-    {'t', "Tango.wav", "Tango"},
-    {'u', "Uniform.wav", "Uniform"},
-    {'v', "Victor.wav", "Victor"},
-    {'w', "Whiskey.wav", "Whiskey"},
-    {'x', "Xray.wav", "Xray"},
-    {'y', "Yankee.wav", "Yankee"},
-    {'z', "Zulu.wav", "Zulu"},
-    {'0', "Zero.wav",null},
-    {'1', "One.wav",null},
-    {'2', "Two.wav",null},
-    {'3', "Three.wav",null},
-    {'4', "Four.wav",null},
-    {'5', "Five.wav",null},
-    {'6', "Six.wav",null},
-    {'7', "Seven.wav",null},
-    {'8', "Eight.wav",null},
-    {'9', "Nine.wav",null}
-  };
-  
- private static final Object[][] morse = {
-    {'a', "A_morse_code.wav"},
-    {'b', "B_morse_code.wav"},
-    {'c', "C_morse_code.wav"},
-    {'d', "D_morse_code.wav"},
-    {'e', "E_morse_code.wav"},
-    {'f', "F_morse_code.wav"},
-    {'g', "G_morse_code.wav"},
-    {'h', "H_morse_code.wav"},
-    {'i', "I_morse_code.wav"},
-    {'j', "J_morse_code.wav"},
-    {'k', "K_morse_code.wav"},
-    {'l', "L_morse_code.wav"},
-    {'m', "M_morse_code.wav"},
-    {'n', "N_morse_code.wav"},
-    {'o', "O_morse_code.wav"},
-    {'p', "P_morse_code.wav"},
-    {'q', "Q_morse_code.wav"},
-    {'r', "R_morse_code.wav"},
-    {'s', "S_morse_code.wav"},
-    {'t', "T_morse_code.wav"},
-    {'u', "U_morse_code.wav"},
-    {'v', "V_morse_code.wav"},
-    {'w', "W_morse_code.wav"},
-    {'x', "X_morse_code.wav"},
-    {'y', "Y_morse_code.wav"},
-    {'z', "Z_morse_code.wav"},
-    {'0', "0_number_morse_code.wav"},
-    {'1', "1_number_morse_code.wav"},
-    {'2', "2_number_morse_code.wav"},
-    {'3', "3_number_morse_code.wav"},
-    {'4', "4_number_morse_code.wav"},
-    {'5', "5_number_morse_code.wav"},
-    {'6', "6_number_morse_code.wav"},
-    {'7', "7_number_morse_code.wav"},
-    {'8', "8_number_morse_code.wav"},
-    {'9', "9_number_morse_code.wav"},};
- 
-  private static final HashMap<Character,String> phoneticFileMap;
-  private static final HashMap<Character,String> phoneticNameMap;
-  private static final HashMap<Character,String> morseMap;
-  
-  private static final Thread playThread;
-  private static final LinkedBlockingQueue<Object> queue;
-  
-  public static final long MORSE_INTER_CHARACTER_SLEEP_MS = 100L;
-  
-  static {
-    phoneticFileMap = new HashMap<>();
-    phoneticNameMap = new HashMap<>();
-    for(Object[] ar : phonetic) {
-      phoneticFileMap.put((Character)ar[0],(String)ar[1]);
-      phoneticNameMap.put((Character)ar[0], (String)ar[2]);
-    }
-
-    morseMap = new HashMap<>();
-    for(Object[] ar : morse)
-      morseMap.put((Character)ar[0], (String)ar[1]);
-    
-    queue = new LinkedBlockingQueue<>();
-    playThread = new Thread(new Runner(),"PlayThread");
-    playThread.setPriority(Thread.NORM_PRIORITY+1);
-    playThread.start();
-  }
-  
-  static class Runner implements Runnable
-  {
-    @Override
-    public void run()
-    {
-      while(true) {
-        try {
-          Object o = queue.take();
-          if(o instanceof URL)
-            _play((URL)o);
-          else if(o instanceof InputStream)
-            _play(new BufferedInputStream((InputStream)o));
-          else
-            Thread.sleep((Long)o);
-        } 
-        catch(InterruptedException ex) {
-          // normal operation
-        }
-      }
-    }  
-  }
-  
-  public static String getPhoneticName(char c)
-  {
-    return phoneticNameMap.get(Character.toLowerCase(c));
-  }
-  
-  public static void playMorse(char[] chars)
-  {
-    for (char c : chars) {
-      play(c, morseMap);
-      queue.offer(MORSE_INTER_CHARACTER_SLEEP_MS);  // between-character delay
-    }
-  }
-
-  public static void playPhonetic(char[] chars)
-  {
-    for (char c : chars) {
-      play(c, phoneticFileMap);
-    }
-  }
-
-  private static void play(char c, HashMap<Character, String> map)
-  {
-    String fn = map.get(Character.toLowerCase(c));  // works with digits
-    if (fn != null)
-      play(SoundPlayer.class.getResourceAsStream(fn));
-    else
-      ;//System.out.println("SoundPlayer.playPhonetic() has no sound for '" + c + "'.");
-  }
-  
-  private static void play(Object urlORInputStream)
-  {
-    queue.offer(urlORInputStream);
-  }
-  
-  /* Called from play thread */
-  private static void _play(InputStream is)
-  {
-    try{
-      AudioInputStream sound = AudioSystem.getAudioInputStream(is);
-      _play(sound);
-    }
-    catch(IOException | InterruptedException | LineUnavailableException | UnsupportedAudioFileException t) {
-      if(!(t instanceof InterruptedException)) // normal behavior
-        System.out.println("SoundPlayer exception: "+t.getClass().getSimpleName()+" "+t.getLocalizedMessage());
-    }
-  }
-  
-  private static void _play(URL url)
-  {
-    try {
-      File soundFile = new File(url.toURI());
-      AudioInputStream sound = AudioSystem.getAudioInputStream(soundFile);
-      _play(sound);
-    }
-    catch (IOException | InterruptedException | URISyntaxException | LineUnavailableException | UnsupportedAudioFileException t) {
-      if(!(t instanceof InterruptedException)) // normal behavior
-        System.out.println("SoundPlayer exception: " + url.toExternalForm() + " " + t.getClass().getSimpleName() + " " + t.getLocalizedMessage());
-    }
-  }
-  
-  private static void _play(AudioInputStream sound) throws LineUnavailableException, IOException, InterruptedException
-  {
-    float volf = (float) Integer.parseInt(QRPreferences.getInstance().get(SAILORVOLUME_KEY, "" + 0));
-    //File soundFile = new File(url.toURI());
-    //AudioInputStream sound = AudioSystem.getAudioInputStream(soundFile);
-
-    DataLine.Info info = new DataLine.Info(Clip.class, sound.getFormat());
-    Clip clip = (Clip) AudioSystem.getLine(info);
-    clip.open(sound);
-    FloatControl volcontrol = (FloatControl) clip.getControl(FloatControl.Type.MASTER_GAIN);
-
-    volcontrol.setValue(volf);
-
-    clip.start();
-    clip.addLineListener((LineEvent event) -> {
-      if (event.getType() == LineEvent.Type.STOP) {
-        event.getLine().close();
-        playThread.interrupt();
-      }
-    });
-    Thread.sleep(5000l);
-  }
-  
-  public static int[] getVolumeSliderMinMax()
-  {
-    int[] iA = {-10, 5};
-    try {
-      InputStream inps = SoundPlayer.class.getResourceAsStream("Alfa.wav");
-      AudioInputStream sound = AudioSystem.getAudioInputStream(new BufferedInputStream(inps));
-      DataLine.Info info = new DataLine.Info(Clip.class, sound.getFormat());
-      Clip clip = (Clip) AudioSystem.getLine(info);
-      clip.open(sound);
-      FloatControl volcontrol = (FloatControl) clip.getControl(FloatControl.Type.MASTER_GAIN);
-      double max = Math.floor(volcontrol.getMaximum());
-      double min = Math.ceil(volcontrol.getMinimum());
-      iA[0] = (int)min;
-      iA[1] = (int)max;
-      System.out.println("vol min/max: "+min+"/"+max);
-    }
-    catch (IOException | LineUnavailableException | UnsupportedAudioFileException ex) {
-      System.err.println("Error in SoundPlayer.getVolumeSliderMinMax(): "+ex.getClass().getSimpleName()+": "+ex.getLocalizedMessage());
-    }
-    return iA;
-  }
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/sound/VolumeMenuItem.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/sound/VolumeMenuItem.java
deleted file mode 100644
index ae6b2bd70240e2b1ee7537af646a8a2d3bfef0b7..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/sound/VolumeMenuItem.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.sound;
-
-import edu.nps.moves.qrtda.QRPreferences;
-import static edu.nps.moves.qrtda.elements.gui.OpticalCommsConstants.SAILORVOLUME_KEY;
-import java.awt.Component;
-import java.awt.event.KeyEvent;
-import java.awt.event.MouseEvent;
-import javax.swing.*;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
-
-/**
- * VolumeMenuItem.java created on May 1, 2017 MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class VolumeMenuItem extends JSlider implements MenuElement, ChangeListener
-{
-  public VolumeMenuItem()
-  {
-    super(0, 30, 15);
-    super.setOrientation(JSlider.HORIZONTAL);
-    super.setMajorTickSpacing(10);
-    super.setPaintTicks(true);
-    super.setPaintLabels(true);
-
-    int[] mm = SoundPlayer.getVolumeSliderMinMax();
-    super.setMinimum(-40); //mm[0]);
-    super.setMaximum(mm[1]);
-    super.setValue(Integer.parseInt(QRPreferences.getInstance().get(SAILORVOLUME_KEY, "" + 0)));
-
-    super.addChangeListener(this);
-  }
-
-  @Override
-  public void stateChanged(ChangeEvent e)
-  {
-    if (!getValueIsAdjusting())
-      QRPreferences.getInstance().put(SAILORVOLUME_KEY, "" + (int) getValue());
-  }
-
-  @Override
-  public void processMouseEvent(MouseEvent event, MenuElement[] path, MenuSelectionManager manager)
-  {
-    super.processMouseEvent(event);
-  }
-
-  @Override
-  public void processKeyEvent(KeyEvent event, MenuElement[] path, MenuSelectionManager manager)
-  {
-  }
-
-  @Override
-  public void menuSelectionChanged(boolean isIncluded)
-  {
-  }
-
-  @Override
-  public MenuElement[] getSubElements()
-  {
-    return null;
-  }
-
-  @Override
-  public Component getComponent()
-  {
-    return this;
-  }
-
-  public static class VolumeMenuBar extends JMenuBar
-  {
-    public VolumeMenuBar()
-    {
-      JMenu jm;
-      super.add(jm = new JMenu("Volume"));
-      jm.add(new VolumeMenuItem());
-    }
-  }
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/ChooseConfigurationDialog.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/ChooseConfigurationDialog.form
deleted file mode 100644
index 03e9ed33a5db000388d5eac177cdfee381cd56b7..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/ChooseConfigurationDialog.form
+++ /dev/null
@@ -1,88 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
-  <Properties>
-    <Property name="defaultCloseOperation" type="int" value="2"/>
-  </Properties>
-  <SyntheticProperties>
-    <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
-    <SyntheticProperty name="generateCenter" type="boolean" value="false"/>
-  </SyntheticProperties>
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,-124,0,0,3,7"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-  <SubComponents>
-    <Container class="javax.swing.JScrollPane" name="jScrollPane1">
-      <AuxValues>
-        <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
-      </AuxValues>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="-1" gridY="-1" gridWidth="0" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="5" insetsLeft="5" insetsBottom="5" insetsRight="5" anchor="10" weightX="1.0" weightY="1.0"/>
-        </Constraint>
-      </Constraints>
-
-      <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
-      <SubComponents>
-        <Component class="javax.swing.JList" name="jList1">
-          <Properties>
-            <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-              <Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo">
-                <EmptyBorder bottom="5" left="5" right="5" top="5"/>
-              </Border>
-            </Property>
-            <Property name="model" type="javax.swing.ListModel" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
-              <Connection code="new DefaultListModel()" type="code"/>
-            </Property>
-            <Property name="selectionMode" type="int" value="0"/>
-          </Properties>
-        </Component>
-      </SubComponents>
-    </Container>
-    <Component class="javax.swing.JLabel" name="jLabel1">
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JButton" name="cancelButt">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="Cancel"/>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="cancelButtActionPerformed"/>
-      </Events>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="1" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JButton" name="okButt">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="OK"/>
-        <Property name="enabled" type="boolean" value="false"/>
-      </Properties>
-      <Events>
-        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="okButtActionPerformed"/>
-      </Events>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="2" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-  </SubComponents>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/ChooseConfigurationDialog.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/ChooseConfigurationDialog.java
deleted file mode 100644
index 3e9ed578538f3f1b087e2f98f9e7dcf3baf1186e..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/ChooseConfigurationDialog.java
+++ /dev/null
@@ -1,244 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.swing;
-
-import static edu.nps.moves.qrtda.elements.misc.JsonConfigPipeLine.*;
-import java.awt.Color;
-import java.awt.Component;
-import javax.swing.*;
-import javax.swing.event.ListSelectionEvent;
-
-/**
- * ChooseConfigurationDialog.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class ChooseConfigurationDialog extends javax.swing.JDialog
-{
-  JsonConfigPipeLineSet selected = null;
-  
-  public static JsonConfigPipeLineSet show(JsonConfigPipeLineSet[] sets)
-  {
-    ChooseConfigurationDialog dialog = new ChooseConfigurationDialog(null,true);
-    dialog.setTitle("Select From Defined Data-Flow Configurations");
-    dialog.setList(sets);
-    dialog.setVisible(true); // blocks
-    dialog.dispose();  // allows app to terminate if cancelled
-    
-    return dialog.getSelected();
-  }
-  private ChooseConfigurationDialog(java.awt.Frame parent, boolean modal)
-  {
-    super(parent, modal);
-    initComponents();
-    super.setSize(750,650);
-    super.setLocationRelativeTo(null);  // centers on screen
-
-    jList1.setCellRenderer(new MyRenderer());
-    jList1.addListSelectionListener((ListSelectionEvent e) -> {
-      if (e.getValueIsAdjusting() == false) {
-        okButt.setEnabled(true);
-      }
-    });
-  }
-  
-  private void setList(JsonConfigPipeLineSet[] sets)
-  {
-    int i = 1;
-    for(JsonConfigPipeLineSet set : sets) {
-      JsonSetListElementPan listEl = new JsonSetListElementPan();
-      listEl.setElement(set,i++);
-      ((DefaultListModel)jList1.getModel()).addElement(listEl);
-    }
-  }
-  private JsonConfigPipeLineSet getSelected()
-  {
-    return selected;
-  }
-    
-  class MyRenderer implements ListCellRenderer<Object>
-  {
-    Color defaultBackground;
-    @Override
-    public Component getListCellRendererComponent(
-        JList<?> list, // the list
-        Object value, // value to display
-        int index, // cell index
-        boolean isSelected, // is the cell selected
-        boolean cellHasFocus)    // does the cell have focus
-    {
-      Component comp = (Component)value;
-      if(defaultBackground == null)
-        defaultBackground = comp.getBackground();      
-      if(isSelected)
-        comp.setBackground(new Color(0xfc9d9f));
-      else
-        comp.setBackground(defaultBackground);
-      return comp;
-    }
-  }
-        
-  /**
-   * This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The content of this method is always regenerated by the Form Editor.
-   */
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-    java.awt.GridBagConstraints gridBagConstraints;
-
-    jScrollPane1 = new javax.swing.JScrollPane();
-    jList1 = new javax.swing.JList();
-    jLabel1 = new javax.swing.JLabel();
-    cancelButt = new javax.swing.JButton();
-    okButt = new javax.swing.JButton();
-
-    setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
-    getContentPane().setLayout(new java.awt.GridBagLayout());
-
-    jList1.setBorder(javax.swing.BorderFactory.createEmptyBorder(5, 5, 5, 5));
-    jList1.setModel(new DefaultListModel());
-    jList1.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
-    jScrollPane1.setViewportView(jList1);
-
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
-    gridBagConstraints.weightx = 1.0;
-    gridBagConstraints.weighty = 1.0;
-    gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
-    getContentPane().add(jScrollPane1, gridBagConstraints);
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.weightx = 1.0;
-    getContentPane().add(jLabel1, gridBagConstraints);
-
-    cancelButt.setText("Cancel");
-    cancelButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        cancelButtActionPerformed(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 1;
-    gridBagConstraints.gridy = 1;
-    getContentPane().add(cancelButt, gridBagConstraints);
-
-    okButt.setText("OK");
-    okButt.setEnabled(false);
-    okButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        okButtActionPerformed(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 2;
-    gridBagConstraints.gridy = 1;
-    getContentPane().add(okButt, gridBagConstraints);
-
-    pack();
-  }// </editor-fold>//GEN-END:initComponents
-
-  private void cancelButtActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_cancelButtActionPerformed
-  {//GEN-HEADEREND:event_cancelButtActionPerformed
-    selected=null;
-    setVisible(false);
-  }//GEN-LAST:event_cancelButtActionPerformed
-
-  private void okButtActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_okButtActionPerformed
-  {//GEN-HEADEREND:event_okButtActionPerformed
-    Object o = jList1.getSelectedValue();
-    if(o == null)
-      selected = null;
-    else
-      selected = ((JsonSetListElementPan)o).getPipeLineSet();
-    setVisible(false);
-  }//GEN-LAST:event_okButtActionPerformed
-
-  /**
-   * @param args the command line arguments
-   */
-  public static void main(String args[])
-  {
-    /* Set the Nimbus look and feel */
-        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
-        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
-     * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
-     */
-    try {
-      for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
-        if ("Nimbus".equals(info.getName())) {
-          javax.swing.UIManager.setLookAndFeel(info.getClassName());
-          break;
-        }
-      }
-    }
-    catch (ClassNotFoundException ex) {
-      java.util.logging.Logger.getLogger(ChooseConfigurationDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
-    }
-    catch (InstantiationException ex) {
-      java.util.logging.Logger.getLogger(ChooseConfigurationDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
-    }
-    catch (IllegalAccessException ex) {
-      java.util.logging.Logger.getLogger(ChooseConfigurationDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
-    }
-    catch (javax.swing.UnsupportedLookAndFeelException ex) {
-      java.util.logging.Logger.getLogger(ChooseConfigurationDialog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
-    }
-        //</editor-fold>
-
-    /* Create and display the dialog */
-    java.awt.EventQueue.invokeLater(new Runnable()
-    {
-      @Override
-      public void run()
-      {
-        ChooseConfigurationDialog dialog = new ChooseConfigurationDialog(new javax.swing.JFrame(), true);
-        dialog.addWindowListener(new java.awt.event.WindowAdapter()
-        {
-          @Override
-          public void windowClosing(java.awt.event.WindowEvent e)
-          {
-            System.exit(0);
-          }
-        });
-        dialog.setVisible(true);
-      }
-    });
-  }
-
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  private javax.swing.JButton cancelButt;
-  private javax.swing.JLabel jLabel1;
-  private javax.swing.JList jList1;
-  private javax.swing.JScrollPane jScrollPane1;
-  private javax.swing.JButton okButt;
-  // End of variables declaration//GEN-END:variables
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/ConfigElementGui.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/ConfigElementGui.form
deleted file mode 100755
index 63a01f7bea0f98efd35ec8e78cb3b615ee0c9e11..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/ConfigElementGui.form
+++ /dev/null
@@ -1,218 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
-  <Properties>
-    <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-      <Border info="org.netbeans.modules.form.compat2.border.CompoundBorderInfo">
-        <CompoundBorder>
-          <Border PropertyName="outside" info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo">
-            <EmptyBorder bottom="3" left="3" right="3" top="3"/>
-          </Border>
-          <Border PropertyName="inside" info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
-            <EtchetBorder/>
-          </Border>
-        </CompoundBorder>
-      </Border>
-    </Property>
-    <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-      <Dimension value="[1000, 35]"/>
-    </Property>
-  </Properties>
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,0,35,0,0,1,-32"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-  <SubComponents>
-    <Container class="javax.swing.JPanel" name="jPanel1">
-      <Properties>
-        <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
-          <Color blue="ff" green="ff" id="white" palette="1" red="ff" type="palette"/>
-        </Property>
-        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-          <Border info="org.netbeans.modules.form.compat2.border.LineBorderInfo">
-            <LineBorder thickness="2">
-              <Color PropertyName="color" blue="c0" green="c0" id="lightGray" palette="1" red="c0" type="palette"/>
-            </LineBorder>
-          </Border>
-        </Property>
-        <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-          <Dimension value="[494, 37]"/>
-        </Property>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-
-      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-      <SubComponents>
-        <Component class="javax.swing.JLabel" name="jLabel1">
-          <Properties>
-            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
-              <Font name="Lucida Grande" size="10" style="0"/>
-            </Property>
-            <Property name="text" type="java.lang.String" value="name"/>
-          </Properties>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="0" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="5" insetsBottom="0" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-        <Component class="javax.swing.JLabel" name="jLabel2">
-          <Properties>
-            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
-              <Font name="Lucida Grande" size="10" style="0"/>
-            </Property>
-            <Property name="text" type="java.lang.String" value="input type"/>
-            <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-              <Border info="org.netbeans.modules.form.compat2.border.LineBorderInfo">
-                <LineBorder>
-                  <Color PropertyName="color" blue="33" green="33" red="ff" type="rgb"/>
-                </LineBorder>
-              </Border>
-            </Property>
-          </Properties>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="1" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="8" insetsBottom="0" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-        <Component class="javax.swing.JLabel" name="jLabel3">
-          <Properties>
-            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
-              <Font name="Lucida Grande" size="10" style="0"/>
-            </Property>
-            <Property name="text" type="java.lang.String" value="outputType"/>
-          </Properties>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="2" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="8" insetsBottom="0" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-        <Component class="javax.swing.JLabel" name="clsName">
-          <Properties>
-            <Property name="text" type="java.lang.String" value="jLabel4"/>
-            <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-              <Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo">
-                <EmptyBorder bottom="3" left="3" right="3" top="3"/>
-              </Border>
-            </Property>
-            <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-              <Dimension value="[175, 18]"/>
-            </Property>
-            <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-              <Dimension value="[175, 18]"/>
-            </Property>
-            <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-              <Dimension value="[175, 18]"/>
-            </Property>
-          </Properties>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="0" gridY="1" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.25" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-        <Component class="javax.swing.JLabel" name="inputTypeLab">
-          <Properties>
-            <Property name="text" type="java.lang.String" value="jLabel5"/>
-            <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-              <Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo">
-                <EmptyBorder bottom="3" left="3" right="3" top="3"/>
-              </Border>
-            </Property>
-            <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-              <Dimension value="[100, 18]"/>
-            </Property>
-            <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-              <Dimension value="[100, 18]"/>
-            </Property>
-            <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-              <Dimension value="[100, 18]"/>
-            </Property>
-          </Properties>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="1" gridY="1" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="5" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.25" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-        <Component class="javax.swing.JLabel" name="outputTypeLab">
-          <Properties>
-            <Property name="text" type="java.lang.String" value="jLabel6"/>
-            <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-              <Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo">
-                <EmptyBorder bottom="3" left="3" right="3" top="3"/>
-              </Border>
-            </Property>
-            <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-              <Dimension value="[100, 18]"/>
-            </Property>
-            <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-              <Dimension value="[100, 18]"/>
-            </Property>
-            <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-              <Dimension value="[100, 18]"/>
-            </Property>
-          </Properties>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="2" gridY="1" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="5" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.25" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-        <Component class="javax.swing.JLabel" name="jLabel7">
-          <Properties>
-            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
-              <Font name="Lucida Grande" size="10" style="0"/>
-            </Property>
-            <Property name="text" type="java.lang.String" value="category"/>
-          </Properties>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="8" insetsBottom="0" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-        <Component class="javax.swing.JLabel" name="catLab">
-          <Properties>
-            <Property name="text" type="java.lang.String" value="jLabel8"/>
-            <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-              <Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo">
-                <EmptyBorder bottom="3" left="3" right="3" top="3"/>
-              </Border>
-            </Property>
-            <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-              <Dimension value="[100, 18]"/>
-            </Property>
-            <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-              <Dimension value="[100, 18]"/>
-            </Property>
-            <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-              <Dimension value="[100, 18]"/>
-            </Property>
-          </Properties>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="3" gridY="1" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="5" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.25" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-      </SubComponents>
-    </Container>
-  </SubComponents>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/ConfigElementGui.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/ConfigElementGui.java
deleted file mode 100644
index 98c1b21c887bc109a5cc3fbb52c0f00dec3158f0..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/ConfigElementGui.java
+++ /dev/null
@@ -1,266 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.swing;
-
-import edu.nps.moves.qrtda.elements.misc.QRAvailableElements;
-import edu.nps.moves.qrtda.elements.misc.QRAvailableElements.QRElementDescriptor;
-import edu.nps.moves.qrtda.elements.QRFlowLink;
-import edu.nps.moves.qrtda.swing.QRTdaConfiguratorPanel.ElementDescriptorWrapper;
-import java.awt.*;
-import javax.swing.*;
-import javax.swing.border.Border;
-
-/**
- * ConfigElementGui.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class ConfigElementGui extends JPanel implements ListCellRenderer
-{  
-  JLabel stamp;  // can't get panel renderer to work
-  Color stampBkgdNormal = new Color(245,245,245);
-  Color stampBkgdSel    = new Color(0xd0,0xd0,0xd0);
-  Border stampBorderNormal;
-  Border stampBorderBad = BorderFactory.createLineBorder(Color.red, 2);
-  public ConfigElementGui()
-  {
-    initComponents();
-    stamp=new JLabel();
-    stamp.setOpaque(true);
-    stamp.setBackground(new Color(245,245,245));
-    stamp.setBorder(stampBorderNormal=BorderFactory.createEtchedBorder());
-    stamp.setText(buildText());
-  }
-
-  public ConfigElementGui(QRElementDescriptor qed)
-  {
-    this();
-    fillData(qed);
-  }
-
-  public ConfigElementGui(QRFlowLink link)
-  {
-    this(QRAvailableElements.getElementDescriptor(link.getClass().getSimpleName()));    
-  }
-  
-  private void fillData(QRFlowLink link)
-  {
-    fillData(QRAvailableElements.getElementDescriptor(link.getClass().getSimpleName()));
-  }
-  
-  private void fillData(QRElementDescriptor qed)
-  {
-    clsName.setText(qed.element.getSimpleName());
-    inputTypeLab.setText(qed.input.getSimpleName());
-    outputTypeLab.setText(qed.output.getSimpleName());
-    catLab.setText(qed.category.toString());
-  }
-  /**
-   * This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The content of this method is always
-   * regenerated by the Form Editor.
-   */
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-    java.awt.GridBagConstraints gridBagConstraints;
-
-    jPanel1 = new javax.swing.JPanel();
-    jLabel1 = new javax.swing.JLabel();
-    jLabel2 = new javax.swing.JLabel();
-    jLabel3 = new javax.swing.JLabel();
-    clsName = new javax.swing.JLabel();
-    inputTypeLab = new javax.swing.JLabel();
-    outputTypeLab = new javax.swing.JLabel();
-    jLabel7 = new javax.swing.JLabel();
-    catLab = new javax.swing.JLabel();
-
-    setBorder(javax.swing.BorderFactory.createCompoundBorder(javax.swing.BorderFactory.createEmptyBorder(3, 3, 3, 3), javax.swing.BorderFactory.createEtchedBorder()));
-    setMaximumSize(new java.awt.Dimension(1000, 35));
-    setLayout(new java.awt.GridBagLayout());
-
-    jPanel1.setBackground(java.awt.Color.white);
-    jPanel1.setBorder(javax.swing.BorderFactory.createLineBorder(java.awt.Color.lightGray, 2));
-    jPanel1.setMaximumSize(new java.awt.Dimension(494, 37));
-    jPanel1.setLayout(new java.awt.GridBagLayout());
-
-    jLabel1.setFont(new java.awt.Font("Lucida Grande", 0, 10)); // NOI18N
-    jLabel1.setText("name");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 0;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
-    gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 0);
-    jPanel1.add(jLabel1, gridBagConstraints);
-
-    jLabel2.setFont(new java.awt.Font("Lucida Grande", 0, 10)); // NOI18N
-    jLabel2.setText("input type");
-    jLabel2.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(255, 51, 51)));
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 1;
-    gridBagConstraints.gridy = 0;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
-    gridBagConstraints.insets = new java.awt.Insets(0, 8, 0, 0);
-    jPanel1.add(jLabel2, gridBagConstraints);
-
-    jLabel3.setFont(new java.awt.Font("Lucida Grande", 0, 10)); // NOI18N
-    jLabel3.setText("outputType");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 2;
-    gridBagConstraints.gridy = 0;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
-    gridBagConstraints.insets = new java.awt.Insets(0, 8, 0, 0);
-    jPanel1.add(jLabel3, gridBagConstraints);
-
-    clsName.setText("jLabel4");
-    clsName.setBorder(javax.swing.BorderFactory.createEmptyBorder(3, 3, 3, 3));
-    clsName.setMaximumSize(new java.awt.Dimension(175, 18));
-    clsName.setMinimumSize(new java.awt.Dimension(175, 18));
-    clsName.setPreferredSize(new java.awt.Dimension(175, 18));
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.weightx = 0.25;
-    jPanel1.add(clsName, gridBagConstraints);
-
-    inputTypeLab.setText("jLabel5");
-    inputTypeLab.setBorder(javax.swing.BorderFactory.createEmptyBorder(3, 3, 3, 3));
-    inputTypeLab.setMaximumSize(new java.awt.Dimension(100, 18));
-    inputTypeLab.setMinimumSize(new java.awt.Dimension(100, 18));
-    inputTypeLab.setPreferredSize(new java.awt.Dimension(100, 18));
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 1;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.weightx = 0.25;
-    gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 0);
-    jPanel1.add(inputTypeLab, gridBagConstraints);
-
-    outputTypeLab.setText("jLabel6");
-    outputTypeLab.setBorder(javax.swing.BorderFactory.createEmptyBorder(3, 3, 3, 3));
-    outputTypeLab.setMaximumSize(new java.awt.Dimension(100, 18));
-    outputTypeLab.setMinimumSize(new java.awt.Dimension(100, 18));
-    outputTypeLab.setPreferredSize(new java.awt.Dimension(100, 18));
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 2;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.weightx = 0.25;
-    gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 0);
-    jPanel1.add(outputTypeLab, gridBagConstraints);
-
-    jLabel7.setFont(new java.awt.Font("Lucida Grande", 0, 10)); // NOI18N
-    jLabel7.setText("category");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
-    gridBagConstraints.insets = new java.awt.Insets(0, 8, 0, 0);
-    jPanel1.add(jLabel7, gridBagConstraints);
-
-    catLab.setText("jLabel8");
-    catLab.setBorder(javax.swing.BorderFactory.createEmptyBorder(3, 3, 3, 3));
-    catLab.setMaximumSize(new java.awt.Dimension(100, 18));
-    catLab.setMinimumSize(new java.awt.Dimension(100, 18));
-    catLab.setPreferredSize(new java.awt.Dimension(100, 18));
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 3;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.weightx = 0.25;
-    gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 0);
-    jPanel1.add(catLab, gridBagConstraints);
-
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.weightx = 1.0;
-    add(jPanel1, gridBagConstraints);
-  }// </editor-fold>//GEN-END:initComponents
-
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  private javax.swing.JLabel catLab;
-  private javax.swing.JLabel clsName;
-  private javax.swing.JLabel inputTypeLab;
-  private javax.swing.JLabel jLabel1;
-  private javax.swing.JLabel jLabel2;
-  private javax.swing.JLabel jLabel3;
-  private javax.swing.JLabel jLabel7;
-  private javax.swing.JPanel jPanel1;
-  private javax.swing.JLabel outputTypeLab;
-  // End of variables declaration//GEN-END:variables
-
-  
-  @Override
-  public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus)
-  {
-    ElementDescriptorWrapper wrap = (ElementDescriptorWrapper)value;
-    fillData(wrap.descriptor);
-//    QRFlowLink qrfl = wrap.link;
-//    
-//    fillData(qrfl);
-    
-    // It was intended to use this component as the renderer "stamp", but there is some sort of a problem using a JPanel
-    // as the compoent returned here.  So we built a ConfigElementGui/JPanel, but never use it as one.
-    
-    //stamp.setBorder(isSelected ? BorderFactory.createLineBorder(Color.red,2) : BorderFactory.createEtchedBorder());
-    stamp.setBackground(isSelected ? stampBkgdSel : stampBkgdNormal);
-    
-    if(wrap.inputGood && wrap.outputGood)
-      stamp.setBorder(stampBorderNormal);
-    else
-      stamp.setBorder(stampBorderBad);
-    
-    stamp.setText(buildText());
-    return stamp;
-  }
-  
-  StringBuilder sb = new StringBuilder();
-  
-  private String buildText()
-  {
-    sb.setLength(0);
-    sb.append("<html><table cellspacing='0'>");
-    sb.append("<tr style='font-size:x-small'>");
-    addText(sb,"name",200);
-    addText(sb,"input type",100);
-    addText(sb,"output type",100);
-    addText(sb,"category",130);
-    sb.append("</tr><tr>");
-    addText(sb,this.clsName.getText(),200);
-    addText(sb,this.inputTypeLab.getText(),100);
-    addText(sb,this.outputTypeLab.getText(),100);
-    addText(sb,this.catLab.getText(),130);
-    sb.append("</tr></table></html>");
-    return sb.toString();    
-  }
-  
-  private void addText(StringBuilder sb, String s, int wid)
-  {
-    sb.append("<td width='");
-    sb.append(wid);
-    sb.append("'>");
-    sb.append(s);
-    sb.append("</td>");
-  }
-}
\ No newline at end of file
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/JsonSetListElementPan.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/JsonSetListElementPan.form
deleted file mode 100644
index a6824dd39757ca27891809c875cb30c766e21c86..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/JsonSetListElementPan.form
+++ /dev/null
@@ -1,106 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
-  <Properties>
-    <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-      <Border info="org.netbeans.modules.form.compat2.border.LineBorderInfo">
-        <LineBorder thickness="5">
-          <Color PropertyName="color" blue="99" green="99" red="99" type="rgb"/>
-        </LineBorder>
-      </Border>
-    </Property>
-  </Properties>
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,0,-124,0,0,1,94"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-  <SubComponents>
-    <Component class="javax.swing.JLabel" name="nameLab">
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="3" insetsBottom="0" insetsRight="5" anchor="13" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JTextField" name="nameTF">
-      <Properties>
-        <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
-          <Font name="Lucida Grande" size="13" style="1"/>
-        </Property>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="-1" gridY="-1" gridWidth="0" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="fileNameLab">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="File name"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="3" insetsBottom="0" insetsRight="5" anchor="13" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JTextField" name="fileNameTF">
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="1" gridY="1" gridWidth="0" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="descriptionLab">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="Description"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="3" insetsBottom="0" insetsRight="5" anchor="13" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JTextField" name="descriptionTF">
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="1" gridY="-1" gridWidth="0" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JLabel" name="headlessLab">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="Headless"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="3" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="3" insetsBottom="0" insetsRight="5" anchor="13" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JCheckBox" name="headlessCBox">
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="1" gridY="3" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Component class="javax.swing.JSeparator" name="jSeparator1">
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="4" gridWidth="0" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="5" insetsLeft="0" insetsBottom="5" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-  </SubComponents>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/JsonSetListElementPan.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/JsonSetListElementPan.java
deleted file mode 100644
index 13091c4a05e6c5fde42c9a835a7e5bb3d5613813..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/JsonSetListElementPan.java
+++ /dev/null
@@ -1,229 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.swing;
-
-import edu.nps.moves.qrtda.elements.misc.JsonConfigPipeLine;
-import edu.nps.moves.qrtda.elements.misc.JsonConfigPipeLine.JsonConfigPipeLineSet;
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.GridBagConstraints;
-import java.awt.Insets;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import javax.swing.JPanel;
-
-/**
- * JsonSetListElementPan.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class JsonSetListElementPan extends JPanel
-{
-  private JsonConfigPipeLineSet mySet;
-  private boolean initted = false;
-  
-  public JsonSetListElementPan()
-  {
-    initComponents();
-    initted = true;
-  }
-  
-  public void setElement(JsonConfigPipeLineSet set, Integer ordinal)
-  {
-    mySet = set;
-    if(ordinal != null) {
-      String s = nameLab.getText();
-      nameLab.setText("<html><b>Set "+ordinal.toString()+" "+s+"</b>");
-    }
-    nameTF.setText(set.getName());
-    nameTF.setEditable(false);
-    descriptionTF.setText(set.getDescription());
-    descriptionTF.setEditable(false);
-    headlessCBox.setSelected(set.isHeadless());
-    headlessCBox.setEnabled(false);
-    fileNameTF.setText(set.getFileName());
-    fileNameTF.setEditable(false);
-    ArrayList<Object> arLis = set.getPipeLines();
-    Iterator<Object> itr = arLis.iterator(); 
-    int i = 1;
-    while(itr.hasNext()) {
-      LinkedHashMap lhm = (LinkedHashMap) itr.next();
-      JsonConfigPipeLine pipeLine = new JsonConfigPipeLine(lhm);  
-      PipeLinePanel pan = new PipeLinePanel();
-      pan.setPipeline(pipeLine,i++);
-      this.add(pan, getConstraints());
-    }
-  }
-  
-  private GridBagConstraints getConstraints()
-  {
-    GridBagConstraints con = new GridBagConstraints();
-    con.gridx = 0;
-    con.gridy = GridBagConstraints.RELATIVE;
-    con.gridwidth = GridBagConstraints.REMAINDER;
-    con.insets = new Insets(5,5,5,5);
-    con.fill = GridBagConstraints.BOTH;
-    con.weightx = 1.0f;
-    return con;
-  }
-
-  private Color defBg;
-  private Color defTfBg;
-  
-  @Override
-  public void setBackground(Color bg)
-  {
-    super.setBackground(bg);
-    if (!initted)
-      return;
-
-    if (defBg == null) {
-      defBg = getBackground();
-      defTfBg = descriptionTF.getBackground();
-    }
- 
-    if (defBg != bg) {
-      setAllJPans(bg);
-      descriptionTF.setBackground(bg);
-      nameTF.setBackground(bg);
-      fileNameTF.setBackground(bg);
-    }
-    else {
-      setAllJPans(defBg);
-      descriptionTF.setBackground(defTfBg);
-      nameTF.setBackground(defTfBg);
-      fileNameTF.setBackground(defTfBg);
-    }
-  }
-  
-  public void setAllJPans(Color col)
-  {
-    Component[] comps = this.getComponents();
-    for (Component comp : comps) {
-      if (JPanel.class.isAssignableFrom(comp.getClass()))
-        comp.setBackground(col);
-    }
-  }
-  
-  public JsonConfigPipeLineSet getPipeLineSet()
-  {
-    return mySet;
-  }
-  /**
-   * This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The content of this method is always regenerated by the Form Editor.
-   */
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-    java.awt.GridBagConstraints gridBagConstraints;
-
-    nameLab = new javax.swing.JLabel();
-    nameTF = new javax.swing.JTextField();
-    fileNameLab = new javax.swing.JLabel();
-    fileNameTF = new javax.swing.JTextField();
-    descriptionLab = new javax.swing.JLabel();
-    descriptionTF = new javax.swing.JTextField();
-    headlessLab = new javax.swing.JLabel();
-    headlessCBox = new javax.swing.JCheckBox();
-    jSeparator1 = new javax.swing.JSeparator();
-
-    setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(153, 153, 153), 5));
-    setLayout(new java.awt.GridBagLayout());
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
-    gridBagConstraints.insets = new java.awt.Insets(0, 3, 0, 5);
-    add(nameLab, gridBagConstraints);
-
-    nameTF.setFont(new java.awt.Font("Lucida Grande", 1, 13)); // NOI18N
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.weightx = 1.0;
-    add(nameTF, gridBagConstraints);
-
-    fileNameLab.setText("File name");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
-    gridBagConstraints.insets = new java.awt.Insets(0, 3, 0, 5);
-    add(fileNameLab, gridBagConstraints);
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 1;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.weightx = 1.0;
-    add(fileNameTF, gridBagConstraints);
-
-    descriptionLab.setText("Description");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
-    gridBagConstraints.insets = new java.awt.Insets(0, 3, 0, 5);
-    add(descriptionLab, gridBagConstraints);
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 1;
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.weightx = 1.0;
-    add(descriptionTF, gridBagConstraints);
-
-    headlessLab.setText("Headless");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 3;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
-    gridBagConstraints.insets = new java.awt.Insets(0, 3, 0, 5);
-    add(headlessLab, gridBagConstraints);
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 1;
-    gridBagConstraints.gridy = 3;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
-    add(headlessCBox, gridBagConstraints);
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 4;
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.insets = new java.awt.Insets(5, 0, 5, 0);
-    add(jSeparator1, gridBagConstraints);
-  }// </editor-fold>//GEN-END:initComponents
-
-
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  private javax.swing.JLabel descriptionLab;
-  private javax.swing.JTextField descriptionTF;
-  private javax.swing.JLabel fileNameLab;
-  private javax.swing.JTextField fileNameTF;
-  private javax.swing.JCheckBox headlessCBox;
-  private javax.swing.JLabel headlessLab;
-  private javax.swing.JSeparator jSeparator1;
-  private javax.swing.JLabel nameLab;
-  private javax.swing.JTextField nameTF;
-  // End of variables declaration//GEN-END:variables
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/PipeLinePanel.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/PipeLinePanel.form
deleted file mode 100644
index 5145b1e770f56aa18618c59db799cde194137107..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/PipeLinePanel.form
+++ /dev/null
@@ -1,134 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,0,106,0,0,1,120"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-  <SubComponents>
-    <Component class="javax.swing.JLabel" name="dataFlowLab">
-      <Properties>
-        <Property name="text" type="java.lang.String" value="Data flow"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="0" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="5" insetsLeft="0" insetsBottom="0" insetsRight="5" anchor="18" weightX="0.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-    </Component>
-    <Container class="javax.swing.JPanel" name="dataFlowPanel">
-      <Properties>
-        <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-          <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
-            <EtchetBorder/>
-          </Border>
-        </Property>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="1" gridY="0" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="18" weightX="1.0" weightY="0.0"/>
-        </Constraint>
-      </Constraints>
-
-      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-      <SubComponents>
-        <Component class="javax.swing.JLabel" name="pipelineNameLab">
-          <Properties>
-            <Property name="text" type="java.lang.String" value="Pipeline name"/>
-          </Properties>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="5" insetsBottom="0" insetsRight="5" anchor="13" weightX="0.0" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-        <Component class="javax.swing.JTextField" name="pipelineNameTF">
-          <Properties>
-            <Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
-              <Font name="Lucida Grande" size="13" style="1"/>
-            </Property>
-          </Properties>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-        <Component class="javax.swing.JLabel" name="pipelineDescriptionLab">
-          <Properties>
-            <Property name="text" type="java.lang.String" value="Description"/>
-          </Properties>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="0" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="5" insetsBottom="0" insetsRight="5" anchor="12" weightX="0.0" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-        <Container class="javax.swing.JScrollPane" name="descriptionSP">
-          <AuxValues>
-            <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
-          </AuxValues>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="1" gridY="1" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="3" insetsLeft="3" insetsBottom="3" insetsRight="3" anchor="10" weightX="1.0" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-
-          <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
-          <SubComponents>
-            <Component class="javax.swing.JTextArea" name="descriptionTA">
-              <Properties>
-                <Property name="columns" type="int" value="2"/>
-                <Property name="lineWrap" type="boolean" value="true"/>
-                <Property name="rows" type="int" value="2"/>
-                <Property name="wrapStyleWord" type="boolean" value="true"/>
-              </Properties>
-            </Component>
-          </SubComponents>
-        </Container>
-        <Component class="javax.swing.JLabel" name="pipelineElementsLab">
-          <Properties>
-            <Property name="text" type="java.lang.String" value="Elements"/>
-          </Properties>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="0" gridY="2" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="5" insetsBottom="0" insetsRight="5" anchor="12" weightX="0.0" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-        </Component>
-        <Container class="javax.swing.JScrollPane" name="elementsSP">
-          <AuxValues>
-            <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
-          </AuxValues>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-              <GridBagConstraints gridX="1" gridY="2" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="3" insetsLeft="3" insetsBottom="3" insetsRight="3" anchor="10" weightX="1.0" weightY="0.0"/>
-            </Constraint>
-          </Constraints>
-
-          <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
-          <SubComponents>
-            <Component class="javax.swing.JTextArea" name="pipelineElementsTA">
-              <Properties>
-                <Property name="columns" type="int" value="2"/>
-                <Property name="lineWrap" type="boolean" value="true"/>
-                <Property name="rows" type="int" value="2"/>
-                <Property name="wrapStyleWord" type="boolean" value="true"/>
-              </Properties>
-            </Component>
-          </SubComponents>
-        </Container>
-      </SubComponents>
-    </Container>
-  </SubComponents>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/PipeLinePanel.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/PipeLinePanel.java
deleted file mode 100644
index ac2068ac06592ded3a1288b5c9b3a394438d8bf4..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/PipeLinePanel.java
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
- * Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- * in source and binary forms, with or without modification, are permitted provided that the
- * following conditions are met:
- * 
- * Redistributions of source code must retain the above copyright notice, this list of conditions
- * and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the documentation and/or other
- * materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- * Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- * http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.swing;
-
-import edu.nps.moves.qrtda.elements.misc.JsonConfigPipeLine;
-import edu.nps.moves.qrtda.elements.misc.JsonConfigPipeLine.PipeElement;
-import java.awt.Color;
-import java.util.ArrayList;
-
-/**
- * PipeLinePanel.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class PipeLinePanel extends javax.swing.JPanel
-{
-  boolean initted=false;
-  public PipeLinePanel()
-  {
-    initComponents();
-    initted=true;
-  }
-  public void setPipeline(JsonConfigPipeLine pipe, Integer ordinal)
-  {
-    if(ordinal != null) {
-      String s = dataFlowLab.getText();
-      dataFlowLab.setText(s+" "+ordinal.toString());
-    }
-    pipelineNameTF.setText(pipe.getName());
-    pipelineNameTF.setEditable(false);
-    descriptionTA.setText(pipe.getDescription());
-    descriptionTA.setEditable(false);
-    
-    StringBuilder sb = new StringBuilder();
-    ArrayList<?> elems = pipe.getPipeElements();
-    for(Object obj : elems) {
-      PipeElement el = (PipeElement)obj;
-      String clsNm = el.getClassName();
-      clsNm = clsNm.substring(clsNm.lastIndexOf('.')+1);
-      sb.append(clsNm);
-      sb.append(", ");
-    }
-    String s = sb.toString();
-    if(s.length()>2)
-      s = s.substring(0, s.length()-2);
-    pipelineElementsTA.setText(s);
-    pipelineElementsTA.setEditable(false);
-  }
-
-  private Color defBg;
-  private Color defTfBg;
-  private Color defTaBg;
-  
-  @Override
-  public void setBackground(Color bg)
-  {
-    super.setBackground(bg);
-    if (!initted)
-      return;
-
-    if (defBg == null) {
-      defBg = dataFlowPanel.getBackground();
-      defTfBg = pipelineNameTF.getBackground();
-      defTaBg = descriptionTA.getBackground();
-    }
-
-    if (defBg != bg) {
-      dataFlowPanel.setBackground(bg);
-      pipelineNameTF.setBackground(bg);
-      descriptionTA.setBackground(bg);
-      pipelineElementsTA.setBackground(bg);
-    }
-    else {
-      dataFlowPanel.setBackground(defBg);
-      pipelineNameTF.setBackground(defTfBg);
-      descriptionTA.setBackground(defTaBg);
-      pipelineElementsTA.setBackground(defTaBg);
-    }
-  }
-  
-  /**
-   * This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The content of this method is always regenerated by the Form Editor.
-   */
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-    java.awt.GridBagConstraints gridBagConstraints;
-
-    dataFlowLab = new javax.swing.JLabel();
-    dataFlowPanel = new javax.swing.JPanel();
-    pipelineNameLab = new javax.swing.JLabel();
-    pipelineNameTF = new javax.swing.JTextField();
-    pipelineDescriptionLab = new javax.swing.JLabel();
-    descriptionSP = new javax.swing.JScrollPane();
-    descriptionTA = new javax.swing.JTextArea();
-    pipelineElementsLab = new javax.swing.JLabel();
-    elementsSP = new javax.swing.JScrollPane();
-    pipelineElementsTA = new javax.swing.JTextArea();
-
-    setLayout(new java.awt.GridBagLayout());
-
-    dataFlowLab.setText("Data flow");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 0;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
-    gridBagConstraints.insets = new java.awt.Insets(5, 0, 0, 5);
-    add(dataFlowLab, gridBagConstraints);
-
-    dataFlowPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder());
-    dataFlowPanel.setLayout(new java.awt.GridBagLayout());
-
-    pipelineNameLab.setText("Pipeline name");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
-    gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
-    dataFlowPanel.add(pipelineNameLab, gridBagConstraints);
-
-    pipelineNameTF.setFont(new java.awt.Font("Lucida Grande", 1, 13)); // NOI18N
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.weightx = 1.0;
-    dataFlowPanel.add(pipelineNameTF, gridBagConstraints);
-
-    pipelineDescriptionLab.setText("Description");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHEAST;
-    gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
-    dataFlowPanel.add(pipelineDescriptionLab, gridBagConstraints);
-
-    descriptionTA.setColumns(2);
-    descriptionTA.setLineWrap(true);
-    descriptionTA.setRows(2);
-    descriptionTA.setWrapStyleWord(true);
-    descriptionSP.setViewportView(descriptionTA);
-
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 1;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.weightx = 1.0;
-    gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
-    dataFlowPanel.add(descriptionSP, gridBagConstraints);
-
-    pipelineElementsLab.setText("Elements");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 2;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHEAST;
-    gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
-    dataFlowPanel.add(pipelineElementsLab, gridBagConstraints);
-
-    pipelineElementsTA.setColumns(2);
-    pipelineElementsTA.setLineWrap(true);
-    pipelineElementsTA.setRows(2);
-    pipelineElementsTA.setWrapStyleWord(true);
-    elementsSP.setViewportView(pipelineElementsTA);
-
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 1;
-    gridBagConstraints.gridy = 2;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.weightx = 1.0;
-    gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
-    dataFlowPanel.add(elementsSP, gridBagConstraints);
-
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 1;
-    gridBagConstraints.gridy = 0;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
-    gridBagConstraints.weightx = 1.0;
-    add(dataFlowPanel, gridBagConstraints);
-  }// </editor-fold>//GEN-END:initComponents
-
-
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  private javax.swing.JLabel dataFlowLab;
-  private javax.swing.JPanel dataFlowPanel;
-  private javax.swing.JScrollPane descriptionSP;
-  private javax.swing.JTextArea descriptionTA;
-  private javax.swing.JScrollPane elementsSP;
-  private javax.swing.JLabel pipelineDescriptionLab;
-  private javax.swing.JLabel pipelineElementsLab;
-  private javax.swing.JTextArea pipelineElementsTA;
-  private javax.swing.JLabel pipelineNameLab;
-  private javax.swing.JTextField pipelineNameTF;
-  // End of variables declaration//GEN-END:variables
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/QRTdaConfiguratorDialog.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/QRTdaConfiguratorDialog.form
deleted file mode 100644
index 72b3d90f3ce1121608868c18c1c2a34ebe7d176f..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/QRTdaConfiguratorDialog.form
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
-  <Properties>
-    <Property name="defaultCloseOperation" type="int" value="2"/>
-  </Properties>
-  <SyntheticProperties>
-    <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
-    <SyntheticProperty name="generateCenter" type="boolean" value="false"/>
-  </SyntheticProperties>
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,44,0,0,1,-112"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/QRTdaConfiguratorDialog.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/QRTdaConfiguratorDialog.java
deleted file mode 100644
index fd2594162103c61b2a9df2a98769bb135fc2dcf5..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/QRTdaConfiguratorDialog.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.swing;
-
-import edu.nps.moves.qrtda.TdaEnvironment;
-import java.awt.BorderLayout;
-import javax.swing.JDialog;
-
-/**
- * QRTdaConfiguratorDialog.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class QRTdaConfiguratorDialog extends JDialog
-{
-  private final QRTdaFrame frame;
-  private final QRTdaGuiPanel pan;
-  private final TdaEnvironment env;
-  public QRTdaConfiguratorDialog(QRTdaFrame parent, boolean modal, QRTdaGuiPanel pan, TdaEnvironment env)
-  {   
-    super(parent,"Data Flow Configuration",modal);
-    this.frame = parent;
-    this.pan = pan;
-    this.env = env;
-    
-    initComponents();
-    setLocationRelativeTo(parent);
-    setSize(1175, 750);
-    setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
-    getContentPane().add(BorderLayout.CENTER,new QRTdaConfiguratorPanel(pan, env, this));   
-  }
-  
-  
-  /**
-   * This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The content of this method is always
-   * regenerated by the Form Editor.
-   */
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-
-    setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
-
-    pack();
-  }// </editor-fold>//GEN-END:initComponents
-
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  // End of variables declaration//GEN-END:variables
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/QRTdaConfiguratorFrame.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/QRTdaConfiguratorFrame.form
deleted file mode 100755
index ce398d3f6e272082874382a393f1eee526be7381..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/QRTdaConfiguratorFrame.form
+++ /dev/null
@@ -1,195 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
-  <Properties>
-    <Property name="defaultCloseOperation" type="int" value="3"/>
-  </Properties>
-  <SyntheticProperties>
-    <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
-    <SyntheticProperty name="generateCenter" type="boolean" value="false"/>
-  </SyntheticProperties>
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,2,7,0,0,3,101"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
-  <SubComponents>
-    <Container class="javax.swing.JSplitPane" name="jSplitPane1">
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
-          <BorderConstraints direction="Center"/>
-        </Constraint>
-      </Constraints>
-
-      <Layout class="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout"/>
-      <SubComponents>
-        <Container class="javax.swing.JPanel" name="leftPan">
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout$JSplitPaneConstraintsDescription">
-              <JSplitPaneConstraints position="left"/>
-            </Constraint>
-          </Constraints>
-
-          <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-          <SubComponents>
-            <Container class="javax.swing.JScrollPane" name="jScrollPane1">
-              <Properties>
-                <Property name="horizontalScrollBarPolicy" type="int" value="31"/>
-              </Properties>
-              <Constraints>
-                <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-                  <GridBagConstraints gridX="0" gridY="1" gridWidth="1" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="1.0"/>
-                </Constraint>
-              </Constraints>
-
-              <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
-              <SubComponents>
-                <Container class="javax.swing.JPanel" name="elementPan">
-
-                  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBoxLayout">
-                    <Property name="axis" type="int" value="1"/>
-                  </Layout>
-                </Container>
-              </SubComponents>
-            </Container>
-            <Container class="javax.swing.JPanel" name="buttPan">
-              <Constraints>
-                <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-                  <GridBagConstraints gridX="-1" gridY="2" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-                </Constraint>
-              </Constraints>
-
-              <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-              <SubComponents>
-                <Component class="javax.swing.JButton" name="jButton1">
-                  <Properties>
-                    <Property name="text" type="java.lang.String" value="up"/>
-                  </Properties>
-                  <Constraints>
-                    <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-                      <GridBagConstraints gridX="0" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="13" weightX="0.5" weightY="0.0"/>
-                    </Constraint>
-                  </Constraints>
-                </Component>
-                <Component class="javax.swing.JButton" name="jButton2">
-                  <Properties>
-                    <Property name="text" type="java.lang.String" value="down"/>
-                  </Properties>
-                  <Constraints>
-                    <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-                      <GridBagConstraints gridX="1" gridY="1" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-                    </Constraint>
-                  </Constraints>
-                </Component>
-                <Component class="javax.swing.JButton" name="jButton3">
-                  <Properties>
-                    <Property name="text" type="java.lang.String" value="delete"/>
-                  </Properties>
-                  <Constraints>
-                    <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-                      <GridBagConstraints gridX="2" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="0.5" weightY="0.0"/>
-                    </Constraint>
-                  </Constraints>
-                </Component>
-              </SubComponents>
-            </Container>
-            <Component class="javax.swing.JLabel" name="jLabel4">
-              <Properties>
-                <Property name="text" type="java.lang.String" value="Data flow name: "/>
-              </Properties>
-              <Constraints>
-                <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-                  <GridBagConstraints gridX="0" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-                </Constraint>
-              </Constraints>
-            </Component>
-          </SubComponents>
-        </Container>
-        <Container class="javax.swing.JPanel" name="rightPan">
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout$JSplitPaneConstraintsDescription">
-              <JSplitPaneConstraints position="right"/>
-            </Constraint>
-          </Constraints>
-
-          <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-          <SubComponents>
-            <Container class="javax.swing.JScrollPane" name="jScrollPane2">
-              <AuxValues>
-                <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
-              </AuxValues>
-              <Constraints>
-                <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-                  <GridBagConstraints gridX="0" gridY="1" gridWidth="0" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="1.0"/>
-                </Constraint>
-              </Constraints>
-
-              <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
-              <SubComponents>
-                <Component class="javax.swing.JTree" name="jTree1">
-                </Component>
-              </SubComponents>
-            </Container>
-            <Component class="javax.swing.JLabel" name="jLabel1">
-              <Properties>
-                <Property name="text" type="java.lang.String" value="Flow pipe elements"/>
-                <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-                  <Dimension value="[335, 16]"/>
-                </Property>
-                <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-                  <Dimension value="[335, 16]"/>
-                </Property>
-                <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-                  <Dimension value="[335, 16]"/>
-                </Property>
-              </Properties>
-              <Constraints>
-                <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-                  <GridBagConstraints gridX="-1" gridY="0" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-                </Constraint>
-              </Constraints>
-            </Component>
-            <Component class="javax.swing.JLabel" name="jLabel2">
-              <Properties>
-                <Property name="text" type="java.lang.String" value="Input data type"/>
-                <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-                  <Dimension value="[140, 16]"/>
-                </Property>
-                <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-                  <Dimension value="[140, 16]"/>
-                </Property>
-                <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-                  <Dimension value="[140, 16]"/>
-                </Property>
-              </Properties>
-              <Constraints>
-                <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-                  <GridBagConstraints gridX="-1" gridY="0" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-                </Constraint>
-              </Constraints>
-            </Component>
-            <Component class="javax.swing.JLabel" name="jLabel3">
-              <Properties>
-                <Property name="text" type="java.lang.String" value="Output data type"/>
-              </Properties>
-              <Constraints>
-                <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-                  <GridBagConstraints gridX="-1" gridY="0" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-                </Constraint>
-              </Constraints>
-            </Component>
-          </SubComponents>
-        </Container>
-      </SubComponents>
-    </Container>
-  </SubComponents>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/QRTdaConfiguratorFrame.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/QRTdaConfiguratorFrame.java
deleted file mode 100755
index 6caa4fcb18ead9fe3f85a5d37bd28873db0c81aa..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/QRTdaConfiguratorFrame.java
+++ /dev/null
@@ -1,426 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.swing;
-
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.misc.QRAvailableElements;
-import edu.nps.moves.qrtda.elements.misc.QRAvailableElements.QRElementDescriptor;
-import edu.nps.moves.qrtda.elements.QRFlowLink;
-import edu.nps.moves.qrtda.elements.misc.PipeCategory;
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Font;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
-import java.lang.reflect.ParameterizedType;
-import java.util.HashMap;
-import java.util.Set;
-import javax.swing.*;
-import javax.swing.border.Border;
-import javax.swing.tree.*;
-
-/**
- * QRTdaConfiguratorFrame.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class QRTdaConfiguratorFrame extends javax.swing.JFrame
-{
-  static final String elementPath    = "edu/nps/moves/qrtda/elements";
-  static final String elementPackage = "edu.nps.moves.qrtda.elements";
-
-  static final String jarSeparator = "!";
-  static final String fileSep;
-
-  static {
-    fileSep = System.getProperty("file.separator");
-  }
-
-  private  HashMap<PipeCategory,MutableTreeNode> catMap;
-  private ElementTreeModel treeMod;
-  
-  public QRTdaConfiguratorFrame()
-  {
-    catMap = new HashMap<>();
-    initComponents();
-    
-    jTree1.setModel(treeMod=new ElementTreeModel());
-    jTree1.setCellRenderer(new TreeElementRenderer());
-    fillData();
-    
-    testFillLeft();
-    for (int i = 0; i < jTree1.getRowCount(); i++)
-      jTree1.expandRow(i);
-    jTree1.setRootVisible(false);
-  }
-
-  public QRTdaConfiguratorFrame(QRTdaGuiPanel pan, TdaEnvironment env)
-  {
-    this();
-
-    elementPan.removeAll();
-    QRFlowLink[] links = env.getPipeArray(pan);
-    for (QRFlowLink qrfl : links) {
-      JComponent comp;
-      elementPan.add(comp = new ConfigElementGui(qrfl));
-      comp.addMouseListener(selLis);
-    }
-    elementPan.add(Box.createVerticalGlue());
-  }
-  
-  private void testFillLeft()
-  {
-    Set<String> keys = QRAvailableElements.elementMap.keySet();
-    for(String key : keys) {
-      QRElementDescriptor qred = QRAvailableElements.getElementDescriptor(key);
-      JComponent comp;
-      this.elementPan.add(comp=new ConfigElementGui(qred));
-      comp.addMouseListener(selLis);
-    }
-    elementPan.add(Box.createVerticalGlue());
-  }
-  LeftListener selLis = new LeftListener();
-
-  class LeftListener extends MouseAdapter
-  {
-    @Override
-    public void mouseClicked(MouseEvent e)
-    {
-      setSelectedBorder((JComponent) e.getComponent(), true);
-    }
-  };
-  private JComponent oldSelected = null;
-  private Border oldBorder = null;
-  private final Border selBorder = BorderFactory.createLineBorder(Color.red,5);
-
-  private void setSelectedBorder(JComponent c, boolean yn)
-  {
-    if (oldSelected != null) {
-      oldSelected.setBorder(oldBorder);
-    }
-    oldBorder = c.getBorder();
-    c.setBorder(selBorder);
-    oldSelected = c;
-  }
-
-  private void fillData()
-  {
-    PipeCategory[] cats = PipeCategory.values();
-    int pos = 0;
-    for(PipeCategory cat : cats) {
-      DefaultMutableTreeNode nod = new DefaultMutableTreeNode(cat);
-      treeMod.insertNodeInto(nod, (DefaultMutableTreeNode)treeMod.getRoot(), pos++);
-      catMap.put(cat, nod);
-    }
-
-    Set<String> keys = QRAvailableElements.elementMap.keySet();
-    for(String nm : keys) {
-      QRElementDescriptor ed = QRAvailableElements.getElementDescriptor(nm);
-      DefaultMutableTreeNode dmtn = new DefaultMutableTreeNode(ed);
-      treeMod.insertNodeInto(dmtn, catMap.get(ed.category), 0);
-    }
-  }
-
-  /**
-   * This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The content of this method is always
-   * regenerated by the Form Editor.
-   */
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-    java.awt.GridBagConstraints gridBagConstraints;
-
-    jSplitPane1 = new javax.swing.JSplitPane();
-    leftPan = new javax.swing.JPanel();
-    jScrollPane1 = new javax.swing.JScrollPane();
-    elementPan = new javax.swing.JPanel();
-    buttPan = new javax.swing.JPanel();
-    jButton1 = new javax.swing.JButton();
-    jButton2 = new javax.swing.JButton();
-    jButton3 = new javax.swing.JButton();
-    jLabel4 = new javax.swing.JLabel();
-    rightPan = new javax.swing.JPanel();
-    jScrollPane2 = new javax.swing.JScrollPane();
-    jTree1 = new javax.swing.JTree();
-    jLabel1 = new javax.swing.JLabel();
-    jLabel2 = new javax.swing.JLabel();
-    jLabel3 = new javax.swing.JLabel();
-
-    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
-
-    leftPan.setLayout(new java.awt.GridBagLayout());
-
-    jScrollPane1.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
-
-    elementPan.setLayout(new javax.swing.BoxLayout(elementPan, javax.swing.BoxLayout.Y_AXIS));
-    jScrollPane1.setViewportView(elementPan);
-
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
-    gridBagConstraints.weightx = 1.0;
-    gridBagConstraints.weighty = 1.0;
-    leftPan.add(jScrollPane1, gridBagConstraints);
-
-    buttPan.setLayout(new java.awt.GridBagLayout());
-
-    jButton1.setText("up");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
-    gridBagConstraints.weightx = 0.5;
-    buttPan.add(jButton1, gridBagConstraints);
-
-    jButton2.setText("down");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 1;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    buttPan.add(jButton2, gridBagConstraints);
-
-    jButton3.setText("delete");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 2;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
-    gridBagConstraints.weightx = 0.5;
-    buttPan.add(jButton3, gridBagConstraints);
-
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridy = 2;
-    leftPan.add(buttPan, gridBagConstraints);
-
-    jLabel4.setText("Data flow name: ");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 0;
-    leftPan.add(jLabel4, gridBagConstraints);
-
-    jSplitPane1.setLeftComponent(leftPan);
-
-    rightPan.setLayout(new java.awt.GridBagLayout());
-
-    jScrollPane2.setViewportView(jTree1);
-
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
-    gridBagConstraints.weightx = 1.0;
-    gridBagConstraints.weighty = 1.0;
-    rightPan.add(jScrollPane2, gridBagConstraints);
-
-    jLabel1.setText("Flow pipe elements");
-    jLabel1.setMaximumSize(new java.awt.Dimension(335, 16));
-    jLabel1.setMinimumSize(new java.awt.Dimension(335, 16));
-    jLabel1.setPreferredSize(new java.awt.Dimension(335, 16));
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridy = 0;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    rightPan.add(jLabel1, gridBagConstraints);
-
-    jLabel2.setText("Input data type");
-    jLabel2.setMaximumSize(new java.awt.Dimension(140, 16));
-    jLabel2.setMinimumSize(new java.awt.Dimension(140, 16));
-    jLabel2.setPreferredSize(new java.awt.Dimension(140, 16));
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridy = 0;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    rightPan.add(jLabel2, gridBagConstraints);
-
-    jLabel3.setText("Output data type");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridy = 0;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    rightPan.add(jLabel3, gridBagConstraints);
-
-    jSplitPane1.setRightComponent(rightPan);
-
-    getContentPane().add(jSplitPane1, java.awt.BorderLayout.CENTER);
-
-    pack();
-  }// </editor-fold>//GEN-END:initComponents
-
-  /**
-   * @param args the command line arguments
-   */
-  public static void main(String args[])
-  {
-    /* Set the Nimbus look and feel */
-    //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
-        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
-     * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
-     */
-    try {
-      for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
-        if ("Nimbus".equals(info.getName())) {
-          javax.swing.UIManager.setLookAndFeel(info.getClassName());
-          break;
-        }
-      }
-    }
-    catch (ClassNotFoundException ex) {
-      java.util.logging.Logger.getLogger(QRTdaConfiguratorFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
-    }
-    catch (InstantiationException ex) {
-      java.util.logging.Logger.getLogger(QRTdaConfiguratorFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
-    }
-    catch (IllegalAccessException ex) {
-      java.util.logging.Logger.getLogger(QRTdaConfiguratorFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
-    }
-    catch (javax.swing.UnsupportedLookAndFeelException ex) {
-      java.util.logging.Logger.getLogger(QRTdaConfiguratorFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
-    }
-    //</editor-fold>
-
-    /* Create and display the form */
-    java.awt.EventQueue.invokeLater(new Runnable()
-    {
-      @Override
-      public void run()
-      {
-        JFrame fr;
-       (fr = new QRTdaConfiguratorFrame()).setVisible(true);
-       fr.setSize(675, 500);
-      }
-    });
-  }
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  private javax.swing.JPanel buttPan;
-  private javax.swing.JPanel elementPan;
-  private javax.swing.JButton jButton1;
-  private javax.swing.JButton jButton2;
-  private javax.swing.JButton jButton3;
-  private javax.swing.JLabel jLabel1;
-  private javax.swing.JLabel jLabel2;
-  private javax.swing.JLabel jLabel3;
-  private javax.swing.JLabel jLabel4;
-  private javax.swing.JScrollPane jScrollPane1;
-  private javax.swing.JScrollPane jScrollPane2;
-  private javax.swing.JSplitPane jSplitPane1;
-  private javax.swing.JTree jTree1;
-  private javax.swing.JPanel leftPan;
-  private javax.swing.JPanel rightPan;
-  // End of variables declaration//GEN-END:variables
-
-
-  class ElementListModel extends DefaultListModel<QRElementDescriptor>
-  {
-
-    @Override
-    public void addElement(QRElementDescriptor element)
-    {
-      super.addElement(element);
-    }
-
-    @Override
-    public void add(int index, QRElementDescriptor element)
-    {
-      super.add(index, element);
-    }
-    
-  }
-  class ElementTreeModel extends DefaultTreeModel
-  {
-    public ElementTreeModel()
-    {
-      super(new DefaultMutableTreeNode("Elements"));
-    }
-  }
-  
-  class ElementRenderer extends DefaultListCellRenderer
-  {
-    JLabel stamp = new JLabel();
-    @Override
-    public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected, boolean cellHasFocus)
-    {
-      QRElementDescriptor qed = (QRElementDescriptor)value;
-      String name = qed.element.getSimpleName();
-      Class c = (Class)((ParameterizedType) qed.element.getGenericSuperclass()).getActualTypeArguments()[0];
-      Class c2 = (Class)((ParameterizedType) qed.element.getGenericSuperclass()).getActualTypeArguments()[1];     
-      PipeCategory cat = qed.category;
-           
-      stamp.setText(name+" "+cat+" "+c.getSimpleName()+" "+c2.getSimpleName());
-      
-      return stamp;//super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
-    }
-    
-  }
-  class TreeElementRenderer extends DefaultTreeCellRenderer
-  {
-    private Font fxwd;
-    StringBuilder sb = new StringBuilder();
-    @Override
-    public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus)
-    {
-      TreeElementRenderer comp = (TreeElementRenderer)super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
-      if(fxwd == null) {
-        fxwd = comp.getFont();
-        fxwd = new Font("Courier",Font.PLAIN,fxwd.getSize());
-      }
-      comp.setFont(fxwd);
-      DefaultMutableTreeNode dmtn = (DefaultMutableTreeNode)value;
-      value = dmtn.getUserObject();
-      if(value instanceof QRElementDescriptor) {
-        QRElementDescriptor qed = (QRElementDescriptor)value;
-        sb.setLength(0);
-        sb.append(qed.element.getSimpleName());
-        int len = sb.length();
-        len = Math.max(40-len, 0);
-        for(int i=0;i<len;i++)
-          sb.append(' ');
-        sb.append(qed.input.getSimpleName());
-        len = sb.length();
-        len = Math.max(60-len, 0);
-        for(int i=0;i<len;i++)
-          sb.append(' ');
-        sb.append(qed.output.getSimpleName());        
-        comp.setText(sb.toString());
-      }
-      else if(value instanceof PipeCategory) {
-        PipeCategory cat = (PipeCategory)value;
-        comp.setText("<html><b>"+cat.toString());
-        comp.setForeground(getRenderColor(cat));
-      }
-      return comp;
-    }
-    
-    
-    private Color getRenderColor(PipeCategory cat)
-    {
-      if(cat == PipeCategory.TEXT_SOURCE || cat == PipeCategory.IMAGE_SOURCE)
-        return Color.blue;
-      else if(cat == PipeCategory.TEXT_SINK || cat == PipeCategory.IMAGE_SINK)
-        return Color.red;
-      return Color.black;        
-    }
-    
-  }
-  
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/QRTdaConfiguratorPanel.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/QRTdaConfiguratorPanel.form
deleted file mode 100644
index ce346e733c834136f634a964e866daacb13de497..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/QRTdaConfiguratorPanel.form
+++ /dev/null
@@ -1,219 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,44,0,0,3,61"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
-  <SubComponents>
-    <Container class="javax.swing.JSplitPane" name="splitPane">
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
-          <BorderConstraints direction="Center"/>
-        </Constraint>
-      </Constraints>
-
-      <Layout class="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout"/>
-      <SubComponents>
-        <Container class="javax.swing.JPanel" name="leftPan">
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout$JSplitPaneConstraintsDescription">
-              <JSplitPaneConstraints position="left"/>
-            </Constraint>
-          </Constraints>
-
-          <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-          <SubComponents>
-            <Container class="javax.swing.JScrollPane" name="elementListScroller">
-              <Properties>
-                <Property name="horizontalScrollBarPolicy" type="int" value="31"/>
-              </Properties>
-              <Constraints>
-                <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-                  <GridBagConstraints gridX="0" gridY="1" gridWidth="1" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="1.0"/>
-                </Constraint>
-              </Constraints>
-
-              <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
-              <SubComponents>
-                <Component class="javax.swing.JList" name="elementJList">
-                  <Properties>
-                    <Property name="selectionMode" type="int" value="0"/>
-                  </Properties>
-                  <Events>
-                    <EventHandler event="valueChanged" listener="javax.swing.event.ListSelectionListener" parameters="javax.swing.event.ListSelectionEvent" handler="elementJListValueChanged"/>
-                  </Events>
-                </Component>
-              </SubComponents>
-            </Container>
-            <Container class="javax.swing.JPanel" name="buttPan">
-              <Constraints>
-                <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-                  <GridBagConstraints gridX="-1" gridY="2" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-                </Constraint>
-              </Constraints>
-
-              <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-              <SubComponents>
-                <Component class="javax.swing.JButton" name="upButt">
-                  <Properties>
-                    <Property name="text" type="java.lang.String" value="up"/>
-                    <Property name="enabled" type="boolean" value="false"/>
-                  </Properties>
-                  <Events>
-                    <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="upButtActionPerformed"/>
-                  </Events>
-                  <Constraints>
-                    <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-                      <GridBagConstraints gridX="0" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="13" weightX="0.5" weightY="0.0"/>
-                    </Constraint>
-                  </Constraints>
-                </Component>
-                <Component class="javax.swing.JButton" name="downButt">
-                  <Properties>
-                    <Property name="text" type="java.lang.String" value="down"/>
-                    <Property name="enabled" type="boolean" value="false"/>
-                  </Properties>
-                  <Events>
-                    <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="downButtActionPerformed"/>
-                  </Events>
-                  <Constraints>
-                    <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-                      <GridBagConstraints gridX="1" gridY="0" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-                    </Constraint>
-                  </Constraints>
-                </Component>
-                <Component class="javax.swing.JButton" name="delButt">
-                  <Properties>
-                    <Property name="text" type="java.lang.String" value="delete"/>
-                    <Property name="enabled" type="boolean" value="false"/>
-                  </Properties>
-                  <Events>
-                    <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="delButtActionPerformed"/>
-                  </Events>
-                  <Constraints>
-                    <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-                      <GridBagConstraints gridX="2" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="0.5" weightY="0.0"/>
-                    </Constraint>
-                  </Constraints>
-                </Component>
-                <Component class="javax.swing.JButton" name="saveButt">
-                  <Properties>
-                    <Property name="text" type="java.lang.String" value="apply changes"/>
-                    <Property name="enabled" type="boolean" value="false"/>
-                  </Properties>
-                  <Events>
-                    <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="saveButtActionPerformed"/>
-                  </Events>
-                  <Constraints>
-                    <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-                      <GridBagConstraints gridX="0" gridY="1" gridWidth="0" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-                    </Constraint>
-                  </Constraints>
-                </Component>
-              </SubComponents>
-            </Container>
-            <Component class="javax.swing.JLabel" name="jLabel4">
-              <Properties>
-                <Property name="text" type="java.lang.String" value="Data flow name: "/>
-              </Properties>
-              <Constraints>
-                <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-                  <GridBagConstraints gridX="0" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-                </Constraint>
-              </Constraints>
-            </Component>
-          </SubComponents>
-        </Container>
-        <Container class="javax.swing.JPanel" name="rightPan">
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout$JSplitPaneConstraintsDescription">
-              <JSplitPaneConstraints position="right"/>
-            </Constraint>
-          </Constraints>
-
-          <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-          <SubComponents>
-            <Container class="javax.swing.JScrollPane" name="jScrollPane2">
-              <AuxValues>
-                <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
-              </AuxValues>
-              <Constraints>
-                <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-                  <GridBagConstraints gridX="0" gridY="1" gridWidth="0" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="1.0"/>
-                </Constraint>
-              </Constraints>
-
-              <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
-              <SubComponents>
-                <Component class="javax.swing.JTree" name="availableJTree">
-                  <Properties>
-                    <Property name="dragEnabled" type="boolean" value="true"/>
-                  </Properties>
-                </Component>
-              </SubComponents>
-            </Container>
-            <Component class="javax.swing.JLabel" name="jLabel1">
-              <Properties>
-                <Property name="text" type="java.lang.String" value="Flow pipe elements"/>
-                <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-                  <Dimension value="[335, 16]"/>
-                </Property>
-                <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-                  <Dimension value="[335, 16]"/>
-                </Property>
-                <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-                  <Dimension value="[335, 16]"/>
-                </Property>
-              </Properties>
-              <Constraints>
-                <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-                  <GridBagConstraints gridX="-1" gridY="0" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-                </Constraint>
-              </Constraints>
-            </Component>
-            <Component class="javax.swing.JLabel" name="jLabel2">
-              <Properties>
-                <Property name="text" type="java.lang.String" value="Input data type"/>
-                <Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-                  <Dimension value="[140, 16]"/>
-                </Property>
-                <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-                  <Dimension value="[140, 16]"/>
-                </Property>
-                <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-                  <Dimension value="[140, 16]"/>
-                </Property>
-              </Properties>
-              <Constraints>
-                <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-                  <GridBagConstraints gridX="-1" gridY="0" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-                </Constraint>
-              </Constraints>
-            </Component>
-            <Component class="javax.swing.JLabel" name="jLabel3">
-              <Properties>
-                <Property name="text" type="java.lang.String" value="Output data type"/>
-              </Properties>
-              <Constraints>
-                <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-                  <GridBagConstraints gridX="-1" gridY="0" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-                </Constraint>
-              </Constraints>
-            </Component>
-          </SubComponents>
-        </Container>
-      </SubComponents>
-    </Container>
-  </SubComponents>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/QRTdaConfiguratorPanel.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/QRTdaConfiguratorPanel.java
deleted file mode 100644
index 8bbe99387f7e1411675c2512d0902d6dc1f08511..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/QRTdaConfiguratorPanel.java
+++ /dev/null
@@ -1,645 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.swing;
-
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.misc.QRAvailableElements;
-import edu.nps.moves.qrtda.elements.misc.QRAvailableElements.QRElementDescriptor;
-import edu.nps.moves.qrtda.elements.QRFlowLink;
-import edu.nps.moves.qrtda.elements.misc.PipeCategory;
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Font;
-import java.awt.datatransfer.*;
-import java.awt.event.*;
-import java.io.IOException;
-import java.util.*;
-import javax.swing.*;
-import javax.swing.border.Border;
-import javax.swing.tree.*;
-
-import static javax.swing.TransferHandler.COPY;
-
-/**
- * QRTdaConfiguratorPanel.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class QRTdaConfiguratorPanel extends JPanel
-{
-  private static final long serialVersionUID = 6134979571044265559L;
-  
-  static final String elementPath    = "edu/nps/moves/qrtda/elements";
-  static final String elementPackage = "edu.nps.moves.qrtda.elements";
-
-  static final String jarSeparator = "!";
-  static final String fileSep;
-
-  static {
-    fileSep = System.getProperty("file.separator");
-  }
-
-  private HashMap<PipeCategory,MutableTreeNode> catMap = new HashMap<>();
-  private QRTdaConfiguratorPanel.ElementTreeModel treeMod;
-  private QRTdaGuiPanel pan;
-  private QRTdaConfiguratorDialog dialog;
-
-  public QRTdaConfiguratorPanel()
-  {
-    initComponents();
-    
-    elementJList.setModel(new DefaultListModel());
-    elementJList.setDragEnabled(true);
-    elementJList.setDropMode(DropMode.ON);
-    elementJList.setTransferHandler(new ListTransferHandler());
-    
-    availableJTree.setModel(treeMod=new QRTdaConfiguratorPanel.ElementTreeModel());
-    availableJTree.setCellRenderer(new QRTdaConfiguratorPanel.TreeElementRenderer());
-    availableJTree.setDragEnabled(true);
-    availableJTree.setTransferHandler(new TreeTransferHandler());
-    ToolTipManager.sharedInstance().registerComponent(availableJTree);
-    
-    fillData();
-    
-    for (int i = 0; i < availableJTree.getRowCount(); i++)
-      availableJTree.expandRow(i);
-    availableJTree.setRootVisible(false);   
-  }
- 
-  public QRTdaConfiguratorPanel(QRTdaGuiPanel pan, TdaEnvironment env, QRTdaConfiguratorDialog dialog)
-  {
-    this();
-    this.pan = pan;
-    this.dialog = dialog;
-    dialog.addWindowListener(windowLis);
-    
-    //elementPan.removeAll();
-    boolean rendererAdded=false;
-    elementJList.removeAll();
-    QRFlowLink[] links = env.getPipeArray(pan);
-    for (QRFlowLink qrfl : links) {
-      QRElementDescriptor qed = QRAvailableElements.getElementDescriptor(qrfl.getClass().getSimpleName());
-      if(!rendererAdded) {
-        rendererAdded = true;              
-        elementJList.setCellRenderer(new ConfigElementGui(qrfl));
-      }
-      ((DefaultListModel)elementJList.getModel()).addElement(new ElementDescriptorWrapper(qed));
-    }
-    elementJList.repaint();
-  }
-  
-  QRTdaConfiguratorPanel.LeftListener selLis = new QRTdaConfiguratorPanel.LeftListener();
-  
-  private boolean isDirty()
-  {
-    return saveButt.isEnabled();
-  }
-  
-  WindowListener windowLis = new WindowAdapter()
-  {
-    @Override
-    public void windowClosing(WindowEvent e)
-    {
-       if(isDirty()) {
-         Object[] options = { "YES", "CANCEL" };
-           int ret = JOptionPane.showOptionDialog(null, "Exit without applying changes?", "Warning",
-                                        JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE,
-                                        null, options, options[0]);
-           
-           if(ret == 1)//yes = 0, cancel = 1;
-             return;  // don't close
-       }
-       dialog.dispose();
-    }
-  };
-  
-  class LeftListener extends MouseAdapter
-  {
-    @Override
-    public void mouseClicked(MouseEvent e)
-    {
-      setSelectedBorder((JComponent) e.getComponent(), true);
-    }
-  };
-  private JComponent oldSelected = null;
-  private Border oldBorder = null;
-  private final Border selBorder   = BorderFactory.createLineBorder(Color.red,5);
-
-  private void setSelectedBorder(JComponent c, boolean yn)
-  {
-    if (oldSelected != null) {
-      oldSelected.setBorder(oldBorder);
-    }
-    oldBorder = c.getBorder();
-    c.setBorder(selBorder);
-    oldSelected = c;
-  }
-
-  private void fillData()
-  {
-    PipeCategory[] cats = PipeCategory.values();
-    int pos = 0;
-    for(PipeCategory cat : cats) {
-      DefaultMutableTreeNode nod = new DefaultMutableTreeNode(cat);
-      treeMod.insertNodeInto(nod, (DefaultMutableTreeNode)treeMod.getRoot(), pos++);
-      catMap.put(cat, nod);
-    }
-
-    Set<String> keys = QRAvailableElements.elementMap.keySet();
-    for(String nm : keys) {
-      QRAvailableElements.QRElementDescriptor ed = QRAvailableElements.getElementDescriptor(nm);
-      DefaultMutableTreeNode dmtn = new DefaultMutableTreeNode(ed);
-      treeMod.insertNodeInto(dmtn, catMap.get(ed.category), 0);
-    }
-  }
-  
-  boolean isListConsistent()
-  {
-    DefaultListModel lisMod = (DefaultListModel)elementJList.getModel();
-    int sz = lisMod.getSize();
-    
-    boolean overallRet = true;
-    for(int i=0; i<(sz-1); i++) {
-      ElementDescriptorWrapper wrap1 = (ElementDescriptorWrapper)lisMod.getElementAt(i);
-      wrap1.inputGood = wrap1.outputGood = true; // default
-      QRAvailableElements.QRElementDescriptor qed1 = wrap1.descriptor;
-      
-      ElementDescriptorWrapper wrap2 = (ElementDescriptorWrapper)lisMod.getElementAt(i+1);
-      wrap2.inputGood = wrap2.outputGood = true;
-      QRAvailableElements.QRElementDescriptor qed2 = wrap2.descriptor;
-     
-      boolean ok = (qed1.output == qed2.input);
-      
-      wrap1.outputGood = ok;
-      wrap2.inputGood = ok;
-      if(!ok)
-        overallRet = false;
-    }   
-    return overallRet;
-  }
-  
-  private final DataFlavor flav = new DataFlavor(QRElementDescriptor.class,"QR flow element");
-
-  class ListTransferHandler extends TransferHandler
-  { 
-    private static final long serialVersionUID = 1L;
-    @Override
-    public boolean canImport(TransferHandler.TransferSupport support)
-    {
-      return support.getTransferable().isDataFlavorSupported(flav);
-    }   
-    @Override
-    public boolean importData(TransferHandler.TransferSupport support)
-    {
-      System.out.println("importData");
-      try {
-        JList.DropLocation dl = (JList.DropLocation) support.getDropLocation();
-        int row = dl.getIndex();
-        QRElementDescriptor node = (QRElementDescriptor) support.getTransferable().getTransferData(flav);
-        DefaultListModel mod = (DefaultListModel) elementJList.getModel();
-        if (row == -1) {
-          Object o;
-          mod.addElement(o=new ElementDescriptorWrapper(node)); 
-          elementJList.setSelectedIndex(mod.indexOf(o));
-        }
-        else {
-          mod.add(row, new ElementDescriptorWrapper(node));
-          elementJList.setSelectedIndex(row);
-        }
-        isListConsistent();
-        saveButt.setEnabled(true);
-        elementJList.repaint();
-        return true;
-      }
-      catch (UnsupportedFlavorException | IOException e) {
-        return false;
-      }
-    }     
-    @Override
-    public int getSourceActions(JComponent c)
-    {
-      return COPY;
-    }     
-  }
-  
-  class TreeTransferHandler extends TransferHandler
-  {
-    private static final long serialVersionUID = 1L;
-    @Override
-    public int getSourceActions(JComponent c)
-    {
-      return COPY;
-    } 
-    @Override
-    public Transferable createTransferable(JComponent c)
-    {
-      return new Transferable()
-      {
-        @Override
-        public DataFlavor[] getTransferDataFlavors()
-        {
-          return new DataFlavor[]{flav};
-        }
-        @Override
-        public boolean isDataFlavorSupported(DataFlavor flavor)
-        {
-          return true;
-        }
-        @Override
-        public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException
-        {
-          System.out.println("getTransferData");
-          DefaultMutableTreeNode node = (DefaultMutableTreeNode)availableJTree.getSelectionModel().getSelectionPath().getLastPathComponent();
-          if(node.getUserObject() instanceof QRElementDescriptor) {
-            return node.getUserObject(); 
-          }
-          else if (node.getUserObject() instanceof PipeCategory) {
-            return new StringSelection(((PipeCategory)node.getUserObject()).name());
-          }
-          else return new StringSelection(node.getUserObject().toString());
-        }
-      };
-    }
-  }
-
-  class ElementTreeModel extends DefaultTreeModel
-  {
-    private static final long serialVersionUID = 1L;
-    public ElementTreeModel()
-    {
-      super(new DefaultMutableTreeNode("Elements"));
-    }
-  }
-
-  class TreeElementRenderer extends DefaultTreeCellRenderer
-  {
-    private static final long serialVersionUID = 1L;
-    private Font fxwd;
-    StringBuilder sb = new StringBuilder();
-    @Override
-    public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus)
-    {
-      QRTdaConfiguratorPanel.TreeElementRenderer comp = (QRTdaConfiguratorPanel.TreeElementRenderer)super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
-      if(fxwd == null) {
-        fxwd = comp.getFont();
-        fxwd = new Font("Courier",Font.PLAIN,fxwd.getSize());
-      }
-      comp.setFont(fxwd);
-      DefaultMutableTreeNode dmtn = (DefaultMutableTreeNode)value;
-      value = dmtn.getUserObject();
-      if(value instanceof QRAvailableElements.QRElementDescriptor) {
-        QRAvailableElements.QRElementDescriptor qed = (QRAvailableElements.QRElementDescriptor)value;
-        sb.setLength(0);
-        sb.append(qed.element.getSimpleName());
-        int len = sb.length();
-        len = Math.max(25-len,0);
-        for(int i=0;i<len;i++)
-          sb.append(' ');
-        
-        sb.append(qed.handle); //element.getSimpleName());
-        len = sb.length();
-        len = Math.max(65-len, 0);
-        for(int i=0;i<len;i++)
-          sb.append(' ');
-        
-        sb.append(qed.input.getSimpleName());
-        len = sb.length();
-        len = Math.max(85-len, 0);
-        for(int i=0;i<len;i++)
-          sb.append(' ');
-        
-        sb.append(qed.output.getSimpleName());        
-        comp.setText(sb.toString());
-        comp.setToolTipText(qed.longDescription);
-      }
-      else if(value instanceof PipeCategory) {
-        PipeCategory cat = (PipeCategory)value;
-        comp.setText("<html><b>"+cat.toString());
-        comp.setForeground(getRenderColor(cat));
-        comp.setToolTipText(cat.getDescription());
-      }
-      return comp;
-    }
-       
-    private Color getRenderColor(PipeCategory cat)
-    {
-      if(cat == PipeCategory.TEXT_SOURCE || cat == PipeCategory.IMAGE_SOURCE)
-        return Color.blue;
-      else if(cat == PipeCategory.TEXT_SINK || cat == PipeCategory.IMAGE_SINK)
-        return Color.red;
-      return Color.black;        
-    }    
-  }  
-  
-  public class ElementDescriptorWrapper
-  {
-    public QRElementDescriptor descriptor;
-    public boolean inputGood = true;
-    public boolean outputGood = true;
-    
-    public ElementDescriptorWrapper(QRElementDescriptor descriptor)
-    {
-      this.descriptor = descriptor;
-    }
-  }
-  
-  /**
-   * This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The content of this method is always
-   * regenerated by the Form Editor.
-   */
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-    java.awt.GridBagConstraints gridBagConstraints;
-
-    splitPane = new javax.swing.JSplitPane();
-    leftPan = new javax.swing.JPanel();
-    elementListScroller = new javax.swing.JScrollPane();
-    elementJList = new javax.swing.JList();
-    buttPan = new javax.swing.JPanel();
-    upButt = new javax.swing.JButton();
-    downButt = new javax.swing.JButton();
-    delButt = new javax.swing.JButton();
-    saveButt = new javax.swing.JButton();
-    jLabel4 = new javax.swing.JLabel();
-    rightPan = new javax.swing.JPanel();
-    jScrollPane2 = new javax.swing.JScrollPane();
-    availableJTree = new javax.swing.JTree();
-    jLabel1 = new javax.swing.JLabel();
-    jLabel2 = new javax.swing.JLabel();
-    jLabel3 = new javax.swing.JLabel();
-
-    setLayout(new java.awt.BorderLayout());
-
-    leftPan.setLayout(new java.awt.GridBagLayout());
-
-    elementListScroller.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
-
-    elementJList.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
-    elementJList.addListSelectionListener(new javax.swing.event.ListSelectionListener()
-    {
-      public void valueChanged(javax.swing.event.ListSelectionEvent evt)
-      {
-        elementJListValueChanged(evt);
-      }
-    });
-    elementListScroller.setViewportView(elementJList);
-
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
-    gridBagConstraints.weightx = 1.0;
-    gridBagConstraints.weighty = 1.0;
-    leftPan.add(elementListScroller, gridBagConstraints);
-
-    buttPan.setLayout(new java.awt.GridBagLayout());
-
-    upButt.setText("up");
-    upButt.setEnabled(false);
-    upButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        upButtActionPerformed(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 0;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
-    gridBagConstraints.weightx = 0.5;
-    buttPan.add(upButt, gridBagConstraints);
-
-    downButt.setText("down");
-    downButt.setEnabled(false);
-    downButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        downButtActionPerformed(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 1;
-    gridBagConstraints.gridy = 0;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    buttPan.add(downButt, gridBagConstraints);
-
-    delButt.setText("delete");
-    delButt.setEnabled(false);
-    delButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        delButtActionPerformed(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 2;
-    gridBagConstraints.gridy = 0;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
-    gridBagConstraints.weightx = 0.5;
-    buttPan.add(delButt, gridBagConstraints);
-
-    saveButt.setText("apply changes");
-    saveButt.setEnabled(false);
-    saveButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        saveButtActionPerformed(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    buttPan.add(saveButt, gridBagConstraints);
-
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridy = 2;
-    leftPan.add(buttPan, gridBagConstraints);
-
-    jLabel4.setText("Data flow name: ");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 0;
-    leftPan.add(jLabel4, gridBagConstraints);
-
-    splitPane.setLeftComponent(leftPan);
-
-    rightPan.setLayout(new java.awt.GridBagLayout());
-
-    availableJTree.setDragEnabled(true);
-    jScrollPane2.setViewportView(availableJTree);
-
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
-    gridBagConstraints.weightx = 1.0;
-    gridBagConstraints.weighty = 1.0;
-    rightPan.add(jScrollPane2, gridBagConstraints);
-
-    jLabel1.setText("Flow pipe elements");
-    jLabel1.setMaximumSize(new java.awt.Dimension(335, 16));
-    jLabel1.setMinimumSize(new java.awt.Dimension(335, 16));
-    jLabel1.setPreferredSize(new java.awt.Dimension(335, 16));
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridy = 0;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    rightPan.add(jLabel1, gridBagConstraints);
-
-    jLabel2.setText("Input data type");
-    jLabel2.setMaximumSize(new java.awt.Dimension(140, 16));
-    jLabel2.setMinimumSize(new java.awt.Dimension(140, 16));
-    jLabel2.setPreferredSize(new java.awt.Dimension(140, 16));
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridy = 0;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    rightPan.add(jLabel2, gridBagConstraints);
-
-    jLabel3.setText("Output data type");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridy = 0;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    rightPan.add(jLabel3, gridBagConstraints);
-
-    splitPane.setRightComponent(rightPan);
-
-    add(splitPane, java.awt.BorderLayout.CENTER);
-  }// </editor-fold>//GEN-END:initComponents
-
-  boolean inButtonHandlers = false;
-  
-  private void adjustUpDown()
-  {
-    int idx = elementJList.getSelectedIndex();
-    int maxIdx = elementJList.getModel().getSize()-1;
-    downButt.setEnabled(idx != maxIdx);
-    upButt.setEnabled(idx != 0);
-  }
-  
-  private void elementJListValueChanged(javax.swing.event.ListSelectionEvent evt)//GEN-FIRST:event_elementJListValueChanged
-  {//GEN-HEADEREND:event_elementJListValueChanged
-    if (evt.getValueIsAdjusting() == false && !inButtonHandlers) {
-      boolean somethingSelected = elementJList.getSelectedIndex() != -1;
-      downButt.setEnabled(somethingSelected);
-      upButt.setEnabled(somethingSelected);
-      delButt.setEnabled(somethingSelected);
-     
-      adjustUpDown();
-    }
-  }//GEN-LAST:event_elementJListValueChanged
-
-  private void saveButtActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_saveButtActionPerformed
-  {//GEN-HEADEREND:event_saveButtActionPerformed
-    boolean oldbool = inButtonHandlers;
-    inButtonHandlers = true;
-    
-    DefaultListModel mod = (DefaultListModel)elementJList.getModel();
-    Enumeration elems = mod.elements();
-    ArrayList<String> segs = new ArrayList<>(mod.size());
-    while(elems.hasMoreElements()) {
-      ElementDescriptorWrapper wrap = (ElementDescriptorWrapper)elems.nextElement();
-      segs.add(wrap.descriptor.element.getName());
-    }
-    pan.reloadLinks(segs.toArray(new String[mod.size()]),null);  //todo this null is going to cause problems.
-    saveButt.setEnabled(false);
-   
-    
-    inButtonHandlers = oldbool;
-  }//GEN-LAST:event_saveButtActionPerformed
-
-  private void upButtActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_upButtActionPerformed
-  {//GEN-HEADEREND:event_upButtActionPerformed
-    boolean oldbool = inButtonHandlers;
-    inButtonHandlers = true;
-    
-    DefaultListModel mod = (DefaultListModel)elementJList.getModel();
-    int idx = elementJList.getSelectedIndex();
-    Object o = mod.getElementAt(idx-1);
-    mod.removeElementAt(idx-1);
-    mod.add(idx, o);
-    elementJList.setSelectedIndex(idx-1);
-    saveButt.setEnabled(true);
-    adjustUpDown();
-    inButtonHandlers = oldbool;
-  }//GEN-LAST:event_upButtActionPerformed
-
-  private void downButtActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_downButtActionPerformed
-  {//GEN-HEADEREND:event_downButtActionPerformed
-    boolean oldbool = inButtonHandlers;
-    inButtonHandlers = true;
-    
-    DefaultListModel mod = (DefaultListModel)elementJList.getModel();
-    int idx = elementJList.getSelectedIndex();
-    Object o = mod.getElementAt(idx);
-    mod.removeElementAt(idx);
-    mod.add(idx+1, o);
-    elementJList.setSelectedIndex(idx+1);
-    saveButt.setEnabled(true);
-    adjustUpDown();
-    
-    inButtonHandlers = oldbool;
-  }//GEN-LAST:event_downButtActionPerformed
-
-  private void delButtActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_delButtActionPerformed
-  {//GEN-HEADEREND:event_delButtActionPerformed
-    boolean oldbool = inButtonHandlers;
-    inButtonHandlers = true;
-    
-    DefaultListModel mod = (DefaultListModel)elementJList.getModel();
-    int idx = elementJList.getSelectedIndex();
-    mod.removeElementAt(idx);
-    saveButt.setEnabled(true);
-    adjustUpDown();
-    
-    inButtonHandlers = oldbool;
-  }//GEN-LAST:event_delButtActionPerformed
-
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  private javax.swing.JTree availableJTree;
-  private javax.swing.JPanel buttPan;
-  private javax.swing.JButton delButt;
-  private javax.swing.JButton downButt;
-  private javax.swing.JList elementJList;
-  private javax.swing.JScrollPane elementListScroller;
-  private javax.swing.JLabel jLabel1;
-  private javax.swing.JLabel jLabel2;
-  private javax.swing.JLabel jLabel3;
-  private javax.swing.JLabel jLabel4;
-  private javax.swing.JScrollPane jScrollPane2;
-  private javax.swing.JPanel leftPan;
-  private javax.swing.JPanel rightPan;
-  private javax.swing.JButton saveButt;
-  private javax.swing.JSplitPane splitPane;
-  private javax.swing.JButton upButt;
-  // End of variables declaration//GEN-END:variables
-
-}
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/QRTdaFrame.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/QRTdaFrame.java
deleted file mode 100755
index dd8938251b5fb9fd9f9bd87b29f79709092d8196..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/QRTdaFrame.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
-Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
-in source and binary forms, with or without modification, are permitted provided that the
-following conditions are met:
-
-Redistributions of source code must retain the above copyright notice, this list of conditions
-and the following disclaimer. Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the documentation and/or other
-materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
-Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
-http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
-products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
-WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-package edu.nps.moves.qrtda.swing;
-
-import edu.nps.moves.qrtda.Constants;
-import edu.nps.moves.qrtda.QRPreferences;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import java.awt.Point;
-import java.awt.event.*;
-import javax.swing.JFrame;
-import javax.swing.WindowConstants;
-
-/**
- * QRTdaFrame.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class QRTdaFrame extends JFrame
-{
-  private final TdaEnvironment env;
-  private final WindowListener closer;
-  
-  private final static Object locSync = new Object();
-  private static int lastLocationX = 0;
-  private static int lastLocationY = 0;
-  private int myLocationX;
-  private int myLocationY;
-  
-  public QRTdaFrame(TdaEnvironment env, String title, WindowListener closeListener)
-  {
-    super(title);
-    super.setSize(Constants.DEFAULTWIDTH, Constants.DEFAULTWIDTH);
-
-    synchronized(locSync) {
-      myLocationX = lastLocationX + 150;
-      lastLocationX = myLocationX;
-      myLocationY = lastLocationY + 150;
-      lastLocationY = myLocationY;
-    }
-    this.env = env;
-    closer = closeListener;
-    
-    handleLocAndSizePrefs();
-    
-    super.addWindowListener(closeListener);
-    super.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
-    
-    super.addComponentListener(moveResizeListener);
-  }
-  
-  private void handleLocAndSizePrefs()
-  {
-    String title = getTitle();
-    
-    String prefX = QRPreferences.getInstance().get(QRPreferences.LAST_WINDOW_X+title, null);
-    if(prefX != null)
-      myLocationX = Integer.parseInt(prefX);
-    else
-      QRPreferences.getInstance().put(QRPreferences.LAST_WINDOW_X+title,""+myLocationX);
-    
-    String prefY = QRPreferences.getInstance().get(QRPreferences.LAST_WINDOW_Y+title, null);
-    if(prefY != null)
-      myLocationY = Integer.parseInt(prefY);
-    else
-      QRPreferences.getInstance().put(QRPreferences.LAST_WINDOW_Y+getTitle(),""+myLocationY);
-
-    String prefWid = QRPreferences.getInstance().get(QRPreferences.LAST_WINDOW_WIDTH+title, null);
-    if(prefWid != null)
-      setSize(Integer.parseInt(prefWid),getHeight());
-    else
-      QRPreferences.getInstance().put(QRPreferences.LAST_WINDOW_WIDTH+title,""+getWidth());
-    
-    String prefHeight = QRPreferences.getInstance().get(QRPreferences.LAST_WINDOW_HEIGHT+title, null);
-    if(prefHeight != null)
-      setSize(getWidth(),Integer.parseInt(prefHeight));
-    else
-      QRPreferences.getInstance().put(QRPreferences.LAST_WINDOW_HEIGHT+title,""+getHeight());
-  }
-  
-  public int getLocationX()
-  {
-    return myLocationX;
-  }
-  
-  public int getLocationY()
-  {
-    return myLocationY;
-  }
-  
-  public void setQRTdaGuiPanel(QRTdaGuiPanel pan)
-  {
-    getContentPane().add(pan);
-  }
-  
-  public QRTdaGuiPanel getQRTdaGuipanel()
-  {
-    return (QRTdaGuiPanel)getContentPane().getComponent(0);
-  }
-  
-  public TdaEnvironment getTdaEnvironment()
-  {
-    return env;
-  }
-
-  WindowAdapter closedListener = new WindowAdapter()
-  {
-    @Override
-    public void windowClosed(WindowEvent e)
-    {
-      if (closer != null)
-        closer.windowClosed(e);
-    }
-  };
-  
-  ComponentListener moveResizeListener = new ComponentAdapter()
-  {
-    @Override
-    public void componentMoved(ComponentEvent e)
-    {
-      QRPreferences prefs = QRPreferences.getInstance();
-      Point loc = QRTdaFrame.this.getLocationOnScreen();
-      prefs.put(QRPreferences.LAST_WINDOW_X+getTitle(),""+loc.x);
-      prefs.put(QRPreferences.LAST_WINDOW_Y+getTitle(),""+loc.y);
-    }
-
-    @Override
-    public void componentResized(ComponentEvent e)
-    {
-      QRPreferences prefs = QRPreferences.getInstance();
-      prefs.put(QRPreferences.LAST_WINDOW_WIDTH+getTitle(),""+QRTdaFrame.this.getWidth());
-      prefs.put(QRPreferences.LAST_WINDOW_HEIGHT+getTitle(),""+QRTdaFrame.this.getHeight());
-    }    
-  };
-}
\ No newline at end of file
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/QRTdaGuiPanel.form b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/QRTdaGuiPanel.form
deleted file mode 100644
index d136ba344c31c9a5299a70341daa17edae59188d..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/QRTdaGuiPanel.form
+++ /dev/null
@@ -1,354 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
-  <AuxValues>
-    <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
-    <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
-    <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
-    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
-    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
-    <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,2,-43,0,0,3,-47"/>
-  </AuxValues>
-
-  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-  <SubComponents>
-    <Container class="javax.swing.JSplitPane" name="TBSplit">
-      <Properties>
-        <Property name="dividerLocation" type="int" value="700"/>
-        <Property name="orientation" type="int" value="0"/>
-      </Properties>
-      <Constraints>
-        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-          <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="1.0"/>
-        </Constraint>
-      </Constraints>
-
-      <Layout class="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout"/>
-      <SubComponents>
-        <Container class="javax.swing.JPanel" name="TopPanel">
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout$JSplitPaneConstraintsDescription">
-              <JSplitPaneConstraints position="left"/>
-            </Constraint>
-          </Constraints>
-
-          <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-          <SubComponents>
-            <Container class="javax.swing.JSplitPane" name="LRSplit">
-              <Constraints>
-                <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-                  <GridBagConstraints gridX="0" gridY="0" gridWidth="1" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="1.0"/>
-                </Constraint>
-              </Constraints>
-
-              <Layout class="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout"/>
-              <SubComponents>
-                <Container class="javax.swing.JPanel" name="leftPanel">
-                  <Constraints>
-                    <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout$JSplitPaneConstraintsDescription">
-                      <JSplitPaneConstraints position="left"/>
-                    </Constraint>
-                  </Constraints>
-
-                  <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-                  <SubComponents>
-                    <Component class="javax.swing.JLabel" name="jLabel3">
-                      <Properties>
-                        <Property name="text" type="java.lang.String" value="Name"/>
-                      </Properties>
-                      <Constraints>
-                        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-                          <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="13" weightX="0.0" weightY="0.0"/>
-                        </Constraint>
-                      </Constraints>
-                    </Component>
-                    <Container class="javax.swing.JSplitPane" name="ElementListSplit">
-                      <Properties>
-                        <Property name="orientation" type="int" value="0"/>
-                      </Properties>
-                      <Constraints>
-                        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-                          <GridBagConstraints gridX="0" gridY="2" gridWidth="0" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="1.0"/>
-                        </Constraint>
-                      </Constraints>
-
-                      <Layout class="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout"/>
-                      <SubComponents>
-                        <Container class="javax.swing.JScrollPane" name="elementButtonScroller">
-                          <Properties>
-                            <Property name="horizontalScrollBarPolicy" type="int" value="31"/>
-                          </Properties>
-                          <Constraints>
-                            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout$JSplitPaneConstraintsDescription">
-                              <JSplitPaneConstraints position="left"/>
-                            </Constraint>
-                          </Constraints>
-
-                          <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
-                          <SubComponents>
-                            <Container class="javax.swing.JPanel" name="elementButtonPanel">
-                              <Properties>
-                                <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-                                  <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
-                                    <EtchetBorder/>
-                                  </Border>
-                                </Property>
-                              </Properties>
-
-                              <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-                              <SubComponents>
-                                <Component class="javax.swing.JLabel" name="topLabel">
-                                  <Properties>
-                                    <Property name="horizontalAlignment" type="int" value="0"/>
-                                    <Property name="text" type="java.lang.String" value="&lt;html&gt;&lt;center&gt;&lt;b&gt;Data flow&lt;/b&gt;&lt;br/&gt;Click to view options&lt;/center&gt;&lt;/html&gt;"/>
-                                    <Property name="verticalAlignment" type="int" value="1"/>
-                                  </Properties>
-                                  <Constraints>
-                                    <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-                                      <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="11" weightX="1.0" weightY="0.0"/>
-                                    </Constraint>
-                                  </Constraints>
-                                </Component>
-                                <Component class="javax.swing.JLabel" name="spacer">
-                                  <Constraints>
-                                    <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-                                      <GridBagConstraints gridX="0" gridY="50" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="1.0"/>
-                                    </Constraint>
-                                  </Constraints>
-                                </Component>
-                              </SubComponents>
-                            </Container>
-                          </SubComponents>
-                        </Container>
-                        <Container class="javax.swing.JPanel" name="elementButtonHolder">
-                          <Constraints>
-                            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout$JSplitPaneConstraintsDescription">
-                              <JSplitPaneConstraints position="right"/>
-                            </Constraint>
-                          </Constraints>
-
-                          <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-                          <SubComponents>
-                            <Component class="javax.swing.JLabel" name="setpOptionsLab">
-                              <Properties>
-                                <Property name="text" type="java.lang.String" value="&lt;html&gt;&lt;b&gt;Step options&lt;/b&gt;&lt;/html&gt;"/>
-                              </Properties>
-                              <Constraints>
-                                <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-                                  <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="5" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-                                </Constraint>
-                              </Constraints>
-                            </Component>
-                            <Container class="javax.swing.JPanel" name="elementGuiPanel">
-                              <Properties>
-                                <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
-                                  <Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
-                                    <EtchetBorder/>
-                                  </Border>
-                                </Property>
-                                <Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
-                                  <Dimension value="[0, 200]"/>
-                                </Property>
-                              </Properties>
-                              <Constraints>
-                                <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-                                  <GridBagConstraints gridX="0" gridY="1" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="5" insetsLeft="5" insetsBottom="5" insetsRight="5" anchor="11" weightX="1.0" weightY="1.0"/>
-                                </Constraint>
-                              </Constraints>
-
-                              <Layout class="org.netbeans.modules.form.compat2.layouts.DesignCardLayout"/>
-                            </Container>
-                          </SubComponents>
-                        </Container>
-                      </SubComponents>
-                    </Container>
-                    <Component class="javax.swing.JTextField" name="streamNameTF">
-                      <Events>
-                        <EventHandler event="focusLost" listener="java.awt.event.FocusListener" parameters="java.awt.event.FocusEvent" handler="streamNameTFFocusLost"/>
-                        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="streamNameTFActionPerformed"/>
-                      </Events>
-                      <Constraints>
-                        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-                          <GridBagConstraints gridX="1" gridY="0" gridWidth="1" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="5" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="0.0"/>
-                        </Constraint>
-                      </Constraints>
-                    </Component>
-                    <Component class="javax.swing.JLabel" name="jLabel1">
-                      <Properties>
-                        <Property name="text" type="java.lang.String" value="Description"/>
-                      </Properties>
-                      <Constraints>
-                        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-                          <GridBagConstraints gridX="0" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-                        </Constraint>
-                      </Constraints>
-                    </Component>
-                    <Container class="javax.swing.JScrollPane" name="descriptionJSP">
-                      <Properties>
-                        <Property name="horizontalScrollBarPolicy" type="int" value="31"/>
-                      </Properties>
-                      <AuxValues>
-                        <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
-                      </AuxValues>
-                      <Constraints>
-                        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-                          <GridBagConstraints gridX="1" gridY="1" gridWidth="1" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="7" insetsBottom="3" insetsRight="3" anchor="10" weightX="1.0" weightY="0.0"/>
-                        </Constraint>
-                      </Constraints>
-
-                      <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
-                      <SubComponents>
-                        <Component class="javax.swing.JTextArea" name="descriptionTA">
-                          <Properties>
-                            <Property name="columns" type="int" value="5"/>
-                            <Property name="lineWrap" type="boolean" value="true"/>
-                            <Property name="rows" type="int" value="3"/>
-                            <Property name="wrapStyleWord" type="boolean" value="true"/>
-                          </Properties>
-                        </Component>
-                      </SubComponents>
-                    </Container>
-                  </SubComponents>
-                </Container>
-                <Container class="javax.swing.JSplitPane" name="sourceContentSplit">
-                  <Properties>
-                    <Property name="dividerLocation" type="int" value="92"/>
-                    <Property name="orientation" type="int" value="0"/>
-                  </Properties>
-                  <Constraints>
-                    <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout$JSplitPaneConstraintsDescription">
-                      <JSplitPaneConstraints position="right"/>
-                    </Constraint>
-                  </Constraints>
-
-                  <Layout class="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout"/>
-                  <SubComponents>
-                    <Container class="javax.swing.JPanel" name="SourceTextPan">
-                      <Constraints>
-                        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout$JSplitPaneConstraintsDescription">
-                          <JSplitPaneConstraints position="left"/>
-                        </Constraint>
-                      </Constraints>
-
-                      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-                      <SubComponents>
-                        <Container class="javax.swing.JScrollPane" name="SourceTextScroller">
-                          <AuxValues>
-                            <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
-                          </AuxValues>
-                          <Constraints>
-                            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-                              <GridBagConstraints gridX="0" gridY="1" gridWidth="1" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="1.0"/>
-                            </Constraint>
-                          </Constraints>
-
-                          <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
-                          <SubComponents>
-                            <Component class="javax.swing.JTextArea" name="SourceTextTA">
-                              <Properties>
-                                <Property name="editable" type="boolean" value="false"/>
-                                <Property name="columns" type="int" value="20"/>
-                                <Property name="lineWrap" type="boolean" value="true"/>
-                                <Property name="rows" type="int" value="3"/>
-                                <Property name="wrapStyleWord" type="boolean" value="true"/>
-                              </Properties>
-                            </Component>
-                          </SubComponents>
-                        </Container>
-                        <Component class="javax.swing.JLabel" name="jLabel4">
-                          <Properties>
-                            <Property name="text" type="java.lang.String" value="Source content"/>
-                          </Properties>
-                          <Constraints>
-                            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-                              <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
-                            </Constraint>
-                          </Constraints>
-                        </Component>
-                      </SubComponents>
-                    </Container>
-                    <Container class="javax.swing.JPanel" name="imagePanWithButtons">
-                      <Constraints>
-                        <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout$JSplitPaneConstraintsDescription">
-                          <JSplitPaneConstraints position="right"/>
-                        </Constraint>
-                      </Constraints>
-
-                      <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
-                      <SubComponents>
-                        <Component class="javax.swing.JButton" name="saveButt">
-                          <Properties>
-                            <Property name="text" type="java.lang.String" value="save"/>
-                            <Property name="enabled" type="boolean" value="false"/>
-                          </Properties>
-                          <Events>
-                            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="saveButtActionPerformed"/>
-                          </Events>
-                          <Constraints>
-                            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-                              <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="13" weightX="1.0" weightY="0.0"/>
-                            </Constraint>
-                          </Constraints>
-                        </Component>
-                        <Component class="javax.swing.JButton" name="saveAsButt">
-                          <Properties>
-                            <Property name="text" type="java.lang.String" value="save as..."/>
-                            <Property name="enabled" type="boolean" value="false"/>
-                          </Properties>
-                          <Events>
-                            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="saveAsButtActionPerformed"/>
-                          </Events>
-                          <Constraints>
-                            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-                              <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="1.0" weightY="0.0"/>
-                            </Constraint>
-                          </Constraints>
-                        </Component>
-                        <Container class="javax.swing.JPanel" name="ImagePanel">
-                          <AuxValues>
-                            <AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new ImgPanel()"/>
-                          </AuxValues>
-                          <Constraints>
-                            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
-                              <GridBagConstraints gridX="0" gridY="1" gridWidth="0" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="1.0"/>
-                            </Constraint>
-                          </Constraints>
-
-                          <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
-                        </Container>
-                      </SubComponents>
-                    </Container>
-                  </SubComponents>
-                </Container>
-              </SubComponents>
-            </Container>
-          </SubComponents>
-        </Container>
-        <Container class="javax.swing.JScrollPane" name="LogScrollPane">
-          <AuxValues>
-            <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
-          </AuxValues>
-          <Constraints>
-            <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout$JSplitPaneConstraintsDescription">
-              <JSplitPaneConstraints position="right"/>
-            </Constraint>
-          </Constraints>
-
-          <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
-          <SubComponents>
-            <Component class="javax.swing.JTextArea" name="LogTA">
-              <Properties>
-                <Property name="columns" type="int" value="20"/>
-                <Property name="rows" type="int" value="3"/>
-              </Properties>
-            </Component>
-          </SubComponents>
-        </Container>
-      </SubComponents>
-    </Container>
-  </SubComponents>
-</Form>
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/QRTdaGuiPanel.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/QRTdaGuiPanel.java
deleted file mode 100644
index 0848f5dc4e0d7daa408a38b1439711c4c9c71503..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/QRTdaGuiPanel.java
+++ /dev/null
@@ -1,708 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.swing;
-
-import edu.nps.moves.qrtda.PerformanceLogger;
-import edu.nps.moves.qrtda.QRPreferences;
-import edu.nps.moves.qrtda.elements.misc.PipeButton;
-import edu.nps.moves.qrtda.qr.QRDataStream;
-import edu.nps.moves.qrtda.elements.*;
-import edu.nps.moves.qrtda.elements.misc.JsonConfigPipeLine;
-import edu.nps.moves.qrtda.elements.misc.JsonConfigPipeLine.PipeElement;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.misc.ReadyListener;
-import java.awt.*;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.image.BufferedImage;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-import java.io.File;
-import java.io.IOException;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.util.*;
-import java.util.List;
-import javax.imageio.ImageIO;
-import javax.swing.*;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-/**
- * QRTdaGuiPanel.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class QRTdaGuiPanel extends JPanel implements ReadyListener
-{
-  private static final long serialVersionUID = 7075736172023869466L;
-  
-  private final Logger logger=LogManager.getLogger(QRTdaGuiPanel.class.getName());
-
-  private final static String _TBDIVIDERLOCATION_PREF = "TBSPlit"+serialVersionUID;
-  private final static String _LRDIVIDERLOCATION_PREF = "LRSPlit"+serialVersionUID;
-  private final static String _ELEMENTDIVIDERLOCATION_PREF = "ELEMSPlit"+serialVersionUID;
-  private final static String _SRCCONTENTDIVIDERLOCATION_PREF = "SRCSPlit"+serialVersionUID;
-
-  // Separate string keyed by pipeline name
-  private String TBDIVIDERLOCATION_PREF;
-  private String LRDIVIDERLOCATION_PREF;
-  private String ELEMENTDIVIDERLOCATION_PREF;
-  private String SRCCONTENTDIVIDERLOCATION_PREF;
-      
-  private final TdaEnvironment env;
-  QRDataStream stream;
-  public QRTdaGuiPanel(TdaEnvironment env)
-  {
-    this.env = env;
-    initComponents();
-    
-    ElementListSplit.addPropertyChangeListener(JSplitPane.DIVIDER_LOCATION_PROPERTY, splitListener);
-    TBSplit.addPropertyChangeListener(JSplitPane.DIVIDER_LOCATION_PROPERTY, splitListener);
-    LRSplit.addPropertyChangeListener(JSplitPane.DIVIDER_LOCATION_PROPERTY, splitListener);
-    sourceContentSplit.addPropertyChangeListener(JSplitPane.DIVIDER_LOCATION_PROPERTY, splitListener);
-  }
-  
-  Font originalFont = null;
-  float BIG_FONT = 30.0f;
-  float SMALL_FONT;
-  public void setBigText(boolean big)
-  {
-    if(originalFont == null) {
-      originalFont = SourceTextTA.getFont();
-      SMALL_FONT = originalFont.getSize();
-    }
-    SourceTextTA.setFont(originalFont.deriveFont(big?BIG_FONT:SMALL_FONT));
-  }
-  
-  public QRFlowLink[] getElements()
-  {
-    return env.getPipeArray(this);
-  }
-  public String getDataFlowName()
-  {
-    return streamNameTF.getText().trim();
-  }
-  
-  public String getDataFlowDescription()
-  {
-    return stream.getDescription();
-  }
-  // Works
-  public void qrInit(String streamName, String[] segments)//, StreamType typ)
-  {
-    stream = new QRDataStream(streamName,"empty description");
-    streamNameTF.setText(streamName);
-    env.setContentTextArea(stream,SourceTextTA);
-    env.setLogTextArea(stream,LogTA);
-    env.setImagePanel(stream,ImagePanel);
-    reloadLinks(segments,stream);
-  }
-
-  public void qrInit(String streamName, String description, JsonConfigPipeLine pipeLine)
-  {
-    stream = new QRDataStream(streamName,description);
-    
-    streamNameTF.setText(pipeLine.getName());
-    descriptionTA.setText(pipeLine.getDescription());
-    SwingUtilities.invokeLater(new Runnable(){
-      @Override
-      public void run(){
-        descriptionJSP.getViewport().setViewPosition(new Point(0,0));
-      }});  // show top
-    
-    env.setContentTextArea(stream,SourceTextTA);
-    env.setLogTextArea(stream,LogTA);
-    env.setImagePanel(stream,ImagePanel);
-    ArrayList<Object> arrLis = pipeLine.getPipeElements();
-    int count = arrLis.size();
-    String[] segs = new String[count];
-    for (int i = 0; i < count; i++) {
-      PipeElement pe = (PipeElement)arrLis.get(i);
-      segs[i] = pe.getClassName();
-    }
-    reloadLinks(segs,stream);
-    
-    handleSplitterPreferences(streamName);
-  }
-  
-  private void handleSplitterPreferences(String stream)
-  {
-    TBDIVIDERLOCATION_PREF = _TBDIVIDERLOCATION_PREF + stream;
-    LRDIVIDERLOCATION_PREF = _LRDIVIDERLOCATION_PREF + stream;
-    ELEMENTDIVIDERLOCATION_PREF = _ELEMENTDIVIDERLOCATION_PREF + stream;
-    SRCCONTENTDIVIDERLOCATION_PREF = _SRCCONTENTDIVIDERLOCATION_PREF + stream;
-    new Thread(new Runnable() {
-      @Override
-      public void run() {
-        try{Thread.sleep(2000l);}catch(InterruptedException ex){}
-        SwingUtilities.invokeLater(new Runnable() {
-          @Override
-          public void run()
-          {
-            sourceContentSplit.setDividerLocation(Integer.parseInt(QRPreferences.getInstance().get(SRCCONTENTDIVIDERLOCATION_PREF, "-1")));
-                       TBSplit.setDividerLocation(Integer.parseInt(QRPreferences.getInstance().get(TBDIVIDERLOCATION_PREF, "-1")));
-                       LRSplit.setDividerLocation(Integer.parseInt(QRPreferences.getInstance().get(LRDIVIDERLOCATION_PREF, "-1")));
-             ElementListSplit.setDividerLocation(Integer.parseInt(QRPreferences.getInstance().get(ELEMENTDIVIDERLOCATION_PREF, "-1")));
-          }
-        }); 
-      }
-    }).start();
-  }
-  /**
-   * Removes existing gui components, and builds
-   * @param segments 
-   * @param stream
-   */
-  public void reloadLinks(String[] segments, QRDataStream stream)
-  {
-    Component top = elementButtonPanel.getComponent(0); //label
-    Component bottom = elementButtonPanel.getComponent(elementButtonPanel.getComponentCount()-1);
-    elementButtonPanel.removeAll();
-    elementButtonPanel.add(top);
-
-    elementGuiPanel.removeAll();
-        
-    List lis = stream.getPipes();
-    Iterator itr = lis.iterator();
-    while (itr.hasNext()) {
-      QRFlowLink link = (QRFlowLink)itr.next();
-      if(link.hasOnOffSwitch())
-        link.turnOff();   // stops threads, etc.
-    }   
-    
-    int idx = 1;
-    ArrayList<QRFlowLink> arrLis = new ArrayList<>();
-    for(String link : segments) {
-      QRFlowLink elem = addPipeElement(stream, env, link, idx++); //good
-      arrLis.add(elem);
-    }
-    
-    reAddBottom(bottom);
-    
-    elementButtonPanel.repaint();
-    elementGuiPanel.doLayout();
-    env.addToPipeMap(this, arrLis.toArray(new QRFlowLink[0]));
-  }
-  
-  public QRFlowLink addPipeElement(QRDataStream stream, TdaEnvironment env, String clsNm, int idx)
-  {
-    QRFlowLink fLink=null;
-    try {
-      Class<? extends QRFlowLink> cls = (Class<? extends QRFlowLink>) Class.forName(clsNm);
-      Constructor constr = cls.getConstructor(TdaEnvironment.class, ReadyListener.class);
-      QRFlowLink link = (QRFlowLink)constr.newInstance(env,this);
-      fLink=addPipeElement(stream, link, idx);  //calls below
-    }
-    catch (ClassNotFoundException | NoSuchMethodException | SecurityException |
-           InstantiationException | IllegalAccessException | IllegalArgumentException |
-           InvocationTargetException ex) {
-      throw new RuntimeException(ex); //todo
-    }
-    return fLink;
-  }
-  
-  private QRFlowLink addPipeElement(QRDataStream stream, QRFlowLink fl, int idx)
-  {
-    stream.addPipe(fl);
-    fl.setPipeline(stream);
-    elementGuiPanel.add(fl.getGui(), fl.getHandle());
-    PipeButton butt;
-    addButton(butt=new PipeButton(fl,buttListener,idx));
-    if(fl.hasOnOffSwitch())
-      butt.showOff();
-    fl.setPipeIndex(idx);
-
-    return fl;
-  }
-  private void reAddBottom(Component c)
-  {
-    GridBagConstraints gridBagConstraints = new GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 100;
-    gridBagConstraints.weightx = 0.0;
-    gridBagConstraints.weighty = 10.0;
-    elementButtonPanel.add(c, gridBagConstraints);
-  }
-  private void addButton(JButton butt)
-  {
-    GridBagConstraints gridBagConstraints = new GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = GridBagConstraints.RELATIVE;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.NONE;
-    gridBagConstraints.anchor = GridBagConstraints.WEST;
-    gridBagConstraints.weightx = 1.0;
-    gridBagConstraints.weighty = 0.0;
-    elementButtonPanel.add(butt, gridBagConstraints);
-  }
-   
-  @Override
-  public void setReady(QRFlowLink link, boolean tf)
-  {
-    Component[] comps = elementButtonPanel.getComponents();
-    for(Component c : comps) {
-      if(c instanceof PipeButton) {
-        PipeButton butt = (PipeButton)c;
-        QRFlowLink lk = ((PipeButton)c).getQRFlowLink();
-        if(lk == link) {
-          if (lk.hasOnOffSwitch())
-            butt.showOnOrOff(tf);
-          return;
-        }
-      }
-    }
-  }
-
-  private final ActionListener buttListener = new ActionListener()
-  {
-    @Override
-    public void actionPerformed(ActionEvent e)
-    {
-      PipeButton butt = (PipeButton)e.getSource();
-      ((CardLayout)elementGuiPanel.getLayout()).show(elementGuiPanel, butt.getQRFlowLink().getHandle());
-    }    
-  };
-  
-  private final PropertyChangeListener splitListener = new PropertyChangeListener()
-  {
-    @Override
-    public void propertyChange(PropertyChangeEvent ev)
-    {
-      QRPreferences prefs = QRPreferences.getInstance();
-      prefs.put(ELEMENTDIVIDERLOCATION_PREF,    "" + ElementListSplit.getDividerLocation());
-      prefs.put(TBDIVIDERLOCATION_PREF,         "" + TBSplit.getDividerLocation());
-      prefs.put(LRDIVIDERLOCATION_PREF,         "" + LRSplit.getDividerLocation());
-      prefs.put(SRCCONTENTDIVIDERLOCATION_PREF, "" + sourceContentSplit.getDividerLocation());
-    }
-  };
-  
-  class ImgPanel extends JPanel
-  {
-    private static final long serialVersionUID = 1L;
-
-    @Override
-    public void add(Component comp, Object constraints)
-    {
-      super.add(comp, constraints);
-      saveButt.setEnabled(true);
-      saveAsButt.setEnabled(true);
-    }
-
-    @Override
-    public void removeAll()
-    {
-      super.removeAll();
-      saveButt.setEnabled(false);
-      saveAsButt.setEnabled(false);
-    }   
-  }
-  
-  /**
-   * This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The content of this method is always
-   * regenerated by the Form Editor.
-   */
-  @SuppressWarnings("unchecked")
-  // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-  private void initComponents()
-  {
-    java.awt.GridBagConstraints gridBagConstraints;
-
-    TBSplit = new javax.swing.JSplitPane();
-    TopPanel = new javax.swing.JPanel();
-    LRSplit = new javax.swing.JSplitPane();
-    leftPanel = new javax.swing.JPanel();
-    jLabel3 = new javax.swing.JLabel();
-    ElementListSplit = new javax.swing.JSplitPane();
-    elementButtonScroller = new javax.swing.JScrollPane();
-    elementButtonPanel = new javax.swing.JPanel();
-    topLabel = new javax.swing.JLabel();
-    spacer = new javax.swing.JLabel();
-    elementButtonHolder = new javax.swing.JPanel();
-    setpOptionsLab = new javax.swing.JLabel();
-    elementGuiPanel = new javax.swing.JPanel();
-    streamNameTF = new javax.swing.JTextField();
-    jLabel1 = new javax.swing.JLabel();
-    descriptionJSP = new javax.swing.JScrollPane();
-    descriptionTA = new javax.swing.JTextArea();
-    sourceContentSplit = new javax.swing.JSplitPane();
-    SourceTextPan = new javax.swing.JPanel();
-    SourceTextScroller = new javax.swing.JScrollPane();
-    SourceTextTA = new javax.swing.JTextArea();
-    jLabel4 = new javax.swing.JLabel();
-    imagePanWithButtons = new javax.swing.JPanel();
-    saveButt = new javax.swing.JButton();
-    saveAsButt = new javax.swing.JButton();
-    ImagePanel = new ImgPanel();
-    LogScrollPane = new javax.swing.JScrollPane();
-    LogTA = new javax.swing.JTextArea();
-
-    setLayout(new java.awt.GridBagLayout());
-
-    TBSplit.setDividerLocation(700);
-    TBSplit.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);
-
-    TopPanel.setLayout(new java.awt.GridBagLayout());
-
-    leftPanel.setLayout(new java.awt.GridBagLayout());
-
-    jLabel3.setText("Name");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
-    leftPanel.add(jLabel3, gridBagConstraints);
-
-    ElementListSplit.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);
-
-    elementButtonScroller.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
-
-    elementButtonPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder());
-    elementButtonPanel.setLayout(new java.awt.GridBagLayout());
-
-    topLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
-    topLabel.setText("<html><center><b>Data flow</b><br/>Click to view options</center></html>");
-    topLabel.setVerticalAlignment(javax.swing.SwingConstants.TOP);
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
-    gridBagConstraints.weightx = 1.0;
-    elementButtonPanel.add(topLabel, gridBagConstraints);
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 50;
-    gridBagConstraints.weighty = 1.0;
-    elementButtonPanel.add(spacer, gridBagConstraints);
-
-    elementButtonScroller.setViewportView(elementButtonPanel);
-
-    ElementListSplit.setLeftComponent(elementButtonScroller);
-
-    elementButtonHolder.setLayout(new java.awt.GridBagLayout());
-
-    setpOptionsLab.setText("<html><b>Step options</b></html>");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.insets = new java.awt.Insets(0, 0, 5, 0);
-    elementButtonHolder.add(setpOptionsLab, gridBagConstraints);
-
-    elementGuiPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder());
-    elementGuiPanel.setMinimumSize(new java.awt.Dimension(0, 200));
-    elementGuiPanel.setLayout(new java.awt.CardLayout());
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
-    gridBagConstraints.weightx = 1.0;
-    gridBagConstraints.weighty = 1.0;
-    gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
-    elementButtonHolder.add(elementGuiPanel, gridBagConstraints);
-
-    ElementListSplit.setRightComponent(elementButtonHolder);
-
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 2;
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
-    gridBagConstraints.weightx = 1.0;
-    gridBagConstraints.weighty = 1.0;
-    leftPanel.add(ElementListSplit, gridBagConstraints);
-
-    streamNameTF.addFocusListener(new java.awt.event.FocusAdapter()
-    {
-      public void focusLost(java.awt.event.FocusEvent evt)
-      {
-        streamNameTFFocusLost(evt);
-      }
-    });
-    streamNameTF.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        streamNameTFActionPerformed(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 1;
-    gridBagConstraints.gridy = 0;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
-    gridBagConstraints.weightx = 1.0;
-    gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 0);
-    leftPanel.add(streamNameTF, gridBagConstraints);
-
-    jLabel1.setText("Description");
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 1;
-    leftPanel.add(jLabel1, gridBagConstraints);
-
-    descriptionJSP.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
-
-    descriptionTA.setColumns(5);
-    descriptionTA.setLineWrap(true);
-    descriptionTA.setRows(3);
-    descriptionTA.setWrapStyleWord(true);
-    descriptionJSP.setViewportView(descriptionTA);
-
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 1;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
-    gridBagConstraints.weightx = 1.0;
-    gridBagConstraints.insets = new java.awt.Insets(0, 7, 3, 3);
-    leftPanel.add(descriptionJSP, gridBagConstraints);
-
-    LRSplit.setLeftComponent(leftPanel);
-
-    sourceContentSplit.setDividerLocation(92);
-    sourceContentSplit.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);
-
-    SourceTextPan.setLayout(new java.awt.GridBagLayout());
-
-    SourceTextTA.setEditable(false);
-    SourceTextTA.setColumns(20);
-    SourceTextTA.setLineWrap(true);
-    SourceTextTA.setRows(3);
-    SourceTextTA.setWrapStyleWord(true);
-    SourceTextScroller.setViewportView(SourceTextTA);
-
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
-    gridBagConstraints.weightx = 1.0;
-    gridBagConstraints.weighty = 1.0;
-    SourceTextPan.add(SourceTextScroller, gridBagConstraints);
-
-    jLabel4.setText("Source content");
-    SourceTextPan.add(jLabel4, new java.awt.GridBagConstraints());
-
-    sourceContentSplit.setLeftComponent(SourceTextPan);
-
-    imagePanWithButtons.setLayout(new java.awt.GridBagLayout());
-
-    saveButt.setText("save");
-    saveButt.setEnabled(false);
-    saveButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        saveButtActionPerformed(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
-    gridBagConstraints.weightx = 1.0;
-    imagePanWithButtons.add(saveButt, gridBagConstraints);
-
-    saveAsButt.setText("save as...");
-    saveAsButt.setEnabled(false);
-    saveAsButt.addActionListener(new java.awt.event.ActionListener()
-    {
-      public void actionPerformed(java.awt.event.ActionEvent evt)
-      {
-        saveAsButtActionPerformed(evt);
-      }
-    });
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
-    gridBagConstraints.weightx = 1.0;
-    imagePanWithButtons.add(saveAsButt, gridBagConstraints);
-
-    ImagePanel.setLayout(new java.awt.BorderLayout());
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 1;
-    gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
-    gridBagConstraints.weightx = 1.0;
-    gridBagConstraints.weighty = 1.0;
-    imagePanWithButtons.add(ImagePanel, gridBagConstraints);
-
-    sourceContentSplit.setRightComponent(imagePanWithButtons);
-
-    LRSplit.setRightComponent(sourceContentSplit);
-
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.gridx = 0;
-    gridBagConstraints.gridy = 0;
-    gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
-    gridBagConstraints.weightx = 1.0;
-    gridBagConstraints.weighty = 1.0;
-    TopPanel.add(LRSplit, gridBagConstraints);
-
-    TBSplit.setLeftComponent(TopPanel);
-
-    LogTA.setColumns(20);
-    LogTA.setRows(3);
-    LogScrollPane.setViewportView(LogTA);
-
-    TBSplit.setRightComponent(LogScrollPane);
-
-    gridBagConstraints = new java.awt.GridBagConstraints();
-    gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
-    gridBagConstraints.weightx = 1.0;
-    gridBagConstraints.weighty = 1.0;
-    add(TBSplit, gridBagConstraints);
-  }// </editor-fold>//GEN-END:initComponents
-
-  private void streamNameTFActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_streamNameTFActionPerformed
-  {//GEN-HEADEREND:event_streamNameTFActionPerformed
-    // This doesn't do anything
-    String val = streamNameTF.getText().trim();
-    stream.setName(val);
-    
-    Component parent = this;
-    while ((parent = parent.getParent()) != null) {
-      if(parent instanceof JFrame) {
-        ((JFrame)parent).setTitle(val);
-        break;
-      }
-    }
-  }//GEN-LAST:event_streamNameTFActionPerformed
-
-  private void streamNameTFFocusLost(java.awt.event.FocusEvent evt)//GEN-FIRST:event_streamNameTFFocusLost
-  {//GEN-HEADEREND:event_streamNameTFFocusLost
-    streamNameTFActionPerformed(null);
-  }//GEN-LAST:event_streamNameTFFocusLost
-
-  private void saveAsButtActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_saveAsButtActionPerformed
-  {//GEN-HEADEREND:event_saveAsButtActionPerformed
-    BufferedImage bi = getQRImage();
-    if (bi == null)
-      return;
-    
-    File selF=null;
-    try {
-      JFileChooser chooser = new JFileChooser();
-
-      chooser.setSelectedFile(new File(TdaEnvironment.imagesDirectory, "qrimage.png"));
-      chooser.setMultiSelectionEnabled(false);
-      chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
-
-      int retVal = chooser.showSaveDialog(saveAsButt);
-      if (retVal == JFileChooser.CANCEL_OPTION)
-        return;
-      
-      selF = chooser.getSelectedFile();
-      if (selF.exists()) {
-        int ovrWriteVal = JOptionPane.showConfirmDialog(saveAsButt, "File exists. Overwrite?","Conflict!",JOptionPane.YES_NO_OPTION);
-        if (ovrWriteVal == JOptionPane.NO_OPTION)
-          return;
-      }
-      else
-        selF.createNewFile();
-      
-      String nam = selF.getName().toLowerCase();
-      if (nam.endsWith("jpg"))
-        ImageIO.write(bi, "jpg", selF);
-      else //if(nam.endsWith("png"))
-        ImageIO.write(bi, "png", selF);
-
-      PerformanceLogger.logQRImageSave(logger, selF.getAbsolutePath());
-
-    }
-    catch (IOException ioEx) {
-      if(selF == null)
-        logger.error("Exception creating selected file:"+ioEx);
-      else
-        logger.error("Exception saving "+selF.getAbsolutePath()+": "+ioEx);
-    }
-  }//GEN-LAST:event_saveAsButtActionPerformed
-  
-  BufferedImage getQRImage()
-  {
-    int count = ImagePanel.getComponentCount();
-    if (count != 1)
-      return null;
-    Component comp = ImagePanel.getComponent(0);
-    if (!(comp instanceof JLabel))
-      return null;
-    Icon ic = ((JLabel) comp).getIcon();
-    if (!(ic instanceof ImageIcon))
-      return null;
-    Image im = ((ImageIcon) ic).getImage();
-    if (!(im instanceof BufferedImage))
-      return null;
-    return (BufferedImage) im;
-  }
-  
-  private void saveButtActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_saveButtActionPerformed
-  {//GEN-HEADEREND:event_saveButtActionPerformed
-    BufferedImage bi = getQRImage();
-    if(bi == null)
-      return;
-    
-    String namebase = "qrimage";
-    String nametype = "png";
-    
-    int i = 0;
-    String extra;
-    File f = new File(TdaEnvironment.imagesDirectoryFullPath, namebase+"."+nametype);
-    while (f.exists()) {
-        i++;
-        extra = Integer.toString(i);
-        f = new File(TdaEnvironment.imagesDirectoryFullPath,namebase+"_"+extra+"."+nametype);
-        System.out.println(f.getAbsolutePath());
-    }
-    try {
-      f.createNewFile();
-      ImageIO.write(bi,"png",f);
-      PerformanceLogger.logQRImageSave(logger,f.getAbsolutePath());
-    }
-    catch(IOException ex) {
-      System.out.print("trying for "+f.getAbsolutePath()+": "+ex.getLocalizedMessage());
-    }
-  }//GEN-LAST:event_saveButtActionPerformed
-
-  // Variables declaration - do not modify//GEN-BEGIN:variables
-  private javax.swing.JSplitPane ElementListSplit;
-  private javax.swing.JPanel ImagePanel;
-  private javax.swing.JSplitPane LRSplit;
-  private javax.swing.JScrollPane LogScrollPane;
-  private javax.swing.JTextArea LogTA;
-  private javax.swing.JPanel SourceTextPan;
-  private javax.swing.JScrollPane SourceTextScroller;
-  private javax.swing.JTextArea SourceTextTA;
-  private javax.swing.JSplitPane TBSplit;
-  private javax.swing.JPanel TopPanel;
-  private javax.swing.JScrollPane descriptionJSP;
-  private javax.swing.JTextArea descriptionTA;
-  private javax.swing.JPanel elementButtonHolder;
-  private javax.swing.JPanel elementButtonPanel;
-  private javax.swing.JScrollPane elementButtonScroller;
-  private javax.swing.JPanel elementGuiPanel;
-  private javax.swing.JPanel imagePanWithButtons;
-  private javax.swing.JLabel jLabel1;
-  private javax.swing.JLabel jLabel3;
-  private javax.swing.JLabel jLabel4;
-  private javax.swing.JPanel leftPanel;
-  private javax.swing.JButton saveAsButt;
-  private javax.swing.JButton saveButt;
-  private javax.swing.JLabel setpOptionsLab;
-  private javax.swing.JSplitPane sourceContentSplit;
-  private javax.swing.JLabel spacer;
-  private javax.swing.JTextField streamNameTF;
-  private javax.swing.JLabel topLabel;
-  // End of variables declaration//GEN-END:variables
- }
diff --git a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/QRTdaSwingMain.java b/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/QRTdaSwingMain.java
deleted file mode 100644
index 9da1b90f13ca9a782b886c04ac24599aaaa9e85d..0000000000000000000000000000000000000000
--- a/QRCodeTacticalDecisionAidV2/src/main/java/edu/nps/moves/qrtda/swing/QRTdaSwingMain.java
+++ /dev/null
@@ -1,425 +0,0 @@
-/*
- Copyright (c) 1995-2017 held by the author(s). All rights reserved. Redistribution and use
- in source and binary forms, with or without modification, are permitted provided that the
- following conditions are met:
-
- Redistributions of source code must retain the above copyright notice, this list of conditions
- and the following disclaimer. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the documentation and/or other
- materials provided with the distribution. Neither the names of the Naval Postgraduate School (NPS)
- Modeling Virtual Environments and Simulation (MOVES) Institute (http://www.nps.edu and
- http://www.MovesInstitute.org) nor the names of its contributors may be used to endorse or promote
- products derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
- WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package edu.nps.moves.qrtda.swing;
-
-import edu.nps.moves.qrtda.qr.QRDataStream;
-import edu.nps.moves.qrtda.elements.misc.JsonConfigPipeLine;
-import edu.nps.moves.qrtda.TdaEnvironment;
-import edu.nps.moves.qrtda.elements.QRFlowLink;
-import edu.nps.moves.qrtda.elements.misc.JsonConfigPipeLine.JsonConfigPipeLineSet;
-import edu.nps.moves.qrtda.elements.misc.JsonConfigPipeLine.PipeElement;
-import edu.nps.moves.qrtda.elements.misc.JsonConfigSaver;
-import edu.nps.moves.qrtda.elements.misc.ReadyListener;
-import java.awt.Desktop;
-import java.awt.event.*;
-import java.io.IOException;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-import java.util.prefs.BackingStoreException;
-import javax.swing.*;
-
-/**
- * QRTdaSwingMain.java created on May 14, 2015
- * MOVES Institute Naval Postgraduate School, Monterey, CA, USA www.nps.edu
- *
- * @author Mike Bailey, jmbailey@nps.edu
- * @version $Id$
- */
-public class QRTdaSwingMain
-{
-  private final ArrayList<QRTdaFrame> windowList = new ArrayList<>();
-  private final Object windowListSyncher = new Object();
-    
-  @SuppressWarnings("ResultOfObjectAllocationIgnored")
-  public static void mainJson(JsonConfigPipeLine.JsonConfigPipeLineSet pipeLineSet, TdaEnvironment env)
-  {
-    SwingUtilities.invokeLater(() -> {
-      new QRTdaSwingMain(pipeLineSet,env);
-    });
-  }
-  
-  @SuppressWarnings("CallToPrintStackTrace")
-  private QRTdaSwingMain(JsonConfigPipeLineSet pipeLineSet, TdaEnvironment env)
-  {
-    ArrayList<Object> pipeLines = pipeLineSet.getPipeLines();
-    Iterator<Object> itr = pipeLines.iterator();
-    while (itr.hasNext()) {
-      LinkedHashMap lhm = (LinkedHashMap) itr.next();
-      JsonConfigPipeLine pipeLine = new JsonConfigPipeLine(lhm);
-      if (pipeLine.isHeadless())
-        initHeadless(pipeLine, env);
-      else
-        showFrame(buildFrameFromConfig(pipeLine, env));
-    }
-  }
- 
-  private static void initHeadless(JsonConfigPipeLine cfgipeLine, TdaEnvironment env)
-  {
-    env.setHeadless(true);
-    env.setContentTextStream(System.out);
-    env.setLogTextStream(System.out);
-
-    QRDataStream stream = new QRDataStream(cfgipeLine.getName(),"headless description goes here");
-
-    ArrayList<Object> pipeElements = cfgipeLine.getPipeElements();
-    ArrayList<QRFlowLink> tempArr = new ArrayList<>();
-    for (Object elemObj : pipeElements) {
-      PipeElement pElem = (PipeElement)elemObj;
-      QRFlowLink fL = instanciateLink(pElem,env);
-      tempArr.add(fL);
-      fL.setPipeline(stream);
-      ArrayList<Object> optAL = pElem.getOption();
-      for (Object obj : optAL) {
-        JsonConfigPipeLine.Option o = (JsonConfigPipeLine.Option) obj;
-        //mike here fL.setOption(o.getKey(), o.getValue());
-      }
-      stream.addPipe(fL);
-    }
-    
-    Iterator<QRFlowLink> itr = tempArr.iterator();
-    
-    while(itr.hasNext()) {
-      itr.next().initialize();
-    }
-  }
-  
-  private static QRFlowLink instanciateLink(JsonConfigPipeLine.PipeElement pEl, TdaEnvironment env)
-  {
-    QRFlowLink fLink = null;
-    try {
-      Class<? extends QRFlowLink> cls = (Class<? extends QRFlowLink>) Class.forName(pEl.getClassName());
-      Constructor constr = cls.getConstructor(TdaEnvironment.class, ReadyListener.class);
-      fLink = (QRFlowLink) constr.newInstance(env,null);
-    }
-    catch (ClassNotFoundException | NoSuchMethodException | SecurityException |
-           InstantiationException | IllegalAccessException | IllegalArgumentException |
-           InvocationTargetException ex) {
-      throw new RuntimeException(ex); //todo
-    }
-    return fLink;
-  }
-
-  final public void showFrame(QRTdaFrame fr)
-  {
-    fr.setLocation(fr.getLocationX(), fr.getLocationY());
-    fr.setVisible(true);
-  }
- /* 
-  int frameNum = 1;
-  private QRTdaFrame buildFrame()//StreamType frTyp)
-  {
-    TdaEnvironment env = new TdaEnvironment(false);
-    //env.setFrameType(frTyp);
-    String name = "get name from dataflow set"; //(frTyp==StreamType.ENCODE?Constants.ENCODERFRAMETITLE:Constants.DECODERFRAMETITLE);
-    String title = name+" "+frameNum++;
-    QRTdaFrame fr = new QRTdaFrame(env,title,new Closer());
-    QRTdaGuiPanel pan;
-    String elemPrefs;
-   // if(frTyp == StreamType.ENCODE) {
-      pan = new QRTdaGuiPanel(env);
-      elemPrefs = encodeElementsPreference;
-//    }
-//    else {
-//      pan = new QRTdaGuiPanel(env);  // different
-//      elemPrefs = decodeElementsPreference;
-//    }
-    
-    pan.qrInit(name,toStringArray(elemPrefs)); //,frTyp);
-    pan.setBigText(true); //frTyp==whichFrame.ENCODE);
-    synchronized (windowListSyncher) {
-      windowList.add(fr);
-    }
-    fr.setQRTdaGuiPanel(pan);
-    fr.setSize(Constants.DEFAULTWIDTH, Constants.DEFAULTWIDTH);
-       
-    adjustAllMenus();
-    return fr;
-  }
-  */
-  private QRTdaFrame buildFrameFromConfig(JsonConfigPipeLine pipeLine, TdaEnvironment env)
-  {
-    String name = pipeLine.getName();
-    String description = pipeLine.getDescription();
-    QRTdaFrame fr = new QRTdaFrame(env,name,new Closer());
-    QRTdaGuiPanel pan = new QRTdaGuiPanel(env);
-    pan.setBigText(true);
-    pan.qrInit(name,description,pipeLine);
-    synchronized (windowListSyncher) {
-      windowList.add(fr);
-    }
-    fr.getContentPane().add(pan);
-       
-    adjustAllMenus(env);
-    return fr;
-
-  }
-  /*
-  private String[] toStringArray(String csv)
-  {
-    String[] sa = csv.split(",");
-    ArrayList<String>arLis = new ArrayList<>();
-    for(String s : sa) {
-      if(s.length()>0)
-        arLis.add(s);
-    }
-    return arLis.toArray(sa);
-  }
-  */
-  
-  private void adjustAllMenus(TdaEnvironment env)
-  {
-    // This puts this task at the end of the event queue, because we're often called in the context of a menu click, so
-    // it's potentially problematic to remove the menu before the menu handler has completed.
-    SwingUtilities.invokeLater(() -> {
-      synchronized (windowListSyncher) {
-        Iterator<QRTdaFrame> itr = windowList.iterator();
-        while (itr.hasNext()) {
-          QRTdaFrame fr = itr.next();
-          buildMenu(fr);
-        }
-      }
-    });
-  }
-  
-  private void buildMenu(final QRTdaFrame frame)
-  {
-    JMenuBar menuBar;
-    JMenuItem menuItem;
-    JMenu menu;
-    
-    menuBar = new JMenuBar();
-
-    menu = new JMenu("File");
-    menuBar.add(menu);
-    /*
-    menuItem = new JMenuItem("New Default Encode window");
-    menuItem.addActionListener(new NewWindowClick());
-    menu.add(menuItem);
-    menuItem = new JMenuItem("New Default Decode window");
-    menuItem.addActionListener(new NewWindowClick());
-    menu.add(menuItem);
-    menu.add(new JSeparator());
-    */
-    menuItem = new JMenuItem("Save this data-flow configuration");
-    menuItem.addActionListener(new SaveOneClick(frame));
-    menu.add(menuItem);
-    
-    if(this.windowList.size()>1) {
-      menuItem = new JMenuItem("Save multiple data-flow configuration");
-      menuItem.addActionListener(new SaveAllClick());
-      menu.add(menuItem);
-    }
-    
-    menu.add(new JSeparator());
-
-    menuItem = new JMenuItem("Open work directory in OS");
-    menuItem.addActionListener(new ShowFinder());
-    menu.add(menuItem);
-    
-    menuItem = new JMenuItem("Clear saved preferences");
-    menuItem.addActionListener(new ClearPrefs(frame));
-    menu.add(menuItem);
-    
-    menu.add(new JSeparator());
-    
-    menuItem = new JMenuItem("Quit");
-    menuItem.addActionListener(new QuitClick());
-    menu.add(menuItem);
-       
-    menu = new JMenu("Edit");
-    menuBar.add(menu);
-    menuItem = new JMenuItem("Edit workflow elements");
-    menuItem.addActionListener(new EditWorkFlowClick());
-    menu.add(menuItem);
-    
-    menu = new JMenu("Window");
-    menuBar.add(menu);
-    
-    synchronized (windowListSyncher) {
-      Iterator<QRTdaFrame> itr = windowList.iterator();
-      while(itr.hasNext()) {
-        QRTdaFrame fr = itr.next();
-        menuItem = new JMenuItem(fr.getTitle());
-        menuItem.addActionListener(new ShowWindowHandler(fr));
-        menu.add(menuItem);
-      }
-    }
-    
-    frame.setJMenuBar(menuBar);
-    frame.validate();
-  }
-  
-  class ShowWindowHandler implements ActionListener
-  {
-    QRTdaFrame frame;
-    public ShowWindowHandler(QRTdaFrame frame)
-    {
-      this.frame = frame;
-    }
-
-    @Override
-    public void actionPerformed(ActionEvent e)
-    {
-      frame.setVisible(true);
-    }
-    
-  }
-  
-  class EditWorkFlowClick implements ActionListener
-  {
-    @Override
-    public void actionPerformed(ActionEvent ae)
-    {
-      JMenuItem mi = (JMenuItem)ae.getSource();
-      JPopupMenu pop = (JPopupMenu)mi.getParent();
-      JComponent invoker = (JComponent)pop.getInvoker(); //this is the JMenu (in my code)  
-      QRTdaFrame fr = (QRTdaFrame)invoker.getTopLevelAncestor(); 
-      QRTdaGuiPanel pan = fr.getQRTdaGuipanel();
-      
-      new QRTdaConfiguratorDialog(fr,true,pan,fr.getTdaEnvironment()).setVisible(true);
-    }
-  }
-/*  
-  class NewWindowClick implements ActionListener
-  {
-    //StreamType fr;
-    public NewWindowClick()//StreamType fr)
-    {
-      //this.fr = fr;
-    }
-
-    @Override
-    public void actionPerformed(ActionEvent e)
-    {
-      QRTdaFrame frame = buildFrame(); //fr);
-      showFrame(frame);
-    }    
-  }
-*/ 
-  class ClearPrefs implements ActionListener
-  {
-    QRTdaFrame frame;
-    public ClearPrefs(QRTdaFrame frame)
-    {
-      this.frame = frame;
-    }
-     @Override
-    public void actionPerformed(ActionEvent e)
-    {
-      try {
-        frame.getTdaEnvironment().getPreferences().clearPreferences();
-      }
-      catch (BackingStoreException ex) {
-        Logger.getLogger(QRTdaSwingMain.class.getName()).log(Level.SEVERE, null, ex);
-      }
-    }
-  }
-  
-  class ShowFinder implements ActionListener
-  {
-    @Override
-    public void actionPerformed(ActionEvent e)
-    {
-      if(Desktop.isDesktopSupported()) {
-        try {
-          Desktop.getDesktop().open(TdaEnvironment.workspace);
-        }
-        catch(IOException ex) {
-          System.err.println("Error opening workspace: "+ex.getLocalizedMessage());
-        }
-      }
-    }
-  }
-  
-  class SaveOneClick implements ActionListener
-  {
-    QRTdaFrame frame;
-    public SaveOneClick(QRTdaFrame frame)
-    {
-      this.frame = frame;
-    }
-    @Override
-    public void actionPerformed(ActionEvent e)
-    {
-      JsonConfigSaver.instance().save(frame.getRootPane(),
-          frame.getTdaEnvironment(),
-          frame.getQRTdaGuipanel(),       
-          frame.getQRTdaGuipanel().getElements());
-    }
-  }
-
-  class SaveAllClick implements ActionListener
-  {
-    @Override
-    public void actionPerformed(ActionEvent e)
-    {
-      Iterator<QRTdaFrame> itr = windowList.iterator();
-      ArrayList<QRFlowLink[]> arrLisOfArrays = new ArrayList<>();
-      ArrayList<String> namesArrLis = new ArrayList<>();
-      ArrayList<String> desArrLis = new ArrayList<>();
-      //ArrayList<StreamType> typArrLis = new ArrayList<>();
-      QRTdaFrame firstFrame=null;
-      while(itr.hasNext()) {
-        QRTdaFrame fr = itr.next();
-        arrLisOfArrays.add(fr.getQRTdaGuipanel().getElements());
-        namesArrLis.add(fr.getQRTdaGuipanel().getDataFlowName());
-        desArrLis.add("description/todo");
-        if(firstFrame == null)
-          firstFrame = fr;
-      }
-      JsonConfigSaver.instance().saveAll(firstFrame.getRootPane(), firstFrame.getTdaEnvironment(),
-              namesArrLis.toArray(new String[0]),
-              desArrLis.toArray(new String[0]),
-              arrLisOfArrays.toArray(new QRFlowLink[0][0]));
-    }
-  }
-  
-  class QuitClick implements ActionListener
-  {
-    @Override
-    public void actionPerformed(ActionEvent e)
-    {
-      System.exit(0);
-    }
-  }
-
-  class Closer extends WindowAdapter
-  {
-
-    @Override
-    public void windowClosed(WindowEvent e)
-    {
-      QRTdaFrame fr = (QRTdaFrame)e.getWindow();
-      windowList.remove(fr);
-      if(windowList.size()<=0)
-        System.exit(0);
-      adjustAllMenus(fr.getTdaEnvironment());
-    }    
-  }
-  
-}