/*
* JBoss, Home of Professional Open Source.
*
* See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing.
*
* See the AUTHORS.txt file distributed with this work for a full listing of individual contributors.
*/
package org.teiid.designer.transformation.ui.actions;
import java.util.Iterator;
import java.util.List;
import org.eclipse.core.resources.IFile;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.swt.widgets.Display;
import org.teiid.designer.core.workspace.ModelResource;
import org.teiid.designer.core.workspace.ModelUtil;
import org.teiid.designer.core.workspace.ModelWorkspaceException;
import org.teiid.designer.transformation.ui.UiConstants;
import org.teiid.designer.transformation.ui.UiPlugin;
import org.teiid.designer.transformation.ui.wizards.functions.ConvertFunctionModelDialog;
import org.teiid.designer.transformation.ui.wizards.functions.ConvertFunctionModelHelper;
import org.teiid.designer.ui.actions.SortableSelectionAction;
import org.teiid.designer.ui.common.eventsupport.SelectionUtilities;
import org.teiid.designer.ui.common.widget.Dialog;
import org.teiid.designer.ui.viewsupport.ModelIdentifier;
public class ConvertFunctionsToVirtualProceduresAction extends SortableSelectionAction {
public static final String OPEN_EDITOR_TITLE = UiConstants.Util.getString("ConvertFunctionsToVirtualProceduresAction.openModelEditorTitle"); //$NON-NLS-1$
public static final String OPEN_EDITOR_MESSAGE = UiConstants.Util.getString("ConvertFunctionsToVirtualProceduresAction.openModelEditorMessage"); //$NON-NLS-1$
public static final String ALWAY_FORCE_OPEN_MESSAGE = UiConstants.Util.getString("ConvertFunctionsToVirtualProceduresAction.alwaysForceOpenMessage"); //$NON-NLS-1$
public ConvertFunctionsToVirtualProceduresAction() {
super();
setImageDescriptor(UiPlugin.getDefault().getImageDescriptor(
org.teiid.designer.transformation.ui.PluginConstants.Images.CREATE_MATERIALIZED_VIEWS_ICON));
}
@Override
public boolean isValidSelection(ISelection selection) {
// Enable for single/multiple Virtual Tables
return functionModelSelected(selection);
}
@Override
public void run() {
ISelection cachedSelection = getSelection();
if( cachedSelection != null && !cachedSelection.isEmpty() ) {
Object selectedObj = SelectionUtilities.getSelectedObject(cachedSelection);
if( selectedObj != null && selectedObj instanceof IFile) {
ModelResource functionModel = null;
try {
functionModel = ModelUtil.getModelResource(((IFile) selectedObj), false);
if( functionModel != null ) {
// FUNCTION MODEL IS SELECTED SO LET's PROCESS
ConvertFunctionModelHelper helper = new ConvertFunctionModelHelper(functionModel);
System.out.println("ConvertFunctionsToVirtualProceduresAction.run() called. Model = " + functionModel.getItemName());
ConvertFunctionModelDialog dialog = new ConvertFunctionModelDialog(Display.getCurrent().getActiveShell(), helper);
if( dialog.open() == Dialog.OK ) {
helper.generateProcedures();
}
}
} catch (ModelWorkspaceException e) {
UiConstants.Util.log(e);
}
}
}
selectionChanged(null, new StructuredSelection());
}
@Override
public boolean isApplicable(ISelection selection) {
return functionModelSelected(selection);
}
private boolean functionModelSelected(ISelection theSelection) {
boolean result = false;
List allObjs = SelectionUtilities.getSelectedObjects(theSelection);
if( !allObjs.isEmpty() && allObjs.size() == 1 ) {
Iterator iter = allObjs.iterator();
result = true;
Object nextObj = null;
while( iter.hasNext() && result ) {
nextObj = iter.next();
if( nextObj instanceof IFile ) {
result = ModelIdentifier.isFunctionModel((IFile)nextObj);
} else {
result = false;
}
}
}
return result;
}
}