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/IDEEditorsPreferencePage.java
* @param selectedEncoding
     */
	private void populateEncodingsCombo(List encodings,String selectedEncoding) {
		String [] encodingStrings = new String[encodings.size()];
        encodings.toArray(encodingStrings);
        encodingCombo.setItems(encodingStrings);        
       
        if(selectedEncoding == null)
        	encodingCombo.setText(WorkbenchEncoding.getWorkbenchDefaultEncoding());
        else
        	encodingCombo.setText(selectedEncoding);
	}
	protected void updateValidState() {
        super.updateValidState();
        if (!isValid()) {
            return;
        }
        if (!isEncodingValid()) {
            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);