package javaforce.webui; /** List * * @author pquiring */ import javaforce.webui.event.*; public class List extends ScrollPanel implements Click { public List() { addClass("list"); } public void add(String item) { add(new Label(item)); } public void add(Component item) { super.add(item); item.setWidth("100%"); item.setProperty("selected", "false"); } public void init() { super.init(); int cnt = count(); for(int a=0;a<cnt;a++) { Component c = get(a); c.addEvent("onclick", "onClick(event, " + c.id + ");"); c.addClickListener(this); } } public int getSelectedIndex() { int cnt = count(); for(int idx=0;idx<cnt;idx++) { Component c = get(idx); if (c.getProperty("selected").equals("true")) return idx; } return -1; } public int getSelectedCount() { int selCount = 0; int cnt = count(); for(int idx=0;idx<cnt;idx++) { Component c = get(idx); if (c.getProperty("selected").equals("true")) selCount++; } return selCount; } public int[] getSelectedIndices() { int selCount = getSelectedCount(); int selIdx[] = new int[selCount]; int selPos = 0; int cnt = count(); for(int idx=0;idx<cnt;idx++) { Component c = get(idx); if (c.getProperty("selected").equals("true")) { selIdx[selPos++] = idx; } } return selIdx; } public String getSelectedItem() { int idx = getSelectedIndex(); if (idx == -1) return null; Component c = get(idx); if (c instanceof Label) { Label l = (Label)c; return l.text; } return c.toString(); } public void onClick(MouseEvent e, Component c) { String selected = (String)c.getProperty("selected"); if (selected.equals("false")) { c.setProperty("selected", "true"); c.sendEvent("addclass", new String[] {"cls=selected"}); } else { c.setProperty("selected", "false"); c.sendEvent("delclass", new String[] {"cls=selected"}); } if (!e.ctrlKey) { //clear all other items List list = (List)c.parent; int cnt = list.count(); for(int a=0;a<cnt;a++) { Component o = list.get(a); if (o == c) continue; selected = (String)o.getProperty("selected"); if (selected.equals("true")) { o.setProperty("selected", "false"); o.sendEvent("delclass", new String[] {"cls=selected"}); } } } } }