![JAR search and dependency download from the Maven repository](/logo.png)
com.sencha.gxt.theme.base.client.field.TriggerFieldDefaultAppearance Maven / Gradle / Ivy
/**
* Ext GWT 3.0.0-beta2 - Ext for GWT
* Copyright(c) 2007-2011, Sencha, Inc.
* [email protected]
*
* http://sencha.com/license
*/
package com.sencha.gxt.theme.base.client.field;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Element;
import com.google.gwt.resources.client.ClientBundle;
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.resources.client.ImageResource.ImageOptions;
import com.google.gwt.resources.client.ImageResource.RepeatStyle;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
import com.sencha.gxt.cell.core.client.form.FieldCell.FieldAppearanceOptions;
import com.sencha.gxt.cell.core.client.form.TriggerFieldCell.TriggerFieldAppearance;
import com.sencha.gxt.core.client.GXT;
import com.sencha.gxt.core.client.dom.XElement;
import com.sencha.gxt.theme.base.client.field.TextFieldDefaultAppearance.TextFieldStyle;
public class TriggerFieldDefaultAppearance extends ValueBaseFieldDefaultAppearance implements TriggerFieldAppearance {
public interface TriggerFieldResources extends ValueBaseFieldResources, ClientBundle {
@Source({"ValueBaseField.css", "TextField.css", "TriggerField.css"})
TriggerFieldStyle css();
@ImageOptions(repeatStyle = RepeatStyle.Horizontal)
ImageResource textBackground();
ImageResource triggerArrow();
ImageResource triggerArrowOver();
ImageResource triggerArrowClick();
ImageResource triggerArrowFocus();
ImageResource triggerArrowFocusOver();
ImageResource triggerArrowFocusClick();
@ImageOptions(repeatStyle = RepeatStyle.Horizontal, preventInlining = true)
ImageResource invalidLine();
}
public interface TriggerFieldStyle extends TextFieldStyle {
String trigger();
String over();
String click();
String noedit();
}
private final TriggerFieldResources resources;
private final TriggerFieldStyle style;
public TriggerFieldDefaultAppearance() {
this(GWT. create(TriggerFieldResources.class));
}
public TriggerFieldDefaultAppearance(TriggerFieldResources resources) {
super(resources);
this.resources = resources;
this.style = resources.css();
}
@Override
public XElement getInputElement(Element parent) {
return parent.cast().selectNode("input");
}
protected XElement getTrigger(Element parent) {
return parent.cast().selectNode("." + resources.css().trigger());
}
@Override
public void render(SafeHtmlBuilder sb, String value, FieldAppearanceOptions options) {
int width = options.getWidth();
boolean hideTrigger = options.isHideTrigger();
String name = options.getName();
if (width == -1) {
width = 150;
}
String inputStyles = "";
String wrapStyles = "";
if (width != -1) {
wrapStyles += "width:" + width + "px;";
if (!GXT.isBorderBox()) {
// 6px margin, 2px border
width -= 8;
}
if (!hideTrigger) {
width -= resources.triggerArrow().getWidth();
}
inputStyles += "width:" + width + "px;";
}
String cls = style.field() + " " + style.text();
if (value.equals("") && options.getEmptyText() != null) {
cls += " " + style.empty();
value = options.getEmptyText();
}
if (!options.isEditable()) {
cls += " " + style.noedit();
}
String ro = " ";
if (options.isReadonly() || !options.isEditable()) {
ro = " readonly ";
}
String input = "";
sb.appendHtmlConstant("");
if (!hideTrigger) {
sb.appendHtmlConstant("");
sb.appendHtmlConstant(input);
sb.appendHtmlConstant(" ");
sb.appendHtmlConstant(" ");
sb.appendHtmlConstant("
");
} else {
sb.appendHtmlConstant(input);
}
sb.appendHtmlConstant("");
}
@Override
public void onFocus(Element parent, boolean focus) {
parent.cast().setClassName(resources.css().focus(), focus);
getInputElement(parent).setClassName(resources.css().focus(), focus);
}
@Override
public void onTriggerClick(XElement parent, boolean click) {
getTrigger(parent).setClassName(resources.css().click(), click);
}
@Override
public void onTriggerOver(XElement parent, boolean over) {
parent.setClassName(resources.css().over(), over);
}
@Override
public void setTriggerVisible(XElement parent, boolean visible) {
getTrigger(parent).setVisible(visible);
}
@Override
public boolean triggerIsOrHasChild(XElement parent, Element target) {
return parent.isOrHasChild(target) && target. cast().is("." + resources.css().trigger());
}
@Override
public void setEditable(XElement parent, boolean editable) {
getInputElement(parent).setClassName(style.noedit(), !editable);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy