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
otherEncodingButton.setSelection(!useDefault);
		encodingCombo.setEnabled(!useDefault);
		updateValidState();
	}
	protected void updateValidState() {
		if (isEncodingValid()) {
			setErrorMessage(null);
			setValid(true);
		} else {
			setErrorMessage(IDEWorkbenchMessages
					.getString("WorkbenchPreference.unsupportedEncoding")); 
			setValid(false);
		}
	}
	private boolean isEncodingValid() {
		return defaultEncodingButton.getSelection()
				|| isValidEncoding(encodingCombo.getText());
	}
	private boolean isValidEncoding(String enc) {
		try {
			new String(new byte[0], enc);
			return true;
		} catch (UnsupportedEncodingException e) {
			return false;
		}
	}
	
	/**
	 * Return the value for the date String for the timestamp of the supplied
	 * resource.