Package com.extjs.gxt.ui.client.widget.form

Source Code of com.extjs.gxt.ui.client.widget.form.SliderField

/*
* Ext GWT 2.2.4 - Ext for GWT
* Copyright(c) 2007-2010, Ext JS, LLC.
* licensing@extjs.com
*
* http://extjs.com/license
*/
package com.extjs.gxt.ui.client.widget.form;

import com.extjs.gxt.ui.client.GXT;
import com.extjs.gxt.ui.client.core.El;
import com.extjs.gxt.ui.client.event.Events;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.event.SliderEvent;
import com.extjs.gxt.ui.client.widget.ComponentHelper;
import com.extjs.gxt.ui.client.widget.Slider;
import com.google.gwt.dom.client.Document;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Element;

/**
* Field which wraps a <code>Slider</code>.
*/
public class SliderField extends Field<Integer> {
  private Slider slider;
  protected El hidden;
  protected Listener<SliderEvent> listener;

  /**
   * Creates a new slider field.
   *
   * @param slider the slider to be wrapped.
   */
  public SliderField(Slider slider) {
    super();
    setSlider(slider);
  }

  /**
   * Returns the slider component.
   *
   * @return the slider.
   */
  public Slider getSlider() {
    return slider;
  }

  @Override
  public void setReadOnly(boolean readOnly) {
    super.setReadOnly(readOnly);
    if (readOnly) {
      slider.disable();
    } else if (!readOnly && isEnabled()) {
      slider.enable();
    }
  }

  /**
   * Sets the slider component.
   *
   * @param slider the slider
   */
  public void setSlider(Slider slider) {
    assertPreRender();
    if (listener == null) {
      listener = new Listener<SliderEvent>() {
        public void handleEvent(SliderEvent be) {
          if (rendered) {
            updateHiddenField();
          }
        }
      };
    }
    if (this.slider != slider) {
      if (this.slider != null) {
        ComponentHelper.removeFromParent(this.slider);
        this.slider.removeListener(Events.Change, listener);
      }
      this.slider = slider;
      slider.getFocusSupport().setIgnore(true);
      ComponentHelper.setParent(this, slider);
      slider.addListener(Events.Change, listener);
    }
  }

  @Override
  public void setValue(Integer value) {
    if (value == null) {
      int min = slider.getMinValue();
      slider.setValue(min);
      super.setValue(min);
    } else {
      slider.setValue(value);
      super.setValue(value);
    }
  }

  @Override
  protected void afterRender() {
    super.afterRender();
    updateHiddenField();

    El elem = findLabelElement();
    if (elem != null) {
      elem.dom.setAttribute("for", slider.getId());
    }
  }

  @Override
  protected void doAttachChildren() {
    super.doAttachChildren();
    ComponentHelper.doAttach(slider);
  }

  @Override
  protected void doDetachChildren() {
    super.doDetachChildren();
    ComponentHelper.doDetach(slider);
  }

  @Override
  protected El getFocusEl() {
    return slider.getFocusEl();
  }

  @Override
  protected El getInputEl() {
    return hidden;
  }

  @Override
  protected void onDisable() {
    super.onDisable();
    slider.disable();
  }

  @Override
  protected void onEnable() {
    super.onEnable();
    if (!readOnly) {
      slider.enable();
    }
  }

  @Override
  protected void onRender(Element parent, int index) {
    setElement(DOM.createDiv(), parent, index);

    slider.render(getElement());
    hidden = new El((Element) Document.get().createHiddenInputElement().cast());;
    getElement().appendChild(hidden.dom);

    if (GXT.isIE) {
      el().makePositionable();
    }

    super.onRender(parent, index);
  }

  @Override
  protected void onResize(int width, int height) {
    if (rendered) {
      if (slider.isVertical()) {
        slider.setHeight(height);
      } else {
        slider.setWidth(width);
      }
    }
    super.onResize(width, height);
  }

  protected void updateHiddenField() {
    if (rendered) {
      hidden.setValue(slider.getValue() + "");
    }
  }

}
TOP

Related Classes of com.extjs.gxt.ui.client.widget.form.SliderField

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.