/**
  * Sets the active layer of the track if the specified layer is one of the layers of the track.
  * Sets the active layer to null if the specified parameter is null. Does nothing if the specified
  * layer is not null and is not one of the layers of the track
  *
  * @param activeLayer the active layer to set
  */
 public void setActiveLayer(Layer<?> activeLayer) {
   Layer<?> oldLayer = getActiveLayer();
   if (activeLayer == null) {
     this.activeLayer = null;
   } else if (layers.contains(activeLayer)) {
     this.activeLayer = activeLayer;
   }
   // update the mouse listeners of the graphics panel
   if (oldLayer != activeLayer) {
     if (oldLayer != null) {
       if (oldLayer instanceof MouseMotionListener) {
         graphicsPanel.removeMouseMotionListener((MouseMotionListener) oldLayer);
       }
       if (oldLayer instanceof MouseListener) {
         graphicsPanel.removeMouseListener((MouseListener) oldLayer);
       }
       if (oldLayer instanceof MouseWheelListener) {
         graphicsPanel.removeMouseWheelListener((MouseWheelListener) oldLayer);
       }
     }
     if (activeLayer != null) {
       if (activeLayer instanceof MouseMotionListener) {
         graphicsPanel.addMouseMotionListener((MouseMotionListener) activeLayer);
       }
       if (activeLayer instanceof MouseListener) {
         graphicsPanel.addMouseListener((MouseListener) activeLayer);
       }
       if (activeLayer instanceof MouseWheelListener) {
         graphicsPanel.addMouseWheelListener((MouseWheelListener) activeLayer);
       }
     }
   }
 }
 @Override
 public void intervalRemoved(ListDataEvent e) {
   // case where the active layer was removed
   if (!layers.contains(activeLayer)) {
     setActiveLayer(null);
   }
   updateGraphicsPanelDrawers();
   getScore().autorescaleScoreAxis();
 }
 @Override
 public void contentsChanged(ListDataEvent e) {
   // case where the active layer was removed
   if (!layers.contains(activeLayer)) {
     setActiveLayer(null);
   }
   if ((activeLayer == null) && !layers.isEmpty()) {
     setActiveLayer(layers.getLayers()[0]);
   }
   updateGraphicsPanelDrawers();
   getScore().autorescaleScoreAxis();
 }