public DragLine createSelector(final String id, final ConstantMap[] color) throws Exception {
    if (id == null) throw new NullPointerException("selector id cannot be null");
    if (color == null) throw new NullPointerException("selector color cannot be null");

    if (selectors.containsKey(id)) return selectors.get(id);

    DragLine selector = new DragLine(this, id, color, initialRangeY);
    selector.setHydraControl(displayControl);
    selector.setSelectedValue(waveNumber);
    selectors.put(id, selector);
    return selector;
  }
 public DragLine removeSelector(final String id) {
   DragLine selector = selectors.remove(id);
   if (selector == null) return null;
   selector.annihilate();
   return selector;
 }
 public void setSelectorValue(final String id, final float value)
     throws VisADException, RemoteException {
   DragLine selector = selectors.get(id);
   if (selector != null) selector.setSelectedValue(value);
 }
 public float getSelectorValue(final String id) {
   DragLine selector = selectors.get(id);
   if (selector == null) return Float.NaN;
   return selector.getSelectedValue();
 }