Started work on feature model manager
diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/platform/FeatureModelManager.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/platform/FeatureModelManager.java
new file mode 100644
index 0000000..16b2481
--- /dev/null
+++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/platform/FeatureModelManager.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ *  Copyright (c) 2011 IBM Corporation and others.
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ * 
+ *  Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.pde.internal.core.platform;
+
+import org.eclipse.core.runtime.*;
+import org.eclipse.pde.internal.core.IFeatureModelListener;
+
+public class FeatureModelManager {
+
+	/**
+	 * List of IFeatureModelListener
+	 */
+	private ListenerList fFeatureModelListeners;
+
+	/**
+	 * Creates a new feature model manager containing the given workspace and target feature models
+	 * 
+	 * @param workspace list of project paths in the workspaces representing features, possibly empty
+	 * @param target list of file paths pointing to target (external) features, possibly empty
+	 * @param monitor progress monitor, can be <code>null</code>
+	 */
+	public FeatureModelManager(String[] workspace, String[] target, IProgressMonitor monitor) {
+		fFeatureModelListeners = new ListenerList();
+		SubMonitor subMon = SubMonitor.convert(monitor, "Creating feature model manager", 200);
+		try {
+			addTargetFeatures(target, subMon.newChild(150));
+			addWorkspaceFeatures(workspace, subMon.newChild(50));
+		} finally {
+			subMon.done();
+			if (monitor != null) {
+				monitor.done();
+			}
+		}
+
+	}
+
+	/**
+	 * Registers a feature model listener to this manager.  Has no effect if
+	 * the listener is already registered.
+	 * 
+	 * @param listener listener to add
+	 */
+	public void addFeatureModelListener(IFeatureModelListener listener) {
+		fFeatureModelListeners.add(listener);
+	}
+
+	/**
+	 * Unregisters a feature model listener from this manager.  Has no effect if
+	 * the listener has not been registered with this manager.
+	 * 
+	 * @param listener listener to remove
+	 */
+	public void removeFeatureModelListener(IFeatureModelListener listener) {
+		fFeatureModelListeners.remove(listener);
+	}
+}