| /* |
| * Copyright (c) 2013, 2015 QNX Software Systems 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 |
| */ |
| package org.eclipse.cdt.internal.qt.core; |
| |
| import java.io.IOException; |
| |
| import javax.script.ScriptException; |
| |
| import org.eclipse.cdt.core.model.CModelException; |
| import org.eclipse.cdt.qt.core.IQMLAnalyzer; |
| import org.eclipse.cdt.qt.core.IQtInstallManager; |
| import org.eclipse.core.runtime.CoreException; |
| import org.eclipse.core.runtime.IProgressMonitor; |
| import org.eclipse.core.runtime.IStatus; |
| import org.eclipse.core.runtime.Plugin; |
| import org.eclipse.core.runtime.QualifiedName; |
| import org.eclipse.core.runtime.Status; |
| import org.eclipse.core.runtime.jobs.Job; |
| import org.osgi.framework.BundleContext; |
| import org.osgi.framework.ServiceReference; |
| |
| public class Activator extends Plugin { |
| |
| public static final String ID = "org.eclipse.cdt.qt.core"; //$NON-NLS-1$ |
| public static final String SIGNAL_SLOT_TAGGER_ID = ID + ".signalslot.tagger"; //$NON-NLS-1$ |
| |
| public static final int SignalSlot_Mask_signal = 1; |
| public static final int SignalSlot_Mask_slot = 2; |
| |
| public static final String QMAKE_ENV_PROVIDER_EXT_POINT_NAME = "qmakeEnvProvider"; //$NON-NLS-1$ |
| public static final String QMAKE_ENV_PROVIDER_ID = ID + "." + QMAKE_ENV_PROVIDER_EXT_POINT_NAME; //$NON-NLS-1$ |
| |
| public static final String QT_SYNTAX_ERR_ID = "org.eclipse.cdt.qt.core.qtproblem"; //$NON-NLS-1$ |
| |
| /** |
| * Instances of QtIndex are cached within the session properties of the |
| * project from which they are created. This name is used to store the |
| * property. |
| */ |
| public static final QualifiedName QTINDEX_PROP_NAME = new QualifiedName(ID, "qtindex"); //$NON-NLS-1$ |
| |
| private static Activator instance; |
| |
| public static Activator getDefault() { |
| return instance; |
| } |
| |
| public Activator() { |
| instance = this; |
| } |
| |
| @Override |
| public void start(BundleContext context) throws Exception { |
| super.start(context); |
| |
| context.registerService(IQtInstallManager.class, new QtInstallManager(), null); |
| |
| QMLAnalyzer qmlAnalyzer = new QMLAnalyzer(); |
| context.registerService(IQMLAnalyzer.class, qmlAnalyzer, null); |
| Job startupJob = new Job("Load QML Analyzer") { //$NON-NLS-1$ |
| @Override |
| protected IStatus run(IProgressMonitor monitor) { |
| try { |
| qmlAnalyzer.load(); |
| } catch (NoSuchMethodException | ScriptException | IOException e) { |
| log(e); |
| } |
| return Status.OK_STATUS; |
| } |
| }; |
| startupJob.setSystem(true); |
| startupJob.schedule(); |
| } |
| |
| @Override |
| public void stop(BundleContext context) throws Exception { |
| // QMakeProjectInfoManager.stop(); |
| |
| super.stop(context); |
| } |
| |
| public static CoreException coreException(String msg) { |
| return new CoreException(new Status(IStatus.INFO, ID, msg)); |
| } |
| |
| public static IStatus info(String msg) { |
| return new Status(IStatus.INFO, ID, msg); |
| } |
| |
| public static IStatus error(String msg) { |
| return error(msg, null); |
| } |
| |
| public static IStatus error(String msg, Throwable e) { |
| return new Status(IStatus.ERROR, ID, msg, e); |
| } |
| |
| public static void log(String e) { |
| log(IStatus.INFO, e, null); |
| } |
| |
| public static void log(Throwable e) { |
| String msg = e.getMessage(); |
| if (msg == null) { |
| log("Error", e); //$NON-NLS-1$ |
| } else { |
| log("Error: " + msg, e); //$NON-NLS-1$ |
| } |
| } |
| |
| public static void log(String message, Throwable e) { |
| Throwable nestedException; |
| if (e instanceof CModelException && (nestedException = ((CModelException) e).getException()) != null) { |
| e = nestedException; |
| } |
| log(IStatus.ERROR, message, e); |
| } |
| |
| public static void log(int code, String msg, Throwable e) { |
| getDefault().getLog().log(new Status(code, ID, msg, e)); |
| } |
| |
| public static <T> T getService(Class<T> service) { |
| BundleContext context = instance.getBundle().getBundleContext(); |
| ServiceReference<T> ref = context.getServiceReference(service); |
| return ref != null ? context.getService(ref) : null; |
| } |
| |
| } |