/**
* Copyright 2008-2016 Qualogy Solutions B.V.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.qualogy.qafe.gwt.client.ui.renderer;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Element;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.ui.CheckBox;
import com.google.gwt.user.client.ui.UIObject;
import com.qualogy.qafe.gwt.client.component.QCheckBox;
import com.qualogy.qafe.gwt.client.vo.ui.CheckBoxGVO;
import com.qualogy.qafe.gwt.client.vo.ui.ComponentGVO;
public class CheckBoxRenderer extends AbstractComponentRenderer {
public UIObject render(ComponentGVO component, String uuid, String parent, String context) {
QCheckBox uiObject = null;
if (component != null) {
if (component instanceof CheckBoxGVO) {
CheckBoxGVO gvo = (CheckBoxGVO) component;
final ComponentGVO finalComponentGVO = component;
final String finalUuid = uuid;
final String finalParent = parent;
if (gvo.getMenu() != null) {
uiObject = new QCheckBox(DOM.createInputCheck(), gvo.getDisplaynamePosition()) {
@Override
public void onBrowserEvent(Event event) {
if (event.getTypeInt() == Event.ONCONTEXTMENU) {
DOM.eventPreventDefault(event);
applyContextMenu(event, finalComponentGVO, finalUuid, finalParent);
}
super.onBrowserEvent(event);
}
@Override
protected void setElement(Element elem) {
super.setElement(elem);
sinkEvents(Event.ONCONTEXTMENU);
}
};
} else {
uiObject = new QCheckBox(DOM.createInputCheck(), gvo.getDisplaynamePosition());
}
RendererHelper.fillIn(component, uiObject, uuid, parent, context);
uiObject.setText(gvo.getDisplayname());
uiObject.setEditable(Boolean.valueOf(gvo.getEditable()));
if (gvo.getValue() != null) {
uiObject.setChecked(gvo.getValue().booleanValue());
}
setValueForDomain(uiObject, gvo.getUnCheckedValue(), CheckBoxGVO.UNCHECKED_VALUE_ATTRIBUTE_TAG);
setValueForDomain(uiObject, gvo.getCheckedValue(), CheckBoxGVO.CHECKED_VALUE_ATTRIBUTE_TAG);
setValueForDomain(uiObject, createStringForDomain(gvo.getCheckedValueDomain()), CheckBoxGVO.CHECKED_VALUE_DOMAIN_ATTRIBUTE_TAG);
setValueForDomain(uiObject, createStringForDomain(gvo.getUnCheckedValueDomain()), CheckBoxGVO.UNCHECKED_VALUE_DOMAIN_ATTRIBUTE_TAG);
}
}
return uiObject;
}
private String createStringForDomain(String[] checkedValueDomain) {
String value = null;
if (checkedValueDomain != null) {
value = "";
for (int i = 0; i < checkedValueDomain.length; i++) {
value += checkedValueDomain[i];
if (i < (checkedValueDomain.length - 1)) {
value += ",";
}
}
}
return value;
}
private void setValueForDomain(CheckBox uiObject, String value, String attribute) {
if (value != null) {
DOM.setElementAttribute(uiObject.getElement(), attribute, value);
}
}
}