@Override
  public void onBrowserEvent(Event event) {
    // When resize support is disabled, fall-back to default browser behavior
    if (!resizeSupportEnabled) {
      super.onBrowserEvent(event);
      return;
    }

    // Set the default dialog's dimensions as minimal dimensions
    if (minWidth == 0 || minHeight == 0) {
      minWidth = getOffsetWidth();
      minHeight = getOffsetHeight();
    }

    // While dragging dialog's edge is on, disable default event behavior
    if (dragging) {
      event.preventDefault();
    } else {
      super.onBrowserEvent(event);
    }

    final int eventType = DOM.eventGetType(event);
    if (Event.ONMOUSEMOVE == eventType) {
      if (dragging) {
        // Get cursor's position
        int cursorX = event.getClientX();
        int cursorY = event.getClientY();

        // Calculates dialog's new dimensions
        int newWidth = cursorX - DOM.getAbsoluteLeft(getElement()) + EDGE_SIZE;
        int newHeight = cursorY - DOM.getAbsoluteTop(getElement()) + EDGE_SIZE;

        updateDialogDimensions(newWidth, newHeight);
      } else {
        updateResizeCursor(event);
      }
    } else if (Event.ONMOUSEDOWN == eventType) {
      if (updateResizeCursor(event) && !dragging) {
        event.preventDefault();
        dragging = true;
        DOM.setCapture(getElement());
      }
    } else if (Event.ONMOUSEUP == eventType) {
      if (dragging) {
        dragging = false;
        DOM.releaseCapture(getElement());
      }
    } else if (Event.ONMOUSEOUT == eventType) {
      if (!dragging) {
        updateResizeCursor(event);
      }
    }
  }
Esempio n. 2
0
 @Override
 public void onBrowserEvent(Event event) {
   super.onBrowserEvent(event);
   updateAutoHide(event);
 }