if (checkSdkLocationAndId()) {
// if sdk if valid, reparse it
- // add all the opened Android projects to the list of projects to be updated
- // after the SDK is reloaded
- synchronized (getSdkLockObject()) {
- // get the project to refresh.
- IJavaProject[] androidProjects = BaseProjectHelper.getAndroidProjects();
- mPostLoadProjectsToResolve.addAll(Arrays.asList(androidProjects));
- }
-
- // parse the SDK resources at the new location
- parseSdkContent();
+ reparseSdk();
}
} else if (PREFS_BUILD_VERBOSITY.equals(property)) {
mBuildVerbosity = BuildPreferencePage.getBuildLevel(
}
/**
+ * Reparses the content of the SDK and updates opened projects.
+ */
+ public void reparseSdk() {
+ // add all the opened Android projects to the list of projects to be updated
+ // after the SDK is reloaded
+ synchronized (getSdkLockObject()) {
+ // get the project to refresh.
+ IJavaProject[] androidProjects = BaseProjectHelper.getAndroidProjects();
+ mPostLoadProjectsToResolve.addAll(Arrays.asList(androidProjects));
+ }
+
+ // parse the SDK resources at the new location
+ parseSdkContent();
+ }
+
+ /**
* Prints messages, associated with a project to the specified stream
* @param stream The stream to write to
* @param tag The tag associated to the message. Can be null
null /*sdk log*/,\r
sdk.getSdkLocation(),\r
false /*userCanChangeSdkRoot*/);\r
+ window.addListeners(new UpdaterWindow.ISdkListener() {\r
+ public void onSdkChange() {\r
+ AdtPlugin.getDefault().reparseSdk();\r
+ }\r
+ });\r
window.open();\r
}\r
}\r
\r
package com.android.sdkuilib.internal.repository;\r
\r
-import com.android.sdkuilib.internal.repository.UpdaterData.ISdkListener;\r
import com.android.sdkuilib.internal.widgets.AvdSelector;\r
import com.android.sdkuilib.internal.widgets.AvdSelector.DisplayMode;\r
+import com.android.sdkuilib.repository.UpdaterWindow.ISdkListener;\r
\r
import org.eclipse.swt.SWT;\r
import org.eclipse.swt.layout.GridLayout;\r
import com.android.sdklib.internal.repository.Archive;\r
import com.android.sdklib.internal.repository.IDescription;\r
import com.android.sdklib.internal.repository.Package;\r
-import com.android.sdkuilib.internal.repository.UpdaterData.ISdkListener;\r
+import com.android.sdkuilib.repository.UpdaterWindow.ISdkListener;\r
\r
import org.eclipse.jface.dialogs.MessageDialog;\r
import org.eclipse.jface.viewers.ISelection;\r
import com.android.sdklib.internal.repository.IDescription;\r
import com.android.sdklib.internal.repository.Package;\r
import com.android.sdklib.internal.repository.RepoSource;\r
-import com.android.sdkuilib.internal.repository.UpdaterData.ISdkListener;\r
+import com.android.sdkuilib.repository.UpdaterWindow.ISdkListener;\r
\r
import org.eclipse.jface.dialogs.IInputValidator;\r
import org.eclipse.jface.dialogs.InputDialog;\r
import com.android.sdklib.internal.repository.ToolPackage;\r
import com.android.sdklib.internal.repository.Package.UpdateInfo;\r
import com.android.sdkuilib.internal.repository.icons.ImageFactory;\r
+import com.android.sdkuilib.repository.UpdaterWindow.ISdkListener;\r
\r
import org.eclipse.swt.widgets.Shell;\r
\r
\r
private Shell mWindowShell;\r
\r
- public interface ISdkListener {\r
- void onSdkChange();\r
- }\r
-\r
public UpdaterData(String osSdkRoot, ISdkLog sdkLog) {\r
mOsSdkRoot = osSdkRoot;\r
mSdkLog = sdkLog;\r
import com.android.sdklib.repository.SdkRepository;\r
import com.android.sdkuilib.internal.repository.icons.ImageFactory;\r
import com.android.sdkuilib.internal.tasks.ProgressTaskFactory;\r
+import com.android.sdkuilib.repository.UpdaterWindow.ISdkListener;\r
\r
import org.eclipse.swt.SWT;\r
import org.eclipse.swt.custom.SashForm;\r
mExtraPages.add(new Object[]{ title, pageClass });\r
}\r
\r
+ public void addListeners(ISdkListener listener) {\r
+ mUpdaterData.addListeners(listener);\r
+ }\r
+\r
+ public void removeListener(ISdkListener listener) {\r
+ mUpdaterData.removeListener(listener);\r
+ }\r
+\r
/**\r
* Helper to return the SWT shell.\r
*/\r
private UpdaterWindowImpl mWindow;\r
\r
/**\r
+ * Interface for listeners on SDK modifications (ie new installed compoments, or deleted\r
+ * components)\r
+ */\r
+ public interface ISdkListener {\r
+ /**\r
+ * Sent when the content of the SDK changed\r
+ */\r
+ void onSdkChange();\r
+ }\r
+\r
+ /**\r
* Creates a new window. Caller must call open(), which will block.\r
* @param sdkLog\r
* @param osSdkRoot The OS path to the SDK root.\r
}\r
\r
/**\r
+ * Adds a new listener to be notified when a change is made to the content of the SDK.\r
+ */\r
+ public void addListeners(ISdkListener listener) {\r
+ mWindow.addListeners(listener);\r
+ }\r
+\r
+ /**\r
+ * Removes a new listener to be notified anymore when a change is made to the content of\r
+ * the SDK.\r
+ */\r
+ public void removeListener(ISdkListener listener) {\r
+ mWindow.removeListener(listener);\r
+ }\r
+\r
+ /**\r
* Opens the window.\r
*/\r
public void open() {\r