package com.iambookmaster.client.editor; import java.util.ArrayList; import com.google.gwt.user.client.ui.ListBox; import com.iambookmaster.client.beans.AbstractParameter; import com.iambookmaster.client.beans.Parameter; import com.iambookmaster.client.model.Model; import com.iambookmaster.client.model.ParameterListener; public class SimpleParameterListBox extends ListBox implements ParameterListener{ private Model model; private Parameter selected; private boolean npcOnly; public SimpleParameterListBox(Model model,boolean npcOnly) { this.model = model; this.npcOnly = npcOnly; model.addParamaterListener(this); refreshData(); } private void refreshData() { ArrayList<AbstractParameter> objects = model.getParameters(); clear(); for (AbstractParameter abstractParameter : objects) { addParameterToList(abstractParameter); } } private void addParameterToList(AbstractParameter abstractParameter) { if (abstractParameter instanceof Parameter) { Parameter parameter = (Parameter) abstractParameter; if (npcOnly && parameter.isHeroOnly()) { return; } addItem(parameter.getName(), parameter.getId()); if (selected == parameter) { setSelectedIndex(getItemCount()-1); } } } public void refreshAll() { refreshData(); } public Parameter getSelectedParameter() { int idx = getSelectedIndex(); ArrayList<AbstractParameter> objects = model.getParameters(); String id = getValue(idx); for (int i = 0; i < objects.size(); i++) { AbstractParameter object = objects.get(i); if (object.getId().equals(id)) { return (Parameter)object; } } return null; } public void setSelectedParameter(AbstractParameter selectedParameter) { if (selectedParameter==null) { setSelectedIndex(0); return; } if (selectedParameter.getId().equals(getValue(getSelectedIndex()))) { //the same return; } for (int i = 0; i < getItemCount(); i++) { if (selectedParameter.getId().equals(getValue(i))) { setSelectedIndex(i); break; } } } protected void onDetach() { super.onDetach(); model.removeParamaterListener(this); } public void addNewParameter(AbstractParameter parameter) { addParameterToList(parameter); } public void remove(AbstractParameter parameter) { for (int i = 0; i < getItemCount(); i++) { if (parameter.getId().equals(getValue(i))) { //remove it removeItem(i); if (selected==parameter) { selected = null; } break; } } } public void select(AbstractParameter parameter) { } public void update(AbstractParameter parameter) { for (int i = 0; i < getItemCount(); i++) { if (parameter.getId().equals(getValue(i))) { //update id setItemText(i, parameter.getName()); break; } } } public void showInfo(AbstractParameter parameter) { } }