Index: trunk/src/event/editor/ParamicsPanel.java
===================================================================
--- trunk/src/event/editor/ParamicsPanel.java	(revision 50)
+++ trunk/src/event/editor/ParamicsPanel.java	(revision 89)
@@ -110,4 +110,12 @@
     {
         throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+    
+    @Override
+    public boolean removeAssociatedEvent()
+    {
+        event.removeThis();
+        event = null;
+        return true;
     }
 
Index: trunk/src/event/editor/AudioPanel.java
===================================================================
--- trunk/src/event/editor/AudioPanel.java	(revision 76)
+++ trunk/src/event/editor/AudioPanel.java	(revision 89)
@@ -28,5 +28,5 @@
     /**
      * Load the script event associated with this editor panel.
-     * 
+     *
      * @param sei The script event in question
      */
@@ -93,4 +93,12 @@
     {
         throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+    
+    @Override
+    public boolean removeAssociatedEvent()
+    {
+        event.removeThis();
+        event = null;
+        return true;
     }
 
Index: trunk/src/event/editor/MaintenanceRadioPanel.java
===================================================================
--- trunk/src/event/editor/MaintenanceRadioPanel.java	(revision 7)
+++ trunk/src/event/editor/MaintenanceRadioPanel.java	(revision 89)
@@ -52,4 +52,12 @@
         throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
     }
+    
+    @Override
+    public boolean removeAssociatedEvent()
+    {
+        ((I_ScriptEvent)event).removeThis();
+        event = null;
+        return true;
+    }
 
     /**
Index: trunk/src/event/editor/GenericEvaluationPanel.java
===================================================================
--- trunk/src/event/editor/GenericEvaluationPanel.java	(revision 7)
+++ trunk/src/event/editor/GenericEvaluationPanel.java	(revision 89)
@@ -78,4 +78,12 @@
     {
         throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+    
+    @Override
+    public boolean removeAssociatedEvent()
+    {
+        ((I_ScriptEvent)event).removeThis();
+        event = null;
+        return true;
     }
 
Index: trunk/src/event/editor/Editor.java
===================================================================
--- trunk/src/event/editor/Editor.java	(revision 76)
+++ trunk/src/event/editor/Editor.java	(revision 89)
@@ -7,446 +7,12 @@
 import java.util.*;
 import java.awt.event.*;
+import scriptbuilder.gui.IncidentEditorFrame;
+import scriptbuilder.structures.ScriptIncident;
 import scriptbuilder.structures.events.*;
-
-enum UpdateType
-{
-
-    Add, Remove, TitleChange
-}
-
-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;
-    }
-}
-
-enum PropertyTypes
-{
-
-    Optional, Multiple;
-}
-
-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();
-    }
-}
-
-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;
-    }
-}
-
-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;
-    }
-}
-
-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 ScriptEventEditorPanel)
-            {
-                ((ScriptEventEditorPanel) panel).getEventObject(se);
-            }
-            if (property.getType() == PropertyTypes.Multiple)
-            {
-
-                if (panel instanceof RemoveablePanel)
-                {
-                    ((RemoveablePanel) panel).setRemoveListener(new ActionListener()
-                    {
-                        public void actionPerformed(ActionEvent evt)
-                        {
-                            properties.removeProperty(propertyPanel);
-                        }
-                    });
-                }
-                else
-                {
-                    throw new RuntimeException("Property was multiple but panel was not removeable");
-                }
-            }
-        }
-        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();
-     }
-     */
-}
 
 public class Editor extends javax.swing.JFrame implements Observer
 {
+
+    IncidentEditorFrame topFrame = null;
 
     private PropertyModel model = new PropertyModel();
@@ -456,5 +22,4 @@
 //        return model;
 //    }
-
     public void addProperty(Properties property, I_ScriptEvent se)
     {
@@ -492,6 +57,7 @@
      * Blank constructor for a new editor.
      */
-    public Editor()
-    {
+    public Editor(IncidentEditorFrame frame)
+    {
+        topFrame = frame;
         initComponents();
 
@@ -533,7 +99,11 @@
     @SuppressWarnings("unchecked")
     // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-    private void 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();
@@ -558,6 +128,40 @@
         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");
@@ -566,6 +170,8 @@
         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) {
+        ATMS.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
                 multipleChange(evt);
             }
@@ -576,6 +182,8 @@
         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) {
+        ActivityLog.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
                 multipleChange(evt);
             }
@@ -586,6 +194,8 @@
         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) {
+        CAD.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
                 multipleChange(evt);
             }
@@ -596,11 +206,15 @@
         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) {
+        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) {
+        CMS.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
                 multipleChange(evt);
             }
@@ -611,6 +225,8 @@
         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) {
+        Facilitator.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
                 optionalChange(evt);
             }
@@ -621,6 +237,8 @@
         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) {
+        Radio.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
                 optionalChange(evt);
             }
@@ -635,6 +253,8 @@
         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) {
+        MaintenanceRadio.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
                 optionalChange(evt);
             }
@@ -645,6 +265,8 @@
         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) {
+        TMTRadio.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
                 optionalChange(evt);
             }
@@ -655,6 +277,8 @@
         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) {
+        Telephone.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
                 optionalChange(evt);
             }
@@ -684,6 +308,8 @@
         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) {
+        CHPRadio.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
                 optionalChange(evt);
             }
@@ -719,8 +345,6 @@
         layout.setHorizontalGroup(
             layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
-            .add(layout.createSequentialGroup()
-                .addContainerGap()
-                .add(jTabbedPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 921, Short.MAX_VALUE)
-                .addContainerGap())
+            .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(
@@ -728,6 +352,7 @@
             .add(layout.createSequentialGroup()
                 .addContainerGap()
-                .add(jTabbedPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 580, Short.MAX_VALUE)
-                .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))
         );
 
@@ -746,4 +371,18 @@
 
     }//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
 
     /**
@@ -756,5 +395,5 @@
             public void run()
             {
-                new Editor().setVisible(true);
+                new Editor(new IncidentEditorFrame(new ScriptIncident(100, null, null, null))).setVisible(true);
             }
         });
@@ -780,10 +419,14 @@
     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)
     {
@@ -808,8 +451,14 @@
             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 ScriptEventEditorPanel)
+            {
+                ((ScriptEventEditorPanel) update.getPanel().getPanel()).removeAssociatedEvent();
+            }
+            topFrame.repaint();
         }
         else if (update.getType() == UpdateType.TitleChange)
Index: trunk/src/event/editor/PropertyUpdate.java
===================================================================
--- trunk/src/event/editor/PropertyUpdate.java	(revision 89)
+++ trunk/src/event/editor/PropertyUpdate.java	(revision 89)
@@ -0,0 +1,45 @@
+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/ScriptEventEditorPanel.java
===================================================================
--- trunk/src/event/editor/ScriptEventEditorPanel.java	(revision 76)
+++ trunk/src/event/editor/ScriptEventEditorPanel.java	(revision 89)
@@ -22,3 +22,10 @@
      */
     void getEventObject(I_ScriptEvent sei);
+    
+     /**
+     * Remove the event associated with this panel.
+     * 
+     * @return true if the event was successfully deleted.
+     */
+    boolean removeAssociatedEvent();
 }
Index: trunk/src/event/editor/RemoveablePanel.java
===================================================================
--- trunk/src/event/editor/RemoveablePanel.java	(revision 76)
+++ trunk/src/event/editor/RemoveablePanel.java	(revision 89)
@@ -2,5 +2,4 @@
 
 import java.awt.event.*;
-import scriptbuilder.structures.events.I_ScriptEvent;
 
 public interface RemoveablePanel
Index: trunk/src/event/editor/PropertyModel.java
===================================================================
--- trunk/src/event/editor/PropertyModel.java	(revision 89)
+++ trunk/src/event/editor/PropertyModel.java	(revision 89)
@@ -0,0 +1,101 @@
+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 ScriptEventEditorPanel)
+            {
+                ((ScriptEventEditorPanel) panel).getEventObject(se);
+            }
+            if (property.getType() == PropertyTypes.Multiple)
+            {
+
+                if (panel instanceof RemoveablePanel)
+                {
+                    ((RemoveablePanel) panel).setRemoveListener(new ActionListener()
+                    {
+                        public void actionPerformed(ActionEvent evt)
+                        {
+                            properties.removeProperty(propertyPanel);
+                        }
+                    });
+                }
+                else
+                {
+                    throw new RuntimeException("Property was multiple but panel was not removeable");
+                }
+            }
+        }
+        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 1)
+++ trunk/src/event/editor/Editor.form	(revision 89)
@@ -3,4 +3,19 @@
 <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>
@@ -271,9 +286,6 @@
     <DimensionLayout dim="0">
       <Group type="103" groupAlignment="0" attributes="0">
-          <Group type="102" alignment="0" attributes="0">
-              <EmptySpace max="-2" attributes="0"/>
-              <Component id="jTabbedPane1" pref="921" max="32767" attributes="0"/>
-              <EmptySpace max="-2" attributes="0"/>
-          </Group>
+          <Component id="jTabbedPane1" alignment="1" max="32767" attributes="0"/>
+          <Component id="jPanel2" alignment="0" max="32767" attributes="0"/>
       </Group>
     </DimensionLayout>
@@ -282,6 +294,7 @@
           <Group type="102" alignment="0" attributes="0">
               <EmptySpace max="-2" attributes="0"/>
-              <Component id="jTabbedPane1" pref="580" max="32767" 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>
@@ -293,4 +306,33 @@
       <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/CCTVPanel.java
===================================================================
--- trunk/src/event/editor/CCTVPanel.java	(revision 76)
+++ trunk/src/event/editor/CCTVPanel.java	(revision 89)
@@ -74,4 +74,12 @@
     {
         throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+    
+    @Override
+    public boolean removeAssociatedEvent()
+    {
+        event.removeThis();
+        event = null;
+        return true;
     }
 
Index: trunk/src/event/editor/UpdateType.java
===================================================================
--- trunk/src/event/editor/UpdateType.java	(revision 89)
+++ trunk/src/event/editor/UpdateType.java	(revision 89)
@@ -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;
+
+/**
+ *
+ * @author Bryan McGuffin
+ */
+public enum UpdateType
+{
+
+    Add, Remove, TitleChange
+}
Index: trunk/src/event/editor/PropertyPanels.java
===================================================================
--- trunk/src/event/editor/PropertyPanels.java	(revision 89)
+++ trunk/src/event/editor/PropertyPanels.java	(revision 89)
@@ -0,0 +1,249 @@
+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/TowPanel.java
===================================================================
--- trunk/src/event/editor/TowPanel.java	(revision 7)
+++ trunk/src/event/editor/TowPanel.java	(revision 89)
@@ -136,4 +136,12 @@
     {
         throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+    
+    @Override
+    public boolean removeAssociatedEvent()
+    {
+        event.removeThis();
+        event = null;
+        return true;
     }
 
Index: trunk/src/event/editor/CMSEvaluationPanel.java
===================================================================
--- trunk/src/event/editor/CMSEvaluationPanel.java	(revision 76)
+++ trunk/src/event/editor/CMSEvaluationPanel.java	(revision 89)
@@ -136,4 +136,12 @@
     {
         throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+    
+    @Override
+    public boolean removeAssociatedEvent()
+    {
+        event.removeThis();
+        event = null;
+        return true;
     }
 
Index: trunk/src/event/editor/UnitPanel.java
===================================================================
--- trunk/src/event/editor/UnitPanel.java	(revision 7)
+++ trunk/src/event/editor/UnitPanel.java	(revision 89)
@@ -121,4 +121,12 @@
     {
         throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+    
+    @Override
+    public boolean removeAssociatedEvent()
+    {
+        event.removeThis();
+        event = null;
+        return true;
     }
 
Index: trunk/src/event/editor/TelephonePanel.java
===================================================================
--- trunk/src/event/editor/TelephonePanel.java	(revision 7)
+++ trunk/src/event/editor/TelephonePanel.java	(revision 89)
@@ -106,4 +106,12 @@
     {
         throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+    
+    @Override
+    public boolean removeAssociatedEvent()
+    {
+        ((I_ScriptEvent)event).removeThis();
+        event = null;
+        return true;
     }
 
Index: trunk/src/event/editor/TMTRadioPanel.java
===================================================================
--- trunk/src/event/editor/TMTRadioPanel.java	(revision 7)
+++ trunk/src/event/editor/TMTRadioPanel.java	(revision 89)
@@ -52,4 +52,12 @@
         throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
     }
+    
+    @Override
+    public boolean removeAssociatedEvent()
+    {
+        ((I_ScriptEvent)event).removeThis();
+        event = null;
+        return true;
+    }
 
     /**
Index: trunk/src/event/editor/PropertyPanel.java
===================================================================
--- trunk/src/event/editor/PropertyPanel.java	(revision 89)
+++ trunk/src/event/editor/PropertyPanel.java	(revision 89)
@@ -0,0 +1,36 @@
+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)
+++ trunk/src/event/editor/MultPropertyPanel.java	(revision 89)
@@ -0,0 +1,37 @@
+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)
+++ trunk/src/event/editor/PropertyTypes.java	(revision 89)
@@ -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;
+
+/**
+ *
+ * @author Bryan McGuffin
+ */
+public enum PropertyTypes
+{
+
+    Optional, Multiple;
+}
Index: trunk/src/event/editor/CADLogPanel.java
===================================================================
--- trunk/src/event/editor/CADLogPanel.java	(revision 76)
+++ trunk/src/event/editor/CADLogPanel.java	(revision 89)
@@ -63,4 +63,12 @@
     {
         throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+
+    @Override
+    public boolean removeAssociatedEvent()
+    {
+        event.removeThis();
+        event = null;
+        return true;
     }
 
Index: trunk/src/event/editor/CHPRadioPanel.java
===================================================================
--- trunk/src/event/editor/CHPRadioPanel.java	(revision 76)
+++ trunk/src/event/editor/CHPRadioPanel.java	(revision 89)
@@ -101,4 +101,12 @@
         throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
     }
+    
+    @Override
+    public boolean removeAssociatedEvent()
+    {
+        ((I_ScriptEvent)event).removeThis();
+        event = null;
+        return true;
+    }
 
     /**
@@ -109,5 +117,6 @@
     @SuppressWarnings("unchecked")
     // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
-    private void initComponents() {
+    private void initComponents()
+    {
 
         jLabel4 = new javax.swing.JLabel();
@@ -125,6 +134,8 @@
         jButton2.setText("Browse");
         jButton2.setToolTipText("Browse for the radio audio file");
-        jButton2.addMouseListener(new java.awt.event.MouseAdapter() {
-            public void mouseClicked(java.awt.event.MouseEvent evt) {
+        jButton2.addMouseListener(new java.awt.event.MouseAdapter()
+        {
+            public void mouseClicked(java.awt.event.MouseEvent evt)
+            {
                 browse(evt);
             }
@@ -139,6 +150,8 @@
         addFieldButton.setText("Add Field");
         addFieldButton.setToolTipText("Adds a row for dialog by the field operator in the table");
-        addFieldButton.addActionListener(new java.awt.event.ActionListener() {
-            public void actionPerformed(java.awt.event.ActionEvent evt) {
+        addFieldButton.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
                 addFieldButtonActionPerformed(evt);
             }
@@ -158,6 +171,5 @@
                         .add(addFieldButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 130, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                         .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)
-                        .add(deleteSelectedButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 131, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
-                        .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED))
+                        .add(deleteSelectedButton, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 131, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                     .add(layout.createSequentialGroup()
                         .add(jLabel4)
Index: trunk/src/event/editor/WitnessPanel.java
===================================================================
--- trunk/src/event/editor/WitnessPanel.java	(revision 50)
+++ trunk/src/event/editor/WitnessPanel.java	(revision 89)
@@ -122,4 +122,12 @@
     {
         throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    }
+    
+    @Override
+    public boolean removeAssociatedEvent()
+    {
+        event.removeThis();
+        event = null;
+        return true;
     }
 
