From: <caw...@us...> - 2007-09-18 13:45:45
|
Revision: 3206 http://rubyeclipse.svn.sourceforge.net/rubyeclipse/?rev=3206&view=rev Author: cawilliams Date: 2007-09-18 06:45:40 -0700 (Tue, 18 Sep 2007) Log Message: ----------- add new build action group, new strings for it, sub refresh action, and necessary core improvements to run the refresh Modified Paths: -------------- trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/actions/ActionMessages.java trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/actions/ActionMessages.properties trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/ui/actions/OccurrencesSearchGroup.java trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/ui/actions/OpenProjectAction.java trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/ui/actions/ShowInRubyExplorerViewAction.java trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/ui/actions/SurroundWithBeginRescueAction.java Added Paths: ----------- trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/ui/actions/BuildActionGroup.java trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/ui/actions/RefreshAction.java Removed Paths: ------------- trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/ui/actions/ActionMessages.java trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/ui/actions/ActionMessages.properties Modified: trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/actions/ActionMessages.java =================================================================== --- trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/actions/ActionMessages.java 2007-09-18 13:22:15 UTC (rev 3205) +++ trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/actions/ActionMessages.java 2007-09-18 13:45:40 UTC (rev 3206) @@ -81,7 +81,29 @@ public static String OpenTypeHierarchyAction_messages_unknown_import_decl; public static String OpenTypeHierarchyAction_messages_no_types; public static String OpenTypeHierarchyAction_messages_no_valid_ruby_element; + + public static String SurroundWithBeginRescueAction_label; + public static String SurroundWithBeginRescueAction_error; + public static String SurroundWithBeginRescueAction_dialog_title; + public static String QuickMenuAction_menuTextWithShortcut; + public static String ShowInPackageViewAction_label; + public static String ShowInPackageViewAction_description; + public static String ShowInPackageViewAction_tooltip; + public static String ShowInPackageViewAction_error_message; + public static String ShowInPackageViewAction_dialog_title; + public static String OpenProjectAction_dialog_title; + public static String OpenProjectAction_dialog_message; + public static String OpenProjectAction_error_message; + public static String RefreshAction_label; + public static String RefreshAction_toolTip; + public static String RefreshAction_progressMessage; + public static String RefreshAction_error_title; + public static String RefreshAction_error_message; + public static String RefreshAction_locationDeleted_message; + public static String RefreshAction_locationDeleted_title; + public static String BuildAction_label; + static { NLS.initializeMessages(BUNDLE_NAME, ActionMessages.class); } Modified: trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/actions/ActionMessages.properties =================================================================== --- trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/actions/ActionMessages.properties 2007-09-18 13:22:15 UTC (rev 3205) +++ trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/actions/ActionMessages.properties 2007-09-18 13:45:40 UTC (rev 3206) @@ -82,4 +82,19 @@ OpenTypeInHierarchyAction_tooltip=Open a Type in a Type Hierarchy OpenTypeInHierarchyAction_dialogMessage=&Choose a type (? = any character, * = any string): -OpenTypeInHierarchyAction_dialogTitle=Open Type in Hierarchy \ No newline at end of file +OpenTypeInHierarchyAction_dialogTitle=Open Type in Hierarchy + +SurroundWithBeginRescueAction_label=Surround with begin...rescue +SurroundWithBeginRescueAction_error=Error occurred while surrounding code with begin..rescue block +SurroundWithBeginRescueAction_dialog_title=Surround with begin...rescue + +# The first parameter is the menu text and the second parameter is the shortcut string +QuickMenuAction_menuTextWithShortcut= {0}\t{1} + +RefreshAction_label= Re&fresh +RefreshAction_toolTip= Refresh +RefreshAction_progressMessage= Refreshing... +RefreshAction_error_title= Refresh Problems +RefreshAction_error_message= Problems occurred refreshing the selected resources. +RefreshAction_locationDeleted_title= Project location has been deleted +RefreshAction_locationDeleted_message= The location for project {0} ({1}) has been deleted.\n Delete {0} from the workspace? Deleted: trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/ui/actions/ActionMessages.java =================================================================== --- trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/ui/actions/ActionMessages.java 2007-09-18 13:22:15 UTC (rev 3205) +++ trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/ui/actions/ActionMessages.java 2007-09-18 13:45:40 UTC (rev 3206) @@ -1,27 +0,0 @@ -package org.rubypeople.rdt.ui.actions; - -import org.eclipse.osgi.util.NLS; - -public class ActionMessages { - private static final String BUNDLE_NAME = "org.rubypeople.rdt.ui.actions.ActionMessages"; //$NON-NLS-1$ - - private ActionMessages() {} - - public static String SurroundWithBeginRescueAction_label; - public static String SurroundWithBeginRescueAction_error; - public static String SurroundWithBeginRescueAction_dialog_title; - - public static String QuickMenuAction_menuTextWithShortcut; - public static String ShowInPackageViewAction_label; - public static String ShowInPackageViewAction_description; - public static String ShowInPackageViewAction_tooltip; - public static String ShowInPackageViewAction_error_message; - public static String ShowInPackageViewAction_dialog_title; - public static String OpenProjectAction_dialog_title; - public static String OpenProjectAction_dialog_message; - public static String OpenProjectAction_error_message; - - static { - NLS.initializeMessages(BUNDLE_NAME, ActionMessages.class); - } -} \ No newline at end of file Deleted: trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/ui/actions/ActionMessages.properties =================================================================== --- trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/ui/actions/ActionMessages.properties 2007-09-18 13:22:15 UTC (rev 3205) +++ trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/ui/actions/ActionMessages.properties 2007-09-18 13:45:40 UTC (rev 3206) @@ -1,6 +0,0 @@ -SurroundWithBeginRescueAction_label=Surround with begin...rescue -SurroundWithBeginRescueAction_error=Error occurred while surrounding code with begin..rescue block -SurroundWithBeginRescueAction_dialog_title=Surround with begin...rescue - -# The first parameter is the menu text and the second parameter is the shortcut string -QuickMenuAction_menuTextWithShortcut= {0}\t{1} \ No newline at end of file Added: trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/ui/actions/BuildActionGroup.java =================================================================== --- trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/ui/actions/BuildActionGroup.java (rev 0) +++ trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/ui/actions/BuildActionGroup.java 2007-09-18 13:45:40 UTC (rev 3206) @@ -0,0 +1,130 @@ +/******************************************************************************* + * Copyright (c) 2000, 2005 IBM Corporation and others. + * 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: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package org.rubypeople.rdt.ui.actions; + +import org.eclipse.core.resources.IncrementalProjectBuilder; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.ui.IActionBars; +import org.eclipse.ui.IViewPart; +import org.eclipse.ui.IWorkbenchSite; +import org.eclipse.ui.actions.ActionFactory; +import org.eclipse.ui.actions.ActionGroup; +import org.eclipse.ui.actions.BuildAction; +import org.eclipse.ui.ide.IDEActionFactory; +import org.rubypeople.rdt.core.IRubyProject; +import org.rubypeople.rdt.internal.ui.actions.ActionMessages; +import org.rubypeople.rdt.ui.IContextMenuConstants; + +/** + * Contributes all build related actions to the context menu and installs handlers for the + * corresponding global menu actions. + * + * <p> + * This class may be instantiated; it is not intended to be subclassed. + * </p> + * + * @since 2.0 + */ +public class BuildActionGroup extends ActionGroup { + + private IWorkbenchSite fSite; + + private BuildAction fBuildAction; + private RefreshAction fRefreshAction; + + /** + * Creates a new <code>BuildActionGroup</code>. The group requires that + * the selection provided by the view part's selection provider is of type + * <code>org.eclipse.jface.viewers.IStructuredSelection</code>. + * + * @param part the view part that owns this action group + */ + public BuildActionGroup(IViewPart part) { + fSite= part.getSite(); + Shell shell= fSite.getShell(); + ISelectionProvider provider= fSite.getSelectionProvider(); + + fBuildAction= new BuildAction(shell, IncrementalProjectBuilder.INCREMENTAL_BUILD); + fBuildAction.setText(ActionMessages.BuildAction_label); + fBuildAction.setActionDefinitionId("org.eclipse.ui.project.buildProject"); //$NON-NLS-1$ + + fRefreshAction= new RefreshAction(fSite); + fRefreshAction.setActionDefinitionId("org.eclipse.ui.file.refresh"); //$NON-NLS-1$ + + provider.addSelectionChangedListener(fBuildAction); + provider.addSelectionChangedListener(fRefreshAction); + } + + /** + * Returns the refresh action managed by this group. + * + * @return the refresh action. If this group doesn't manage a refresh action + * <code>null</code> is returned + */ + public IAction getRefreshAction() { + return fRefreshAction; + } + + /* (non-Rubydoc) + * Method declared in ActionGroup + */ + public void fillActionBars(IActionBars actionBar) { + super.fillActionBars(actionBar); + setGlobalActionHandlers(actionBar); + } + + /* (non-Rubydoc) + * Method declared in ActionGroup + */ + public void fillContextMenu(IMenuManager menu) { + ISelection selection= getContext().getSelection(); + if (!ResourcesPlugin.getWorkspace().isAutoBuilding() && isBuildTarget(selection)) { + appendToGroup(menu, fBuildAction); + } + appendToGroup(menu, fRefreshAction); + super.fillContextMenu(menu); + } + + /* (non-Rubydoc) + * Method declared in ActionGroup + */ + public void dispose() { + ISelectionProvider provider= fSite.getSelectionProvider(); + provider.removeSelectionChangedListener(fBuildAction); + provider.removeSelectionChangedListener(fRefreshAction); + super.dispose(); + } + + private void setGlobalActionHandlers(IActionBars actionBar) { + actionBar.setGlobalActionHandler(IDEActionFactory.BUILD_PROJECT.getId(), fBuildAction); + actionBar.setGlobalActionHandler(ActionFactory.REFRESH.getId(), fRefreshAction); + } + + private void appendToGroup(IMenuManager menu, IAction action) { + if (action.isEnabled()) + menu.appendToGroup(IContextMenuConstants.GROUP_BUILD, action); + } + + private boolean isBuildTarget(ISelection s) { + if (!(s instanceof IStructuredSelection)) + return false; + IStructuredSelection selection= (IStructuredSelection)s; + if (selection.size() != 1) + return false; + return selection.getFirstElement() instanceof IRubyProject; + } +} Property changes on: trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/ui/actions/BuildActionGroup.java ___________________________________________________________________ Name: svn:mime-type + text/plain Modified: trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/ui/actions/OccurrencesSearchGroup.java =================================================================== --- trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/ui/actions/OccurrencesSearchGroup.java 2007-09-18 13:22:15 UTC (rev 3205) +++ trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/ui/actions/OccurrencesSearchGroup.java 2007-09-18 13:45:40 UTC (rev 3206) @@ -25,6 +25,7 @@ import org.eclipse.ui.keys.IBindingService; import org.eclipse.ui.texteditor.ITextEditorActionConstants; import org.rubypeople.rdt.internal.corext.util.Messages; +import org.rubypeople.rdt.internal.ui.actions.ActionMessages; import org.rubypeople.rdt.internal.ui.rubyeditor.RubyEditor; import org.rubypeople.rdt.internal.ui.search.SearchMessages; Modified: trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/ui/actions/OpenProjectAction.java =================================================================== --- trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/ui/actions/OpenProjectAction.java 2007-09-18 13:22:15 UTC (rev 3205) +++ trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/ui/actions/OpenProjectAction.java 2007-09-18 13:45:40 UTC (rev 3206) @@ -34,6 +34,7 @@ import org.eclipse.ui.dialogs.ElementListSelectionDialog; import org.rubypeople.rdt.internal.ui.IRubyHelpContextIds; import org.rubypeople.rdt.internal.ui.RubyPlugin; +import org.rubypeople.rdt.internal.ui.actions.ActionMessages; import org.rubypeople.rdt.internal.ui.actions.WorkbenchRunnableAdapter; import org.rubypeople.rdt.internal.ui.util.ExceptionHandler; import org.rubypeople.rdt.ui.RubyElementLabelProvider; Added: trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/ui/actions/RefreshAction.java =================================================================== --- trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/ui/actions/RefreshAction.java (rev 0) +++ trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/ui/actions/RefreshAction.java 2007-09-18 13:45:40 UTC (rev 3206) @@ -0,0 +1,218 @@ +/******************************************************************************* + * Copyright (c) 2000, 2005 IBM Corporation and others. + * 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: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package org.rubypeople.rdt.ui.actions; + +import java.lang.reflect.InvocationTargetException; +import java.net.URI; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import org.eclipse.core.filesystem.EFS; +import org.eclipse.core.filesystem.IFileStore; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IWorkspaceRoot; +import org.eclipse.core.resources.IWorkspaceRunnable; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IAdaptable; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.SubProgressMonitor; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.ui.IWorkbenchSite; +import org.eclipse.ui.IWorkingSet; +import org.eclipse.ui.PlatformUI; +import org.rubypeople.rdt.core.IRubyElement; +import org.rubypeople.rdt.core.IRubyModel; +import org.rubypeople.rdt.core.RubyCore; +import org.rubypeople.rdt.internal.corext.util.Messages; +import org.rubypeople.rdt.internal.corext.util.Resources; +import org.rubypeople.rdt.internal.ui.IRubyHelpContextIds; +import org.rubypeople.rdt.internal.ui.RubyPluginImages; +import org.rubypeople.rdt.internal.ui.actions.ActionMessages; +import org.rubypeople.rdt.internal.ui.actions.WorkbenchRunnableAdapter; +import org.rubypeople.rdt.internal.ui.util.ExceptionHandler; + +/** + * Action for refreshing the workspace from the local file system for + * the selected resources and all of their descendants. This action + * also considers external folders managed by the Ruby Model. + * <p> + * Action is applicable to selections containing resources and Ruby + * elements down to compilation units. + * + * <p> + * This class may be instantiated; it is not intended to be subclassed. + * </p> + * + * @since 2.0 + */ +public class RefreshAction extends SelectionDispatchAction { + + /** + * Creates a new <code>RefreshAction</code>. The action requires + * that the selection provided by the site's selection provider is of type <code> + * org.eclipse.jface.viewers.IStructuredSelection</code>. + * + * @param site the site providing context information for this action + */ + public RefreshAction(IWorkbenchSite site) { + super(site); + setText(ActionMessages.RefreshAction_label); + setToolTipText(ActionMessages.RefreshAction_toolTip); + RubyPluginImages.setLocalImageDescriptors(this, "refresh_nav.gif");//$NON-NLS-1$ + PlatformUI.getWorkbench().getHelpSystem().setHelp(this, IRubyHelpContextIds.REFRESH_ACTION); + } + + /* (non-Rubydoc) + * Method declared in SelectionDispatchAction + */ + public void selectionChanged(IStructuredSelection selection) { + setEnabled(checkEnabled(selection)); + } + + private boolean checkEnabled(IStructuredSelection selection) { + if (selection.isEmpty()) + return true; + for (Iterator iter= selection.iterator(); iter.hasNext();) { + Object element= iter.next(); + if (element instanceof IWorkingSet) { + // don't inspect working sets any deeper. + } else if (element instanceof IAdaptable) { + IResource resource= (IResource)((IAdaptable)element).getAdapter(IResource.class); + if (resource == null) + return false; + if (resource.getType() == IResource.PROJECT && !((IProject)resource).isOpen()) + return false; + } else { + return false; + } + } + return true; + } + + /* (non-Rubydoc) + * Method declared in SelectionDispatchAction + */ + public void run(IStructuredSelection selection) { + final IResource[] resources= getResources(selection); + IWorkspaceRunnable operation= new IWorkspaceRunnable() { + public void run(IProgressMonitor monitor) throws CoreException { + monitor.beginTask(ActionMessages.RefreshAction_progressMessage, resources.length * 2); + monitor.subTask(""); //$NON-NLS-1$ + List javaElements= new ArrayList(5); + for (int r= 0; r < resources.length; r++) { + IResource resource= resources[r]; + if (resource.getType() == IResource.PROJECT) { + checkLocationDeleted((IProject) resource); + } else if (resource.getType() == IResource.ROOT) { + IProject[] projects = ((IWorkspaceRoot)resource).getProjects(); + for (int p = 0; p < projects.length; p++) { + checkLocationDeleted(projects[p]); + } + } + resource.refreshLocal(IResource.DEPTH_INFINITE, new SubProgressMonitor(monitor, 1)); + IRubyElement jElement= RubyCore.create(resource); + if (jElement != null && jElement.exists()) + javaElements.add(jElement); + } + IRubyModel model= RubyCore.create(ResourcesPlugin.getWorkspace().getRoot()); + model.refreshExternalArchives( + (IRubyElement[]) javaElements.toArray(new IRubyElement[javaElements.size()]), + new SubProgressMonitor(monitor, resources.length)); + } + }; + + try { + PlatformUI.getWorkbench().getProgressService().run(true, true, new WorkbenchRunnableAdapter(operation)); + } catch (InvocationTargetException e) { + ExceptionHandler.handle(e, getShell(), + ActionMessages.RefreshAction_error_title, + ActionMessages.RefreshAction_error_message); + } catch (InterruptedException e) { + // canceled + } + } + + private IResource[] getResources(IStructuredSelection selection) { + if (selection.isEmpty()) { + return new IResource[] {ResourcesPlugin.getWorkspace().getRoot()}; + } + + List result= new ArrayList(selection.size()); + getResources(result, selection.toArray()); + + for (Iterator iter= result.iterator(); iter.hasNext();) { + IResource resource= (IResource) iter.next(); + if (isDescendent(result, resource)) + iter.remove(); + } + + return (IResource[]) result.toArray(new IResource[result.size()]); + } + + private void getResources(List result, Object[] elements) { + for (int i= 0; i < elements.length; i++) { + Object element= elements[i]; + // Must check working set before IAdaptable since WorkingSet + // implements IAdaptable + if (element instanceof IWorkingSet) { + getResources(result, ((IWorkingSet)element).getElements()); + } else if (element instanceof IAdaptable) { + IResource resource= (IResource)((IAdaptable)element).getAdapter(IResource.class); + if (resource == null) + continue; + if (resource.getType() != IResource.PROJECT || + (resource.getType() == IResource.PROJECT && ((IProject)resource).isOpen())) { + result.add(resource); + } + } + } + } + + private boolean isDescendent(List candidates, IResource element) { + IResource parent= element.getParent(); + while (parent != null) { + if (candidates.contains(parent)) + return true; + parent= parent.getParent(); + } + return false; + } + + private void checkLocationDeleted(IProject project) throws CoreException { + if (!project.exists()) + return; + URI location= project.getLocationURI(); + if (location == null) + return; + IFileStore store= EFS.getStore(location); + if (!store.fetchInfo().exists()) { + final String message = Messages.format( + ActionMessages.RefreshAction_locationDeleted_message, + new Object[] { project.getName(), Resources.getLocationString(project) }); + final boolean[] result= new boolean[1]; + // Must prompt user in UI thread (we're in the operation thread here). + getShell().getDisplay().syncExec(new Runnable() { + public void run() { + result[0]= MessageDialog.openQuestion(getShell(), + ActionMessages.RefreshAction_locationDeleted_title, + message); + } + }); + if (result[0]) { + project.delete(true, true, null); + } + } + } +} \ No newline at end of file Property changes on: trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/ui/actions/RefreshAction.java ___________________________________________________________________ Name: svn:mime-type + text/plain Modified: trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/ui/actions/ShowInRubyExplorerViewAction.java =================================================================== --- trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/ui/actions/ShowInRubyExplorerViewAction.java 2007-09-18 13:22:15 UTC (rev 3205) +++ trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/ui/actions/ShowInRubyExplorerViewAction.java 2007-09-18 13:45:40 UTC (rev 3206) @@ -20,6 +20,7 @@ import org.rubypeople.rdt.core.RubyModelException; import org.rubypeople.rdt.internal.ui.IRubyHelpContextIds; import org.rubypeople.rdt.internal.ui.RubyPlugin; +import org.rubypeople.rdt.internal.ui.actions.ActionMessages; import org.rubypeople.rdt.internal.ui.actions.SelectionConverter; import org.rubypeople.rdt.internal.ui.packageview.PackageExplorerPart; import org.rubypeople.rdt.internal.ui.rubyeditor.RubyEditor; Modified: trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/ui/actions/SurroundWithBeginRescueAction.java =================================================================== --- trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/ui/actions/SurroundWithBeginRescueAction.java 2007-09-18 13:22:15 UTC (rev 3205) +++ trunk/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/ui/actions/SurroundWithBeginRescueAction.java 2007-09-18 13:45:40 UTC (rev 3206) @@ -22,6 +22,7 @@ import org.rubypeople.rdt.internal.corext.util.RubyModelUtil; import org.rubypeople.rdt.internal.ui.IRubyHelpContextIds; import org.rubypeople.rdt.internal.ui.RubyPlugin; +import org.rubypeople.rdt.internal.ui.actions.ActionMessages; import org.rubypeople.rdt.internal.ui.actions.SelectionConverter; import org.rubypeople.rdt.internal.ui.rubyeditor.RubyEditor; import org.rubypeople.rdt.internal.ui.util.ExceptionHandler; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |