diff --git a/cordova/plugins/org.jboss.tools.aerogear.hybrid.android.core/src/org/jboss/tools/aerogear/hybrid/android/core/AndroidConstants.java b/cordova/plugins/org.jboss.tools.aerogear.hybrid.android.core/src/org/jboss/tools/aerogear/hybrid/android/core/AndroidConstants.java index a15e3e9d..a3eea3f7 100644 --- a/cordova/plugins/org.jboss.tools.aerogear.hybrid.android.core/src/org/jboss/tools/aerogear/hybrid/android/core/AndroidConstants.java +++ b/cordova/plugins/org.jboss.tools.aerogear.hybrid.android.core/src/org/jboss/tools/aerogear/hybrid/android/core/AndroidConstants.java @@ -25,5 +25,7 @@ public interface AndroidConstants { public static final String FILE_XML_STRINGS = "strings.xml"; public static final String FILE_XML_BUILD ="build.xml"; public static final String PREF_ANDROID_SDK_LOCATION = "Android_SDK_Loc"; + + public static final int STATUS_CODE_ANDROID_SDK_NOT_DEFINED= 200; } diff --git a/cordova/plugins/org.jboss.tools.aerogear.hybrid.android.core/src/org/jboss/tools/aerogear/hybrid/android/core/adt/AndroidLaunchDelegate.java b/cordova/plugins/org.jboss.tools.aerogear.hybrid.android.core/src/org/jboss/tools/aerogear/hybrid/android/core/adt/AndroidLaunchDelegate.java index 88e8e856..27d2ba14 100644 --- a/cordova/plugins/org.jboss.tools.aerogear.hybrid.android.core/src/org/jboss/tools/aerogear/hybrid/android/core/adt/AndroidLaunchDelegate.java +++ b/cordova/plugins/org.jboss.tools.aerogear.hybrid.android.core/src/org/jboss/tools/aerogear/hybrid/android/core/adt/AndroidLaunchDelegate.java @@ -41,7 +41,7 @@ public void launch(ILaunchConfiguration configuration, String mode, throw new CoreException(new Status(IStatus.ERROR, AndroidCore.PLUGIN_ID, "Failed to connect with the device or emulator. We will attempt to reconnect, please try running your application again.")); } - AndroidSDKManager sdk = new AndroidSDKManager(); + AndroidSDKManager sdk = AndroidSDKManager.getManager(); HybridProject project = HybridProject.getHybridProject(getProject(configuration)); WidgetModel model = WidgetModel.getModel(project); @@ -88,7 +88,7 @@ public boolean preLaunchCheck(ILaunchConfiguration configuration, String mode, IProgressMonitor monitor) throws CoreException { // Start ADB Server boolean runOnDevice = configuration.getAttribute(AndroidLaunchConstants.ATTR_IS_DEVICE_LAUNCH, false); - AndroidSDKManager sdk = new AndroidSDKManager(); + AndroidSDKManager sdk = AndroidSDKManager.getManager(); if(!runOnDevice){ sdk.killADBServer(); } @@ -153,7 +153,7 @@ public boolean preLaunchCheck(ILaunchConfiguration configuration, } private AndroidDevice getEmulator() throws CoreException{ - AndroidSDKManager sdk = new AndroidSDKManager(); + AndroidSDKManager sdk = AndroidSDKManager.getManager(); List devices = sdk.listDevices(); for (AndroidDevice androidDevice : devices) { if ( androidDevice.isEmulator() && androidDevice.getState() == AndroidDevice.STATE_DEVICE ) diff --git a/cordova/plugins/org.jboss.tools.aerogear.hybrid.android.core/src/org/jboss/tools/aerogear/hybrid/android/core/adt/AndroidLibraryResolver.java b/cordova/plugins/org.jboss.tools.aerogear.hybrid.android.core/src/org/jboss/tools/aerogear/hybrid/android/core/adt/AndroidLibraryResolver.java index 7402f072..4828118e 100644 --- a/cordova/plugins/org.jboss.tools.aerogear.hybrid.android.core/src/org/jboss/tools/aerogear/hybrid/android/core/adt/AndroidLibraryResolver.java +++ b/cordova/plugins/org.jboss.tools.aerogear.hybrid.android.core/src/org/jboss/tools/aerogear/hybrid/android/core/adt/AndroidLibraryResolver.java @@ -85,7 +85,7 @@ public IStatus isLibraryConsistent() { public void preCompile(IProgressMonitor monitor) throws CoreException{ AndroidSDK sdk = AndroidProjectUtils.selectBestValidTarget(); - AndroidSDKManager sdkManager = new AndroidSDKManager(); + AndroidSDKManager sdkManager = AndroidSDKManager.getManager(); File projectDir = libraryRoot.append("framework").toFile(); if(!projectDir.isDirectory()){ throw new CoreException(HybridMobileStatus.newMissingEngineStatus(null, "Library for the Active Hybrid Mobile Engine for Android is incomplete. No framework directory is present.")); diff --git a/cordova/plugins/org.jboss.tools.aerogear.hybrid.android.core/src/org/jboss/tools/aerogear/hybrid/android/core/adt/AndroidProjectGenerator.java b/cordova/plugins/org.jboss.tools.aerogear.hybrid.android.core/src/org/jboss/tools/aerogear/hybrid/android/core/adt/AndroidProjectGenerator.java index 4919430b..ac42a857 100644 --- a/cordova/plugins/org.jboss.tools.aerogear.hybrid.android.core/src/org/jboss/tools/aerogear/hybrid/android/core/adt/AndroidProjectGenerator.java +++ b/cordova/plugins/org.jboss.tools.aerogear.hybrid.android.core/src/org/jboss/tools/aerogear/hybrid/android/core/adt/AndroidProjectGenerator.java @@ -79,7 +79,7 @@ public AndroidProjectGenerator(IProject project, File generationFolder,String pl @Override protected void generateNativeFiles(HybridMobileLibraryResolver resolver) throws CoreException { - AndroidSDKManager sdkManager = new AndroidSDKManager(); + AndroidSDKManager sdkManager = AndroidSDKManager.getManager(); HybridProject hybridProject = HybridProject.getHybridProject(getProject()); if(hybridProject == null ){ diff --git a/cordova/plugins/org.jboss.tools.aerogear.hybrid.android.core/src/org/jboss/tools/aerogear/hybrid/android/core/adt/AndroidProjectUtils.java b/cordova/plugins/org.jboss.tools.aerogear.hybrid.android.core/src/org/jboss/tools/aerogear/hybrid/android/core/adt/AndroidProjectUtils.java index b9eb51e5..f2fa198d 100644 --- a/cordova/plugins/org.jboss.tools.aerogear.hybrid.android.core/src/org/jboss/tools/aerogear/hybrid/android/core/adt/AndroidProjectUtils.java +++ b/cordova/plugins/org.jboss.tools.aerogear.hybrid.android.core/src/org/jboss/tools/aerogear/hybrid/android/core/adt/AndroidProjectUtils.java @@ -44,7 +44,7 @@ public static File getPlatformWWWDirectory(File projectDirectory) { * , */ public static AndroidSDK selectBestValidTarget() throws CoreException { - AndroidSDKManager sdkManager = new AndroidSDKManager(); + AndroidSDKManager sdkManager = AndroidSDKManager.getManager(); List targets = sdkManager.listTargets(); if(targets == null || targets.isEmpty() ){ throw new CoreException(new Status(IStatus.ERROR, AndroidCore.PLUGIN_ID, "No Android targets were found, Please create a target")); diff --git a/cordova/plugins/org.jboss.tools.aerogear.hybrid.android.core/src/org/jboss/tools/aerogear/hybrid/android/core/adt/AndroidSDKManager.java b/cordova/plugins/org.jboss.tools.aerogear.hybrid.android.core/src/org/jboss/tools/aerogear/hybrid/android/core/adt/AndroidSDKManager.java index 224cdc90..f76593f1 100644 --- a/cordova/plugins/org.jboss.tools.aerogear.hybrid.android.core/src/org/jboss/tools/aerogear/hybrid/android/core/adt/AndroidSDKManager.java +++ b/cordova/plugins/org.jboss.tools.aerogear.hybrid.android.core/src/org/jboss/tools/aerogear/hybrid/android/core/adt/AndroidSDKManager.java @@ -20,15 +20,19 @@ import org.eclipse.core.runtime.Assert; import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.core.runtime.Path; import org.eclipse.core.runtime.Status; import org.eclipse.debug.core.IStreamListener; import org.eclipse.debug.core.model.IStreamMonitor; +import org.jboss.tools.aerogear.hybrid.android.core.AndroidConstants; import org.jboss.tools.aerogear.hybrid.android.core.AndroidCore; import org.jboss.tools.aerogear.hybrid.core.HybridProjectConventions; import org.jboss.tools.aerogear.hybrid.core.internal.util.ExternalProcessUtility; +import org.jboss.tools.aerogear.hybrid.core.internal.util.HybridMobileStatus; import org.jboss.tools.aerogear.hybrid.core.internal.util.TextDetectingStreamListener; /** @@ -235,16 +239,22 @@ public String getErrorString(){ - public AndroidSDKManager() { + private AndroidSDKManager(String tools, String platform) { + toolsDir = tools; + platformTools = platform; + } + + public static AndroidSDKManager getManager() throws CoreException{ String sdkDir = AndroidCore.getSDKLocation(); - if(sdkDir == null ) - throw new IllegalStateException("No SDK is defined to work with the Android SDK Manager"); - - if(!sdkDir.endsWith(File.separator)){ - sdkDir = sdkDir+ File.separator; + if(sdkDir == null ){ + throw new CoreException(new HybridMobileStatus(IStatus.ERROR, AndroidCore.PLUGIN_ID, AndroidConstants.STATUS_CODE_ANDROID_SDK_NOT_DEFINED, + "Android SDK location is not defined", null)); } - toolsDir = sdkDir+ "tools" + File.separator; - platformTools = sdkDir +"platform-tools" + File.separator; + Path path = new Path(sdkDir); + IPath tools = path.append("tools").addTrailingSeparator(); + IPath platform = path.append("platform-tools").addTrailingSeparator(); + AndroidSDKManager sdk = new AndroidSDKManager(tools.toOSString(), platform.toOSString()); + return sdk; } diff --git a/cordova/plugins/org.jboss.tools.aerogear.hybrid.android.ui/src/org/jboss/tools/aerogear/android/ui/AndroidDeviceLaunchShortcut.java b/cordova/plugins/org.jboss.tools.aerogear.hybrid.android.ui/src/org/jboss/tools/aerogear/android/ui/AndroidDeviceLaunchShortcut.java index 414a71f5..33be89cf 100644 --- a/cordova/plugins/org.jboss.tools.aerogear.hybrid.android.ui/src/org/jboss/tools/aerogear/android/ui/AndroidDeviceLaunchShortcut.java +++ b/cordova/plugins/org.jboss.tools.aerogear.hybrid.android.ui/src/org/jboss/tools/aerogear/android/ui/AndroidDeviceLaunchShortcut.java @@ -25,7 +25,7 @@ public class AndroidDeviceLaunchShortcut extends HybridProjectLaunchShortcut { protected boolean validateBuildToolsReady() throws CoreException { if(!SDKLocationHelper.defineSDKLocationIfNecessary()) return false; - AndroidSDKManager sdkManager = new AndroidSDKManager(); + AndroidSDKManager sdkManager = AndroidSDKManager.getManager(); List targets = sdkManager.listTargets(); if(targets == null || targets.isEmpty() ){ throw new CoreException(new Status(IStatus.ERROR, AndroidUI.PLUGIN_ID, "No targets to build against")); @@ -74,7 +74,7 @@ protected String getLaunchConfigurationTypeID() { private AndroidDevice getDeviceToRun() { if (deviceToRun == null) { try { - AndroidSDKManager sdkManager = new AndroidSDKManager(); + AndroidSDKManager sdkManager = AndroidSDKManager.getManager(); List devices = sdkManager.listDevices(); for (AndroidDevice androidDevice : devices) { if (!androidDevice.isEmulator()) { diff --git a/cordova/plugins/org.jboss.tools.aerogear.hybrid.android.ui/src/org/jboss/tools/aerogear/android/ui/AndroidEmulatorLaunchShortcut.java b/cordova/plugins/org.jboss.tools.aerogear.hybrid.android.ui/src/org/jboss/tools/aerogear/android/ui/AndroidEmulatorLaunchShortcut.java index 55b83457..c5339d49 100644 --- a/cordova/plugins/org.jboss.tools.aerogear.hybrid.android.ui/src/org/jboss/tools/aerogear/android/ui/AndroidEmulatorLaunchShortcut.java +++ b/cordova/plugins/org.jboss.tools.aerogear.hybrid.android.ui/src/org/jboss/tools/aerogear/android/ui/AndroidEmulatorLaunchShortcut.java @@ -30,7 +30,7 @@ protected boolean validateBuildToolsReady() throws CoreException { if(!SDKLocationHelper.defineSDKLocationIfNecessary()) return false; - AndroidSDKManager sdkManager = new AndroidSDKManager(); + AndroidSDKManager sdkManager = AndroidSDKManager.getManager(); List targets = sdkManager.listTargets(); if(targets == null || targets.isEmpty() ){ throw new CoreException(new Status(IStatus.ERROR, AndroidUI.PLUGIN_ID, "No targets to build against")); diff --git a/cordova/plugins/org.jboss.tools.aerogear.hybrid.android.ui/src/org/jboss/tools/aerogear/android/ui/AndroidSimOptionsTab.java b/cordova/plugins/org.jboss.tools.aerogear.hybrid.android.ui/src/org/jboss/tools/aerogear/android/ui/AndroidSimOptionsTab.java index 0746d08f..af49d32a 100644 --- a/cordova/plugins/org.jboss.tools.aerogear.hybrid.android.ui/src/org/jboss/tools/aerogear/android/ui/AndroidSimOptionsTab.java +++ b/cordova/plugins/org.jboss.tools.aerogear.hybrid.android.ui/src/org/jboss/tools/aerogear/android/ui/AndroidSimOptionsTab.java @@ -119,8 +119,8 @@ public void widgetSelected(SelectionEvent e) { logFilterTxt = new Text(grpEmulator, SWT.BORDER); logFilterTxt.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); logFilterTxt.addListener(SWT.Modify, dirtyListener); - AndroidSDKManager sdk = new AndroidSDKManager(); try { + AndroidSDKManager sdk = AndroidSDKManager.getManager(); List avds = sdk.listAVDs(); for (String string : avds) { AVDCombo.add(string); diff --git a/cordova/plugins/org.jboss.tools.aerogear.hybrid.android.ui/src/org/jboss/tools/aerogear/hybrid/android/ui/internal/preferences/AndroidPreferencePage.java b/cordova/plugins/org.jboss.tools.aerogear.hybrid.android.ui/src/org/jboss/tools/aerogear/hybrid/android/ui/internal/preferences/AndroidPreferencePage.java index 0f6df98e..232c28a4 100644 --- a/cordova/plugins/org.jboss.tools.aerogear.hybrid.android.ui/src/org/jboss/tools/aerogear/hybrid/android/ui/internal/preferences/AndroidPreferencePage.java +++ b/cordova/plugins/org.jboss.tools.aerogear.hybrid.android.ui/src/org/jboss/tools/aerogear/hybrid/android/ui/internal/preferences/AndroidPreferencePage.java @@ -79,7 +79,7 @@ public void setValidateStrategy(int value) { public AndroidPreferencePage() { super(GRID); setPreferenceStore(HybridUI.getDefault().getPreferenceStore()); - setDescription("Settings for Hybrid Mobile Application development"); + setDescription("Android settings for Hybrid Mobile Application development"); } /** diff --git a/cordova/plugins/org.jboss.tools.aerogear.hybrid.ui/src/org/jboss/tools/aerogear/hybrid/ui/internal/status/DefaultStatusHandler.java b/cordova/plugins/org.jboss.tools.aerogear.hybrid.ui/src/org/jboss/tools/aerogear/hybrid/ui/internal/status/DefaultStatusHandler.java index 6777f5ec..4e4610b0 100644 --- a/cordova/plugins/org.jboss.tools.aerogear.hybrid.ui/src/org/jboss/tools/aerogear/hybrid/ui/internal/status/DefaultStatusHandler.java +++ b/cordova/plugins/org.jboss.tools.aerogear.hybrid.ui/src/org/jboss/tools/aerogear/hybrid/ui/internal/status/DefaultStatusHandler.java @@ -12,6 +12,7 @@ import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Status; import org.eclipse.ui.statushandlers.StatusManager; import org.jboss.tools.aerogear.hybrid.ui.HybridUI; @@ -25,8 +26,9 @@ public void handle(IStatus status) { @Override public void handle(CoreException e) { - StatusManager platformStatusMgr = StatusManager.getManager(); - platformStatusMgr.handle(e,HybridUI.PLUGIN_ID); + IStatus exceptionStatus = e.getStatus(); + handle(new Status(exceptionStatus.getSeverity(), HybridUI.PLUGIN_ID, + e.getLocalizedMessage(), e) ); } }