Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jnmronquillo/4489139 to your computer and use it in GitHub Desktop.
Save jnmronquillo/4489139 to your computer and use it in GitHub Desktop.
package com.rhem.client.widget;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Element;
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
import com.rhem.client.widget.MyTwinTriggerFieldCell.MyTwinTriggerFieldAppearance;
import com.sencha.gxt.cell.core.client.form.FieldCell.FieldAppearanceOptions;
import com.sencha.gxt.core.client.dom.XElement;
import com.sencha.gxt.theme.base.client.field.TwinTriggerFieldDefaultAppearance;
public class MyTwinTriggerFieldDefaultAppearance extends TwinTriggerFieldDefaultAppearance implements MyTwinTriggerFieldAppearance {
public interface MyTwinTriggerFieldResources extends TwinTriggerFieldResources {
@Override
@Source("com/sencha/gxt/theme/base/client/field/clearTrigger.gif")
public ImageResource triggerArrow();
@Override
@Source("com/sencha/gxt/theme/base/client/field/clearTriggerClick.gif")
public ImageResource triggerArrowClick();
@Override
@Source("com/sencha/gxt/theme/base/client/field/clearTriggerOver.gif")
public ImageResource triggerArrowOver();
@Override
@Source("com/sencha/gxt/theme/base/client/field/clearTriggerFocus.gif")
public ImageResource triggerArrowFocus();
@Override
@Source("com/sencha/gxt/theme/base/client/field/triggerArrowFocusClick.png")
public ImageResource triggerArrowFocusClick();
@Override
@Source("com/sencha/gxt/theme/base/client/field/triggerArrowFocusOver.png")
public ImageResource triggerArrowFocusOver();
@Source("searchTrigger.gif")
public ImageResource twinTriggerArrow();
@Source("searchTriggerClick.gif")
public ImageResource twinTriggerArrowClick();
@Source("searchTriggerOver.gif")
public ImageResource twinTriggerArrowOver();
@Source("searchTriggerFocus.gif")
public ImageResource twinTriggerArrowFocus();
@Source("searchTriggerFocusClick.gif")
public ImageResource twinTriggerArrowFocusClick();
@Source("searchTriggerFocusOver.gif")
public ImageResource twinTriggerArrowFocusOver();
@Override
@Source({"com/sencha/gxt/theme/base/client/field/ValueBaseField.css",
"com/sencha/gxt/theme/base/client/field/TextField.css",
"com/sencha/gxt/theme/base/client/field/TriggerField.css",
"com/sencha/gxt/theme/base/client/field/TwinTriggerField.css",
"MyTwinTriggerField.css"})
MyTwinTriggerFieldStyle css();
}
public interface MyTwinTriggerFieldStyle extends TwinTriggerFieldStyle {
}
MyTwinTriggerFieldResources resources;
MyTwinTriggerFieldStyle style;
public MyTwinTriggerFieldDefaultAppearance() {
this(GWT.<MyTwinTriggerFieldResources> create(MyTwinTriggerFieldResources.class));
}
public MyTwinTriggerFieldDefaultAppearance(MyTwinTriggerFieldResources res) {
super(res);
this.resources = res;
this.style = res.css();
}
@Override
public void render(SafeHtmlBuilder sb, String value,
FieldAppearanceOptions options) {
int width = options.getWidth();
boolean hideTrigger = options.isHideTrigger();
String name = options.getName() != null ? " name='" + options.getName() + "' " : "";
String disabled = options.isDisabled() ? "disabled=true" : "";
if (width == -1) {
width = 150;
}
String inputStyles = "";
String wrapStyles = "";
if (width != -1) {
wrapStyles += "width:" + width + "px;";
// 6px margin, 2px border
width -= 8;
if (!hideTrigger) {
width -= resources.triggerArrow().getWidth();
width -= resources.twinTriggerArrow().getWidth();//***added for two icons, side by side***
}
inputStyles += "width:" + width + "px;";
}
String cls = style.field() + " " + style.text();
if (value.equals("") && options.getEmptyText() != null) {
cls += " " + style.empty();
value = options.getEmptyText();
}
String ro = options.isReadonly() ? " readonly " : " ";
String input = "<input " + name + disabled + ro + " style='" + inputStyles + "' type='text' value='" + value
+ "' class='" + cls + "'/>";
sb.appendHtmlConstant("<div style='" + wrapStyles + "' class='" + style.wrap() + "'>");
if (!options.isHideTrigger()) {
sb.appendHtmlConstant("<table width=100% cellpadding=0 cellspacing=0><tr><td>");
sb.appendHtmlConstant(input);
sb.appendHtmlConstant("</td>");
sb.appendHtmlConstant("<td>");
sb.appendHtmlConstant("<div class='" + style.trigger() + "'></div>");
sb.appendHtmlConstant("<div class='" + style.twinTrigger() + "'></div>");
sb.appendHtmlConstant("</td></table>");
} else {
sb.appendHtmlConstant(input);
}
sb.appendHtmlConstant("</div>");
}
/*added missing method*/
@Override
public void onResize(XElement parent, int width, int height,
boolean hideTrigger) {
if (width != -1) {
Element div = parent.getFirstChildElement();
div.getStyle().setPropertyPx("width", width);
// 6px margin, 2px border
width -= 8;
if (!hideTrigger) {
width -= resources.triggerArrow().getWidth();
width -= resources.twinTriggerArrow().getWidth();//***added for two icons, side by side***
}
parent.selectNode("input").getStyle().setPropertyPx("width", width);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment