/*******************************************************************************
* Copyright (c) 2000-present Liferay, Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*
*******************************************************************************/
package com.liferay.ide.project.ui;
import com.liferay.ide.core.util.CoreUtil;
import com.liferay.ide.project.ui.migration.MigrationUtil;
import com.liferay.ide.project.ui.migration.MigrationView;
import com.liferay.ide.ui.util.UIUtil;
import java.net.URL;
import org.eclipse.core.resources.IResourceChangeEvent;
import org.eclipse.core.resources.IResourceChangeListener;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Status;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.resource.ImageRegistry;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
/**
* The activator class controls the plugin life cycle
*
* @author Greg Amerson
* @author Lovett Li
*/
public class ProjectUI extends AbstractUIPlugin
{
// Shared images
public static final String PROPERTIES_IMAGE_ID = "properties";
public static final String WAR_IMAGE_ID = "war.image";
public static final String CHECKED_IMAGE_ID = "checked.image"; //$NON-NLS-1$
public static final String MIGRATION_TASKS_IMAGE_ID = "migration.tasks.image"; //$NON-NLS-1$
public static final String UNCHECKED_IMAGE_ID = "unchecked.image"; //$NON-NLS-1$
public static final String EXPANDALL_IMAGE_ID = "expandall.image"; //$NON-NLS-1$
public static final String MODULE_DEPENDENCY_IAMGE_ID = "module.dependency.image";
public static final String LAST_SDK_IMPORT_LOCATION_PREF = "last.sdk.import.location"; //$NON-NLS-1$
// The shared instance
private static ProjectUI plugin;
// The plugin ID
public static final String PLUGIN_ID = "com.liferay.ide.project.ui"; //$NON-NLS-1$
public static IStatus createErrorStatus( String msg )
{
return createErrorStatus( msg, null );
}
public static IStatus createErrorStatus( String msg, Exception e )
{
return new Status( IStatus.ERROR, PLUGIN_ID, msg, e );
}
public static IStatus createInfoStatus( String msg )
{
return new Status( IStatus.INFO, PLUGIN_ID, msg, null );
}
/**
* Returns the shared instance
*
* @return the shared instance
*/
public static ProjectUI getDefault()
{
return plugin;
}
public static void logError( Exception e )
{
getDefault().getLog().log( createErrorStatus( e.getMessage(), e ) );
}
// private static IConfigurationElement[] pluginWizardFragmentElements;
// public static IPluginWizardFragment getPluginWizardFragment(String pluginFacetId) {
// if (CoreUtil.isNullOrEmpty(pluginFacetId)) {
// return null;
// }
//
// IConfigurationElement[] fragmentElements = getPluginWizardFragmentsElements();
//
// for (IConfigurationElement fragmentElement : fragmentElements) {
// if (pluginFacetId.equals(fragmentElement.getAttribute("facetId"))) {
// try {
// Object o = fragmentElement.createExecutableExtension("class");
//
// if (o instanceof IPluginWizardFragment) {
// IPluginWizardFragment fragment = (IPluginWizardFragment) o;
// fragment.setFragment(true);
// return fragment;
// }
// }
// catch (CoreException e) {
// ProjectUIPlugin.logError("Could not load plugin wizard fragment for " + pluginFacetId, e);
// }
// }
// }
//
// return null;
// }
// public static IConfigurationElement[] getPluginWizardFragmentsElements() {
// if (pluginWizardFragmentElements == null) {
// pluginWizardFragmentElements =
// Platform.getExtensionRegistry().getConfigurationElementsFor(IPluginWizardFragment.ID);
// }
//
// return pluginWizardFragmentElements;
// }
public static void logError( String msg, Exception e )
{
getDefault().getLog().log( createErrorStatus( msg, e ) );
}
public static void logInfo( String msg )
{
getDefault().getLog().log( createInfoStatus( msg ) );
}
/**
* The constructor
*/
public ProjectUI()
{
}
@Override
protected void initializeImageRegistry( ImageRegistry registry )
{
Bundle bundle = Platform.getBundle( PLUGIN_ID );
IPath checked = new Path( "icons/e16/checked.png" ); //$NON-NLS-1$
URL checkedurl = FileLocator.find( bundle, checked, null );
ImageDescriptor checkeddesc = ImageDescriptor.createFromURL( checkedurl );
registry.put( CHECKED_IMAGE_ID, checkeddesc );
IPath unchecked = new Path( "icons/e16/unchecked.png" ); //$NON-NLS-1$
URL uncheckedurl = FileLocator.find( bundle, unchecked, null );
ImageDescriptor uncheckeddesc = ImageDescriptor.createFromURL( uncheckedurl );
registry.put( UNCHECKED_IMAGE_ID, uncheckeddesc );
IPath migrationtasks = new Path( "icons/e16/migration-tasks.png" ); //$NON-NLS-1$
URL migrationtasksurl = FileLocator.find( bundle, migrationtasks, null );
ImageDescriptor migrationtasksdesc = ImageDescriptor.createFromURL( migrationtasksurl );
registry.put( MIGRATION_TASKS_IMAGE_ID, migrationtasksdesc );
IPath expandall = new Path( "icons/e16/expandall.gif" ); //$NON-NLS-1$
URL expandallurl = FileLocator.find( bundle, expandall, null );
ImageDescriptor expandalldesc = ImageDescriptor.createFromURL( expandallurl );
registry.put( EXPANDALL_IMAGE_ID, expandalldesc );
registry.put(
WAR_IMAGE_ID,
ImageDescriptor.createFromURL( FileLocator.find( bundle, new Path( "icons/e16/war.gif" ), null ) ) );
registry.put(
PROPERTIES_IMAGE_ID,
ImageDescriptor.createFromURL( FileLocator.find( bundle, new Path( "icons/e16/properties.png" ), null ) ) );
registry.put(
MODULE_DEPENDENCY_IAMGE_ID,
ImageDescriptor.createFromURL( FileLocator.find( bundle, new Path( "icons/e16/new_module_dependency.png" ), null ) ) );
}
/*
* (non-Javadoc)
* @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext )
*/
@Override
public void start( BundleContext context ) throws Exception
{
super.start( context );
plugin = this;
addWorkspaceResourceListener();
}
/*
* (non-Javadoc)
* @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext )
*/
@Override
public void stop( BundleContext context ) throws Exception
{
plugin = null;
super.stop( context );
}
private void addWorkspaceResourceListener()
{
ResourcesPlugin.getWorkspace().addResourceChangeListener( new IResourceChangeListener()
{
@Override
public void resourceChanged( IResourceChangeEvent events )
{
final MigrationView mv = (MigrationView) UIUtil.findView( MigrationView.ID );
boolean isRemoved = MigrationUtil.removeMigrationProblemsFromResource( events.getResource() );
if( isRemoved && mv != null )
{
UIUtil.async( new Runnable()
{
@Override
public void run()
{
mv.getCommonViewer().setInput( CoreUtil.getWorkspaceRoot() );
}
});
}
}
}, IResourceChangeEvent.PRE_DELETE );
}
}