public void show( SJSelectionBox selBox, Component parent ) {
		// we can't use regular pop-ups, b/c they don't support focus.
		// create our window:
		if( w != null )
			w.dispose();
		this.selectionBox = selBox;
		//windowForComponent() seems to call up the parent in dialogs. Not what we want.
		Window parentWindow = SwingUtilities.getWindowAncestor(parent);
		Container cp;
		if( parentWindow instanceof JDialog ) {
			w = new JDialog( (JDialog) parentWindow );
			((JDialog)w).setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
			((JDialog)w).setUndecorated(true);
			cp = ((JDialog)w).getContentPane();
		} else if( parentWindow instanceof JFrame ) {
			// jframe causes wierdness with menus
			// jwindow doesn't dissapear correctly.
			w = new JDialog( (JFrame) parentWindow );
			((JDialog)w).setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
			((JDialog)w).setUndecorated(true);
			cp = ((JDialog)w).getContentPane();
		} else {
			w = new JDialog();
			((JDialog)w).setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
			((JDialog)w).setUndecorated(true);
			cp = ((JWindow)w).getContentPane();
		}
		
		//figure our dimensions and stuff:
		Dimension d = getPreferredSize();
		if( d.height > 300 ) {
			scroller = new SJScrollPane( this, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER, null );
			d.height = 300;
			scroller.setPreferredSize( d );
			cp.add( scroller );
		} else {
			cp.add( this );
		}
		Point p = parent.getLocationOnScreen();
		int y = parent.getHeight();
		if( p.y + y + d.height > parent.getGraphicsConfiguration().getBounds().getMaxY() ) {
			p.y -= d.height;
		} else {
			p.y += y;
		}
//		w.setAlwaysOnTop(true);
		w.pack();
		w.setLocation(p.x, p.y);
		w.setVisible(true);
		GlobalEventManager.suspendWhileVisible(w);
		w.addWindowFocusListener( new WindowFocusListener() {
			@Override
			public void windowGainedFocus(WindowEvent arg0) {
				if( scroller != null )
					scroller.getViewport().scrollRectToVisible( getComponent( selectionBox.getSelectedIndex() ).getBounds() );
			}
			@Override
			public void windowLostFocus(WindowEvent arg0) {
				w.setVisible(false);
				w.dispose();
			}
		});

		Window s = SwingUtilities.windowForComponent(parent);
		if( s != null )
			s.addWindowListener( this );
	}