diff options
author | Android (Google) Code Review <android-gerrit@google.com> | 2009-07-29 17:45:11 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2009-07-29 17:45:11 -0700 |
commit | 705abb251318ddb4b9a7afc125692103e2bc087a (patch) | |
tree | ae14d53a84789902ae7b244f5a135fbbb09fa267 | |
parent | efc2afddf7887a654d039a1ee52df38ae44cfef4 (diff) | |
parent | 2c4f84d0b623be5e5ad2878f0be76c111c871134 (diff) | |
download | sdk-705abb251318ddb4b9a7afc125692103e2bc087a.zip sdk-705abb251318ddb4b9a7afc125692103e2bc087a.tar.gz sdk-705abb251318ddb4b9a7afc125692103e2bc087a.tar.bz2 |
Merge change 9062 into donut
* changes:
Adds call back to the SDK updater for SDK content notifications.
8 files changed, 61 insertions, 17 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/AdtPlugin.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/AdtPlugin.java index b4289a6..d213f7a 100644 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/AdtPlugin.java +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/AdtPlugin.java @@ -313,16 +313,7 @@ public class AdtPlugin extends AbstractUIPlugin { 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( @@ -1389,6 +1380,22 @@ public class AdtPlugin extends AbstractUIPlugin { } /** + * 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 diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/actions/AvdManagerAction.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/actions/AvdManagerAction.java index 4a7d918..edc97fa 100755 --- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/actions/AvdManagerAction.java +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/actions/AvdManagerAction.java @@ -49,6 +49,11 @@ public class AvdManagerAction implements IWorkbenchWindowActionDelegate, IObject null /*sdk log*/,
sdk.getSdkLocation(),
false /*userCanChangeSdkRoot*/);
+ window.addListeners(new UpdaterWindow.ISdkListener() {
+ public void onSdkChange() {
+ AdtPlugin.getDefault().reparseSdk();
+ }
+ });
window.open();
}
}
diff --git a/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/AvdManagerPage.java b/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/AvdManagerPage.java index ccfd276..5716edf 100755 --- a/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/AvdManagerPage.java +++ b/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/AvdManagerPage.java @@ -16,9 +16,9 @@ package com.android.sdkuilib.internal.repository;
-import com.android.sdkuilib.internal.repository.UpdaterData.ISdkListener;
import com.android.sdkuilib.internal.widgets.AvdSelector;
import com.android.sdkuilib.internal.widgets.AvdSelector.DisplayMode;
+import com.android.sdkuilib.repository.UpdaterWindow.ISdkListener;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridLayout;
diff --git a/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/LocalPackagesPage.java b/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/LocalPackagesPage.java index 115bf32..d4ab86f 100755 --- a/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/LocalPackagesPage.java +++ b/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/LocalPackagesPage.java @@ -19,7 +19,7 @@ package com.android.sdkuilib.internal.repository; import com.android.sdklib.internal.repository.Archive;
import com.android.sdklib.internal.repository.IDescription;
import com.android.sdklib.internal.repository.Package;
-import com.android.sdkuilib.internal.repository.UpdaterData.ISdkListener;
+import com.android.sdkuilib.repository.UpdaterWindow.ISdkListener;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.ISelection;
diff --git a/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/RemotePackagesPage.java b/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/RemotePackagesPage.java index 7d991c5..a7c1a83 100755 --- a/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/RemotePackagesPage.java +++ b/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/RemotePackagesPage.java @@ -21,7 +21,7 @@ import com.android.sdklib.internal.repository.Archive; import com.android.sdklib.internal.repository.IDescription;
import com.android.sdklib.internal.repository.Package;
import com.android.sdklib.internal.repository.RepoSource;
-import com.android.sdkuilib.internal.repository.UpdaterData.ISdkListener;
+import com.android.sdkuilib.repository.UpdaterWindow.ISdkListener;
import org.eclipse.jface.dialogs.IInputValidator;
import org.eclipse.jface.dialogs.InputDialog;
diff --git a/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/UpdaterData.java b/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/UpdaterData.java index ebe3679..321f5ca 100755 --- a/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/UpdaterData.java +++ b/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/UpdaterData.java @@ -32,6 +32,7 @@ import com.android.sdklib.internal.repository.RepoSources; import com.android.sdklib.internal.repository.ToolPackage;
import com.android.sdklib.internal.repository.Package.UpdateInfo;
import com.android.sdkuilib.internal.repository.icons.ImageFactory;
+import com.android.sdkuilib.repository.UpdaterWindow.ISdkListener;
import org.eclipse.swt.widgets.Shell;
@@ -67,10 +68,6 @@ class UpdaterData { private Shell mWindowShell;
- public interface ISdkListener {
- void onSdkChange();
- }
-
public UpdaterData(String osSdkRoot, ISdkLog sdkLog) {
mOsSdkRoot = osSdkRoot;
mSdkLog = sdkLog;
diff --git a/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/UpdaterWindowImpl.java b/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/UpdaterWindowImpl.java index e36bd6c..0fbcc41 100755 --- a/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/UpdaterWindowImpl.java +++ b/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/UpdaterWindowImpl.java @@ -24,6 +24,7 @@ import com.android.sdklib.internal.repository.RepoSources; import com.android.sdklib.repository.SdkRepository;
import com.android.sdkuilib.internal.repository.icons.ImageFactory;
import com.android.sdkuilib.internal.tasks.ProgressTaskFactory;
+import com.android.sdkuilib.repository.UpdaterWindow.ISdkListener;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.SashForm;
@@ -168,6 +169,14 @@ public class UpdaterWindowImpl { mExtraPages.add(new Object[]{ title, pageClass });
}
+ public void addListeners(ISdkListener listener) {
+ mUpdaterData.addListeners(listener);
+ }
+
+ public void removeListener(ISdkListener listener) {
+ mUpdaterData.removeListener(listener);
+ }
+
/**
* Helper to return the SWT shell.
*/
diff --git a/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/repository/UpdaterWindow.java b/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/repository/UpdaterWindow.java index 9c47013..94881dc 100755 --- a/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/repository/UpdaterWindow.java +++ b/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/repository/UpdaterWindow.java @@ -32,6 +32,17 @@ public class UpdaterWindow { private UpdaterWindowImpl mWindow;
/**
+ * Interface for listeners on SDK modifications (ie new installed compoments, or deleted
+ * components)
+ */
+ public interface ISdkListener {
+ /**
+ * Sent when the content of the SDK changed
+ */
+ void onSdkChange();
+ }
+
+ /**
* Creates a new window. Caller must call open(), which will block.
* @param sdkLog
* @param osSdkRoot The OS path to the SDK root.
@@ -59,6 +70,21 @@ public class UpdaterWindow { }
/**
+ * Adds a new listener to be notified when a change is made to the content of the SDK.
+ */
+ public void addListeners(ISdkListener listener) {
+ mWindow.addListeners(listener);
+ }
+
+ /**
+ * Removes a new listener to be notified anymore when a change is made to the content of
+ * the SDK.
+ */
+ public void removeListener(ISdkListener listener) {
+ mWindow.removeListener(listener);
+ }
+
+ /**
* Opens the window.
*/
public void open() {
|