/******************************************************************************
* Copyright (c) 2011-2013, Linagora
*
* 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
*
* Contributors:
* Linagora - initial API and implementation
*******************************************************************************/
package com.ebmwebsourcing.petals.common.internal.commands;
import java.util.Collections;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.internal.ui.preferences.BuildPathsPropertyPage;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.dialogs.PreferencesUtil;
import com.ebmwebsourcing.petals.common.internal.PetalsCommonPlugin;
/**
* @author Mickaƫl Istria - EBM WebSourcing
*/
public class ConfigureBuildPathCommandHandler extends AbstractHandler {
/*
* (non-Jsdoc)
* @see org.eclipse.core.commands.AbstractHandler
* #execute(org.eclipse.core.commands.ExecutionEvent)
*/
public Object execute(ExecutionEvent event) throws ExecutionException {
try {
IStructuredSelection selection = (IStructuredSelection)PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService().getSelection();
if( ! selection.isEmpty()) {
IJavaProject project = (IJavaProject) ((IProject) selection.getFirstElement()).getNature(JavaCore.NATURE_ID);
// Copy-pasted from ConfigureBuildPathAction
PreferencesUtil.createPropertyDialogOn(
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),
project,
BuildPathsPropertyPage.PROP_ID,
null,
Collections.EMPTY_MAP).open();
}
} catch (Exception ex) {
throw new ExecutionException("Could not cast to Java Project", ex);
}
return null;
}
/*
* (non-Javadoc)
* @see org.eclipse.core.commands.AbstractHandler
* #setEnabled(java.lang.Object)
*/
@Override
public void setEnabled( Object evaluationContext ) {
boolean enabled = false;
try {
if( PlatformUI.getWorkbench() != null
&& PlatformUI.getWorkbench().getActiveWorkbenchWindow() != null
&& PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService() != null
&& PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService().getSelection() instanceof IStructuredSelection ) {
IStructuredSelection selection = (IStructuredSelection) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService().getSelection();
enabled = selection.size() == 1
&& selection.getFirstElement() instanceof IProject
&& ((IProject)selection.getFirstElement()).isAccessible()
&& ((IProject)selection.getFirstElement()).hasNature( JavaCore.NATURE_ID );
}
} catch (Exception ex) {
PetalsCommonPlugin.log(ex, IStatus.ERROR);
}
super.setBaseEnabled( enabled );
}
}