/**
*
*/
package org.dresdenocl.debug.ui.launch;
import org.dresdenocl.debug.ui.OclDebugUIPlugin;
import org.eclipse.debug.core.DebugPlugin;
import org.eclipse.debug.core.ILaunchConfigurationType;
import org.eclipse.debug.core.ILaunchManager;
/**
* @author Lars Schuetze
*
*/
/**
* A class that converts the current selection or active editor to a launch
* configuration. Set the overrideLaunchShortcut option to false to customize
* this class.
*/
public class OclLaunchShortcut implements org.eclipse.debug.ui.ILaunchShortcut2 {
public void launch(org.eclipse.jface.viewers.ISelection selection, String mode) {
if (selection instanceof org.eclipse.jface.viewers.IStructuredSelection) {
org.eclipse.jface.viewers.IStructuredSelection structuredSelection =
(org.eclipse.jface.viewers.IStructuredSelection) selection;
java.util.Iterator<?> it = structuredSelection.iterator();
while (it.hasNext()) {
Object object = it.next();
if (object instanceof org.eclipse.core.resources.IFile) {
org.eclipse.core.resources.IFile file =
(org.eclipse.core.resources.IFile) object;
launch(file, mode);
}
}
}
}
public void launch(org.eclipse.ui.IEditorPart editorPart, String mode) {
org.eclipse.ui.IEditorInput editorInput = editorPart.getEditorInput();
if (editorInput instanceof org.eclipse.ui.IFileEditorInput) {
org.eclipse.ui.IFileEditorInput fileInput =
(org.eclipse.ui.IFileEditorInput) editorInput;
launch(fileInput.getFile(), mode);
}
}
private void launch(org.eclipse.core.resources.IFile file, String mode) {
try {
ILaunchManager lm = DebugPlugin.getDefault().getLaunchManager();
ILaunchConfigurationType type =
lm.getLaunchConfigurationType(OclDebugUIPlugin.LAUNCH_CONFIGURATION_TYPE);
org.eclipse.debug.core.ILaunchConfigurationWorkingCopy workingCopy =
type.newInstance(null, file.getName());
org.eclipse.emf.common.util.URI uri =
org.eclipse.emf.common.util.URI.createPlatformResourceURI(file
.getFullPath().toString(), true);
workingCopy.setAttribute(OclDebugUIPlugin.OCL_URI, uri.toString());
org.eclipse.debug.core.ILaunchConfiguration configuration =
workingCopy.doSave();
org.eclipse.debug.ui.DebugUITools.launch(configuration, mode);
} catch (org.eclipse.core.runtime.CoreException e) {
org.dresdenocl.language.ocl.resource.ocl.mopp.OclPlugin.logError(
"Exception while launching selection", e);
}
}
public org.eclipse.debug.core.ILaunchConfiguration[] getLaunchConfigurations(
org.eclipse.jface.viewers.ISelection selection) {
return null;
}
public org.eclipse.debug.core.ILaunchConfiguration[] getLaunchConfigurations(
org.eclipse.ui.IEditorPart editorPart) {
return null;
}
public org.eclipse.core.resources.IResource getLaunchableResource(
org.eclipse.jface.viewers.ISelection selection) {
return null;
}
public org.eclipse.core.resources.IResource getLaunchableResource(
org.eclipse.ui.IEditorPart editorPart) {
return null;
}
}