예제 #1
0
 protected void onTwinTriggerClick(ComponentEvent ce) {
   super.onTwinTriggerClick(ce);
   // only do it from the ClickRepeater, not from onBrowserEvent
   if (ce == null) {
     doSpin(false);
   }
 }
예제 #2
0
  @Override
  protected void onKeyPress(FieldEvent fe) {
    super.onKeyPress(fe);

    if (fe.isSpecialKey(getKeyCode(fe.getEvent()))) {
      return;
    }

    char key = getChar(fe.getEvent());

    if (!allowed.contains(key)) {
      fe.stopEvent();
    }
  }
예제 #3
0
  @Override
  protected void onRender(Element target, int index) {
    super.onRender(target, index);
    allowed = new ArrayList<Character>();
    for (int i = 0; i < baseChars.length(); i++) {
      allowed.add(baseChars.charAt(i));
    }

    if (allowNegative) {
      allowed.add('-');
    }
    if (allowDecimals) {
      for (int i = 0; i < decimalSeparator.length(); i++) {
        allowed.add(decimalSeparator.charAt(i));
      }
    }

    Listener<ClickRepeaterEvent> listener =
        new Listener<ClickRepeaterEvent>() {
          public void handleEvent(ClickRepeaterEvent be) {
            if (SpinnerField.this.isEnabled()) {
              if (!hasFocus) {
                focus();
              }
              if (be.getType() == Events.OnClick) {
                if (be.getEl() == trigger) {
                  onTriggerClick(null);
                } else if (be.getEl() == twinTrigger) {
                  onTwinTriggerClick(null);
                }
              } else if (be.getType() == Events.OnMouseDown) {
                if (be.getEl() == trigger) {
                  trigger.addStyleName("x-form-spinner-clickup");
                } else if (be.getEl() == twinTrigger) {
                  twinTrigger.addStyleName("x-form-spinner-clickdown");
                }

              } else if (be.getType() == Events.OnMouseUp) {
                if (be.getEl() == trigger) {
                  trigger.removeStyleName("x-form-spinner-clickup");
                } else if (be.getEl() == twinTrigger) {
                  twinTrigger.removeStyleName("x-form-spinner-clickdown");
                }
              }
            }
          }
        };

    ClickRepeater cr = new ClickRepeater(trigger);
    cr.addListener(Events.OnClick, listener);
    cr.addListener(Events.OnMouseDown, listener);
    cr.addListener(Events.OnMouseUp, listener);
    addAttachable(cr);

    cr = new ClickRepeater(twinTrigger);
    cr.addListener(Events.OnClick, listener);
    cr.addListener(Events.OnMouseDown, listener);
    cr.addListener(Events.OnMouseUp, listener);
    addAttachable(cr);

    addStyleName("x-spinner-field");
    trigger.addStyleName("x-form-spinner-up");
    twinTrigger.addStyleName("x-form-spinner-down");

    setMaxValue(maxValue);
    setMinValue(minValue);
    getInputEl().dom.setAttribute("role", "spinbutton");

    keyNav =
        new KeyNav<ComponentEvent>(this) {
          @Override
          public void onDown(ComponentEvent ce) {
            doSpin(false);
          }

          @Override
          public void onUp(ComponentEvent ce) {
            doSpin(true);
          }
        };
  }
예제 #4
0
 protected void afterRender() {
   super.afterRender();
   addStyleOnOver(trigger.dom, "x-form-spinner-overup");
   addStyleOnOver(twinTrigger.dom, "x-form-spinner-overdown");
 }