qt/com.nokia.carbide.cpp.qt.core/src/com/nokia/carbide/cpp/internal/qt/core/QtCorePlugin.java
author timkelly
Sun, 14 Feb 2010 20:49:32 -0600
branchRCL_2_4
changeset 950 6773165abc05
parent 0 fb279309251b
permissions -rw-r--r--
Fix bug 10681. Merge from default.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
     1
/*
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
     3
* All rights reserved.
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
     4
* This component and the accompanying materials are made available
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
     5
* under the terms of the License "Eclipse Public License v1.0"
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
     6
* which accompanies this distribution, and is available
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
     8
*
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
     9
* Initial Contributors:
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    11
*
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    12
* Contributors:
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    13
*
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    14
* Description: 
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    15
* The activator class controls the plug-in life cycle
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    16
*
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    17
*/
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    18
package com.nokia.carbide.cpp.internal.qt.core;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    19
950
6773165abc05 Fix bug 10681. Merge from default.
timkelly
parents: 0
diff changeset
    20
import java.util.List;
6773165abc05 Fix bug 10681. Merge from default.
timkelly
parents: 0
diff changeset
    21
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    22
import org.eclipse.core.resources.IProject;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    23
import org.eclipse.core.resources.IProjectDescription;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    24
import org.eclipse.core.runtime.CoreException;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    25
import org.eclipse.core.runtime.IProgressMonitor;
950
6773165abc05 Fix bug 10681. Merge from default.
timkelly
parents: 0
diff changeset
    26
import org.eclipse.core.runtime.IStatus;
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    27
import org.eclipse.core.runtime.Plugin;
950
6773165abc05 Fix bug 10681. Merge from default.
timkelly
parents: 0
diff changeset
    28
import org.eclipse.core.runtime.Status;
6773165abc05 Fix bug 10681. Merge from default.
timkelly
parents: 0
diff changeset
    29
import org.eclipse.core.runtime.jobs.Job;
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    30
import org.osgi.framework.BundleContext;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    31
950
6773165abc05 Fix bug 10681. Merge from default.
timkelly
parents: 0
diff changeset
    32
import com.nokia.carbide.cpp.internal.api.sdk.ISDKManagerLoadedHook;
6773165abc05 Fix bug 10681. Merge from default.
timkelly
parents: 0
diff changeset
    33
import com.nokia.carbide.cpp.sdk.core.ICarbideInstalledSDKChangeListener;
6773165abc05 Fix bug 10681. Merge from default.
timkelly
parents: 0
diff changeset
    34
import com.nokia.carbide.cpp.sdk.core.ISymbianSDK;
6773165abc05 Fix bug 10681. Merge from default.
timkelly
parents: 0
diff changeset
    35
import com.nokia.carbide.cpp.sdk.core.SDKCorePlugin;
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    36
import com.trolltech.qtcppproject.QtNature;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    37
950
6773165abc05 Fix bug 10681. Merge from default.
timkelly
parents: 0
diff changeset
    38
public class QtCorePlugin extends Plugin implements ICarbideInstalledSDKChangeListener, ISDKManagerLoadedHook {
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    39
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    40
	// The plug-in ID
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    41
	public static final String PLUGIN_ID = "com.nokia.carbide.cpp.qt.core"; //$NON-NLS-1$
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    42
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    43
	public static final String QT_PROJECT_NATURE_ID = QtNature.QT_NATURE_ID;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    44
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    45
	// The shared instance
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    46
	private static QtCorePlugin plugin;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    47
	
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    48
	/**
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    49
	 * The constructor
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    50
	 */
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    51
	public QtCorePlugin() {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    52
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    53
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    54
	/*
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    55
	 * (non-Javadoc)
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    56
	 * @see org.eclipse.core.runtime.Plugins#start(org.osgi.framework.BundleContext)
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    57
	 */
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    58
	public void start(BundleContext context) throws Exception {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    59
		super.start(context);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    60
		plugin = this;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    61
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    62
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    63
	/*
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    64
	 * (non-Javadoc)
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    65
	 * @see org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext)
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    66
	 */
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    67
	public void stop(BundleContext context) throws Exception {
950
6773165abc05 Fix bug 10681. Merge from default.
timkelly
parents: 0
diff changeset
    68
		SDKCorePlugin.getSDKManager().removeInstalledSdkChangeListener(this);
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    69
		plugin = null;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    70
		super.stop(context);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    71
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    72
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    73
	/**
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    74
	 * Returns the shared instance
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    75
	 *
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    76
	 * @return the shared instance
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    77
	 */
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    78
	public static QtCorePlugin getDefault() {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    79
		return plugin;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    80
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    81
	
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    82
	public static void addQtNature(IProject project, IProgressMonitor monitor) throws CoreException {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    83
		IProjectDescription description = project.getDescription();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    84
		String[] prevNatures = description.getNatureIds();
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    85
		for (String prevNature : prevNatures) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    86
			if (QtCorePlugin.QT_PROJECT_NATURE_ID.equals(prevNature)) {
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    87
				return;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    88
			}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    89
		}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    90
		String[] newNatures = new String[prevNatures.length + 1];
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    91
		System.arraycopy(prevNatures, 0, newNatures, 0, prevNatures.length);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    92
		newNatures[prevNatures.length] = QtCorePlugin.QT_PROJECT_NATURE_ID;
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    93
		description.setNatureIds(newNatures);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    94
		project.setDescription(description, monitor);
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    95
	}
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
    96
950
6773165abc05 Fix bug 10681. Merge from default.
timkelly
parents: 0
diff changeset
    97
	private void scanForQtSDKs() {
6773165abc05 Fix bug 10681. Merge from default.
timkelly
parents: 0
diff changeset
    98
		
6773165abc05 Fix bug 10681. Merge from default.
timkelly
parents: 0
diff changeset
    99
		final String jobBaseText = "Checking for Qt installed in Symbian SDKs";
6773165abc05 Fix bug 10681. Merge from default.
timkelly
parents: 0
diff changeset
   100
		Job job = new Job(jobBaseText) {
6773165abc05 Fix bug 10681. Merge from default.
timkelly
parents: 0
diff changeset
   101
6773165abc05 Fix bug 10681. Merge from default.
timkelly
parents: 0
diff changeset
   102
			@Override
6773165abc05 Fix bug 10681. Merge from default.
timkelly
parents: 0
diff changeset
   103
			protected IStatus run(IProgressMonitor monitor) {
6773165abc05 Fix bug 10681. Merge from default.
timkelly
parents: 0
diff changeset
   104
				List<ISymbianSDK> sdkList = SDKCorePlugin.getSDKManager()
6773165abc05 Fix bug 10681. Merge from default.
timkelly
parents: 0
diff changeset
   105
						.getSDKList();
6773165abc05 Fix bug 10681. Merge from default.
timkelly
parents: 0
diff changeset
   106
				for (ISymbianSDK sdk : sdkList) {
6773165abc05 Fix bug 10681. Merge from default.
timkelly
parents: 0
diff changeset
   107
					QtSDKUtils.addQtSDKForSymbianSDK(sdk, false);
6773165abc05 Fix bug 10681. Merge from default.
timkelly
parents: 0
diff changeset
   108
				}
6773165abc05 Fix bug 10681. Merge from default.
timkelly
parents: 0
diff changeset
   109
6773165abc05 Fix bug 10681. Merge from default.
timkelly
parents: 0
diff changeset
   110
				return Status.OK_STATUS;
6773165abc05 Fix bug 10681. Merge from default.
timkelly
parents: 0
diff changeset
   111
			}
6773165abc05 Fix bug 10681. Merge from default.
timkelly
parents: 0
diff changeset
   112
6773165abc05 Fix bug 10681. Merge from default.
timkelly
parents: 0
diff changeset
   113
		};
6773165abc05 Fix bug 10681. Merge from default.
timkelly
parents: 0
diff changeset
   114
		job.schedule();
6773165abc05 Fix bug 10681. Merge from default.
timkelly
parents: 0
diff changeset
   115
	}
6773165abc05 Fix bug 10681. Merge from default.
timkelly
parents: 0
diff changeset
   116
	
6773165abc05 Fix bug 10681. Merge from default.
timkelly
parents: 0
diff changeset
   117
	public void symbianSDKManagerLoaded() {
6773165abc05 Fix bug 10681. Merge from default.
timkelly
parents: 0
diff changeset
   118
		scanForQtSDKs();
6773165abc05 Fix bug 10681. Merge from default.
timkelly
parents: 0
diff changeset
   119
		SDKCorePlugin.getSDKManager().addInstalledSdkChangeListener(this);
6773165abc05 Fix bug 10681. Merge from default.
timkelly
parents: 0
diff changeset
   120
	}
6773165abc05 Fix bug 10681. Merge from default.
timkelly
parents: 0
diff changeset
   121
6773165abc05 Fix bug 10681. Merge from default.
timkelly
parents: 0
diff changeset
   122
	public void installedSdkChanged(SDKChangeEventType eventType) {
6773165abc05 Fix bug 10681. Merge from default.
timkelly
parents: 0
diff changeset
   123
		scanForQtSDKs();
6773165abc05 Fix bug 10681. Merge from default.
timkelly
parents: 0
diff changeset
   124
	}
6773165abc05 Fix bug 10681. Merge from default.
timkelly
parents: 0
diff changeset
   125
0
fb279309251b DP tools release version Revision: 200912
Deepak Modgil <Deepak.Modgil@Nokia.com>
parents:
diff changeset
   126
}