protected void onDragInProgress(ViewportDragInProgressEvent event) {
    if (this.active) {
      Bounds bounds = event.getPixelBounds().normalizeBounds();

      this.view.setRelX(bounds.getLeft().intValue());
      this.view.setRelY(bounds.getTop().intValue());
      this.view.setWidth(bounds.getWidth().intValue());
      this.view.setHeight(bounds.getHeight().intValue());

      this.view.show();
    }
  }
  protected void onDragFinished(ViewportDragFinishedEvent event) {
    if (this.active) {
      this.view.hide();

      if (this.currentDomainBounds != null) {
        if (dragNotAccidental(event)) {
          Bounds proportionalBounds = event.getProportionalBounds().normalizeBounds();

          Bounds newBounds = this.currentDomainBounds.transformProportional(proportionalBounds);

          if (this.currentMaxDomainBounds != null) {
            if (!this.currentMaxDomainBounds.containsHorizontally(
                newBounds.getLeft(), newBounds.getRight())) {
              newBounds = newBounds.setLeft(this.currentDomainBounds.getLeft());
              newBounds = newBounds.setRight(this.currentDomainBounds.getRight());
            }

            if (!this.currentMaxDomainBounds.containsVertically(
                newBounds.getTop(), newBounds.getBottom())) {
              newBounds = newBounds.setTop(this.currentDomainBounds.getTop());
              newBounds = newBounds.setBottom(this.currentDomainBounds.getBottom());
            }
          }

          // WORKAROUND to have a maximum zoom level in the time frame Bug 508
          long begin = newBounds.getLeft().longValue();
          long end = newBounds.getRight().longValue();
          if (ClientUtils.isValidTimeFrameForZoomIn(begin, end)) {
            this.handlerManager.fireEvent(new SwitchAutoscaleEvent(false));
            this.handlerManager.fireEvent(new SetDomainBoundsEvent(newBounds));
            if (this.fireLoadImageDataEvent) {
              this.handlerManager.fireEvent(new LoadImageDataEvent());
            }
          }
        }
      }
    }
  }