blob: 5152c8513b8b794a06f1b4687e1ee171f44806e8 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009 Mia-Software.
* 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:
* Gregoire DUPE (Mia-Software)
* Nicolas Bros (Mia-Software)
*******************************************************************************/
package org.eclipse.gmt.modisco.infra.query.ui.handlers;
import java.util.ArrayList;
import java.util.Iterator;
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.emf.ecore.EObject;
import org.eclipse.gmt.modisco.infra.common.core.logging.MoDiscoLogger;
import org.eclipse.gmt.modisco.infra.query.ModelQuery;
import org.eclipse.gmt.modisco.infra.query.ui.Activator;
import org.eclipse.gmt.modisco.infra.query.ui.views.queryExecution.internal.QueryExecutionView;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.handlers.HandlerUtil;
/**
* Opens the "Query Execution" view, and sets its context to the list of
* currently selected {@link EObject}s.
* @deprecated replaced by EMF Facet, cf. https://bugs.eclipse.org/bugs/show_bug.cgi?id=470578
*/
@Deprecated
public class ExecuteQueryHandler extends AbstractHandler {
public ExecuteQueryHandler() {
//
}
private IViewPart openQueryExecutionView() {
try {
IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
if (window != null) {
IWorkbenchPage activePage = window.getActivePage();
if (activePage != null) {
return activePage.showView(QueryExecutionView.ID);
}
}
} catch (final PartInitException e) {
MoDiscoLogger.logError(e, Activator.getDefault());
}
return null;
}
public Object execute(final ExecutionEvent event) throws ExecutionException {
ISelection selection = HandlerUtil.getCurrentSelection(event);
List<EObject> selectedEObjects = new ArrayList<EObject>();
List<ModelQuery> selectedQueries = new ArrayList<ModelQuery>();
if (selection instanceof IStructuredSelection) {
IStructuredSelection structuredSelection = (IStructuredSelection) selection;
Iterator<?> iterator = structuredSelection.iterator();
while (iterator.hasNext()) {
Object selectedElement = iterator.next();
if (selectedElement instanceof ModelQuery
&& "modisco".equals(((ModelQuery) selectedElement).eResource().getURI().scheme())) { //$NON-NLS-1$
ModelQuery query = (ModelQuery) selectedElement;
selectedQueries.add(query);
} else if (selectedElement instanceof EObject) {
EObject element = (EObject) selectedElement;
selectedEObjects.add(element);
}
}
}
IViewPart view = openQueryExecutionView();
if (view instanceof QueryExecutionView) {
QueryExecutionView queryExecutionView = (QueryExecutionView) view;
if (selectedEObjects.size() > 0) {
queryExecutionView.setContext(selectedEObjects);
}
if (selectedQueries.size() > 0) {
queryExecutionView.setSelectedQueries(selectedQueries);
}
}
return null;
}
}