Index: /applications/editors/josm/plugins/smed/src/smed/list/CheckBoxJList.java
===================================================================
--- /applications/editors/josm/plugins/smed/src/smed/list/CheckBoxJList.java	(revision 23288)
+++ /applications/editors/josm/plugins/smed/src/smed/list/CheckBoxJList.java	(revision 23288)
@@ -0,0 +1,123 @@
+package smed.list;
+
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Component;
+import java.util.HashSet;
+import java.util.Iterator;
+
+import javax.swing.DefaultListCellRenderer;
+import javax.swing.JCheckBox;
+import javax.swing.JComponent;
+import javax.swing.JList;
+import javax.swing.ListCellRenderer;
+import javax.swing.UIDefaults;
+import javax.swing.UIManager;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+
+public class CheckBoxJList extends JList implements ListSelectionListener {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+	@SuppressWarnings("rawtypes")
+	HashSet selectionCache = new HashSet();
+
+	 public CheckBoxJList() {
+		 super();
+		 
+		 setCellRenderer(new CellRenderer());
+		 addListSelectionListener (this);		 
+	 }
+
+
+	@SuppressWarnings({ "unchecked", "rawtypes" })
+	@Override
+	public void valueChanged(ListSelectionEvent lse) {
+		
+		if (! lse.getValueIsAdjusting()) {
+			removeListSelectionListener (this);
+
+			 // remember everything selected as a result of this action
+	         HashSet newSelections = new HashSet();
+	         int size = getModel().getSize();
+	         for (int i=0; i<size; i++) {
+	        	 if (getSelectionModel().isSelectedIndex(i)) newSelections.add (new Integer(i));;	        	 
+	         }
+	         
+	         // turn on everything that was previously selected
+	         Iterator it = selectionCache.iterator();
+	         while (it.hasNext()) {
+	        	 int index = ((Integer) it.next()).intValue();
+	        	 getSelectionModel().addSelectionInterval(index, index);
+	         }
+	         
+	         // add or remove the delta
+	         it = newSelections.iterator();
+	         while (it.hasNext()) {
+	        	 Integer nextInt = (Integer) it.next();
+	        	 int index = nextInt.intValue();
+	             
+	        	 if (selectionCache.contains (nextInt)) getSelectionModel().removeSelectionInterval (index, index);
+	        	 else getSelectionModel().addSelectionInterval (index, index);
+	         }
+	         
+	         // save selections for next time
+	         selectionCache.clear();
+	         for (int i=0; i<size; i++) {
+	        	 if (getSelectionModel().isSelectedIndex(i)) {
+	        		 selectionCache.add (new Integer(i));
+	        	 }
+	         }
+	         
+	         addListSelectionListener (this);
+	         
+		}
+		
+	}
+}
+
+class CellRenderer extends JComponent implements ListCellRenderer {
+	 /**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+	DefaultListCellRenderer defaultComp;
+	 JCheckBox checkbox;
+
+	 static Color listForeground, listBackground;
+	 static {
+	        UIDefaults uid = UIManager.getLookAndFeel().getDefaults();
+	        listForeground =  uid.getColor ("List.foreground");
+	 }
+	 
+	 
+	 public CellRenderer() {
+		 setLayout (new BorderLayout());
+		 defaultComp = new DefaultListCellRenderer();
+		 checkbox = new JCheckBox();
+		 add (checkbox, BorderLayout.WEST);
+         add (defaultComp, BorderLayout.CENTER);
+	 }
+	
+	 @Override
+	 public Component getListCellRendererComponent(
+            JList list, Object value, int index,
+            boolean isSelected, boolean cellHasFocus) {
+
+		// JCheckBox checkbox = (JCheckBox) value;
+		defaultComp.getListCellRendererComponent (list, value, index, isSelected, cellHasFocus);
+
+		checkbox.setSelected (isSelected);
+		Component[] comps = getComponents();
+		for (int i=0; i<comps.length; i++) {
+            comps[i].setForeground (listForeground);
+            comps[i].setBackground (listBackground);
+        }
+		
+		return this;
+	}
+	
+}
Index: /applications/editors/josm/plugins/smed/src/smed/menu/SmedMenuBar.java
===================================================================
--- /applications/editors/josm/plugins/smed/src/smed/menu/SmedMenuBar.java	(revision 23287)
+++ /applications/editors/josm/plugins/smed/src/smed/menu/SmedMenuBar.java	(revision 23288)
@@ -1,21 +1,13 @@
 package smed.menu;
 
-import java.awt.Rectangle;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
 import java.awt.event.KeyEvent;
 import java.util.ArrayList;
 import java.util.List;
 
-import javax.swing.JCheckBox;
-import javax.swing.JDialog;
+import javax.swing.DefaultListModel;
 import javax.swing.JMenu;
 import javax.swing.JMenuBar;
 import javax.swing.JMenuItem;
-import javax.swing.JPanel;
-import javax.swing.SwingUtilities;
 
-import smed.Smed;
-import smed.list.JCheckBoxList;
 import smed.menu.file.HideAction;
 import smed.plug.ifc.SmedPluggable;
@@ -31,6 +23,8 @@
      JMenu menu, submenu;
      JMenuItem menuItem;
+     public List<SmedPluggable> plugins = null;
+     HideAction hideAction = null;
      
-    public SmedMenuBar() {
+     public SmedMenuBar() {
         menuBar = new JMenuBar();
 
@@ -46,24 +40,9 @@
 
 			public void actionPerformed(java.awt.event.ActionEvent e) {
-				HideAction hideAction = new HideAction();
-				JDialog dialogHide = hideAction.getHideDialog();
-				JCheckBoxList hideList = hideAction.getHideList();
+				DefaultListModel myModel = new DefaultListModel();
+
+				for(SmedPluggable p : plugins) myModel.addElement (p.getName());
 				
-				JCheckBox jCheckBox = new JCheckBox();
-				jCheckBox.setBounds(new Rectangle(5, 10, 300, 20));
-				jCheckBox.setText("hello world");
-
-				List<JCheckBox> hideCBList = new ArrayList<JCheckBox>();
-				
-				/*
-				for(SmedPluggable p : Smed.getPlugins() ) {
-					
-				}
-				*/
-				
-				hideList.add(jCheckBox);
-				
-				
-				dialogHide.setVisible(true);
+				hideAction = new HideAction(myModel);
 			}
 		});
Index: /applications/editors/josm/plugins/smed/src/smed/menu/file/HideAction.java
===================================================================
--- /applications/editors/josm/plugins/smed/src/smed/menu/file/HideAction.java	(revision 23287)
+++ /applications/editors/josm/plugins/smed/src/smed/menu/file/HideAction.java	(revision 23288)
@@ -4,4 +4,5 @@
 import java.awt.Dialog;
 
+import javax.swing.DefaultListModel;
 import javax.swing.JCheckBoxMenuItem;
 import javax.swing.JDialog;
@@ -15,4 +16,6 @@
 import javax.swing.border.Border;
 import javax.swing.border.LineBorder;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
 
 import java.awt.GridBagLayout;
@@ -20,5 +23,5 @@
 import javax.swing.JCheckBox;
 
-import smed.list.JCheckBoxList;
+import smed.list.CheckBoxJList;
 public class HideAction extends JDialog {
 
@@ -30,7 +33,14 @@
 	private JPanel jContentPane = null;
 	private JButton okButton = null;
-	private JCheckBoxList hideList = null;
+	private CheckBoxJList hideList = null;
 	private JCheckBox jCheckBox = null;
+	private DefaultListModel model = null;
 	
+	
+	public HideAction(DefaultListModel model) {
+		this.model = model;
+		
+		getHideDialog().setVisible(true);
+	}
 	
 	/**
@@ -77,4 +87,5 @@
 			okButton.addActionListener(new java.awt.event.ActionListener() {
 				public void actionPerformed(java.awt.event.ActionEvent e) {
+					hideDialog.setVisible(true);
 					hideDialog.dispose();
 				}
@@ -88,10 +99,20 @@
 	 * @return javax.swing.JList	
 	 */
-	public JCheckBoxList getHideList() {
+	public JList getHideList() {
 		if (hideList == null) {
-			hideList = new JCheckBoxList();
+			hideList = new CheckBoxJList();
+			hideList.setModel (model);
 			hideList.setBounds(new Rectangle(20, 15, 315, 370));
 			hideList.setBorder(LineBorder.createBlackLineBorder());
-			}
+			hideList.addListSelectionListener(new ListSelectionListener() {
+
+				@Override
+				public void valueChanged(ListSelectionEvent arg0) {
+					int i = hideList.getSelectedIndex();
+					System.out.println("i:\t" + i);
+				}
+			});
+		}
+		
 		return hideList;
 	}
Index: /applications/editors/josm/plugins/smed/src/smed/tabs/SmedTabAction.java
===================================================================
--- /applications/editors/josm/plugins/smed/src/smed/tabs/SmedTabAction.java	(revision 23287)
+++ /applications/editors/josm/plugins/smed/src/smed/tabs/SmedTabAction.java	(revision 23288)
@@ -25,4 +25,6 @@
      */
 	private static final long serialVersionUID = 1L;
+	private SmedTabbedPane smedTabs = new SmedTabbedPane();
+	private SmedMenuBar smedMenu = new SmedMenuBar();
 
     public SmedTabAction() {
@@ -49,7 +51,9 @@
         frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
 
+        smedMenu.plugins = smedTabs.plugins;
+        
         //Add content to the window.
-        frame.setJMenuBar(new SmedMenuBar());
-        frame.add(new SmedTabbedPane(), BorderLayout.CENTER);
+        frame.setJMenuBar(smedMenu);
+        frame.add(smedTabs, BorderLayout.CENTER);
 
         //Display the window.
Index: /applications/editors/josm/plugins/smed/src/smed/tabs/SmedTabbedPane.java
===================================================================
--- /applications/editors/josm/plugins/smed/src/smed/tabs/SmedTabbedPane.java	(revision 23287)
+++ /applications/editors/josm/plugins/smed/src/smed/tabs/SmedTabbedPane.java	(revision 23288)
@@ -19,5 +19,5 @@
 public class SmedTabbedPane extends JPanel {
 	
-	private List<SmedPluggable> plugins = null;
+	List<SmedPluggable> plugins = null;
 
     /**
