[159002] Show second-level children in add/remove module dialog
diff --git a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/wizard/page/ModifyModulesComposite.java b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/wizard/page/ModifyModulesComposite.java
index 79fbd57..c0e8c9a 100644
--- a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/wizard/page/ModifyModulesComposite.java
+++ b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/wizard/page/ModifyModulesComposite.java
@@ -158,7 +158,7 @@
 	 * ChildMapModuleKey
 	 */
 	protected class ChildModuleMapKey {
-		private IModule[] moduleTree;
+		protected IModule[] moduleTree;
 		
 		protected ChildModuleMapKey(IModule curModule) {
 			if (curModule != null) {
@@ -317,6 +317,29 @@
 			}
 		}
 		
+		// get children recursively
+		iterator = childModuleMap.keySet().iterator();
+		while (iterator.hasNext()) {
+			ChildModuleMapKey key = (ChildModuleMapKey) iterator.next();
+			IModule[] children0 = (IModule[]) childModuleMap.get(key);
+			if (children0 != null) {
+				int size = children0.length;
+				for (int i = 0; i < size; i++) {
+					IModule[] module2 = new IModule[size + 1];
+					System.arraycopy(key.moduleTree, 0, module2, 0, size);
+					module2[size] = children0[i];
+					
+					try {
+						IModule[] children = server.getChildModules(module2, null);
+						if (children != null && children.length > 0)
+							childModuleMap.put(new ChildModuleMapKey(module2), children);
+					} catch (Exception e) {
+						// ignore
+					}
+				}
+			}
+		}
+		
 		if (availableTreeViewer != null)
 			Display.getDefault().syncExec(new Runnable() {
 				public void run() {