public void displayChanged(final DisplayEvent e) throws VisADException, RemoteException {
   // TODO: write a method like isChannelUpdate(EVENT_ID)? or maybe just
   // deal with a super long if-statement and put an "OR MOUSE_RELEASED"
   // up here?
   if (e.getId() == DisplayEvent.MOUSE_RELEASED_CENTER) {
     float val = (float) display.getDisplayRenderer().getDirectAxisValue(domainType);
     setWaveNumber(val);
     if (displayControl != null) displayControl.handleChannelChange(val);
   } else if (e.getId() == DisplayEvent.MOUSE_PRESSED_LEFT) {
     if (e.getInputEvent().isControlDown()) {
       xmap.setRange(initialRangeX[0], initialRangeX[1]);
       ymap.setRange(initialRangeY[0], initialRangeY[1]);
     }
   } else if (e.getId() == DisplayEvent.MOUSE_RELEASED) {
     float val = getSelectorValue(channelSelector);
     if (val != waveNumber) {
       // TODO: setWaveNumber needs to be rethought, as it calls
       // setSelectorValue which is redundant in the cases of dragging
       // or clicking
       setWaveNumber(val);
       if (displayControl != null) displayControl.handleChannelChange(val);
     }
   }
 }
  public MultiSpectralDisplay(final HydraControl control) throws VisADException, RemoteException {
    displayControl = control;
    dataChoice = (DirectDataChoice) displayControl.getDataChoice();

    init();
  }