package com.iambookmaster.client.editor; import java.util.ArrayList; import com.google.gwt.user.client.ui.ListBox; import com.iambookmaster.client.beans.Picture; import com.iambookmaster.client.beans.Sound; import com.iambookmaster.client.model.ContentListener; import com.iambookmaster.client.model.Model; public class PicturesListBox extends ListBox implements ContentListener{ private Model model; private Picture selected; private int role; public PicturesListBox(Model model,int role) { this.model = model; this.role = role; model.addContentListener(this); refreshData(); } private void refreshData() { ArrayList<Picture> objects = model.getPictures(); clear(); addItem("",""); for (Picture picture : objects) { addParameterToList(picture); } } private void addParameterToList(Picture picture) { if (role > 0 && (role & picture.getRole()) == 0) { return; } addItem(picture.getName(), picture.getId()); if (selected == picture) { setSelectedIndex(getItemCount()-1); } } public void refreshAll() { refreshData(); } public Picture getSelectedPicture() { int idx = getSelectedIndex(); if (idx==0) { return null; } ArrayList<Picture> objects = model.getPictures(); String id = getValue(idx); for (Picture picture : objects) { if (picture.getId().equals(id)) { return picture; } } return null; } public void setSelectedPicture(Picture selectedPicture) { if (selectedPicture==null) { setSelectedIndex(0); return; } if (selectedPicture.getId().equals(getValue(getSelectedIndex()))) { //the same return; } for (int i = 0; i < getItemCount(); i++) { if (selectedPicture.getId().equals(getValue(i))) { setSelectedIndex(i); break; } } } protected void onDetach() { super.onDetach(); model.removeContentListener(this); } public void update(Picture picture) { for (int i = 0; i < getItemCount(); i++) { if (picture.getId().equals(getValue(i))) { //update id setItemText(i, picture.getName()); break; } } } public void addNew(Picture picture) { addParameterToList(picture); } public void remove(Picture picture) { for (int i = 0; i < getItemCount(); i++) { if (picture.getId().equals(getValue(i))) { //remove it removeItem(i); if (selected==picture) { selected = null; } break; } } } public void update(Sound sound) { } public void addNew(Sound sound) { } public void remove(Sound sound) { } public void select(Sound sound) { } public void unselect(Sound sound) { } public void select(Picture picture) { } public void unselect(Picture picture) { } public void showInfo(Picture picture) { } public void showInfo(Sound sound) { } }