Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 401090
Collapse All | Expand All

(-)a/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/commands/ResetEditorHandler.java (+182 lines)
Added Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2013 Rabea Gransberger and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 *
8
 * Contributors:
9
 *     Rabea Gransberger - initial API and implementation
10
 ******************************************************************************/
11
12
package org.eclipse.ui.commands;
13
14
import java.text.MessageFormat;
15
import java.util.ArrayList;
16
import java.util.Iterator;
17
import java.util.List;
18
19
import org.eclipse.core.commands.AbstractHandler;
20
import org.eclipse.core.commands.ExecutionEvent;
21
import org.eclipse.core.commands.ExecutionException;
22
import org.eclipse.core.resources.IContainer;
23
import org.eclipse.core.resources.IFile;
24
import org.eclipse.core.resources.IResource;
25
import org.eclipse.core.runtime.CoreException;
26
import org.eclipse.core.runtime.IAdaptable;
27
import org.eclipse.jface.dialogs.MessageDialog;
28
import org.eclipse.jface.viewers.ISelection;
29
import org.eclipse.jface.viewers.IStructuredSelection;
30
import org.eclipse.jface.window.Window;
31
import org.eclipse.swt.widgets.Shell;
32
import org.eclipse.ui.dialogs.ResetEditorExtensionDialog;
33
import org.eclipse.ui.handlers.HandlerUtil;
34
import org.eclipse.ui.ide.IDE;
35
import org.eclipse.ui.internal.ide.IDEWorkbenchMessages;
36
import org.eclipse.ui.internal.util.Util;
37
import org.eclipse.ui.model.IWorkbenchAdapter;
38
39
/**
40
 * Resets all editors of files in the current selection with a chosen extension which were
41
 * previously selected in 'Open With' to the default editor.
42
 * 
43
 * @since 3.9
44
 * @see "https://bugs.eclipse.org/bugs/401090"
45
 */
46
public class ResetEditorHandler extends AbstractHandler {
47
48
49
	/* (non-Javadoc)
50
	 * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
51
	 */
52
	public Object execute(ExecutionEvent event) throws ExecutionException {
53
		Shell activeShell= HandlerUtil.getActiveShell(event);
54
55
		List resources= collectResources(event);
56
		if (resources.isEmpty()) {
57
			MessageDialog.openInformation(activeShell, IDEWorkbenchMessages.ResetEditorHandler_noResourcesTitle, IDEWorkbenchMessages.ResetEditorHandler_noResourcesMessage);
58
			return null;
59
		}
60
61
		String resourceNames= resourceNamesAsString(resources);
62
63
		ResetEditorExtensionDialog dialog= new ResetEditorExtensionDialog(activeShell, resourceNames);
64
		if (dialog.open() == Window.OK) {
65
			IExtensionSelection extension= dialog.getExtension();
66
67
			boolean confirmed= MessageDialog.openConfirm(activeShell,
68
					IDEWorkbenchMessages.ResetEditorHandler_confirmTitle, MessageFormat.format(IDEWorkbenchMessages.ResetEditorHandler_confirmMessage, new Object[] { extension, resourceNames }));
69
			if (confirmed) {
70
				for (Iterator it= resources.iterator(); it.hasNext();) {
71
					Object o= it.next();
72
					if (o instanceof IResource) {
73
						IResource resource= (IResource) o;
74
						resetFilesOfResource(resource, extension);
75
					}
76
				}
77
			}
78
		}
79
		return null;
80
	}
81
82
	private String resourceNamesAsString(List resources) {
83
		StringBuffer sb= new StringBuffer();
84
85
		for (Iterator it= resources.iterator(); it.hasNext();) {
86
			Object o= it.next();
87
88
			if (o instanceof IResource) {
89
				IResource resource= (IResource) o;
90
91
				IWorkbenchAdapter adapter= (IWorkbenchAdapter) Util.getAdapter(resource,
92
						IWorkbenchAdapter.class);
93
				if (adapter != null) {
94
					if (sb.length() > 0) {
95
						sb.append(", "); //$NON-NLS-1$
96
					}
97
					sb.append(adapter.getLabel(resource));
98
				}
99
			}
100
		}
101
		return sb.toString();
102
	}
103
104
	private List collectResources(ExecutionEvent event) throws ExecutionException {
105
		List results= new ArrayList();
106
		ISelection selection= HandlerUtil.getCurrentSelection(event);
107
108
		if (selection instanceof IStructuredSelection) {
109
			IStructuredSelection struct= (IStructuredSelection) selection;
110
			for (Iterator it= struct.iterator(); it.hasNext();) {
111
				Object o= it.next();
112
113
				if (o instanceof IResource) {
114
					results.add(o);
115
				}
116
				else if (o instanceof IAdaptable) {
117
					IAdaptable adaptable= (IAdaptable) o;
118
					IResource resource= (IResource) adaptable.getAdapter(IResource.class);
119
					results.add(resource);
120
				}
121
				else {
122
					// skip
123
				}
124
			}
125
		}
126
		else {
127
			throw new ExecutionException("Unknown selection"); //$NON-NLS-1$
128
		}
129
		return results;
130
	}
131
132
133
	private void resetFilesOfResource(IResource resource, IExtensionSelection extension) throws ExecutionException {
134
		if (resource instanceof IFile) {
135
			resetFileWithExtension((IFile) resource, extension);
136
		}
137
		else if (resource instanceof IContainer) {
138
			resetFilesInContainer((IContainer) resource, extension);
139
		}
140
141
	}
142
143
	private void resetFilesInContainer(IContainer resource, IExtensionSelection extension) throws ExecutionException {
144
		try {
145
			IResource[] members= resource.members();
146
			for (int i= 0; i < members.length; i++) {
147
				resetFilesOfResource(members[i], extension);
148
			}
149
		} catch (CoreException e) {
150
			throw new ExecutionException("Failed to get members of container", e); //$NON-NLS-1$
151
		}
152
	}
153
154
	private void resetFileWithExtension(IFile resource, IExtensionSelection extension) {
155
		if (extension.matches(resource)) {
156
			IDE.setDefaultEditor(resource, null);
157
		}
158
	}
159
160
	/**
161
	 * Interface for selection of extensions which should be reset
162
	 * 
163
	 * @since 3.9
164
	 */
165
	public static interface IExtensionSelection {
166
		/**
167
		 * Checks if the extension matches the given file.
168
		 * 
169
		 * @param file the file to check
170
		 * @return <code>true</code> if the file should be reset
171
		 */
172
		public boolean matches(IFile file);
173
174
		/**
175
		 * A description for the selected extension.
176
		 * 
177
		 * @return the description of this selection
178
		 */
179
		public String getDescription();
180
	}
181
182
}
(-)a/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/dialogs/ResetEditorExtensionDialog.java (+237 lines)
Added Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2013 Rabea Gransberger and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 *
8
 * Contributors:
9
 *     Rabea Gransberger - initial API and implementation
10
 ******************************************************************************/
11
12
package org.eclipse.ui.dialogs;
13
14
import java.text.MessageFormat;
15
16
import org.eclipse.core.resources.IFile;
17
import org.eclipse.jface.dialogs.IDialogConstants;
18
import org.eclipse.jface.dialogs.IMessageProvider;
19
import org.eclipse.jface.dialogs.TitleAreaDialog;
20
import org.eclipse.jface.layout.GridDataFactory;
21
import org.eclipse.swt.SWT;
22
import org.eclipse.swt.events.SelectionAdapter;
23
import org.eclipse.swt.events.SelectionEvent;
24
import org.eclipse.swt.layout.GridData;
25
import org.eclipse.swt.layout.GridLayout;
26
import org.eclipse.swt.widgets.Button;
27
import org.eclipse.swt.widgets.Combo;
28
import org.eclipse.swt.widgets.Composite;
29
import org.eclipse.swt.widgets.Control;
30
import org.eclipse.swt.widgets.Shell;
31
import org.eclipse.swt.widgets.Text;
32
import org.eclipse.ui.IFileEditorMapping;
33
import org.eclipse.ui.commands.ResetEditorHandler;
34
import org.eclipse.ui.commands.ResetEditorHandler.IExtensionSelection;
35
import org.eclipse.ui.internal.WorkbenchPlugin;
36
import org.eclipse.ui.internal.ide.IDEWorkbenchMessages;
37
38
/**
39
 * Dialog to select the extensions for the {@link ResetEditorHandler}.
40
 * 
41
 * @since 3.9
42
 */
43
public class ResetEditorExtensionDialog extends TitleAreaDialog {
44
45
	private Button allButton;
46
47
	private Button comboButton;
48
49
	private Combo extensionCombo;
50
51
	private Button textButton;
52
53
	private Text extensionInputText;
54
55
	private IExtensionSelection selection;
56
57
	private final String resourceNames;
58
59
60
	/**
61
	 * Constructs a new dialog to select file extensions for editor reset.
62
	 * 
63
	 * @param parentShell The parent shell for this dialog.
64
	 * @param resourceNames Names of the selected resources
65
	 */
66
	public ResetEditorExtensionDialog(Shell parentShell, String resourceNames) {
67
		super(parentShell);
68
		this.resourceNames= resourceNames;
69
	}
70
71
	/* (non-Javadoc)
72
	 * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)
73
	 */
74
	protected void configureShell(Shell shell) {
75
		super.configureShell(shell);
76
		shell.setText(IDEWorkbenchMessages.ResetEditorExtensionDialog_shellTitle);
77
		//TODO
78
//		 PlatformUI.getWorkbench().getHelpSystem().setHelp(shell, helpContextId);
79
	}
80
81
	/* (non-Javadoc)
82
	 * @see org.eclipse.jface.window.Window#canHandleShellCloseEvent()
83
	 */
84
	protected boolean canHandleShellCloseEvent() {
85
		return false;
86
	}
87
88
	/* (non-Javadoc)
89
	 * @see org.eclipse.jface.dialogs.TitleAreaDialog#createDialogArea(org.eclipse.swt.widgets.Composite)
90
	 */
91
	protected Control createDialogArea(Composite parent) {
92
		setTitle(IDEWorkbenchMessages.ResetEditorExtensionDialog_dialogTitle);
93
		setMessage(MessageFormat.format(IDEWorkbenchMessages.ResetEditorExtensionDialog_dialogMessage, new Object[] { resourceNames }));
94
95
		Composite result= new Composite(parent, SWT.NONE);
96
		GridLayout layout= new GridLayout();
97
		layout.marginHeight= convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN);
98
		layout.marginWidth= convertVerticalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
99
		layout.verticalSpacing= convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
100
		layout.horizontalSpacing= convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
101
		result.setLayout(layout);
102
103
		this.allButton= addRadioButton(result, IDEWorkbenchMessages.ResetEditorExtensionDialog_buttonAll);
104
		this.allButton.setToolTipText(IDEWorkbenchMessages.ResetEditorExtensionDialog_buttonAll_Tooltip);
105
106
		this.comboButton= addRadioButton(result, IDEWorkbenchMessages.ResetEditorExtensionDialog_buttonSelection);
107
		this.comboButton.setToolTipText(IDEWorkbenchMessages.ResetEditorExtensionDialog_buttonSelection_toolip);
108
109
		this.extensionCombo= new Combo(result, SWT.READ_ONLY);
110
		this.extensionCombo.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
111
		GridDataFactory.fillDefaults().indent(15, SWT.DEFAULT).applyTo(this.extensionCombo);
112
113
		this.textButton= addRadioButton(result, IDEWorkbenchMessages.ResetEditorExtensionDialog_buttonText);
114
		this.textButton.setToolTipText(IDEWorkbenchMessages.ResetEditorExtensionDialog_buttonText_tooltip);
115
		this.extensionInputText= new Text(result, SWT.BORDER);
116
		GridDataFactory.fillDefaults().indent(15, SWT.DEFAULT).applyTo(this.extensionInputText);
117
118
		this.extensionInputText.setEnabled(false);
119
		this.extensionCombo.setEnabled(false);
120
121
		fillExtensionCombo();
122
123
		this.comboButton.addSelectionListener(new SelectionAdapter() {
124
			public void widgetSelected(SelectionEvent e) {
125
				extensionCombo.setEnabled(comboButton.getSelection());
126
			}
127
		});
128
129
		this.textButton.addSelectionListener(new SelectionAdapter() {
130
			public void widgetSelected(SelectionEvent e) {
131
				extensionInputText.setEnabled(textButton.getSelection());
132
			}
133
		});
134
		return result;
135
	}
136
137
138
139
	/* (non-Javadoc)
140
	 * @see org.eclipse.jface.dialogs.Dialog#okPressed()
141
	 */
142
	protected void okPressed() {
143
		this.selection= null;
144
		if (this.allButton.getSelection()) {
145
			this.selection= new AllExtensionMatcher();
146
		}
147
		else if (this.comboButton.getSelection()) {
148
			String temp= (String) this.extensionCombo.getData(this.extensionCombo.getText());
149
			this.selection= new OneExtensionMatcher(temp);
150
		}
151
		else {
152
			String temp= this.extensionInputText.getText().trim();
153
			if (!temp.startsWith(".")) { //$NON-NLS-1$
154
				setMessage(IDEWorkbenchMessages.ResetEditorExtensionDialog_wrongText, IMessageProvider.ERROR);
155
				return;
156
			}
157
			this.selection= new OneExtensionMatcher(temp);
158
		}
159
160
		super.okPressed();
161
	}
162
163
164
	private void fillExtensionCombo() {
165
		IFileEditorMapping[] array= WorkbenchPlugin.getDefault()
166
				.getEditorRegistry().getFileEditorMappings();
167
		String[] extensions= new String[array.length];
168
		for (int i= 0; i < array.length; i++) {
169
			extensions[i]= array[i].getLabel();
170
			extensionCombo.setData(array[i].getLabel(), array[i].getExtension());
171
		}
172
		extensionCombo.setItems(extensions);
173
		extensionCombo.select(0);
174
	}
175
176
	private Button addRadioButton(Composite parent, String label) {
177
		GridData gd= new GridData(GridData.HORIZONTAL_ALIGN_FILL);
178
179
		Button button= new Button(parent, SWT.RADIO);
180
		button.setText(label);
181
		button.setLayoutData(gd);
182
183
		return button;
184
	}
185
186
	/**
187
	 * Gets the selected extension.
188
	 * 
189
	 * @return The selected extensions, never <code>null</code>.
190
	 */
191
	public IExtensionSelection getExtension() {
192
		//TODO non API return type
193
		return this.selection;
194
	}
195
196
	private static class AllExtensionMatcher implements IExtensionSelection {
197
198
		/* (non-Javadoc)
199
		 * @see org.eclipse.ui.commands.ResetEditorHandler.ExtensionMatcher#matches(org.eclipse.core.resources.IFile)
200
		 */
201
		public boolean matches(IFile resource) {
202
			return true;
203
		}
204
205
		/* (non-Javadoc)
206
		 * @see org.eclipse.ui.commands.ResetEditorHandler.ExtensionMatcher#getDescription()
207
		 */
208
		public String getDescription() {
209
			return IDEWorkbenchMessages.ResetEditorExtensionDialog_allDescription;
210
		}
211
	}
212
213
	private static class OneExtensionMatcher implements IExtensionSelection {
214
215
		private final String extension;
216
217
		public OneExtensionMatcher(String extension) {
218
			this.extension= extension;
219
		}
220
221
		/* (non-Javadoc)
222
		 * @see org.eclipse.ui.commands.ResetEditorHandler.ExtensionMatcher#matches(org.eclipse.core.resources.IFile)
223
		 */
224
		public boolean matches(IFile resource) {
225
			return extension.equals(resource.getFileExtension());
226
		}
227
228
		/* (non-Javadoc)
229
		 * @see org.eclipse.ui.commands.ResetEditorHandler.ExtensionMatcher#getDescription()
230
		 */
231
		public String getDescription() {
232
			return MessageFormat.format(IDEWorkbenchMessages.ResetEditorExtensionDialog_extensionDescription, new Object[] { extension });
233
		}
234
235
	}
236
237
}
(-)a/bundles/org.eclipse.ui.ide/plugin.properties (-3 / +4 lines)
Lines 195-200 Link Here
195
command.showResourceByPath.description= Show a resource in the Navigator given its path
195
command.showResourceByPath.description= Show a resource in the Navigator given its path
196
commandParameter.showResourceByPath.resourcePath.name= Resource Path
196
commandParameter.showResourceByPath.resourcePath.name= Resource Path
197
197
198
command.editorReset.description = Resets all files in current selection to use the default editor
199
command.editorReset.name = Reset Editor
200
command.editorReset.mnemonic = R
201
198
KeyBindingActionSet.label = Keyboard Shortcuts
202
KeyBindingActionSet.label = Keyboard Shortcuts
199
KeyBindingActionSet.showKeyAssist.label = &Key Assist...
203
KeyBindingActionSet.showKeyAssist.label = &Key Assist...
200
204
Lines 305-310 Link Here
305
installationPage.feature.name = Features
309
installationPage.feature.name = Features
306
multiFilterProvider.name = File and Folder Attributes
310
multiFilterProvider.name = File and Folder Attributes
307
multiFilterProvider.description = Match many attributes of files and folders
311
multiFilterProvider.description = Match many attributes of files and folders
308
309
310
Menu.resetEditor.label = Reset Editors
(-)a/bundles/org.eclipse.ui.ide/plugin.xml (-8 / +30 lines)
Lines 1001-1010 Link Here
1001
      </command>
1001
      </command>
1002
      <command
1002
      <command
1003
            categoryId="org.eclipse.ui.category.project"
1003
            categoryId="org.eclipse.ui.category.project"
1004
            defaultHandler="org.eclipse.ui.commands.ResetEditorHandler"
1004
            description="%command.editorReset.description"
1005
            description="Reset Editor description"
1005
            id="org.eclipse.ui.ide.editorReset"
1006
            id="org.eclipse.ui.editor.reset"
1006
            name="%command.editorReset.name">
1007
            name="Reset Editor">
1008
      </command>
1007
      </command>
1009
   </extension>
1008
   </extension>
1010
   
1009
   
Lines 2045-2055 Link Here
2045
            allPopups="true"
2044
            allPopups="true"
2046
            locationURI="popup:org.eclipse.ui.popup.any">
2045
            locationURI="popup:org.eclipse.ui.popup.any">
2047
         <command
2046
         <command
2048
               commandId="org.eclipse.ui.editor.reset"
2047
               commandId="org.eclipse.ui.ide.editorReset"
2049
               icon="icons/full/markers/help_small.gif"
2048
                mnemonic="%command.editorReset.mnemonic"
2050
               label="Reset Editor"
2051
               mode="FORCE_TEXT"
2052
               style="push">
2049
               style="push">
2050
            <visibleWhen
2051
                  checkEnabled="false">
2052
                  <with variable="selection">
2053
                          	<iterate ifEmpty="false" operator="and">
2054
                          		<adapt type="org.eclipse.core.resources.IResource" >
2055
                          		</adapt>	
2056
                          	</iterate>
2057
                    </with>
2058
            </visibleWhen>
2053
         </command>
2059
         </command>
2054
      </menuContribution>
2060
      </menuContribution>
2055
   </extension>
2061
   </extension>
Lines 2235-2240 Link Here
2235
            </iterate>
2241
            </iterate>
2236
         </enabledWhen>
2242
         </enabledWhen>
2237
      </handler>
2243
      </handler>
2244
      <handler
2245
            class="org.eclipse.ui.commands.ResetEditorHandler"
2246
            commandId="org.eclipse.ui.ide.editorReset">
2247
         <enabledWhen>
2248
            <with
2249
                  variable="selection">
2250
               <iterate
2251
                     ifEmpty="false"
2252
                     operator="and">
2253
                  <adapt
2254
                        type="org.eclipse.core.resources.IResource">
2255
                  </adapt>
2256
               </iterate>
2257
            </with>
2258
         </enabledWhen>
2259
      </handler>
2238
   </extension>
2260
   </extension>
2239
   <extension
2261
   <extension
2240
         point="org.eclipse.core.expressions.propertyTesters">
2262
         point="org.eclipse.core.expressions.propertyTesters">
(-)a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/IDEWorkbenchMessages.java (+18 lines)
Lines 260-265 Link Here
260
	public static String RenameResourceAction_nameMustBeDifferent;
260
	public static String RenameResourceAction_nameMustBeDifferent;
261
	public static String RenameResourceAction_problemMessage;
261
	public static String RenameResourceAction_problemMessage;
262
262
263
	public static String ResetEditorHandler_confirmMessage;
264
	public static String ResetEditorHandler_confirmTitle;
265
	public static String ResetEditorHandler_noResourcesMessage;
266
	public static String ResetEditorHandler_noResourcesTitle;
267
263
	public static String DeleteResourceAction_text;
268
	public static String DeleteResourceAction_text;
264
	public static String DeleteResourceAction_toolTip;
269
	public static String DeleteResourceAction_toolTip;
265
	public static String DeleteResourceAction_title1;
270
	public static String DeleteResourceAction_title1;
Lines 719-724 Link Here
719
	public static String ContainerGenerator_progressMessage;
724
	public static String ContainerGenerator_progressMessage;
720
	public static String ContainerGenerator_pathOccupied;
725
	public static String ContainerGenerator_pathOccupied;
721
726
727
	public static String ResetEditorExtensionDialog_allDescription;
728
	public static String ResetEditorExtensionDialog_buttonAll;
729
	public static String ResetEditorExtensionDialog_buttonAll_Tooltip;
730
	public static String ResetEditorExtensionDialog_buttonSelection;
731
	public static String ResetEditorExtensionDialog_buttonSelection_toolip;
732
	public static String ResetEditorExtensionDialog_buttonText;
733
	public static String ResetEditorExtensionDialog_buttonText_tooltip;
734
	public static String ResetEditorExtensionDialog_dialogMessage;
735
	public static String ResetEditorExtensionDialog_dialogTitle;
736
	public static String ResetEditorExtensionDialog_extensionDescription;
737
	public static String ResetEditorExtensionDialog_shellTitle;
738
	public static String ResetEditorExtensionDialog_wrongText;
739
722
	public static String ResourceGroup_resource;
740
	public static String ResourceGroup_resource;
723
	public static String ResourceGroup_nameExists;
741
	public static String ResourceGroup_nameExists;
724
	public static String ResourceGroup_folderEmpty;
742
	public static String ResourceGroup_folderEmpty;
(-)a/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/messages.properties (+16 lines)
Lines 569-574 Link Here
569
StartupPreferencePage_exitPromptButton = &Confirm exit when closing last window
569
StartupPreferencePage_exitPromptButton = &Confirm exit when closing last window
570
570
571
# --- Info ---
571
# --- Info ---
572
ResetEditorExtensionDialog_allDescription=all files
573
ResetEditorExtensionDialog_buttonAll=All
574
ResetEditorExtensionDialog_buttonAll_Tooltip=Reset the editors for all files
575
ResetEditorExtensionDialog_buttonSelection=Selection
576
ResetEditorExtensionDialog_buttonSelection_toolip=Reset the editors for files with the selected extension
577
ResetEditorExtensionDialog_buttonText=Text
578
ResetEditorExtensionDialog_buttonText_tooltip=Reset the editors for files with the given extension
579
ResetEditorExtensionDialog_dialogMessage=Resets all editors of files in the current selection to the default editor.\nSelected resources: {0}
580
ResetEditorExtensionDialog_dialogTitle=Reset Editors: Select Extensions
581
ResetEditorExtensionDialog_extensionDescription=files with extension {0}
582
ResetEditorExtensionDialog_shellTitle=Reset Editors
583
ResetEditorExtensionDialog_wrongText=Extension must start with '.'
584
ResetEditorHandler_confirmMessage=Do you really want to reset {0} to the default editor for the selected resources: {1}?
585
ResetEditorHandler_confirmTitle=Really reset editors?
586
ResetEditorHandler_noResourcesMessage=Please select valid resources and try again
587
ResetEditorHandler_noResourcesTitle=No resources selected
572
ResourceInfo_readOnly = &Read only
588
ResourceInfo_readOnly = &Read only
573
ResourceInfo_executable = E&xecutable
589
ResourceInfo_executable = E&xecutable
574
ResourceInfo_locked = L&ocked
590
ResourceInfo_locked = L&ocked

Return to bug 401090