Bug 56957 [Encoding] Reusable EncodingFieldEditor
I have added the ability to set an encoding for a repository so that commit messages and file names can be properly translated between a client and server whose encodings differ. I have extracted much of the code from IDEEditorsPreferencePage into an EncodingFieldEditor class so I could us it. I was planning on providing a patch to the UI with the hope that this class could be API but there is a roadblock that prevents this. Basically, the encoding preference is in a org.eclipse.core.Preferences node but a field editor requires an IPreferenceStore. There are already two adapters for this is the platform but one is a private inner class of AbstractUIPlugin and the other lives in the text plugin. Instead of creating a patch, I'm just attaching the EncodingFieldEditor class for future consideration.
bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/dialogs/ResourceInfoPage.java
if (defaultEncodingButton != null)
			updateEncodingState(true);
		
		
	}
	/**
	 * Apply the read only state and the encoding to the resource.
	 */
	public boolean performOk() {
		IResource resource = (IResource) getElement();
		
		if (isEncodingValid()) {
			String previousEncoding = null;
			if (!usesDefaultEncoding(resource))
				previousEncoding = getEncoding(resource);
			String newEncoding = null;
			if (!defaultEncodingButton.getSelection())
				newEncoding = encodingCombo.getText();
			if ((previousEncoding == null && newEncoding != null)
					|| (previousEncoding != null && newEncoding == null)
					|| (previousEncoding != null && newEncoding != null && !previousEncoding
							.equals(newEncoding))) {
				try {
					if (resource instanceof IFile)
						((IFile) resource).setCharset(newEncoding,null);
					else if (resource instanceof IContainer)
						((IContainer) resource).setDefaultCharset(newEncoding,null);
				} catch (CoreException e) {
					ErrorDialog.openError(getShell(), IDEWorkbenchMessages
							.getString("InternalError"),