Index: /trunk/src/org/openstreetmap/josm/gui/preferences/plugin/PluginListPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/plugin/PluginListPanel.java	(revision 5608)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/plugin/PluginListPanel.java	(revision 5609)
@@ -112,4 +112,14 @@
             this.cb = cb;
         }
+        protected void selectRequiredPlugins(PluginInformation info) {
+            if (info != null && info.requires != null) {
+                for (String s : info.getRequiredPlugins()) {
+                    if (!model.isSelectedPlugin(s)) {
+                        model.setPluginSelected(s, true);
+                        selectRequiredPlugins(model.getPluginInformation(s));
+                    }
+                }
+            }
+        }
         public void actionPerformed(ActionEvent e) {
             // Select/unselect corresponding plugin in the model
@@ -118,7 +128,5 @@
             if (cb.isSelected() && cb.pi.requires != null) {
                 // Select required plugins
-                for (String s : cb.pi.getRequiredPlugins()) {
-                    model.setPluginSelected(s, true);
-                }
+                selectRequiredPlugins(cb.pi);
                 // Alert user if plugin requirements are not met
                 PluginHandler.checkRequiredPluginsPreconditions(PluginListPanel.this, model.getAvailablePlugins(), cb.pi, false);
