blob: 703b8a8a87e19e58b89c03eebefb5a1ece1734eb [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010, 2019 Mia-Software and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v20.html
*
* Contributors:
* Nicolas Bros (Mia-Software)
*******************************************************************************/
package org.eclipse.modisco.infra.query.ui.handlers;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.edit.domain.EditingDomain;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.modisco.infra.common.ui.internal.util.WorkbenchUtils;
import org.eclipse.modisco.infra.query.ModelQuerySet;
import org.eclipse.modisco.infra.query.editor.presentation.QueryEditor;
import org.eclipse.modisco.infra.query.ui.wizards.CreateQueryWizard;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.handlers.HandlerUtil;
/**
* @deprecated replaced by EMF Facet, cf. https://bugs.eclipse.org/bugs/show_bug.cgi?id=470578
*/
@Deprecated
public class CreateQueryHandler extends AbstractHandler {
public CreateQueryHandler() {
// nothing
}
public Object execute(final ExecutionEvent event) throws ExecutionException {
ISelection selection = HandlerUtil.getCurrentSelection(event);
if (selection instanceof IStructuredSelection) {
IStructuredSelection structuredSelection = (IStructuredSelection) selection;
Object selected = structuredSelection.getFirstElement();
ModelQuerySet modelQuerySet = null;
EClass eClass = null;
if (selected instanceof ModelQuerySet) {
modelQuerySet = (ModelQuerySet) selected;
} else if (selected instanceof EClass) {
eClass = (EClass) selected;
} else if (selected instanceof EObject) {
EObject eObject = (EObject) selected;
eClass = eObject.eClass();
}
Resource resourceToEdit = null;
EditingDomain editingDomain = null;
// if using the action on an open query set editor, edit the
// editor's resource instead of modifying the underlying file
if (modelQuerySet != null) {
IWorkbenchPart activePart = WorkbenchUtils.getActivePart();
if (activePart instanceof QueryEditor) {
QueryEditor queryEditor = (QueryEditor) activePart;
ResourceSet resourceSet = queryEditor.getEditingDomain().getResourceSet();
if (resourceSet.getResources().contains(modelQuerySet.eResource())) {
resourceToEdit = modelQuerySet.eResource();
editingDomain = queryEditor.getEditingDomain();
}
}
}
CreateQueryWizard createQueryWizard = new CreateQueryWizard(modelQuerySet, eClass,
resourceToEdit, editingDomain);
WizardDialog wizardDialog = new WizardDialog(null, createQueryWizard);
wizardDialog.open();
}
return null;
}
}