package com.iambookmaster.client.common; import java.util.ArrayList; import com.google.gwt.user.client.ui.ListBox; import com.iambookmaster.client.beans.ObjectBean; import com.iambookmaster.client.model.Model; import com.iambookmaster.client.model.ObjectListener; public class SimpleObjectsListBox extends ListBox implements ObjectListener{ private Model model; private ObjectBean selectedObject; private static final String EMPTY = ""; public SimpleObjectsListBox(Model model) { this.model = model; model.addObjectsListener(this); refreshData(); } private void refreshData() { ArrayList<ObjectBean> objects = model.getObjects(); clear(); addItem(EMPTY, EMPTY); int idx = 0; for (int i = 0; i < objects.size(); i++) { ObjectBean object = objects.get(i); addItem(object.getName(), object.getId()); if (selectedObject == object) { idx = i+1; } } setSelectedIndex(idx); } public void addNewObject(ObjectBean object) { addItem(object.getName(), object.getId()); } public void refreshAll() { refreshData(); } public void select(ObjectBean object) { } public void unselect(ObjectBean object) { } public void update(ObjectBean object) { refreshData(); } public ObjectBean getSelectedObject() { int idx = getSelectedIndex(); if (idx!=0) { ArrayList<ObjectBean> objects = model.getObjects(); String id = getValue(idx); for (int i = 0; i < objects.size(); i++) { ObjectBean object = objects.get(i); if (object.getId().equals(id)) { return object; } } } return null; } public void setSelectedObject(ObjectBean selectedObject) { if (selectedObject==null) { setSelectedIndex(0); return; } if (selectedObject.getId().equals(getValue(getSelectedIndex()))) { //the same return; } for (int i = 0; i < getItemCount(); i++) { if (selectedObject.getId().equals(getValue(i))) { setSelectedIndex(i); break; } } } protected void onDetach() { super.onDetach(); model.removeObjectsListener(this); } public void remove(ObjectBean object) { for (int i = 0; i < getItemCount(); i++) { if (object.getId().equals(getValue(i))) { removeItem(i); break; } } } public void showInfo(ObjectBean object) { } }