/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE file at the root of the source
* tree and available online at
*
* https://github.com/keeps/roda
*/
package org.roda.wui.client.common;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Document;
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.DomEvent;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.event.shared.HasHandlers;
import com.google.gwt.safehtml.shared.SafeHtmlUtils;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.Widget;
public class RemovableAssociativeTextBox extends Composite implements HasHandlers {
private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);
interface MyUiBinder extends UiBinder<Widget, RemovableAssociativeTextBox> {
}
@UiField
Label itemName;
@UiField
TextBox hiddenItemId;
@UiField(provided = true)
Anchor removeDynamicTextBoxButton;
@UiField
Button dialogButton;
public RemovableAssociativeTextBox() {
removeDynamicTextBoxButton = new Anchor(SafeHtmlUtils.fromSafeConstant("<i class=\"fa fa-remove\"></i>"));
initWidget(uiBinder.createAndBindUi(this));
hiddenItemId.setVisible(false);
dialogButton.setVisible(false);
}
public RemovableAssociativeTextBox(String id, String name) {
removeDynamicTextBoxButton = new Anchor(SafeHtmlUtils.fromSafeConstant("<i class=\"fa fa-remove\"></i>"));
initWidget(uiBinder.createAndBindUi(this));
hiddenItemId.setVisible(false);
dialogButton.setVisible(false);
if (id != null) {
hiddenItemId.setText(id);
itemName.setText(name);
}
}
public String getHiddenTextBoxValue() {
return hiddenItemId.getText();
}
public void setHiddenTextBoxValue(String value) {
hiddenItemId.setText(value);
}
public void setNameTextBoxValue(String value) {
itemName.setText(value);
}
public void addRemoveClickHandler(ClickHandler clickHandler) {
removeDynamicTextBoxButton.addClickHandler(clickHandler);
}
public HandlerRegistration addChangeHandler(ChangeHandler handler) {
return addDomHandler(handler, ChangeEvent.getType());
}
public void addSearchClickHandler(ClickHandler clickHandler) {
dialogButton.addClickHandler(clickHandler);
// fires an event to automatically click on the button
DomEvent.fireNativeEvent(Document.get().createClickEvent(0, 0, 0, 0, 0, false, false, false, false), dialogButton);
}
}