Package com.sencha.gxt.cell.core.client.form

Source Code of com.sencha.gxt.cell.core.client.form.TwinTriggerFieldCell$TwinTriggerFieldAppearance

/**
* Sencha GXT 3.1.0-beta - Sencha for GWT
* Copyright(c) 2007-2014, Sencha, Inc.
* licensing@sencha.com
*
* http://www.sencha.com/products/gxt/license/
*/
package com.sencha.gxt.cell.core.client.form;

import com.google.gwt.cell.client.ValueUpdater;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.NativeEvent;
import com.sencha.gxt.core.client.dom.XElement;
import com.sencha.gxt.widget.core.client.event.TwinTriggerClickEvent;

public class TwinTriggerFieldCell<T> extends TriggerFieldCell<T> {

  public interface TwinTriggerFieldAppearance extends TriggerFieldAppearance {
    boolean twinTriggerIsOrHasChild(XElement parent, Element target);

    void onTwinTriggerOver(XElement parent, boolean over);

    void onTwinTriggerClick(XElement parent, boolean click);

  }

  public TwinTriggerFieldCell() {
    this(GWT.<TwinTriggerFieldAppearance> create(TwinTriggerFieldAppearance.class));
  }

  public TwinTriggerFieldCell(TwinTriggerFieldAppearance appearance) {
    super(appearance);
  }

  @Override
  public TwinTriggerFieldAppearance getAppearance() {
    return (TwinTriggerFieldAppearance) super.getAppearance();
  }

  protected void onClick(Context context, XElement parent, NativeEvent event, T value, ValueUpdater<T> updater) {
    Element target = event.getEventTarget().cast();

    if (!isReadOnly() && getAppearance().twinTriggerIsOrHasChild(parent, target)) {
      onTwinTriggerClick(context, parent, event, value, updater);
    }

    if (!isReadOnly() && getAppearance().triggerIsOrHasChild(parent, target)) {
      onTriggerClick(context, parent, event, value, updater);
    }

  }

  @Override
  protected void onMouseDown(XElement parent, NativeEvent event) {
    super.onMouseDown(parent, event);

    Element target = event.getEventTarget().cast();
    if (!isReadOnly() && (!isEditable() && getInputElement(parent).isOrHasChild(target))
            || getAppearance().twinTriggerIsOrHasChild(parent,target)) {
      getAppearance().onTwinTriggerClick(parent, true);
      event.preventDefault();
    }
  }

  protected void onTwinTriggerClick(Context context, XElement parent, NativeEvent event, T value,
      ValueUpdater<T> updater) {
    fireEvent(context, new TwinTriggerClickEvent());
    getAppearance().onTwinTriggerClick(parent, false);
  }

  @Override
  protected void onMouseOver(XElement parent, NativeEvent event) {
    super.onMouseOver(parent, event);
    XElement target = event.getEventTarget().cast();
    if (!isReadOnly() && getAppearance().twinTriggerIsOrHasChild(parent, target)) {
      getAppearance().onTwinTriggerOver(parent, true);
    }
  }

  @Override
  protected void onMouseOut(XElement parent, NativeEvent event) {
    super.onMouseOut(parent, event);
    XElement target = event.getEventTarget().cast();
    if (!isReadOnly() && getAppearance().twinTriggerIsOrHasChild(parent, target)) {
      getAppearance().onTwinTriggerOver(parent, false);
    }
  }
 
}
TOP

Related Classes of com.sencha.gxt.cell.core.client.form.TwinTriggerFieldCell$TwinTriggerFieldAppearance

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.