| /******************************************************************************* |
| * Copyright (c) 2013 Atos |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v2.0 |
| * which accompanies this distribution, and is available at |
| * https://www.eclipse.org/legal/epl-2.0/ |
| * |
| * SPDX-License_Identifier: EPL-2.0 |
| * |
| * Contributors: |
| * Arthur Daussy - initial implementation |
| *******************************************************************************/ |
| package org.eclipse.ease; |
| |
| import java.net.URL; |
| |
| import org.eclipse.core.runtime.FileLocator; |
| import org.eclipse.core.runtime.Path; |
| import org.eclipse.core.runtime.Platform; |
| import org.eclipse.ecf.filetransfer.FileTransferJob; |
| import org.eclipse.jface.resource.ImageDescriptor; |
| import org.eclipse.ui.plugin.AbstractUIPlugin; |
| import org.osgi.framework.Bundle; |
| import org.osgi.framework.BundleContext; |
| |
| public class Activator extends AbstractUIPlugin { |
| |
| public static final String PLUGIN_ID = "org.eclipse.ease"; |
| |
| public static final String PREFERENCES_NODE_SCRIPTS = "scripts"; |
| |
| public static final String SCRIPTS_ALLOW_UI_ACCESS = "scriptUIAccess"; |
| public static final boolean DEFAULT_SCRIPTS_ALLOW_UI_ACCESS = false; |
| |
| private static Activator fInstance; |
| |
| public static Activator getDefault() { |
| return fInstance; |
| } |
| |
| private BundleContext fContext; |
| |
| @Override |
| public void start(final BundleContext context) throws Exception { |
| super.start(context); |
| |
| // we need to force loading of the org.eclipse.ecf.filetransfer plugin to correctly register extended URL protocols. |
| // therefore load a class from that plugin |
| new FileTransferJob("dummy").setFileTransfer(null); |
| |
| fContext = context; |
| fInstance = this; |
| } |
| |
| @Override |
| public void stop(final BundleContext context) throws Exception { |
| fInstance = null; |
| fContext = null; |
| |
| super.stop(context); |
| } |
| |
| public BundleContext getContext() { |
| return fContext; |
| } |
| |
| /** |
| * Get {@link ImageDescriptor} for a given bundle/path location. |
| * |
| * @param bundleID |
| * @param path |
| * @return |
| */ |
| public static ImageDescriptor getImageDescriptor(final String bundleID, final String path) { |
| assert (bundleID != null) : "No bundle defined"; |
| assert (path != null) : "No path defined"; |
| |
| // if the bundle is not ready then there is no image |
| final Bundle bundle = Platform.getBundle(bundleID); |
| final int bundleState = bundle.getState(); |
| if ((bundleState != Bundle.ACTIVE) && (bundleState != Bundle.STARTING) && (bundleState != Bundle.RESOLVED)) |
| return null; |
| |
| // look for the image (this will check both the plugin and fragment folders) |
| final URL imagePath = FileLocator.find(bundle, new Path(path), null); |
| |
| if (imagePath != null) |
| return ImageDescriptor.createFromURL(imagePath); |
| |
| return null; |
| } |
| } |