package uk.ac.leeds.ccg.widgets; import uk.ac.leeds.ccg.geotools.*; import java.awt.*; import java.awt.event.*; import java.util.*; import uk.ac.leeds.ccg.geotools.*; public class GeoList extends java.awt.List implements uk.ac.leeds.ccg.geotools.SelectionChangedListener, ItemListener { private final static boolean DEBUG=true; GeoData data; SelectionManager sm; int indexLUT[]; public GeoList(GeoData d){ if(DEBUG)System.out.println("---->uk.ac.leeds.ccg.widgets.GeoList constructed. Will identify itself as GLs->"); data = d; setMultipleMode(true); //sm =s; if(DEBUG)System.out.println("GLs->setting up list"); //sm.addSelectionChangedListener(this); indexLUT = new int[d.getSize()]; Enumeration ids = data.getIds(); int i=0; while(ids.hasMoreElements()){ int id = ((Integer)ids.nextElement()).intValue(); indexLUT[i] = id; String text = d.getText(id); if(DEBUG)System.out.println("GLs->"+text); this.add(text); i++; } if(DEBUG)System.out.println("GLs->Done"); this.addItemListener(this);// listen to myself??? } public void setSelectionManager(SelectionManager s){ sm = s; sm.addSelectionChangedListener(this); } public void itemStateChanged(ItemEvent e){ if(DEBUG)System.out.println("GLs->The selection on the list has changed"); if(sm!=null){ sm.setSelection(indexesToIds(getSelectedIndexes())); } } public void selectionChanged(SelectionChangedEvent sce) { if(DEBUG)System.out.println("GLs->The selection in the selection manager has changed"); int ids[] = sce.getSelection(); int indexes[] = idsToIndexes(ids); int active[] = this.getSelectedIndexes(); for(int i=0;i