/*
* Copyright 2011 JBoss Inc
*
* 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 org.jbpm.formapi.common.panels;
import java.util.ArrayList;
import java.util.List;
import com.google.gwt.dom.client.Document;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.LIElement;
import com.google.gwt.dom.client.Node;
import com.google.gwt.dom.client.UListElement;
import com.google.gwt.user.client.ui.Focusable;
import com.google.gwt.user.client.ui.Widget;
public class ListWidget extends Widget implements Focusable {
private final UListElement element = Document.get().createULElement();
public ListWidget() {
setElement(element);
}
public void addItem(String item) {
LIElement liElem = Document.get().createLIElement();
liElem.setInnerHTML(item);
element.appendChild(liElem);
}
public List<String> getItems() {
List<String> items = new ArrayList<String>();
for (int index = 0; index < element.getChildCount(); index++) {
Element elem = Element.as(element.getChild(index));
items.add(elem.getInnerHTML());
}
return items;
}
public void removeItem(String item) {
int index = 0;
for (; index < element.getChildCount(); index++) {
Node child = element.getChild(index);
Element elemChild = Element.as(child);
String elemHTML = elemChild.getInnerHTML();
if (elemHTML != null && elemHTML.equals(item)) {
removeItem(index);
break;
}
}
}
public void removeItem(int index) {
if (index < element.getChildCount()) {
element.removeChild(element.getChild(index));
}
}
public void setScrollTop(int scrollTop) {
element.setScrollTop(scrollTop);
}
public int getScrollTop() {
return element.getScrollTop();
}
public void setId(String id) {
element.setId(id);
}
public String getId() {
return element.getId();
}
public void setScrollLeft(int scrollLeft) {
element.setScrollLeft(scrollLeft);
}
public int getScrollLeft() {
return element.getScrollLeft();
}
public void setDir(String dir) {
element.setDir(dir);
}
public String getDir() {
return element.getDir();
}
@Override
public int getTabIndex() {
return element.getTabIndex();
}
@Override
public void setTabIndex(int index) {
element.setTabIndex(index);
}
@Override
public void setAccessKey(char key) {
setAccessKey(element, key);
}
public native void setAccessKey(Element elem, char key) /*-{
elem.accessKey = String.fromCharCode(key);
}-*/;
@Override
public void setFocus(boolean focused) {
if (focused) {
element.focus();
} else {
element.blur();
}
}
}