blob: 7c9540ef5e6b37ef8f72074d1e23497f97fdaef6 [file] [log] [blame]
package org.eclipse.osbp.runtime.web.vaadin.components.fields.client;
import org.eclipse.osbp.runtime.web.vaadin.components.fields.EntityField;
import org.eclipse.osbp.runtime.web.vaadin.components.fields.shared.EntityFieldState;
import com.google.gwt.event.dom.client.BlurEvent;
import com.google.gwt.event.dom.client.BlurHandler;
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.FocusEvent;
import com.google.gwt.event.dom.client.FocusHandler;
import com.google.gwt.event.dom.client.KeyDownEvent;
import com.google.gwt.event.dom.client.KeyDownHandler;
import com.google.gwt.event.dom.client.MouseUpEvent;
import com.google.gwt.event.dom.client.MouseUpHandler;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.ui.Widget;
import com.vaadin.client.VTooltip;
import com.vaadin.client.communication.StateChangeEvent;
import com.vaadin.client.ui.AbstractFieldConnector;
import com.vaadin.client.ui.Icon;
import com.vaadin.client.ui.ShortcutActionHandler.ShortcutActionHandlerOwner;
import com.vaadin.shared.communication.FieldRpc.FocusAndBlurServerRpc;
import com.vaadin.shared.ui.Connect;
@Connect(EntityField.class)
public class EntityFieldConnector extends AbstractFieldConnector implements
FocusHandler, BlurHandler, ClickHandler, ChangeHandler, KeyDownHandler,
MouseUpHandler {
private ShortcutActionHandlerOwner hasShortcutActionHandler;
@Override
public boolean delegateCaptionHandling() {
return false;
}
@Override
protected void init() {
super.init();
getWidget().init(this);
getWidget().client = getConnection();
getWidget().id = getConnectorId();
}
@Override
public void onStateChanged(StateChangeEvent stateChangeEvent) {
super.onStateChanged(stateChangeEvent);
if (null != getState().errorMessage) {
if (getWidget().errorIndicatorElement == null) {
getWidget().errorIndicatorElement = DOM.createSpan();
getWidget().errorIndicatorElement.setInnerHTML(" ");
DOM.setElementProperty(getWidget().errorIndicatorElement,
"className", "v-errorindicator");
DOM.appendChild(getWidget().getElement(),
getWidget().errorIndicatorElement);
DOM.sinkEvents(getWidget().errorIndicatorElement,
VTooltip.TOOLTIP_EVENTS | Event.ONCLICK);
} else {
DOM.setStyleAttribute(getWidget().errorIndicatorElement,
"display", "");
}
} else if (getWidget().errorIndicatorElement != null) {
DOM.setStyleAttribute(getWidget().errorIndicatorElement, "display",
"none");
}
if (isReadOnly()) {
getWidget().setEditable(false);
}
if (getIcon() != null) {
if (getWidget().icon == null) {
getWidget().icon = new Icon(getConnection());
DOM.insertChild(getWidget().getElement(),
getWidget().icon.getElement(), 1);
getWidget().icon.sinkEvents(VTooltip.TOOLTIP_EVENTS);
getWidget().icon.sinkEvents(Event.ONCLICK);
}
getWidget().icon.setUri(getIcon());
} else if (getWidget().icon != null) {
// detach icon
DOM.removeChild(getWidget().getElement(),
getWidget().icon.getElement());
getWidget().icon = null;
}
// Set text
getWidget().entityNumber = getState().entityNumber;
getWidget().entityDescription = getState().entityDescription;
getWidget().entityId = getState().entityId;
getWidget().immediate = getState().immediate;
}
@Override
public EntityFieldState getState() {
return (EntityFieldState) super.getState();
}
@Override
public VEntityField getWidget() {
return (VEntityField) super.getWidget();
}
@Override
public void onFocus(FocusEvent event) {
// EventHelper.updateFocusHandler ensures that this is called only when
// there is a listener on server side
getRpcProxy(FocusAndBlurServerRpc.class).focus();
}
@Override
public void onBlur(BlurEvent event) {
// EventHelper.updateFocusHandler ensures that this is called only when
// there is a listener on server side
getRpcProxy(FocusAndBlurServerRpc.class).blur();
}
@Override
public void onClick(ClickEvent event) {
// if (!isEnabled()) {
// return;
// }
//
// getState().checked = getWidget().getValue();
//
// // Add mouse details
// MouseEventDetails details = MouseEventDetailsBuilder
// .buildMouseEventDetails(event.getNativeEvent(), getWidget()
// .getElement());
// getRpcProxy(CheckBoxServerRpc.class).setChecked(getState().checked,
// details);
}
@Override
public void onKeyDown(KeyDownEvent event) {
}
@Override
public void onChange(ChangeEvent event) {
}
@Override
public void onMouseUp(MouseUpEvent event) {
}
private ShortcutActionHandlerOwner getShortcutHandlerOwner() {
if (hasShortcutActionHandler == null) {
Widget parent = getWidget().getParent();
while (parent != null) {
if (parent instanceof ShortcutActionHandlerOwner) {
break;
}
parent = parent.getParent();
}
hasShortcutActionHandler = (ShortcutActionHandlerOwner) parent;
}
return hasShortcutActionHandler;
}
}