/* * 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.advisor.ui.scope; import org.eclipse.core.resources.IProject; import org.eclipse.jface.action.Action; import org.eclipse.jface.viewers.ISelection; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.ISelectionListener; import org.eclipse.ui.IWorkbenchPart; import org.teiid.designer.core.ModelerCore; import org.teiid.designer.ui.PluginConstants; import org.teiid.designer.ui.UiPlugin; import org.teiid.designer.ui.actions.ISelectionAction; import org.teiid.designer.ui.common.eventsupport.SelectionUtilities; /** * */ public class SetModelProjectScopeAction extends Action implements ISelectionListener, Comparable, ISelectionAction { private IProject selectedProject; public SetModelProjectScopeAction() { super(); setText("Change Modeling Scope"); //$NON-NLS-1$ setImageDescriptor(UiPlugin.getDefault().getImageDescriptor(PluginConstants.Images.MODEL)); } @Override public int compareTo( Object o ) { if (o instanceof String) { return getText().compareTo((String)o); } if (o instanceof Action) { return getText().compareTo(((Action)o).getText()); } return 0; } @Override public boolean isApplicable( ISelection selection ) { boolean result = false; if (!SelectionUtilities.isMultiSelection(selection)) { Object obj = SelectionUtilities.getSelectedObject(selection); if (obj instanceof IProject && ModelerCore.hasModelNature((IProject)obj)) { result = true; } } return result; } @Override public void run() { if (selectedProject != null) { Shell shell = UiPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getShell(); SelectModelingScopeDialog dialog = new SelectModelingScopeDialog(shell, selectedProject); dialog.open(); } } @Override public void selectionChanged( IWorkbenchPart part, ISelection selection ) { boolean enable = false; if (!SelectionUtilities.isMultiSelection(selection)) { Object obj = SelectionUtilities.getSelectedObject(selection); if (obj instanceof IProject && ModelerCore.hasModelNature((IProject)obj)) { this.selectedProject = (IProject)obj; enable = true; } } setEnabled(enable); } }