Index: trunk/src/scriptbuilder/gui/panels/IncidentTimelinePanel.java
===================================================================
--- trunk/src/scriptbuilder/gui/panels/IncidentTimelinePanel.java	(revision 91)
+++ trunk/src/scriptbuilder/gui/panels/IncidentTimelinePanel.java	(revision 93)
@@ -1,6 +1,6 @@
 package scriptbuilder.gui.panels;
 
-import event.editor.Editor;
-import event.editor.Properties;
+import event.editor.frame.Editor;
+import event.editor.frame.Properties;
 import java.awt.BorderLayout;
 import java.awt.Dimension;
Index: trunk/src/event/editor/frame/PropertyPanels.java
===================================================================
--- trunk/src/event/editor/frame/PropertyPanels.java	(revision 93)
+++ trunk/src/event/editor/frame/PropertyPanels.java	(revision 93)
@@ -0,0 +1,251 @@
+package event.editor.frame;
+
+import event.editor.frame.PropertyPanel;
+import event.editor.frame.Properties;
+import java.util.EnumMap;
+import java.util.Observable;
+import java.util.Vector;
+import javax.swing.JPanel;
+
+/**
+ *
+ * @author Bryan McGuffin
+ */
+public class PropertyPanels extends Observable
+{
+
+    private Vector<PropertyPanel> properties = new Vector<PropertyPanel>();
+
+    private EnumMap<Properties, Integer> propertyCounter
+            = new EnumMap<Properties, Integer>(Properties.class);
+
+    public PropertyPanels()
+    {
+        for (Properties property : Properties.values())
+        {
+            propertyCounter.put(property, 0);
+        }
+    }
+
+    private int nextIndex(Properties property)
+    {
+        propertyCounter.put(property, propertyCounter.get(property) + 1);
+
+        return propertyCounter.get(property);
+    }
+
+    /**
+     * public Vector<PropertyPanel> getProperties() { return
+     * (Vector<PropertyPanel>) properties.clone(); }
+     */
+    private int add(PropertyPanel panel)
+    {
+        int position = 0;
+
+        for (int i = 0; i < properties.size(); i++)
+        {
+            if (properties.get(i).title().compareTo(panel.title()) < 0)
+            {
+                position = i + 1;
+            }
+        }
+
+        properties.add(position, panel);
+
+        return position;
+    }
+
+    public PropertyPanel addPropertyPanel(Properties property, JPanel panel)
+    {
+        PropertyPanel propertyPanel = null;
+
+        if (property.getType() == PropertyTypes.Multiple)
+        {
+            propertyPanel = new MultPropertyPanel(panel, property, nextIndex(property));
+            //propertyPanel.addObserver(this);
+            int position = add(propertyPanel);
+            setChanged();
+            notifyObservers(new PropertyUpdate(UpdateType.Add, propertyPanel, position));
+
+        }
+        else if (property.getType() == PropertyTypes.Optional)
+        {
+            if (containsProperty(property))
+            {
+                throw new RuntimeException("Property \"" + property + "\" is already added");
+            }
+            else
+            {
+                propertyPanel = new PropertyPanel(panel, property);
+                int position = add(propertyPanel);
+                //propertyPanel.addObserver(this);
+                setChanged();
+                notifyObservers(new PropertyUpdate(UpdateType.Add, propertyPanel, position));
+            }
+        }
+        else
+        {
+            throw new RuntimeException("Property \"" + property + "\" not accounted for");
+        }
+
+        return propertyPanel;
+    }
+
+    private boolean remove(PropertyPanel panel)
+    {
+        boolean result = false;
+
+        if ((result = properties.remove(panel)))
+        {
+            setChanged();
+            notifyObservers(new PropertyUpdate(UpdateType.Remove, panel));
+        }
+        else
+        {
+            throw new RuntimeException("Attempted to remove panel that did not exist");
+        }
+
+        if (panel.getProperty().getType() == PropertyTypes.Multiple)
+        {
+            Vector<MultPropertyPanel> panelsOfSameType = new Vector<MultPropertyPanel>();
+            Vector<MultPropertyPanel> panelsOfGreaterIndex = new Vector<MultPropertyPanel>();
+
+            propertyCounter.put(panel.getProperty(), propertyCounter.get(panel.getProperty()) - 1);
+
+            // extract panels of the same property type
+            for (PropertyPanel pan : properties)
+            {
+                if (pan.getProperty() == panel.getProperty())
+                {
+                    panelsOfSameType.add((MultPropertyPanel) pan);
+                }
+            }
+
+            // extract panels whose index is greater than the index of the panel
+            // being removed
+            for (MultPropertyPanel pan : panelsOfSameType)
+            {
+                if (pan.getIndex() > ((MultPropertyPanel) panel).getIndex())
+                {
+                    panelsOfGreaterIndex.add(pan);
+                }
+            }
+
+            // decrement the index of each of the remaining panels by one
+            for (MultPropertyPanel pan : panelsOfGreaterIndex)
+            {
+                pan.setIndex(pan.getIndex() - 1);
+                setChanged();
+                notifyObservers(new PropertyUpdate(UpdateType.TitleChange, pan));
+            }
+        }
+        else if (panel.getProperty().getType() == PropertyTypes.Optional)
+        {
+            // do nothing
+        }
+        else
+        {
+            throw new RuntimeException("PropertyTypes not accounted for");
+        }
+
+        return result;
+    }
+
+    public PropertyPanel removeProperty(Properties property)
+    {
+        if (property.getType() == PropertyTypes.Multiple)
+        {
+            throw new RuntimeException("Attemping to remove a property of multiple type");
+        }
+
+        PropertyPanel removed = null;
+
+        for (PropertyPanel panel : properties)
+        {
+            if (panel.getProperty() == property)
+            {
+                removed = panel;
+            }
+        }
+
+        if (removed == null)
+        {
+            throw new RuntimeException("Could not find panel with property \"" + property + "\"");
+        }
+
+        remove(removed);
+
+        return removed;
+    }
+
+    public PropertyPanel removeProperty(JPanel jPanel)
+    {
+        PropertyPanel removed = null;
+
+        for (PropertyPanel panel : properties)
+        {
+            if (panel.getPanel() == jPanel)
+            {
+                removed = panel;
+            }
+        }
+
+        if (removed == null)
+        {
+            throw new RuntimeException("Could not find jPanel");
+        }
+
+        remove(removed);
+
+        return removed;
+    }
+
+    public PropertyPanel removeProperty(String title)
+    {
+        PropertyPanel removed = null;
+
+        for (PropertyPanel panel : properties)
+        {
+            if (panel.title().equals(title))
+            {
+                if (removed == null)
+                {
+                    removed = panel;
+                }
+                else
+                {
+                    throw new RuntimeException("Attempted to remove a property by title but the title was not unique");
+                }
+            }
+        }
+
+        if (removed == null)
+        {
+            throw new RuntimeException("Did not find titel \"" + title + "\"");
+        }
+
+        remove(removed);
+
+        return removed;
+    }
+
+    public boolean removeProperty(PropertyPanel panel)
+    {
+        return remove(panel);
+    }
+
+    public boolean containsProperty(Properties property)
+    {
+        boolean contains = false;
+
+        for (PropertyPanel panel : properties)
+        {
+            if (panel.getProperty() == property)
+            {
+                contains = true;
+            }
+        }
+
+        return contains;
+    }
+}
Index: trunk/src/event/editor/frame/PropertyUpdate.java
===================================================================
--- trunk/src/event/editor/frame/PropertyUpdate.java	(revision 93)
+++ trunk/src/event/editor/frame/PropertyUpdate.java	(revision 93)
@@ -0,0 +1,47 @@
+package event.editor.frame;
+
+import event.editor.frame.PropertyPanel;
+
+/**
+ *
+ * @author Bryan McGuffin
+ */
+public class PropertyUpdate
+{
+
+    private UpdateType type;
+    private PropertyPanel panel;
+    private int position = -1;
+
+    public PropertyUpdate(UpdateType theType, PropertyPanel thePanel)
+    {
+        type = theType;
+        panel = thePanel;
+    }
+
+    public PropertyUpdate(UpdateType theType, PropertyPanel thePanel, int thePosition)
+    {
+        this(theType, thePanel);
+        position = thePosition;
+    }
+
+    public int getPosition()
+    {
+        if (position == -1)
+        {
+            throw new RuntimeException("position unknown");
+        }
+
+        return position;
+    }
+
+    public UpdateType getType()
+    {
+        return type;
+    }
+
+    public PropertyPanel getPanel()
+    {
+        return panel;
+    }
+}
Index: trunk/src/event/editor/frame/Editor.form
===================================================================
--- trunk/src/event/editor/frame/Editor.form	(revision 93)
+++ trunk/src/event/editor/frame/Editor.form	(revision 93)
@@ -0,0 +1,338 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<Form version="1.3" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
+  <NonVisualComponents>
+    <Container class="javax.swing.JPanel" name="jPanel1">
+
+      <Layout>
+        <DimensionLayout dim="0">
+          <Group type="103" groupAlignment="0" attributes="0">
+              <EmptySpace min="0" pref="100" max="32767" attributes="0"/>
+          </Group>
+        </DimensionLayout>
+        <DimensionLayout dim="1">
+          <Group type="103" groupAlignment="0" attributes="0">
+              <EmptySpace min="0" pref="100" max="32767" attributes="0"/>
+          </Group>
+        </DimensionLayout>
+      </Layout>
+    </Container>
+    <Menu class="javax.swing.JMenuBar" name="jMenuBar1">
+      <SubComponents>
+        <Menu class="javax.swing.JMenu" name="jMenu1">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Evaluations"/>
+          </Properties>
+          <SubComponents>
+            <MenuItem class="javax.swing.JCheckBoxMenuItem" name="ATMS">
+              <Properties>
+                <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
+                  <KeyStroke key="Ctrl+A"/>
+                </Property>
+                <Property name="text" type="java.lang.String" value="ATMS"/>
+                <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+                  <Image iconType="3" name="/images/ATMSEval.png"/>
+                </Property>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="multipleChange"/>
+              </Events>
+            </MenuItem>
+            <MenuItem class="javax.swing.JCheckBoxMenuItem" name="ActivityLog">
+              <Properties>
+                <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
+                  <KeyStroke key="Alt+A"/>
+                </Property>
+                <Property name="text" type="java.lang.String" value="Activity Log"/>
+                <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+                  <Image iconType="3" name="/images/ActivityLogEval.png"/>
+                </Property>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="multipleChange"/>
+              </Events>
+            </MenuItem>
+            <MenuItem class="javax.swing.JCheckBoxMenuItem" name="CAD">
+              <Properties>
+                <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
+                  <KeyStroke key="Alt+C"/>
+                </Property>
+                <Property name="text" type="java.lang.String" value="CAD"/>
+                <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+                  <Image iconType="3" name="/images/CADEval.png"/>
+                </Property>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="multipleChange"/>
+              </Events>
+            </MenuItem>
+            <MenuItem class="javax.swing.JMenuItem" name="CMS">
+              <Properties>
+                <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
+                  <KeyStroke key="Ctrl+Alt+C"/>
+                </Property>
+                <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+                  <Image iconType="3" name="/images/CMSEval.png"/>
+                </Property>
+                <Property name="text" type="java.lang.String" value="CMS"/>
+              </Properties>
+              <Events>
+                <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="multipleChangeListener"/>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="multipleChange"/>
+              </Events>
+            </MenuItem>
+            <MenuItem class="javax.swing.JCheckBoxMenuItem" name="Facilitator">
+              <Properties>
+                <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
+                  <KeyStroke key="Ctrl+F"/>
+                </Property>
+                <Property name="text" type="java.lang.String" value="Facilitator"/>
+                <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+                  <Image iconType="3" name="/images/FacilitatorEval.png"/>
+                </Property>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="optionalChange"/>
+              </Events>
+            </MenuItem>
+            <MenuItem class="javax.swing.JCheckBoxMenuItem" name="Radio">
+              <Properties>
+                <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
+                  <KeyStroke key="Ctrl+R"/>
+                </Property>
+                <Property name="text" type="java.lang.String" value="Radio"/>
+                <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+                  <Image iconType="3" name="/images/RadioEval.png"/>
+                </Property>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="optionalChange"/>
+              </Events>
+            </MenuItem>
+          </SubComponents>
+        </Menu>
+        <Menu class="javax.swing.JMenu" name="JMenu2">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Instructor Actions"/>
+          </Properties>
+          <SubComponents>
+            <MenuItem class="javax.swing.JCheckBoxMenuItem" name="MaintenanceRadio">
+              <Properties>
+                <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
+                  <KeyStroke key="Ctrl+M"/>
+                </Property>
+                <Property name="text" type="java.lang.String" value="Maintenance Radio"/>
+                <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+                  <Image iconType="3" name="/images/MaintenanceRadio.png"/>
+                </Property>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="optionalChange"/>
+              </Events>
+            </MenuItem>
+            <MenuItem class="javax.swing.JCheckBoxMenuItem" name="TMTRadio">
+              <Properties>
+                <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
+                  <KeyStroke key="Ctrl+Alt+T"/>
+                </Property>
+                <Property name="text" type="java.lang.String" value="TMT Radio"/>
+                <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+                  <Image iconType="3" name="/images/TMTRadio.png"/>
+                </Property>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="optionalChange"/>
+              </Events>
+            </MenuItem>
+            <MenuItem class="javax.swing.JCheckBoxMenuItem" name="Telephone">
+              <Properties>
+                <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
+                  <KeyStroke key="Shift+Ctrl+T"/>
+                </Property>
+                <Property name="text" type="java.lang.String" value="Telephone"/>
+                <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+                  <Image iconType="3" name="/images/Telephone.png"/>
+                </Property>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="optionalChange"/>
+              </Events>
+            </MenuItem>
+          </SubComponents>
+        </Menu>
+        <Menu class="javax.swing.JMenu" name="jMenu3">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Automated Data"/>
+          </Properties>
+          <SubComponents>
+            <MenuItem class="javax.swing.JMenuItem" name="Audio">
+              <Properties>
+                <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
+                  <KeyStroke key="Ctrl+A"/>
+                </Property>
+                <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+                  <Image iconType="3" name="/images/Audio.png"/>
+                </Property>
+                <Property name="text" type="java.lang.String" value="Audio"/>
+              </Properties>
+            </MenuItem>
+            <MenuItem class="javax.swing.JMenuItem" name="CADLog">
+              <Properties>
+                <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
+                  <KeyStroke key="Ctrl+C"/>
+                </Property>
+                <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+                  <Image iconType="3" name="/images/CAD.png"/>
+                </Property>
+                <Property name="text" type="java.lang.String" value="CAD Log"/>
+              </Properties>
+            </MenuItem>
+            <MenuItem class="javax.swing.JMenuItem" name="CCTV">
+              <Properties>
+                <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
+                  <KeyStroke key="Ctrl+V"/>
+                </Property>
+                <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+                  <Image iconType="3" name="/images/CCTV.png"/>
+                </Property>
+                <Property name="text" type="java.lang.String" value="CCTV"/>
+              </Properties>
+            </MenuItem>
+            <MenuItem class="javax.swing.JCheckBoxMenuItem" name="CHPRadio">
+              <Properties>
+                <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
+                  <KeyStroke key="Alt+C"/>
+                </Property>
+                <Property name="text" type="java.lang.String" value="CHP Radio"/>
+                <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+                  <Image iconType="3" name="/images/CHPRadio.png"/>
+                </Property>
+              </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="optionalChange"/>
+              </Events>
+            </MenuItem>
+            <MenuItem class="javax.swing.JMenuItem" name="Paramics">
+              <Properties>
+                <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
+                  <KeyStroke key="Ctrl+P"/>
+                </Property>
+                <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+                  <Image iconType="3" name="/images/Paramics.png"/>
+                </Property>
+                <Property name="text" type="java.lang.String" value="Paramics"/>
+              </Properties>
+            </MenuItem>
+            <MenuItem class="javax.swing.JMenuItem" name="Tow">
+              <Properties>
+                <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
+                  <KeyStroke key="Ctrl+T"/>
+                </Property>
+                <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+                  <Image iconType="3" name="/images/Tow.png"/>
+                </Property>
+                <Property name="text" type="java.lang.String" value="Tow"/>
+              </Properties>
+            </MenuItem>
+            <MenuItem class="javax.swing.JMenuItem" name="Unit">
+              <Properties>
+                <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
+                  <KeyStroke key="Ctrl+U"/>
+                </Property>
+                <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+                  <Image iconType="3" name="/images/Unit.png"/>
+                </Property>
+                <Property name="text" type="java.lang.String" value="Unit"/>
+              </Properties>
+            </MenuItem>
+            <MenuItem class="javax.swing.JMenuItem" name="Witness">
+              <Properties>
+                <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
+                  <KeyStroke key="Ctrl+W"/>
+                </Property>
+                <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+                  <Image iconType="3" name="/images/Witness.png"/>
+                </Property>
+                <Property name="text" type="java.lang.String" value="Witness"/>
+              </Properties>
+            </MenuItem>
+          </SubComponents>
+        </Menu>
+      </SubComponents>
+    </Menu>
+  </NonVisualComponents>
+  <Properties>
+    <Property name="defaultCloseOperation" type="int" value="2"/>
+    <Property name="title" type="java.lang.String" value="Event Editor"/>
+  </Properties>
+  <SyntheticProperties>
+    <SyntheticProperty name="menuBar" type="java.lang.String" value="jMenuBar1"/>
+    <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">
+          <Component id="jTabbedPane1" alignment="1" max="32767" attributes="0"/>
+          <Component id="jPanel2" alignment="0" max="32767" attributes="0"/>
+      </Group>
+    </DimensionLayout>
+    <DimensionLayout dim="1">
+      <Group type="103" groupAlignment="0" attributes="0">
+          <Group type="102" alignment="0" attributes="0">
+              <EmptySpace max="-2" attributes="0"/>
+              <Component id="jTabbedPane1" pref="539" max="32767" attributes="0"/>
+              <EmptySpace max="-2" attributes="0"/>
+              <Component id="jPanel2" min="-2" max="-2" attributes="0"/>
+          </Group>
+      </Group>
+    </DimensionLayout>
+  </Layout>
+  <SubComponents>
+    <Container class="javax.swing.JTabbedPane" name="jTabbedPane1">
+
+      <Layout class="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout"/>
+    </Container>
+    <Container class="javax.swing.JPanel" name="jPanel2">
+
+      <Layout>
+        <DimensionLayout dim="0">
+          <Group type="103" groupAlignment="0" attributes="0">
+              <Group type="102" alignment="1" attributes="0">
+                  <EmptySpace pref="701" max="32767" attributes="0"/>
+                  <Component id="btnRemoveCurrentEvent" min="-2" pref="226" max="-2" attributes="0"/>
+                  <EmptySpace max="-2" attributes="0"/>
+              </Group>
+          </Group>
+        </DimensionLayout>
+        <DimensionLayout dim="1">
+          <Group type="103" groupAlignment="0" attributes="0">
+              <Component id="btnRemoveCurrentEvent" min="-2" max="-2" attributes="0"/>
+          </Group>
+        </DimensionLayout>
+      </Layout>
+      <SubComponents>
+        <Component class="javax.swing.JButton" name="btnRemoveCurrentEvent">
+          <Properties>
+            <Property name="text" type="java.lang.String" value="Remove This Event"/>
+          </Properties>
+          <Events>
+            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnRemoveCurrentEventActionPerformed"/>
+          </Events>
+        </Component>
+      </SubComponents>
+    </Container>
+  </SubComponents>
+</Form>
Index: trunk/src/event/editor/frame/PropertyTypes.java
===================================================================
--- trunk/src/event/editor/frame/PropertyTypes.java	(revision 93)
+++ trunk/src/event/editor/frame/PropertyTypes.java	(revision 93)
@@ -0,0 +1,16 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package event.editor.frame;
+
+/**
+ *
+ * @author Bryan McGuffin
+ */
+public enum PropertyTypes
+{
+
+    Optional, Multiple;
+}
Index: trunk/src/event/editor/frame/Properties.java
===================================================================
--- trunk/src/event/editor/frame/Properties.java	(revision 93)
+++ trunk/src/event/editor/frame/Properties.java	(revision 93)
@@ -0,0 +1,83 @@
+package event.editor.frame;
+import images.*;
+import java.awt.Graphics;
+import javax.swing.ImageIcon;
+import java.net.URL;
+import java.awt.Image;
+import java.awt.image.BufferedImage;
+
+public enum Properties
+{
+    ATMS                ("ATMS", PropertyTypes.Optional,
+        loadImage(Images.getImage("ATMSEval.png"))),
+    ActivityLog         ("Activity Log", PropertyTypes.Optional,
+        loadImage(Images.getImage("ActivityLogEval.png"))),
+    CAD                 ("CAD", PropertyTypes.Optional,
+        loadImage(Images.getImage("CADEval.png"))),
+    Facilitator         ("Faciliatator", PropertyTypes.Optional,
+        loadImage(Images.getImage("FacilitatorEval.png"))),
+    Radio               ("Radio", PropertyTypes.Optional,
+        loadImage(Images.getImage("RadioEval.png"))),
+    MaintenanceRadio    ("Maintenance Radio", PropertyTypes.Optional,
+        loadImage(Images.getImage("MaintenanceRadio.png"))),
+    TMTRadio            ("TMT Radio", PropertyTypes.Optional,
+        loadImage(Images.getImage("TMTRadio.png"))),
+    Telephone           ("Telephone", PropertyTypes.Optional,
+        loadImage(Images.getImage("Telephone.png"))),
+    CHPRadio            ("CHP Radio",PropertyTypes.Optional,
+        loadImage(Images.getImage("CHPRadio.png"))),
+    CMS                 ("CMS", PropertyTypes.Multiple,
+        loadImage(Images.getImage("CMSEval.png"))),
+    Audio               ("Audio", PropertyTypes.Multiple,
+        loadImage(Images.getImage("Audio.png"))),
+    CCTV                ("CCTV", PropertyTypes.Multiple,
+        loadImage(Images.getImage("CCTV.png"))),
+    CADLog              ("CAD Log", PropertyTypes.Multiple,
+        loadImage(Images.getImage("CAD.png"))),
+    Paramics            ("Paramics", PropertyTypes.Multiple,
+        loadImage(Images.getImage("Paramics.png"))),
+    Tow                 ("Tow", PropertyTypes.Multiple,
+        loadImage(Images.getImage("Tow.png"))),
+    Unit                ("Unit", PropertyTypes.Multiple,
+        loadImage(Images.getImage("Unit.png"))),
+    Witness             ("Witness", PropertyTypes.Multiple,
+        loadImage(Images.getImage("Witness.png")));
+
+    private String title;
+    private PropertyTypes type;
+    private ImageIcon image;
+
+    private Properties(String theTitle, PropertyTypes theType, ImageIcon theImage)
+    {
+        title = theTitle;
+        type = theType;
+        image = theImage;
+    }
+
+    public String getTitle()
+    {
+        return title;
+    }
+
+    public PropertyTypes getType()
+    {
+        return type;
+    }
+
+    public ImageIcon getImage()
+    {
+        return image;
+    }
+
+    private static ImageIcon loadImage(URL url)
+    {
+        double scale = 0.8;
+        ImageIcon icon = new ImageIcon(url);
+        Image img = icon.getImage();
+        BufferedImage bi = new BufferedImage(img.getWidth(null),
+                img.getHeight(null), BufferedImage.TYPE_INT_ARGB);
+        Graphics g = bi.createGraphics();
+        g.drawImage(img, 0, 0, (int) (img.getWidth(null) * scale), (int)(img.getHeight(null) * scale), null);
+        return new ImageIcon(bi);
+    }
+}
Index: trunk/src/event/editor/frame/PropertyPanel.java
===================================================================
--- trunk/src/event/editor/frame/PropertyPanel.java	(revision 93)
+++ trunk/src/event/editor/frame/PropertyPanel.java	(revision 93)
@@ -0,0 +1,37 @@
+package event.editor.frame;
+
+import event.editor.frame.Properties;
+import javax.swing.JPanel;
+
+/**
+ *
+ * @author Bryan McGuffin
+ */
+public class PropertyPanel
+{
+
+    private final JPanel panel;
+    private final Properties property;
+
+    public PropertyPanel(JPanel thePanel,
+            Properties theProperty)
+    {
+        panel = thePanel;
+        property = theProperty;
+    }
+
+    public JPanel getPanel()
+    {
+        return panel;
+    }
+
+    public Properties getProperty()
+    {
+        return property;
+    }
+
+    public String title()
+    {
+        return property.getTitle();
+    }
+}
Index: trunk/src/event/editor/frame/UpdateType.java
===================================================================
--- trunk/src/event/editor/frame/UpdateType.java	(revision 93)
+++ trunk/src/event/editor/frame/UpdateType.java	(revision 93)
@@ -0,0 +1,16 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package event.editor.frame;
+
+/**
+ *
+ * @author Bryan McGuffin
+ */
+public enum UpdateType
+{
+
+    Add, Remove, TitleChange
+}
Index: trunk/src/event/editor/frame/PropertyModel.java
===================================================================
--- trunk/src/event/editor/frame/PropertyModel.java	(revision 93)
+++ trunk/src/event/editor/frame/PropertyModel.java	(revision 93)
@@ -0,0 +1,100 @@
+package event.editor.frame;
+
+import event.editor.AudioPanel;
+import event.editor.CADLogPanel;
+import event.editor.CCTVPanel;
+import event.editor.CHPRadioPanel;
+import event.editor.CMSEvaluationPanel;
+import event.editor.GenericEvaluationPanel;
+import event.editor.I_ScriptEventEditorPanel;
+import event.editor.MaintenanceRadioPanel;
+import event.editor.ParamicsPanel;
+import event.editor.TMTRadioPanel;
+import event.editor.TelephonePanel;
+import event.editor.TowPanel;
+import event.editor.UnitPanel;
+import event.editor.WitnessPanel;
+import event.editor.frame.PropertyPanels;
+import event.editor.frame.PropertyPanel;
+import event.editor.frame.Properties;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.EnumMap;
+import java.util.Observable;
+import java.util.Observer;
+import javax.swing.JPanel;
+import scriptbuilder.structures.events.I_ScriptEvent;
+
+/**
+ *
+ * @author Bryan McGuffin
+ */
+public class PropertyModel extends Observable implements Observer
+{
+
+    PropertyPanels properties = new PropertyPanels();
+
+    private EnumMap<Properties, Class> classMap
+            = new EnumMap<Properties, Class>(Properties.class);
+
+    public PropertyModel()
+    {
+        classMap.put(Properties.ATMS, GenericEvaluationPanel.class);
+        classMap.put(Properties.ActivityLog, GenericEvaluationPanel.class);
+        classMap.put(Properties.CAD, GenericEvaluationPanel.class);
+        classMap.put(Properties.Facilitator, GenericEvaluationPanel.class);
+        classMap.put(Properties.Radio, GenericEvaluationPanel.class);
+
+        classMap.put(Properties.MaintenanceRadio, MaintenanceRadioPanel.class);
+        classMap.put(Properties.TMTRadio, TMTRadioPanel.class);
+        classMap.put(Properties.CHPRadio, CHPRadioPanel.class);
+        classMap.put(Properties.Telephone, TelephonePanel.class);
+
+        classMap.put(Properties.Audio, AudioPanel.class);
+        classMap.put(Properties.CADLog, CADLogPanel.class);
+        classMap.put(Properties.CCTV, CCTVPanel.class);
+        classMap.put(Properties.CMS, CMSEvaluationPanel.class);
+        classMap.put(Properties.Paramics, ParamicsPanel.class);
+        classMap.put(Properties.Tow, TowPanel.class);
+        classMap.put(Properties.Unit, UnitPanel.class);
+        classMap.put(Properties.Witness, WitnessPanel.class);
+
+        properties.addObserver(this);
+    }
+
+    public void addProperty(Properties property, I_ScriptEvent se)
+    {
+        try
+        {
+            JPanel panel = (JPanel) classMap.get(property).newInstance();
+
+            final PropertyPanel propertyPanel = properties.addPropertyPanel(property, panel);
+            if (panel instanceof I_ScriptEventEditorPanel)
+            {
+                ((I_ScriptEventEditorPanel) panel).getEventObject(se);
+            }
+        }
+        catch (Exception e)
+        {
+            System.err.println("Could not create panel of type \"" + property + "\"");
+        }
+    }
+
+    public void removeProperty(Properties property)
+    {
+        properties.removeProperty(property);
+    }
+
+    public void update(Observable o, Object arg)
+    {
+        setChanged();
+        notifyObservers(arg);
+    }
+
+    /*
+     public Vector<PropertyPanel> getPropertyPanels()
+     {
+     return properties.getProperties();
+     }
+     */
+}
Index: trunk/src/event/editor/frame/Editor.java
===================================================================
--- trunk/src/event/editor/frame/Editor.java	(revision 93)
+++ trunk/src/event/editor/frame/Editor.java	(revision 93)
@@ -0,0 +1,504 @@
+package event.editor.frame;
+
+import event.editor.I_ScriptEventEditorPanel;
+import event.editor.frame.PropertyTypes;
+import event.editor.frame.PropertyUpdate;
+import event.editor.frame.Properties;
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.FlowLayout;
+import javax.swing.*;
+import java.util.*;
+import java.awt.event.*;
+import scriptbuilder.gui.IncidentEditorFrame;
+import scriptbuilder.structures.ScriptIncident;
+import scriptbuilder.structures.events.*;
+
+public class Editor extends javax.swing.JFrame implements Observer
+{
+
+    IncidentEditorFrame topFrame = null;
+
+    private PropertyModel model = new PropertyModel();
+
+//    public PropertyModel getPropertyModel()
+//    {
+//        return model;
+//    }
+    public void addProperty(Properties property, I_ScriptEvent se)
+    {
+        model.addProperty(property, se);
+    }
+
+    private ActionListener optionalChangeListener = new ActionListener()
+    {
+        public void actionPerformed(ActionEvent evt)
+        {
+            JCheckBoxMenuItem src = (JCheckBoxMenuItem) evt.getSource();
+            Properties property = Properties.valueOf(src.getText().replaceAll(" ", ""));
+
+            if (src.isSelected())
+            {
+                model.addProperty(property, new CCTVEvent());
+            }
+            else
+            {
+                model.removeProperty(property);
+            }
+        }
+    };
+
+    private ActionListener multipleChangeListener = new ActionListener()
+    {
+        public void actionPerformed(ActionEvent evt)
+        {
+            JMenuItem src = (JMenuItem) evt.getSource();
+            model.addProperty(Properties.valueOf(src.getText().replaceAll(" ", "")), new CCTVEvent());
+        }
+    };
+
+    /**
+     * Blank constructor for a new editor.
+     */
+    public Editor(IncidentEditorFrame frame)
+    {
+        topFrame = frame;
+        initComponents();
+
+        model.addObserver(this);
+
+        // For each menu
+        for (int menuCtr = 0; menuCtr < jMenuBar1.getMenuCount(); menuCtr++)
+        {
+            // for each menu item
+            for (java.awt.Component comp : jMenuBar1.getMenu(menuCtr).getMenuComponents())
+            {
+                JMenuItem item = (JMenuItem) comp;
+
+                String itemName = item.getText().replaceAll(" ", "");
+
+                Properties property = Properties.valueOf(itemName);
+
+                if (property.getType() == PropertyTypes.Multiple)
+                {
+                    item.addActionListener(multipleChangeListener);
+                }
+                else if (property.getType() == PropertyTypes.Optional)
+                {
+                    item.addActionListener(optionalChangeListener);
+                }
+                else
+                {
+                    throw new RuntimeException("Property type not accounted for");
+                }
+            }
+        }
+    }
+
+    /**
+     * 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()
+    {
+
+        jPanel1 = new javax.swing.JPanel();
+        jTabbedPane1 = new javax.swing.JTabbedPane();
+        jPanel2 = new javax.swing.JPanel();
+        btnRemoveCurrentEvent = new javax.swing.JButton();
+        jMenuBar1 = new javax.swing.JMenuBar();
+        jMenu1 = new javax.swing.JMenu();
+        ATMS = new javax.swing.JCheckBoxMenuItem();
+        ActivityLog = new javax.swing.JCheckBoxMenuItem();
+        CAD = new javax.swing.JCheckBoxMenuItem();
+        CMS = new javax.swing.JMenuItem();
+        Facilitator = new javax.swing.JCheckBoxMenuItem();
+        Radio = new javax.swing.JCheckBoxMenuItem();
+        JMenu2 = new javax.swing.JMenu();
+        MaintenanceRadio = new javax.swing.JCheckBoxMenuItem();
+        TMTRadio = new javax.swing.JCheckBoxMenuItem();
+        Telephone = new javax.swing.JCheckBoxMenuItem();
+        jMenu3 = new javax.swing.JMenu();
+        Audio = new javax.swing.JMenuItem();
+        CADLog = new javax.swing.JMenuItem();
+        CCTV = new javax.swing.JMenuItem();
+        CHPRadio = new javax.swing.JCheckBoxMenuItem();
+        Paramics = new javax.swing.JMenuItem();
+        Tow = new javax.swing.JMenuItem();
+        Unit = new javax.swing.JMenuItem();
+        Witness = new javax.swing.JMenuItem();
+
+        org.jdesktop.layout.GroupLayout jPanel1Layout = new org.jdesktop.layout.GroupLayout(jPanel1);
+        jPanel1.setLayout(jPanel1Layout);
+        jPanel1Layout.setHorizontalGroup(
+            jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+            .add(0, 100, Short.MAX_VALUE)
+        );
+        jPanel1Layout.setVerticalGroup(
+            jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+            .add(0, 100, Short.MAX_VALUE)
+        );
+
+        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
+        setTitle("Event Editor");
+
+        btnRemoveCurrentEvent.setText("Remove This Event");
+        btnRemoveCurrentEvent.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                btnRemoveCurrentEventActionPerformed(evt);
+            }
+        });
+
+        org.jdesktop.layout.GroupLayout jPanel2Layout = new org.jdesktop.layout.GroupLayout(jPanel2);
+        jPanel2.setLayout(jPanel2Layout);
+        jPanel2Layout.setHorizontalGroup(
+            jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+            .add(org.jdesktop.layout.GroupLayout.TRAILING, jPanel2Layout.createSequentialGroup()
+                .addContainerGap(701, Short.MAX_VALUE)
+                .add(btnRemoveCurrentEvent, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 226, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
+                .addContainerGap())
+        );
+        jPanel2Layout.setVerticalGroup(
+            jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+            .add(btnRemoveCurrentEvent)
+        );
+
+        jMenu1.setText("Evaluations");
+
+        ATMS.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_A, java.awt.event.InputEvent.CTRL_MASK));
+        ATMS.setText("ATMS");
+        ATMS.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/ATMSEval.png"))); // NOI18N
+        ATMS.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                multipleChange(evt);
+            }
+        });
+        jMenu1.add(ATMS);
+
+        ActivityLog.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_A, java.awt.event.InputEvent.ALT_MASK));
+        ActivityLog.setText("Activity Log");
+        ActivityLog.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/ActivityLogEval.png"))); // NOI18N
+        ActivityLog.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                multipleChange(evt);
+            }
+        });
+        jMenu1.add(ActivityLog);
+
+        CAD.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_C, java.awt.event.InputEvent.ALT_MASK));
+        CAD.setText("CAD");
+        CAD.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/CADEval.png"))); // NOI18N
+        CAD.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                multipleChange(evt);
+            }
+        });
+        jMenu1.add(CAD);
+
+        CMS.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_C, java.awt.event.InputEvent.ALT_MASK | java.awt.event.InputEvent.CTRL_MASK));
+        CMS.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/CMSEval.png"))); // NOI18N
+        CMS.setText("CMS");
+        CMS.addMouseListener(new java.awt.event.MouseAdapter()
+        {
+            public void mouseClicked(java.awt.event.MouseEvent evt)
+            {
+                multipleChangeListener(evt);
+            }
+        });
+        CMS.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                multipleChange(evt);
+            }
+        });
+        jMenu1.add(CMS);
+
+        Facilitator.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F, java.awt.event.InputEvent.CTRL_MASK));
+        Facilitator.setText("Facilitator");
+        Facilitator.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/FacilitatorEval.png"))); // NOI18N
+        Facilitator.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                optionalChange(evt);
+            }
+        });
+        jMenu1.add(Facilitator);
+
+        Radio.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_R, java.awt.event.InputEvent.CTRL_MASK));
+        Radio.setText("Radio");
+        Radio.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/RadioEval.png"))); // NOI18N
+        Radio.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                optionalChange(evt);
+            }
+        });
+        jMenu1.add(Radio);
+
+        jMenuBar1.add(jMenu1);
+
+        JMenu2.setText("Instructor Actions");
+
+        MaintenanceRadio.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_M, java.awt.event.InputEvent.CTRL_MASK));
+        MaintenanceRadio.setText("Maintenance Radio");
+        MaintenanceRadio.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/MaintenanceRadio.png"))); // NOI18N
+        MaintenanceRadio.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                optionalChange(evt);
+            }
+        });
+        JMenu2.add(MaintenanceRadio);
+
+        TMTRadio.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_T, java.awt.event.InputEvent.ALT_MASK | java.awt.event.InputEvent.CTRL_MASK));
+        TMTRadio.setText("TMT Radio");
+        TMTRadio.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/TMTRadio.png"))); // NOI18N
+        TMTRadio.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                optionalChange(evt);
+            }
+        });
+        JMenu2.add(TMTRadio);
+
+        Telephone.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_T, java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK));
+        Telephone.setText("Telephone");
+        Telephone.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/Telephone.png"))); // NOI18N
+        Telephone.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                optionalChange(evt);
+            }
+        });
+        JMenu2.add(Telephone);
+
+        jMenuBar1.add(JMenu2);
+
+        jMenu3.setText("Automated Data");
+
+        Audio.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_A, java.awt.event.InputEvent.CTRL_MASK));
+        Audio.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/Audio.png"))); // NOI18N
+        Audio.setText("Audio");
+        jMenu3.add(Audio);
+
+        CADLog.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_C, java.awt.event.InputEvent.CTRL_MASK));
+        CADLog.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/CAD.png"))); // NOI18N
+        CADLog.setText("CAD Log");
+        jMenu3.add(CADLog);
+
+        CCTV.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_V, java.awt.event.InputEvent.CTRL_MASK));
+        CCTV.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/CCTV.png"))); // NOI18N
+        CCTV.setText("CCTV");
+        jMenu3.add(CCTV);
+
+        CHPRadio.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_C, java.awt.event.InputEvent.ALT_MASK));
+        CHPRadio.setText("CHP Radio");
+        CHPRadio.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/CHPRadio.png"))); // NOI18N
+        CHPRadio.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                optionalChange(evt);
+            }
+        });
+        jMenu3.add(CHPRadio);
+
+        Paramics.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_P, java.awt.event.InputEvent.CTRL_MASK));
+        Paramics.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/Paramics.png"))); // NOI18N
+        Paramics.setText("Paramics");
+        jMenu3.add(Paramics);
+
+        Tow.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_T, java.awt.event.InputEvent.CTRL_MASK));
+        Tow.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/Tow.png"))); // NOI18N
+        Tow.setText("Tow");
+        jMenu3.add(Tow);
+
+        Unit.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_U, java.awt.event.InputEvent.CTRL_MASK));
+        Unit.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/Unit.png"))); // NOI18N
+        Unit.setText("Unit");
+        jMenu3.add(Unit);
+
+        Witness.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_W, java.awt.event.InputEvent.CTRL_MASK));
+        Witness.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/Witness.png"))); // NOI18N
+        Witness.setText("Witness");
+        jMenu3.add(Witness);
+
+        jMenuBar1.add(jMenu3);
+
+        setJMenuBar(jMenuBar1);
+
+        org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
+        getContentPane().setLayout(layout);
+        layout.setHorizontalGroup(
+            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+            .add(org.jdesktop.layout.GroupLayout.TRAILING, jTabbedPane1)
+            .add(jPanel2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+        );
+        layout.setVerticalGroup(
+            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+            .add(layout.createSequentialGroup()
+                .addContainerGap()
+                .add(jTabbedPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 539, Short.MAX_VALUE)
+                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+                .add(jPanel2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
+        );
+
+        pack();
+    }// </editor-fold>//GEN-END:initComponents
+
+    private void multipleChangeListener(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_multipleChangeListener
+
+    }//GEN-LAST:event_multipleChangeListener
+
+    private void multipleChange(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_multipleChange
+
+    }//GEN-LAST:event_multipleChange
+
+    private void optionalChange(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_optionalChange
+
+    }//GEN-LAST:event_optionalChange
+
+    private void btnRemoveCurrentEventActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_btnRemoveCurrentEventActionPerformed
+    {//GEN-HEADEREND:event_btnRemoveCurrentEventActionPerformed
+
+        int index = jTabbedPane1.getSelectedIndex();
+
+        if (index > 0 && jTabbedPane1.getTabComponentAt(index) != null)
+        {
+            JPanel removable = (JPanel) jTabbedPane1
+                    .getSelectedComponent();
+            this.model.properties.removeProperty(removable);
+        }
+
+    }//GEN-LAST:event_btnRemoveCurrentEventActionPerformed
+
+    /**
+     * @param args the command line arguments
+     */
+    public static void main(String args[])
+    {
+        java.awt.EventQueue.invokeLater(new Runnable()
+        {
+            public void run()
+            {
+                new Editor(new IncidentEditorFrame(new ScriptIncident(100, null, null, null))).setVisible(true);
+            }
+        });
+    }
+
+    // Variables declaration - do not modify//GEN-BEGIN:variables
+    private javax.swing.JCheckBoxMenuItem ATMS;
+    private javax.swing.JCheckBoxMenuItem ActivityLog;
+    private javax.swing.JMenuItem Audio;
+    private javax.swing.JCheckBoxMenuItem CAD;
+    private javax.swing.JMenuItem CADLog;
+    private javax.swing.JMenuItem CCTV;
+    private javax.swing.JCheckBoxMenuItem CHPRadio;
+    private javax.swing.JMenuItem CMS;
+    private javax.swing.JCheckBoxMenuItem Facilitator;
+    private javax.swing.JMenu JMenu2;
+    private javax.swing.JCheckBoxMenuItem MaintenanceRadio;
+    private javax.swing.JMenuItem Paramics;
+    private javax.swing.JCheckBoxMenuItem Radio;
+    private javax.swing.JCheckBoxMenuItem TMTRadio;
+    private javax.swing.JCheckBoxMenuItem Telephone;
+    private javax.swing.JMenuItem Tow;
+    private javax.swing.JMenuItem Unit;
+    private javax.swing.JMenuItem Witness;
+    private javax.swing.JButton btnRemoveCurrentEvent;
+    private javax.swing.JMenu jMenu1;
+    private javax.swing.JMenu jMenu3;
+    private javax.swing.JMenuBar jMenuBar1;
+    private javax.swing.JPanel jPanel1;
+    private javax.swing.JPanel jPanel2;
+    private javax.swing.JTabbedPane jTabbedPane1;
+    // End of variables declaration//GEN-END:variables
+
+    @Override
+    public void update(Observable o, Object arg)
+    {
+
+        final PropertyUpdate update = (PropertyUpdate) arg;
+        final ImageIcon image = update.getPanel().getProperty().getImage();
+        final String caption = update.getPanel().title();
+
+        final JLabel title = new JLabel(caption, image, JLabel.CENTER);
+
+        /*
+         final BorderLayout layout = new BorderLayout();
+         final JPanel title = new JPanel(layout);
+         title.setOpaque(false);
+         title.add(new JLabel(image), BorderLayout.WEST);
+         title.add(new JLabel(caption), BorderLayout.EAST);
+         */
+        if (update.getType() == UpdateType.Add)
+        {
+            jTabbedPane1.insertTab(null, null,
+                    update.getPanel().getPanel(), null, update.getPosition());
+            jTabbedPane1.setTabComponentAt(update.getPosition(), title);
+            jTabbedPane1.setSelectedIndex(update.getPosition());
+            topFrame.repaint();
+        }
+        else if (update.getType() == UpdateType.Remove)
+        {
+            jTabbedPane1.remove(update.getPanel().getPanel());
+            if (update.getPanel().getPanel() instanceof I_ScriptEventEditorPanel)
+            {
+                ((I_ScriptEventEditorPanel) update.getPanel().getPanel()).removeAssociatedEvent();
+            }
+            topFrame.repaint();
+        }
+        else if (update.getType() == UpdateType.TitleChange)
+        {
+            final int index = jTabbedPane1.indexOfComponent(
+                    update.getPanel().getPanel());
+
+            new Thread(new Runnable()
+            {
+                public void run()
+                {
+                    Color c = jTabbedPane1.getForegroundAt(index);
+                    jTabbedPane1.setForegroundAt(index, Color.blue);
+                    try
+                    {
+                        Thread.sleep(350);
+                    }
+                    catch (Exception e)
+                    {
+                    }
+                    jTabbedPane1.setTabComponentAt(index, title);
+                    try
+                    {
+                        Thread.sleep(350);
+                    }
+                    catch (Exception e)
+                    {
+                    }
+                    jTabbedPane1.setForegroundAt(index, c);
+                }
+            }).start();
+        }
+        else
+        {
+            throw new RuntimeException("UpdateType not accounted for");
+        }
+    }
+
+}
Index: trunk/src/event/editor/frame/MultPropertyPanel.java
===================================================================
--- trunk/src/event/editor/frame/MultPropertyPanel.java	(revision 93)
+++ trunk/src/event/editor/frame/MultPropertyPanel.java	(revision 93)
@@ -0,0 +1,39 @@
+package event.editor.frame;
+
+import event.editor.frame.PropertyPanel;
+import event.editor.frame.Properties;
+import javax.swing.JPanel;
+
+/**
+ *
+ * @author Bryan McGuffin
+ */
+public class MultPropertyPanel extends PropertyPanel
+{
+
+    private int index;
+
+    public MultPropertyPanel(JPanel thePanel,
+            Properties theProperty,
+            int theIndex)
+    {
+        super(thePanel, theProperty);
+        index = theIndex;
+    }
+
+    public int getIndex()
+    {
+        return index;
+    }
+
+    public void setIndex(int newIndex)
+    {
+        index = newIndex;
+    }
+
+    @Override
+    public String title()
+    {
+        return super.title() + " " + index;
+    }
+}
Index: trunk/src/event/editor/PropertyModel.java
===================================================================
--- trunk/src/event/editor/PropertyModel.java	(revision 92)
+++ 	(revision )
@@ -1,83 +1,0 @@
-package event.editor;
-
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.util.EnumMap;
-import java.util.Observable;
-import java.util.Observer;
-import javax.swing.JPanel;
-import scriptbuilder.structures.events.I_ScriptEvent;
-
-/**
- *
- * @author Bryan McGuffin
- */
-public class PropertyModel extends Observable implements Observer
-{
-
-    PropertyPanels properties = new PropertyPanels();
-
-    private EnumMap<Properties, Class> classMap
-            = new EnumMap<Properties, Class>(Properties.class);
-
-    public PropertyModel()
-    {
-        classMap.put(Properties.ATMS, GenericEvaluationPanel.class);
-        classMap.put(Properties.ActivityLog, GenericEvaluationPanel.class);
-        classMap.put(Properties.CAD, GenericEvaluationPanel.class);
-        classMap.put(Properties.Facilitator, GenericEvaluationPanel.class);
-        classMap.put(Properties.Radio, GenericEvaluationPanel.class);
-
-        classMap.put(Properties.MaintenanceRadio, MaintenanceRadioPanel.class);
-        classMap.put(Properties.TMTRadio, TMTRadioPanel.class);
-        classMap.put(Properties.CHPRadio, CHPRadioPanel.class);
-        classMap.put(Properties.Telephone, TelephonePanel.class);
-
-        classMap.put(Properties.Audio, AudioPanel.class);
-        classMap.put(Properties.CADLog, CADLogPanel.class);
-        classMap.put(Properties.CCTV, CCTVPanel.class);
-        classMap.put(Properties.CMS, CMSEvaluationPanel.class);
-        classMap.put(Properties.Paramics, ParamicsPanel.class);
-        classMap.put(Properties.Tow, TowPanel.class);
-        classMap.put(Properties.Unit, UnitPanel.class);
-        classMap.put(Properties.Witness, WitnessPanel.class);
-
-        properties.addObserver(this);
-    }
-
-    public void addProperty(Properties property, I_ScriptEvent se)
-    {
-        try
-        {
-            JPanel panel = (JPanel) classMap.get(property).newInstance();
-
-            final PropertyPanel propertyPanel = properties.addPropertyPanel(property, panel);
-            if (panel instanceof I_ScriptEventEditorPanel)
-            {
-                ((I_ScriptEventEditorPanel) panel).getEventObject(se);
-            }
-        }
-        catch (Exception e)
-        {
-            System.err.println("Could not create panel of type \"" + property + "\"");
-        }
-    }
-
-    public void removeProperty(Properties property)
-    {
-        properties.removeProperty(property);
-    }
-
-    public void update(Observable o, Object arg)
-    {
-        setChanged();
-        notifyObservers(arg);
-    }
-
-    /*
-     public Vector<PropertyPanel> getPropertyPanels()
-     {
-     return properties.getProperties();
-     }
-     */
-}
Index: trunk/src/event/editor/Editor.form
===================================================================
--- trunk/src/event/editor/Editor.form	(revision 89)
+++ 	(revision )
@@ -1,338 +1,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-
-<Form version="1.3" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
-  <NonVisualComponents>
-    <Container class="javax.swing.JPanel" name="jPanel1">
-
-      <Layout>
-        <DimensionLayout dim="0">
-          <Group type="103" groupAlignment="0" attributes="0">
-              <EmptySpace min="0" pref="100" max="32767" attributes="0"/>
-          </Group>
-        </DimensionLayout>
-        <DimensionLayout dim="1">
-          <Group type="103" groupAlignment="0" attributes="0">
-              <EmptySpace min="0" pref="100" max="32767" attributes="0"/>
-          </Group>
-        </DimensionLayout>
-      </Layout>
-    </Container>
-    <Menu class="javax.swing.JMenuBar" name="jMenuBar1">
-      <SubComponents>
-        <Menu class="javax.swing.JMenu" name="jMenu1">
-          <Properties>
-            <Property name="text" type="java.lang.String" value="Evaluations"/>
-          </Properties>
-          <SubComponents>
-            <MenuItem class="javax.swing.JCheckBoxMenuItem" name="ATMS">
-              <Properties>
-                <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
-                  <KeyStroke key="Ctrl+A"/>
-                </Property>
-                <Property name="text" type="java.lang.String" value="ATMS"/>
-                <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
-                  <Image iconType="3" name="/images/ATMSEval.png"/>
-                </Property>
-              </Properties>
-              <Events>
-                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="multipleChange"/>
-              </Events>
-            </MenuItem>
-            <MenuItem class="javax.swing.JCheckBoxMenuItem" name="ActivityLog">
-              <Properties>
-                <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
-                  <KeyStroke key="Alt+A"/>
-                </Property>
-                <Property name="text" type="java.lang.String" value="Activity Log"/>
-                <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
-                  <Image iconType="3" name="/images/ActivityLogEval.png"/>
-                </Property>
-              </Properties>
-              <Events>
-                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="multipleChange"/>
-              </Events>
-            </MenuItem>
-            <MenuItem class="javax.swing.JCheckBoxMenuItem" name="CAD">
-              <Properties>
-                <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
-                  <KeyStroke key="Alt+C"/>
-                </Property>
-                <Property name="text" type="java.lang.String" value="CAD"/>
-                <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
-                  <Image iconType="3" name="/images/CADEval.png"/>
-                </Property>
-              </Properties>
-              <Events>
-                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="multipleChange"/>
-              </Events>
-            </MenuItem>
-            <MenuItem class="javax.swing.JMenuItem" name="CMS">
-              <Properties>
-                <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
-                  <KeyStroke key="Ctrl+Alt+C"/>
-                </Property>
-                <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
-                  <Image iconType="3" name="/images/CMSEval.png"/>
-                </Property>
-                <Property name="text" type="java.lang.String" value="CMS"/>
-              </Properties>
-              <Events>
-                <EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="multipleChangeListener"/>
-                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="multipleChange"/>
-              </Events>
-            </MenuItem>
-            <MenuItem class="javax.swing.JCheckBoxMenuItem" name="Facilitator">
-              <Properties>
-                <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
-                  <KeyStroke key="Ctrl+F"/>
-                </Property>
-                <Property name="text" type="java.lang.String" value="Facilitator"/>
-                <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
-                  <Image iconType="3" name="/images/FacilitatorEval.png"/>
-                </Property>
-              </Properties>
-              <Events>
-                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="optionalChange"/>
-              </Events>
-            </MenuItem>
-            <MenuItem class="javax.swing.JCheckBoxMenuItem" name="Radio">
-              <Properties>
-                <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
-                  <KeyStroke key="Ctrl+R"/>
-                </Property>
-                <Property name="text" type="java.lang.String" value="Radio"/>
-                <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
-                  <Image iconType="3" name="/images/RadioEval.png"/>
-                </Property>
-              </Properties>
-              <Events>
-                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="optionalChange"/>
-              </Events>
-            </MenuItem>
-          </SubComponents>
-        </Menu>
-        <Menu class="javax.swing.JMenu" name="JMenu2">
-          <Properties>
-            <Property name="text" type="java.lang.String" value="Instructor Actions"/>
-          </Properties>
-          <SubComponents>
-            <MenuItem class="javax.swing.JCheckBoxMenuItem" name="MaintenanceRadio">
-              <Properties>
-                <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
-                  <KeyStroke key="Ctrl+M"/>
-                </Property>
-                <Property name="text" type="java.lang.String" value="Maintenance Radio"/>
-                <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
-                  <Image iconType="3" name="/images/MaintenanceRadio.png"/>
-                </Property>
-              </Properties>
-              <Events>
-                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="optionalChange"/>
-              </Events>
-            </MenuItem>
-            <MenuItem class="javax.swing.JCheckBoxMenuItem" name="TMTRadio">
-              <Properties>
-                <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
-                  <KeyStroke key="Ctrl+Alt+T"/>
-                </Property>
-                <Property name="text" type="java.lang.String" value="TMT Radio"/>
-                <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
-                  <Image iconType="3" name="/images/TMTRadio.png"/>
-                </Property>
-              </Properties>
-              <Events>
-                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="optionalChange"/>
-              </Events>
-            </MenuItem>
-            <MenuItem class="javax.swing.JCheckBoxMenuItem" name="Telephone">
-              <Properties>
-                <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
-                  <KeyStroke key="Shift+Ctrl+T"/>
-                </Property>
-                <Property name="text" type="java.lang.String" value="Telephone"/>
-                <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
-                  <Image iconType="3" name="/images/Telephone.png"/>
-                </Property>
-              </Properties>
-              <Events>
-                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="optionalChange"/>
-              </Events>
-            </MenuItem>
-          </SubComponents>
-        </Menu>
-        <Menu class="javax.swing.JMenu" name="jMenu3">
-          <Properties>
-            <Property name="text" type="java.lang.String" value="Automated Data"/>
-          </Properties>
-          <SubComponents>
-            <MenuItem class="javax.swing.JMenuItem" name="Audio">
-              <Properties>
-                <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
-                  <KeyStroke key="Ctrl+A"/>
-                </Property>
-                <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
-                  <Image iconType="3" name="/images/Audio.png"/>
-                </Property>
-                <Property name="text" type="java.lang.String" value="Audio"/>
-              </Properties>
-            </MenuItem>
-            <MenuItem class="javax.swing.JMenuItem" name="CADLog">
-              <Properties>
-                <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
-                  <KeyStroke key="Ctrl+C"/>
-                </Property>
-                <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
-                  <Image iconType="3" name="/images/CAD.png"/>
-                </Property>
-                <Property name="text" type="java.lang.String" value="CAD Log"/>
-              </Properties>
-            </MenuItem>
-            <MenuItem class="javax.swing.JMenuItem" name="CCTV">
-              <Properties>
-                <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
-                  <KeyStroke key="Ctrl+V"/>
-                </Property>
-                <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
-                  <Image iconType="3" name="/images/CCTV.png"/>
-                </Property>
-                <Property name="text" type="java.lang.String" value="CCTV"/>
-              </Properties>
-            </MenuItem>
-            <MenuItem class="javax.swing.JCheckBoxMenuItem" name="CHPRadio">
-              <Properties>
-                <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
-                  <KeyStroke key="Alt+C"/>
-                </Property>
-                <Property name="text" type="java.lang.String" value="CHP Radio"/>
-                <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
-                  <Image iconType="3" name="/images/CHPRadio.png"/>
-                </Property>
-              </Properties>
-              <Events>
-                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="optionalChange"/>
-              </Events>
-            </MenuItem>
-            <MenuItem class="javax.swing.JMenuItem" name="Paramics">
-              <Properties>
-                <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
-                  <KeyStroke key="Ctrl+P"/>
-                </Property>
-                <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
-                  <Image iconType="3" name="/images/Paramics.png"/>
-                </Property>
-                <Property name="text" type="java.lang.String" value="Paramics"/>
-              </Properties>
-            </MenuItem>
-            <MenuItem class="javax.swing.JMenuItem" name="Tow">
-              <Properties>
-                <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
-                  <KeyStroke key="Ctrl+T"/>
-                </Property>
-                <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
-                  <Image iconType="3" name="/images/Tow.png"/>
-                </Property>
-                <Property name="text" type="java.lang.String" value="Tow"/>
-              </Properties>
-            </MenuItem>
-            <MenuItem class="javax.swing.JMenuItem" name="Unit">
-              <Properties>
-                <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
-                  <KeyStroke key="Ctrl+U"/>
-                </Property>
-                <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
-                  <Image iconType="3" name="/images/Unit.png"/>
-                </Property>
-                <Property name="text" type="java.lang.String" value="Unit"/>
-              </Properties>
-            </MenuItem>
-            <MenuItem class="javax.swing.JMenuItem" name="Witness">
-              <Properties>
-                <Property name="accelerator" type="javax.swing.KeyStroke" editor="org.netbeans.modules.form.editors.KeyStrokeEditor">
-                  <KeyStroke key="Ctrl+W"/>
-                </Property>
-                <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
-                  <Image iconType="3" name="/images/Witness.png"/>
-                </Property>
-                <Property name="text" type="java.lang.String" value="Witness"/>
-              </Properties>
-            </MenuItem>
-          </SubComponents>
-        </Menu>
-      </SubComponents>
-    </Menu>
-  </NonVisualComponents>
-  <Properties>
-    <Property name="defaultCloseOperation" type="int" value="2"/>
-    <Property name="title" type="java.lang.String" value="Event Editor"/>
-  </Properties>
-  <SyntheticProperties>
-    <SyntheticProperty name="menuBar" type="java.lang.String" value="jMenuBar1"/>
-    <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">
-          <Component id="jTabbedPane1" alignment="1" max="32767" attributes="0"/>
-          <Component id="jPanel2" alignment="0" max="32767" attributes="0"/>
-      </Group>
-    </DimensionLayout>
-    <DimensionLayout dim="1">
-      <Group type="103" groupAlignment="0" attributes="0">
-          <Group type="102" alignment="0" attributes="0">
-              <EmptySpace max="-2" attributes="0"/>
-              <Component id="jTabbedPane1" pref="539" max="32767" attributes="0"/>
-              <EmptySpace max="-2" attributes="0"/>
-              <Component id="jPanel2" min="-2" max="-2" attributes="0"/>
-          </Group>
-      </Group>
-    </DimensionLayout>
-  </Layout>
-  <SubComponents>
-    <Container class="javax.swing.JTabbedPane" name="jTabbedPane1">
-
-      <Layout class="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout"/>
-    </Container>
-    <Container class="javax.swing.JPanel" name="jPanel2">
-
-      <Layout>
-        <DimensionLayout dim="0">
-          <Group type="103" groupAlignment="0" attributes="0">
-              <Group type="102" alignment="1" attributes="0">
-                  <EmptySpace pref="701" max="32767" attributes="0"/>
-                  <Component id="btnRemoveCurrentEvent" min="-2" pref="226" max="-2" attributes="0"/>
-                  <EmptySpace max="-2" attributes="0"/>
-              </Group>
-          </Group>
-        </DimensionLayout>
-        <DimensionLayout dim="1">
-          <Group type="103" groupAlignment="0" attributes="0">
-              <Component id="btnRemoveCurrentEvent" min="-2" max="-2" attributes="0"/>
-          </Group>
-        </DimensionLayout>
-      </Layout>
-      <SubComponents>
-        <Component class="javax.swing.JButton" name="btnRemoveCurrentEvent">
-          <Properties>
-            <Property name="text" type="java.lang.String" value="Remove This Event"/>
-          </Properties>
-          <Events>
-            <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnRemoveCurrentEventActionPerformed"/>
-          </Events>
-        </Component>
-      </SubComponents>
-    </Container>
-  </SubComponents>
-</Form>
Index: trunk/src/event/editor/UpdateType.java
===================================================================
--- trunk/src/event/editor/UpdateType.java	(revision 89)
+++ 	(revision )
@@ -1,16 +1,0 @@
-/*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
-package event.editor;
-
-/**
- *
- * @author Bryan McGuffin
- */
-public enum UpdateType
-{
-
-    Add, Remove, TitleChange
-}
Index: trunk/src/event/editor/PropertyPanels.java
===================================================================
--- trunk/src/event/editor/PropertyPanels.java	(revision 89)
+++ 	(revision )
@@ -1,249 +1,0 @@
-package event.editor;
-
-import java.util.EnumMap;
-import java.util.Observable;
-import java.util.Vector;
-import javax.swing.JPanel;
-
-/**
- *
- * @author Bryan McGuffin
- */
-public class PropertyPanels extends Observable
-{
-
-    private Vector<PropertyPanel> properties = new Vector<PropertyPanel>();
-
-    private EnumMap<Properties, Integer> propertyCounter
-            = new EnumMap<Properties, Integer>(Properties.class);
-
-    public PropertyPanels()
-    {
-        for (Properties property : Properties.values())
-        {
-            propertyCounter.put(property, 0);
-        }
-    }
-
-    private int nextIndex(Properties property)
-    {
-        propertyCounter.put(property, propertyCounter.get(property) + 1);
-
-        return propertyCounter.get(property);
-    }
-
-    /**
-     * public Vector<PropertyPanel> getProperties() { return
-     * (Vector<PropertyPanel>) properties.clone(); }
-     */
-    private int add(PropertyPanel panel)
-    {
-        int position = 0;
-
-        for (int i = 0; i < properties.size(); i++)
-        {
-            if (properties.get(i).title().compareTo(panel.title()) < 0)
-            {
-                position = i + 1;
-            }
-        }
-
-        properties.add(position, panel);
-
-        return position;
-    }
-
-    public PropertyPanel addPropertyPanel(Properties property, JPanel panel)
-    {
-        PropertyPanel propertyPanel = null;
-
-        if (property.getType() == PropertyTypes.Multiple)
-        {
-            propertyPanel = new MultPropertyPanel(panel, property, nextIndex(property));
-            //propertyPanel.addObserver(this);
-            int position = add(propertyPanel);
-            setChanged();
-            notifyObservers(new PropertyUpdate(UpdateType.Add, propertyPanel, position));
-
-        }
-        else if (property.getType() == PropertyTypes.Optional)
-        {
-            if (containsProperty(property))
-            {
-                throw new RuntimeException("Property \"" + property + "\" is already added");
-            }
-            else
-            {
-                propertyPanel = new PropertyPanel(panel, property);
-                int position = add(propertyPanel);
-                //propertyPanel.addObserver(this);
-                setChanged();
-                notifyObservers(new PropertyUpdate(UpdateType.Add, propertyPanel, position));
-            }
-        }
-        else
-        {
-            throw new RuntimeException("Property \"" + property + "\" not accounted for");
-        }
-
-        return propertyPanel;
-    }
-
-    private boolean remove(PropertyPanel panel)
-    {
-        boolean result = false;
-
-        if ((result = properties.remove(panel)))
-        {
-            setChanged();
-            notifyObservers(new PropertyUpdate(UpdateType.Remove, panel));
-        }
-        else
-        {
-            throw new RuntimeException("Attempted to remove panel that did not exist");
-        }
-
-        if (panel.getProperty().getType() == PropertyTypes.Multiple)
-        {
-            Vector<MultPropertyPanel> panelsOfSameType = new Vector<MultPropertyPanel>();
-            Vector<MultPropertyPanel> panelsOfGreaterIndex = new Vector<MultPropertyPanel>();
-
-            propertyCounter.put(panel.getProperty(), propertyCounter.get(panel.getProperty()) - 1);
-
-            // extract panels of the same property type
-            for (PropertyPanel pan : properties)
-            {
-                if (pan.getProperty() == panel.getProperty())
-                {
-                    panelsOfSameType.add((MultPropertyPanel) pan);
-                }
-            }
-
-            // extract panels whose index is greater than the index of the panel
-            // being removed
-            for (MultPropertyPanel pan : panelsOfSameType)
-            {
-                if (pan.getIndex() > ((MultPropertyPanel) panel).getIndex())
-                {
-                    panelsOfGreaterIndex.add(pan);
-                }
-            }
-
-            // decrement the index of each of the remaining panels by one
-            for (MultPropertyPanel pan : panelsOfGreaterIndex)
-            {
-                pan.setIndex(pan.getIndex() - 1);
-                setChanged();
-                notifyObservers(new PropertyUpdate(UpdateType.TitleChange, pan));
-            }
-        }
-        else if (panel.getProperty().getType() == PropertyTypes.Optional)
-        {
-            // do nothing
-        }
-        else
-        {
-            throw new RuntimeException("PropertyTypes not accounted for");
-        }
-
-        return result;
-    }
-
-    public PropertyPanel removeProperty(Properties property)
-    {
-        if (property.getType() == PropertyTypes.Multiple)
-        {
-            throw new RuntimeException("Attemping to remove a property of multiple type");
-        }
-
-        PropertyPanel removed = null;
-
-        for (PropertyPanel panel : properties)
-        {
-            if (panel.getProperty() == property)
-            {
-                removed = panel;
-            }
-        }
-
-        if (removed == null)
-        {
-            throw new RuntimeException("Could not find panel with property \"" + property + "\"");
-        }
-
-        remove(removed);
-
-        return removed;
-    }
-
-    public PropertyPanel removeProperty(JPanel jPanel)
-    {
-        PropertyPanel removed = null;
-
-        for (PropertyPanel panel : properties)
-        {
-            if (panel.getPanel() == jPanel)
-            {
-                removed = panel;
-            }
-        }
-
-        if (removed == null)
-        {
-            throw new RuntimeException("Could not find jPanel");
-        }
-
-        remove(removed);
-
-        return removed;
-    }
-
-    public PropertyPanel removeProperty(String title)
-    {
-        PropertyPanel removed = null;
-
-        for (PropertyPanel panel : properties)
-        {
-            if (panel.title().equals(title))
-            {
-                if (removed == null)
-                {
-                    removed = panel;
-                }
-                else
-                {
-                    throw new RuntimeException("Attempted to remove a property by title but the title was not unique");
-                }
-            }
-        }
-
-        if (removed == null)
-        {
-            throw new RuntimeException("Did not find titel \"" + title + "\"");
-        }
-
-        remove(removed);
-
-        return removed;
-    }
-
-    public boolean removeProperty(PropertyPanel panel)
-    {
-        return remove(panel);
-    }
-
-    public boolean containsProperty(Properties property)
-    {
-        boolean contains = false;
-
-        for (PropertyPanel panel : properties)
-        {
-            if (panel.getProperty() == property)
-            {
-                contains = true;
-            }
-        }
-
-        return contains;
-    }
-}
Index: trunk/src/event/editor/PropertyPanel.java
===================================================================
--- trunk/src/event/editor/PropertyPanel.java	(revision 89)
+++ 	(revision )
@@ -1,36 +1,0 @@
-package event.editor;
-
-import javax.swing.JPanel;
-
-/**
- *
- * @author Bryan McGuffin
- */
-public class PropertyPanel
-{
-
-    private final JPanel panel;
-    private final Properties property;
-
-    public PropertyPanel(JPanel thePanel,
-            Properties theProperty)
-    {
-        panel = thePanel;
-        property = theProperty;
-    }
-
-    public JPanel getPanel()
-    {
-        return panel;
-    }
-
-    public Properties getProperty()
-    {
-        return property;
-    }
-
-    public String title()
-    {
-        return property.getTitle();
-    }
-}
Index: trunk/src/event/editor/MultPropertyPanel.java
===================================================================
--- trunk/src/event/editor/MultPropertyPanel.java	(revision 89)
+++ 	(revision )
@@ -1,37 +1,0 @@
-package event.editor;
-
-import javax.swing.JPanel;
-
-/**
- *
- * @author Bryan McGuffin
- */
-public class MultPropertyPanel extends PropertyPanel
-{
-
-    private int index;
-
-    public MultPropertyPanel(JPanel thePanel,
-            Properties theProperty,
-            int theIndex)
-    {
-        super(thePanel, theProperty);
-        index = theIndex;
-    }
-
-    public int getIndex()
-    {
-        return index;
-    }
-
-    public void setIndex(int newIndex)
-    {
-        index = newIndex;
-    }
-
-    @Override
-    public String title()
-    {
-        return super.title() + " " + index;
-    }
-}
Index: trunk/src/event/editor/PropertyTypes.java
===================================================================
--- trunk/src/event/editor/PropertyTypes.java	(revision 89)
+++ 	(revision )
@@ -1,16 +1,0 @@
-/*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
-package event.editor;
-
-/**
- *
- * @author Bryan McGuffin
- */
-public enum PropertyTypes
-{
-
-    Optional, Multiple;
-}
Index: trunk/src/event/editor/Editor.java
===================================================================
--- trunk/src/event/editor/Editor.java	(revision 92)
+++ 	(revision )
@@ -1,500 +1,0 @@
-package event.editor;
-
-import java.awt.BorderLayout;
-import java.awt.Color;
-import java.awt.FlowLayout;
-import javax.swing.*;
-import java.util.*;
-import java.awt.event.*;
-import scriptbuilder.gui.IncidentEditorFrame;
-import scriptbuilder.structures.ScriptIncident;
-import scriptbuilder.structures.events.*;
-
-public class Editor extends javax.swing.JFrame implements Observer
-{
-
-    IncidentEditorFrame topFrame = null;
-
-    private PropertyModel model = new PropertyModel();
-
-//    public PropertyModel getPropertyModel()
-//    {
-//        return model;
-//    }
-    public void addProperty(Properties property, I_ScriptEvent se)
-    {
-        model.addProperty(property, se);
-    }
-
-    private ActionListener optionalChangeListener = new ActionListener()
-    {
-        public void actionPerformed(ActionEvent evt)
-        {
-            JCheckBoxMenuItem src = (JCheckBoxMenuItem) evt.getSource();
-            Properties property = Properties.valueOf(src.getText().replaceAll(" ", ""));
-
-            if (src.isSelected())
-            {
-                model.addProperty(property, new CCTVEvent());
-            }
-            else
-            {
-                model.removeProperty(property);
-            }
-        }
-    };
-
-    private ActionListener multipleChangeListener = new ActionListener()
-    {
-        public void actionPerformed(ActionEvent evt)
-        {
-            JMenuItem src = (JMenuItem) evt.getSource();
-            model.addProperty(Properties.valueOf(src.getText().replaceAll(" ", "")), new CCTVEvent());
-        }
-    };
-
-    /**
-     * Blank constructor for a new editor.
-     */
-    public Editor(IncidentEditorFrame frame)
-    {
-        topFrame = frame;
-        initComponents();
-
-        model.addObserver(this);
-
-        // For each menu
-        for (int menuCtr = 0; menuCtr < jMenuBar1.getMenuCount(); menuCtr++)
-        {
-            // for each menu item
-            for (java.awt.Component comp : jMenuBar1.getMenu(menuCtr).getMenuComponents())
-            {
-                JMenuItem item = (JMenuItem) comp;
-
-                String itemName = item.getText().replaceAll(" ", "");
-
-                Properties property = Properties.valueOf(itemName);
-
-                if (property.getType() == PropertyTypes.Multiple)
-                {
-                    item.addActionListener(multipleChangeListener);
-                }
-                else if (property.getType() == PropertyTypes.Optional)
-                {
-                    item.addActionListener(optionalChangeListener);
-                }
-                else
-                {
-                    throw new RuntimeException("Property type not accounted for");
-                }
-            }
-        }
-    }
-
-    /**
-     * 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()
-    {
-
-        jPanel1 = new javax.swing.JPanel();
-        jTabbedPane1 = new javax.swing.JTabbedPane();
-        jPanel2 = new javax.swing.JPanel();
-        btnRemoveCurrentEvent = new javax.swing.JButton();
-        jMenuBar1 = new javax.swing.JMenuBar();
-        jMenu1 = new javax.swing.JMenu();
-        ATMS = new javax.swing.JCheckBoxMenuItem();
-        ActivityLog = new javax.swing.JCheckBoxMenuItem();
-        CAD = new javax.swing.JCheckBoxMenuItem();
-        CMS = new javax.swing.JMenuItem();
-        Facilitator = new javax.swing.JCheckBoxMenuItem();
-        Radio = new javax.swing.JCheckBoxMenuItem();
-        JMenu2 = new javax.swing.JMenu();
-        MaintenanceRadio = new javax.swing.JCheckBoxMenuItem();
-        TMTRadio = new javax.swing.JCheckBoxMenuItem();
-        Telephone = new javax.swing.JCheckBoxMenuItem();
-        jMenu3 = new javax.swing.JMenu();
-        Audio = new javax.swing.JMenuItem();
-        CADLog = new javax.swing.JMenuItem();
-        CCTV = new javax.swing.JMenuItem();
-        CHPRadio = new javax.swing.JCheckBoxMenuItem();
-        Paramics = new javax.swing.JMenuItem();
-        Tow = new javax.swing.JMenuItem();
-        Unit = new javax.swing.JMenuItem();
-        Witness = new javax.swing.JMenuItem();
-
-        org.jdesktop.layout.GroupLayout jPanel1Layout = new org.jdesktop.layout.GroupLayout(jPanel1);
-        jPanel1.setLayout(jPanel1Layout);
-        jPanel1Layout.setHorizontalGroup(
-            jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
-            .add(0, 100, Short.MAX_VALUE)
-        );
-        jPanel1Layout.setVerticalGroup(
-            jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
-            .add(0, 100, Short.MAX_VALUE)
-        );
-
-        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
-        setTitle("Event Editor");
-
-        btnRemoveCurrentEvent.setText("Remove This Event");
-        btnRemoveCurrentEvent.addActionListener(new java.awt.event.ActionListener()
-        {
-            public void actionPerformed(java.awt.event.ActionEvent evt)
-            {
-                btnRemoveCurrentEventActionPerformed(evt);
-            }
-        });
-
-        org.jdesktop.layout.GroupLayout jPanel2Layout = new org.jdesktop.layout.GroupLayout(jPanel2);
-        jPanel2.setLayout(jPanel2Layout);
-        jPanel2Layout.setHorizontalGroup(
-            jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
-            .add(org.jdesktop.layout.GroupLayout.TRAILING, jPanel2Layout.createSequentialGroup()
-                .addContainerGap(701, Short.MAX_VALUE)
-                .add(btnRemoveCurrentEvent, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 226, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
-                .addContainerGap())
-        );
-        jPanel2Layout.setVerticalGroup(
-            jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
-            .add(btnRemoveCurrentEvent)
-        );
-
-        jMenu1.setText("Evaluations");
-
-        ATMS.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_A, java.awt.event.InputEvent.CTRL_MASK));
-        ATMS.setText("ATMS");
-        ATMS.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/ATMSEval.png"))); // NOI18N
-        ATMS.addActionListener(new java.awt.event.ActionListener()
-        {
-            public void actionPerformed(java.awt.event.ActionEvent evt)
-            {
-                multipleChange(evt);
-            }
-        });
-        jMenu1.add(ATMS);
-
-        ActivityLog.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_A, java.awt.event.InputEvent.ALT_MASK));
-        ActivityLog.setText("Activity Log");
-        ActivityLog.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/ActivityLogEval.png"))); // NOI18N
-        ActivityLog.addActionListener(new java.awt.event.ActionListener()
-        {
-            public void actionPerformed(java.awt.event.ActionEvent evt)
-            {
-                multipleChange(evt);
-            }
-        });
-        jMenu1.add(ActivityLog);
-
-        CAD.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_C, java.awt.event.InputEvent.ALT_MASK));
-        CAD.setText("CAD");
-        CAD.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/CADEval.png"))); // NOI18N
-        CAD.addActionListener(new java.awt.event.ActionListener()
-        {
-            public void actionPerformed(java.awt.event.ActionEvent evt)
-            {
-                multipleChange(evt);
-            }
-        });
-        jMenu1.add(CAD);
-
-        CMS.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_C, java.awt.event.InputEvent.ALT_MASK | java.awt.event.InputEvent.CTRL_MASK));
-        CMS.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/CMSEval.png"))); // NOI18N
-        CMS.setText("CMS");
-        CMS.addMouseListener(new java.awt.event.MouseAdapter()
-        {
-            public void mouseClicked(java.awt.event.MouseEvent evt)
-            {
-                multipleChangeListener(evt);
-            }
-        });
-        CMS.addActionListener(new java.awt.event.ActionListener()
-        {
-            public void actionPerformed(java.awt.event.ActionEvent evt)
-            {
-                multipleChange(evt);
-            }
-        });
-        jMenu1.add(CMS);
-
-        Facilitator.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F, java.awt.event.InputEvent.CTRL_MASK));
-        Facilitator.setText("Facilitator");
-        Facilitator.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/FacilitatorEval.png"))); // NOI18N
-        Facilitator.addActionListener(new java.awt.event.ActionListener()
-        {
-            public void actionPerformed(java.awt.event.ActionEvent evt)
-            {
-                optionalChange(evt);
-            }
-        });
-        jMenu1.add(Facilitator);
-
-        Radio.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_R, java.awt.event.InputEvent.CTRL_MASK));
-        Radio.setText("Radio");
-        Radio.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/RadioEval.png"))); // NOI18N
-        Radio.addActionListener(new java.awt.event.ActionListener()
-        {
-            public void actionPerformed(java.awt.event.ActionEvent evt)
-            {
-                optionalChange(evt);
-            }
-        });
-        jMenu1.add(Radio);
-
-        jMenuBar1.add(jMenu1);
-
-        JMenu2.setText("Instructor Actions");
-
-        MaintenanceRadio.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_M, java.awt.event.InputEvent.CTRL_MASK));
-        MaintenanceRadio.setText("Maintenance Radio");
-        MaintenanceRadio.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/MaintenanceRadio.png"))); // NOI18N
-        MaintenanceRadio.addActionListener(new java.awt.event.ActionListener()
-        {
-            public void actionPerformed(java.awt.event.ActionEvent evt)
-            {
-                optionalChange(evt);
-            }
-        });
-        JMenu2.add(MaintenanceRadio);
-
-        TMTRadio.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_T, java.awt.event.InputEvent.ALT_MASK | java.awt.event.InputEvent.CTRL_MASK));
-        TMTRadio.setText("TMT Radio");
-        TMTRadio.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/TMTRadio.png"))); // NOI18N
-        TMTRadio.addActionListener(new java.awt.event.ActionListener()
-        {
-            public void actionPerformed(java.awt.event.ActionEvent evt)
-            {
-                optionalChange(evt);
-            }
-        });
-        JMenu2.add(TMTRadio);
-
-        Telephone.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_T, java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK));
-        Telephone.setText("Telephone");
-        Telephone.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/Telephone.png"))); // NOI18N
-        Telephone.addActionListener(new java.awt.event.ActionListener()
-        {
-            public void actionPerformed(java.awt.event.ActionEvent evt)
-            {
-                optionalChange(evt);
-            }
-        });
-        JMenu2.add(Telephone);
-
-        jMenuBar1.add(JMenu2);
-
-        jMenu3.setText("Automated Data");
-
-        Audio.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_A, java.awt.event.InputEvent.CTRL_MASK));
-        Audio.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/Audio.png"))); // NOI18N
-        Audio.setText("Audio");
-        jMenu3.add(Audio);
-
-        CADLog.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_C, java.awt.event.InputEvent.CTRL_MASK));
-        CADLog.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/CAD.png"))); // NOI18N
-        CADLog.setText("CAD Log");
-        jMenu3.add(CADLog);
-
-        CCTV.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_V, java.awt.event.InputEvent.CTRL_MASK));
-        CCTV.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/CCTV.png"))); // NOI18N
-        CCTV.setText("CCTV");
-        jMenu3.add(CCTV);
-
-        CHPRadio.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_C, java.awt.event.InputEvent.ALT_MASK));
-        CHPRadio.setText("CHP Radio");
-        CHPRadio.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/CHPRadio.png"))); // NOI18N
-        CHPRadio.addActionListener(new java.awt.event.ActionListener()
-        {
-            public void actionPerformed(java.awt.event.ActionEvent evt)
-            {
-                optionalChange(evt);
-            }
-        });
-        jMenu3.add(CHPRadio);
-
-        Paramics.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_P, java.awt.event.InputEvent.CTRL_MASK));
-        Paramics.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/Paramics.png"))); // NOI18N
-        Paramics.setText("Paramics");
-        jMenu3.add(Paramics);
-
-        Tow.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_T, java.awt.event.InputEvent.CTRL_MASK));
-        Tow.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/Tow.png"))); // NOI18N
-        Tow.setText("Tow");
-        jMenu3.add(Tow);
-
-        Unit.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_U, java.awt.event.InputEvent.CTRL_MASK));
-        Unit.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/Unit.png"))); // NOI18N
-        Unit.setText("Unit");
-        jMenu3.add(Unit);
-
-        Witness.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_W, java.awt.event.InputEvent.CTRL_MASK));
-        Witness.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/Witness.png"))); // NOI18N
-        Witness.setText("Witness");
-        jMenu3.add(Witness);
-
-        jMenuBar1.add(jMenu3);
-
-        setJMenuBar(jMenuBar1);
-
-        org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
-        getContentPane().setLayout(layout);
-        layout.setHorizontalGroup(
-            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
-            .add(org.jdesktop.layout.GroupLayout.TRAILING, jTabbedPane1)
-            .add(jPanel2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
-        );
-        layout.setVerticalGroup(
-            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
-            .add(layout.createSequentialGroup()
-                .addContainerGap()
-                .add(jTabbedPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 539, Short.MAX_VALUE)
-                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
-                .add(jPanel2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
-        );
-
-        pack();
-    }// </editor-fold>//GEN-END:initComponents
-
-    private void multipleChangeListener(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_multipleChangeListener
-
-    }//GEN-LAST:event_multipleChangeListener
-
-    private void multipleChange(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_multipleChange
-
-    }//GEN-LAST:event_multipleChange
-
-    private void optionalChange(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_optionalChange
-
-    }//GEN-LAST:event_optionalChange
-
-    private void btnRemoveCurrentEventActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_btnRemoveCurrentEventActionPerformed
-    {//GEN-HEADEREND:event_btnRemoveCurrentEventActionPerformed
-
-        int index = jTabbedPane1.getSelectedIndex();
-
-        if (index > 0 && jTabbedPane1.getTabComponentAt(index) != null)
-        {
-            JPanel removable = (JPanel) jTabbedPane1
-                    .getSelectedComponent();
-            this.model.properties.removeProperty(removable);
-        }
-
-    }//GEN-LAST:event_btnRemoveCurrentEventActionPerformed
-
-    /**
-     * @param args the command line arguments
-     */
-    public static void main(String args[])
-    {
-        java.awt.EventQueue.invokeLater(new Runnable()
-        {
-            public void run()
-            {
-                new Editor(new IncidentEditorFrame(new ScriptIncident(100, null, null, null))).setVisible(true);
-            }
-        });
-    }
-
-    // Variables declaration - do not modify//GEN-BEGIN:variables
-    private javax.swing.JCheckBoxMenuItem ATMS;
-    private javax.swing.JCheckBoxMenuItem ActivityLog;
-    private javax.swing.JMenuItem Audio;
-    private javax.swing.JCheckBoxMenuItem CAD;
-    private javax.swing.JMenuItem CADLog;
-    private javax.swing.JMenuItem CCTV;
-    private javax.swing.JCheckBoxMenuItem CHPRadio;
-    private javax.swing.JMenuItem CMS;
-    private javax.swing.JCheckBoxMenuItem Facilitator;
-    private javax.swing.JMenu JMenu2;
-    private javax.swing.JCheckBoxMenuItem MaintenanceRadio;
-    private javax.swing.JMenuItem Paramics;
-    private javax.swing.JCheckBoxMenuItem Radio;
-    private javax.swing.JCheckBoxMenuItem TMTRadio;
-    private javax.swing.JCheckBoxMenuItem Telephone;
-    private javax.swing.JMenuItem Tow;
-    private javax.swing.JMenuItem Unit;
-    private javax.swing.JMenuItem Witness;
-    private javax.swing.JButton btnRemoveCurrentEvent;
-    private javax.swing.JMenu jMenu1;
-    private javax.swing.JMenu jMenu3;
-    private javax.swing.JMenuBar jMenuBar1;
-    private javax.swing.JPanel jPanel1;
-    private javax.swing.JPanel jPanel2;
-    private javax.swing.JTabbedPane jTabbedPane1;
-    // End of variables declaration//GEN-END:variables
-
-    @Override
-    public void update(Observable o, Object arg)
-    {
-
-        final PropertyUpdate update = (PropertyUpdate) arg;
-        final ImageIcon image = update.getPanel().getProperty().getImage();
-        final String caption = update.getPanel().title();
-
-        final JLabel title = new JLabel(caption, image, JLabel.CENTER);
-
-        /*
-         final BorderLayout layout = new BorderLayout();
-         final JPanel title = new JPanel(layout);
-         title.setOpaque(false);
-         title.add(new JLabel(image), BorderLayout.WEST);
-         title.add(new JLabel(caption), BorderLayout.EAST);
-         */
-        if (update.getType() == UpdateType.Add)
-        {
-            jTabbedPane1.insertTab(null, null,
-                    update.getPanel().getPanel(), null, update.getPosition());
-            jTabbedPane1.setTabComponentAt(update.getPosition(), title);
-            jTabbedPane1.setSelectedIndex(update.getPosition());
-            topFrame.repaint();
-        }
-        else if (update.getType() == UpdateType.Remove)
-        {
-            jTabbedPane1.remove(update.getPanel().getPanel());
-            if (update.getPanel().getPanel() instanceof I_ScriptEventEditorPanel)
-            {
-                ((I_ScriptEventEditorPanel) update.getPanel().getPanel()).removeAssociatedEvent();
-            }
-            topFrame.repaint();
-        }
-        else if (update.getType() == UpdateType.TitleChange)
-        {
-            final int index = jTabbedPane1.indexOfComponent(
-                    update.getPanel().getPanel());
-
-            new Thread(new Runnable()
-            {
-                public void run()
-                {
-                    Color c = jTabbedPane1.getForegroundAt(index);
-                    jTabbedPane1.setForegroundAt(index, Color.blue);
-                    try
-                    {
-                        Thread.sleep(350);
-                    }
-                    catch (Exception e)
-                    {
-                    }
-                    jTabbedPane1.setTabComponentAt(index, title);
-                    try
-                    {
-                        Thread.sleep(350);
-                    }
-                    catch (Exception e)
-                    {
-                    }
-                    jTabbedPane1.setForegroundAt(index, c);
-                }
-            }).start();
-        }
-        else
-        {
-            throw new RuntimeException("UpdateType not accounted for");
-        }
-    }
-
-}
Index: trunk/src/event/editor/PropertyUpdate.java
===================================================================
--- trunk/src/event/editor/PropertyUpdate.java	(revision 89)
+++ 	(revision )
@@ -1,45 +1,0 @@
-package event.editor;
-
-/**
- *
- * @author Bryan McGuffin
- */
-public class PropertyUpdate
-{
-
-    private UpdateType type;
-    private PropertyPanel panel;
-    private int position = -1;
-
-    public PropertyUpdate(UpdateType theType, PropertyPanel thePanel)
-    {
-        type = theType;
-        panel = thePanel;
-    }
-
-    public PropertyUpdate(UpdateType theType, PropertyPanel thePanel, int thePosition)
-    {
-        this(theType, thePanel);
-        position = thePosition;
-    }
-
-    public int getPosition()
-    {
-        if (position == -1)
-        {
-            throw new RuntimeException("position unknown");
-        }
-
-        return position;
-    }
-
-    public UpdateType getType()
-    {
-        return type;
-    }
-
-    public PropertyPanel getPanel()
-    {
-        return panel;
-    }
-}
Index: trunk/src/event/editor/Properties.java
===================================================================
--- trunk/src/event/editor/Properties.java	(revision 1)
+++ 	(revision )
@@ -1,83 +1,0 @@
-package event.editor;
-import images.*;
-import java.awt.Graphics;
-import javax.swing.ImageIcon;
-import java.net.URL;
-import java.awt.Image;
-import java.awt.image.BufferedImage;
-
-public enum Properties
-{
-    ATMS                ("ATMS", PropertyTypes.Optional,
-        loadImage(Images.getImage("ATMSEval.png"))),
-    ActivityLog         ("Activity Log", PropertyTypes.Optional,
-        loadImage(Images.getImage("ActivityLogEval.png"))),
-    CAD                 ("CAD", PropertyTypes.Optional,
-        loadImage(Images.getImage("CADEval.png"))),
-    Facilitator         ("Faciliatator", PropertyTypes.Optional,
-        loadImage(Images.getImage("FacilitatorEval.png"))),
-    Radio               ("Radio", PropertyTypes.Optional,
-        loadImage(Images.getImage("RadioEval.png"))),
-    MaintenanceRadio    ("Maintenance Radio", PropertyTypes.Optional,
-        loadImage(Images.getImage("MaintenanceRadio.png"))),
-    TMTRadio            ("TMT Radio", PropertyTypes.Optional,
-        loadImage(Images.getImage("TMTRadio.png"))),
-    Telephone           ("Telephone", PropertyTypes.Optional,
-        loadImage(Images.getImage("Telephone.png"))),
-    CHPRadio            ("CHP Radio",PropertyTypes.Optional,
-        loadImage(Images.getImage("CHPRadio.png"))),
-    CMS                 ("CMS", PropertyTypes.Multiple,
-        loadImage(Images.getImage("CMSEval.png"))),
-    Audio               ("Audio", PropertyTypes.Multiple,
-        loadImage(Images.getImage("Audio.png"))),
-    CCTV                ("CCTV", PropertyTypes.Multiple,
-        loadImage(Images.getImage("CCTV.png"))),
-    CADLog              ("CAD Log", PropertyTypes.Multiple,
-        loadImage(Images.getImage("CAD.png"))),
-    Paramics            ("Paramics", PropertyTypes.Multiple,
-        loadImage(Images.getImage("Paramics.png"))),
-    Tow                 ("Tow", PropertyTypes.Multiple,
-        loadImage(Images.getImage("Tow.png"))),
-    Unit                ("Unit", PropertyTypes.Multiple,
-        loadImage(Images.getImage("Unit.png"))),
-    Witness             ("Witness", PropertyTypes.Multiple,
-        loadImage(Images.getImage("Witness.png")));
-
-    private String title;
-    private PropertyTypes type;
-    private ImageIcon image;
-
-    private Properties(String theTitle, PropertyTypes theType, ImageIcon theImage)
-    {
-        title = theTitle;
-        type = theType;
-        image = theImage;
-    }
-
-    public String getTitle()
-    {
-        return title;
-    }
-
-    public PropertyTypes getType()
-    {
-        return type;
-    }
-
-    public ImageIcon getImage()
-    {
-        return image;
-    }
-
-    private static ImageIcon loadImage(URL url)
-    {
-        double scale = 0.8;
-        ImageIcon icon = new ImageIcon(url);
-        Image img = icon.getImage();
-        BufferedImage bi = new BufferedImage(img.getWidth(null),
-                img.getHeight(null), BufferedImage.TYPE_INT_ARGB);
-        Graphics g = bi.createGraphics();
-        g.drawImage(img, 0, 0, (int) (img.getWidth(null) * scale), (int)(img.getHeight(null) * scale), null);
-        return new ImageIcon(bi);
-    }
-}
