package org.erlide.debug.ui.views;
import java.util.List;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.ui.handlers.HandlerUtil;
import org.erlide.engine.model.root.IErlModule;
import org.erlide.ui.launch.DebugTab;
public class InterpretHandler extends AbstractHandler {
private static final String INTERPRET_COMMAND_ID = "org.erlide.ui.interpret";
private static final String DEINTERPRET_COMMAND_ID = "org.erlide.ui.deinterpret";
@Override
public Object execute(final ExecutionEvent event) throws ExecutionException {
final InterpretedModulesView view = (InterpretedModulesView) HandlerUtil
.getActivePart(event);
final String commandId = event.getCommand().getId();
if (commandId.equals(INTERPRET_COMMAND_ID)) {
final List<IErlModule> modules = DebugTab
.getModulesFromAddModulesDialog(view.getSite().getShell());
for (final IErlModule module : modules) {
view.interpretOrDeinterpret(module, true);
}
} else if (commandId.equals(DEINTERPRET_COMMAND_ID)) {
final ISelection selection = HandlerUtil.getCurrentSelection(event);
if (selection instanceof IStructuredSelection && !selection.isEmpty()) {
final IStructuredSelection structuredSelection = (IStructuredSelection) selection;
for (final Object o : structuredSelection.toArray()) {
final IErlModule module = (IErlModule) o;
view.interpretOrDeinterpret(module, false);
}
}
} else {
throw new ExecutionException("bad command id");
}
return null;
}
@Override
public void setEnabled(final Object evaluationContext) {
super.setEnabled(evaluationContext);
}
}