/* * 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.lang.reflect.InvocationTargetException; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.action.IAction; import org.eclipse.jface.dialogs.ProgressMonitorDialog; import org.eclipse.jface.viewers.ISelection; import org.eclipse.swt.widgets.Display; import org.eclipse.ui.IViewActionDelegate; import org.eclipse.ui.IViewPart; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.IWorkbenchWindowActionDelegate; import org.eclipse.ui.actions.ActionDelegate; import org.eclipse.ui.actions.WorkspaceModifyOperation; 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.ui.UiConstants; import org.teiid.designer.ui.common.eventsupport.SelectionUtilities; import org.teiid.designer.ui.viewsupport.ModelUtilities; /** * RevalidateModelAction * * @since 8.0 */ public class RevalidateModelAction extends ActionDelegate implements IWorkbenchWindowActionDelegate, IViewActionDelegate { private ModelResource modelResource; /** * Construct an instance of RevalidateModelAction. */ public RevalidateModelAction() { super(); } /** * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction) */ @Override public void run( IAction action ) { final WorkspaceModifyOperation op = new WorkspaceModifyOperation() { @Override public void execute( IProgressMonitor theMonitor ) { revalidate(); theMonitor.done(); } }; try { new ProgressMonitorDialog(Display.getCurrent().getActiveShell()).run(true, true, op); } catch (InterruptedException e) { } catch (InvocationTargetException e) { UiConstants.Util.log(e.getTargetException()); } } void revalidate() { // swjTODO: implement revalidate for the selected ModelResource } /** * @see org.eclipse.ui.IActionDelegate#selectionChanged(org.eclipse.jface.action.IAction, * org.eclipse.jface.viewers.ISelection) */ @Override public void selectionChanged( IAction action, ISelection selection ) { Object selectedObject = SelectionUtilities.getSelectedObject(selection); boolean enable = false; if (selectedObject instanceof IResource && ModelUtilities.isModelFile((IResource)selectedObject)) { try { this.modelResource = ModelUtil.getModelResource(((IFile)selectedObject), false); if (ModelUtilities.isVirtual(this.modelResource)) { enable = true; } } catch (ModelWorkspaceException e) { UiConstants.Util.log(e); } } action.setEnabled(enable); } /** * @see org.eclipse.ui.IWorkbenchWindowActionDelegate#init(org.eclipse.ui.IWorkbenchWindow) */ @Override public void init( IWorkbenchWindow window ) { } /** * @see org.eclipse.ui.IViewActionDelegate#init(org.eclipse.ui.IViewPart) */ @Override public void init( IViewPart view ) { } }