package org.bbssh.ui.screens; import java.util.Enumeration; import java.util.Vector; import net.rim.device.api.ui.Keypad; import net.rim.device.api.ui.component.ObjectListField; import net.rim.device.api.ui.container.PopupScreen; import net.rim.device.api.ui.container.VerticalFieldManager; import org.bbssh.BBSSHApp; import org.bbssh.session.RemoteSessionInstance; import org.bbssh.session.SessionManager; import org.bbssh.ui.components.ConnectionListfieldCallback; public class ActiveSessionList extends PopupScreen { ObjectListField field; private int numSession = 0; public ActiveSessionList() { super(new VerticalFieldManager(VerticalFieldManager.VERTICAL_SCROLL | VerticalFieldManager.VERTICAL_SCROLLBAR), DEFAULT_CLOSE | DEFAULT_MENU); Enumeration e = SessionManager.getInstance().getAvailableSessions(); Vector v = new Vector(); while (e.hasMoreElements()) { v.addElement(e.nextElement()); } numSession = v.size(); if (numSession == 0) return; ConnectionListfieldCallback cb = new ConnectionListfieldCallback(v, false); field = new ObjectListField() { protected boolean navigationClick(int status, int time) { handleSelection(); return true; } protected boolean keyDown(int keycode, int time) { if (Keypad.key(keycode) == Keypad.KEY_ENTER) { handleSelection(); return true; } else { return super.keyDown(keycode, time); } } void handleSelection() { int x = field.getSelectedIndex(); if (x == -1) return; Object o = field.getCallback().get(field, x); if (!(o instanceof RemoteSessionInstance)) { return; } SessionManager.getInstance().setActiveSession((RemoteSessionInstance) o); BBSSHApp.inst().popScreen(ActiveSessionList.this); } }; field.setSize(v.size()); field.setRowHeight(cb.getRowHeight()); field.setCallback(cb); add(field); } public boolean isDirty() { return false; } public int getNumSessions() { return this.numSession; } }