Search in sources :

Example 1 with AbstractEncodingFieldEditor

use of org.eclipse.ui.ide.dialogs.AbstractEncodingFieldEditor in project eclipse.platform.text by eclipse.

the class ChangeEncodingAction method run.

@Override
public void run() {
    final IResource resource = getResource();
    final Shell parentShell = getTextEditor().getSite().getShell();
    final IEncodingSupport encodingSupport = getEncodingSupport();
    if (resource == null && encodingSupport == null) {
        MessageDialog.openInformation(parentShell, fDialogTitle, TextEditorMessages.ChangeEncodingAction_message_noEncodingSupport);
        return;
    }
    Dialog dialog = new Dialog(parentShell) {

        private AbstractEncodingFieldEditor fEncodingEditor;

        private IPreferenceStore store = null;

        @Override
        protected void configureShell(Shell newShell) {
            super.configureShell(newShell);
            newShell.setText(fDialogTitle);
        }

        @Override
        protected Control createDialogArea(Composite parent) {
            Composite composite = (Composite) super.createDialogArea(parent);
            composite = new Composite(composite, SWT.NONE);
            GridLayout layout = new GridLayout();
            layout.marginHeight = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN);
            layout.marginWidth = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
            layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
            layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
            composite.setLayout(layout);
            GridData data = new GridData(GridData.FILL_BOTH);
            composite.setLayoutData(data);
            composite.setFont(parent.getFont());
            DialogPage page = new MessageDialogPage(composite) {

                @Override
                public void setErrorMessage(String newMessage) {
                    super.setErrorMessage(newMessage);
                    setButtonEnabledState(IDialogConstants.OK_ID, newMessage == null);
                    setButtonEnabledState(APPLY_ID, newMessage == null);
                }

                private void setButtonEnabledState(int id, boolean state) {
                    Button button = getButton(id);
                    if (button != null)
                        button.setEnabled(state);
                }
            };
            if (resource != null) {
                // $NON-NLS-1$
                fEncodingEditor = new ResourceEncodingFieldEditor("", composite, resource, null);
                fEncodingEditor.setPage(page);
                fEncodingEditor.load();
            } else {
                // $NON-NLS-1$
                fEncodingEditor = new EncodingFieldEditor(ENCODING_PREF_KEY, "", null, composite);
                store = new PreferenceStore();
                String defaultEncoding = encodingSupport.getDefaultEncoding();
                store.setDefault(ENCODING_PREF_KEY, defaultEncoding);
                String encoding = encodingSupport.getEncoding();
                if (encoding != null)
                    store.setValue(ENCODING_PREF_KEY, encoding);
                fEncodingEditor.setPreferenceStore(store);
                fEncodingEditor.setPage(page);
                fEncodingEditor.load();
                if (encoding == null || encoding.equals(defaultEncoding) || encoding.length() == 0)
                    fEncodingEditor.loadDefault();
            }
            return composite;
        }

        @Override
        protected void createButtonsForButtonBar(Composite parent) {
            createButton(parent, APPLY_ID, TextEditorMessages.ChangeEncodingAction_button_apply_label, false);
            super.createButtonsForButtonBar(parent);
        }

        @Override
        protected void buttonPressed(int buttonId) {
            if (buttonId == APPLY_ID)
                apply();
            else
                super.buttonPressed(buttonId);
        }

        @Override
        protected void okPressed() {
            apply();
            super.okPressed();
        }

        private void apply() {
            fEncodingEditor.store();
            if (resource == null) {
                String encoding = fEncodingEditor.getPreferenceStore().getString(fEncodingEditor.getPreferenceName());
                encodingSupport.setEncoding(encoding);
            }
        }
    };
    dialog.open();
}
Also used : AbstractEncodingFieldEditor(org.eclipse.ui.ide.dialogs.AbstractEncodingFieldEditor) Composite(org.eclipse.swt.widgets.Composite) IEncodingSupport(org.eclipse.ui.editors.text.IEncodingSupport) IPreferenceStore(org.eclipse.jface.preference.IPreferenceStore) PreferenceStore(org.eclipse.jface.preference.PreferenceStore) Shell(org.eclipse.swt.widgets.Shell) GridLayout(org.eclipse.swt.layout.GridLayout) AbstractEncodingFieldEditor(org.eclipse.ui.ide.dialogs.AbstractEncodingFieldEditor) ResourceEncodingFieldEditor(org.eclipse.ui.ide.dialogs.ResourceEncodingFieldEditor) EncodingFieldEditor(org.eclipse.ui.ide.dialogs.EncodingFieldEditor) Button(org.eclipse.swt.widgets.Button) ResourceEncodingFieldEditor(org.eclipse.ui.ide.dialogs.ResourceEncodingFieldEditor) Dialog(org.eclipse.jface.dialogs.Dialog) MessageDialog(org.eclipse.jface.dialogs.MessageDialog) DialogPage(org.eclipse.jface.dialogs.DialogPage) GridData(org.eclipse.swt.layout.GridData) IPreferenceStore(org.eclipse.jface.preference.IPreferenceStore) IResource(org.eclipse.core.resources.IResource)

Aggregations

IResource (org.eclipse.core.resources.IResource)1 Dialog (org.eclipse.jface.dialogs.Dialog)1 DialogPage (org.eclipse.jface.dialogs.DialogPage)1 MessageDialog (org.eclipse.jface.dialogs.MessageDialog)1 IPreferenceStore (org.eclipse.jface.preference.IPreferenceStore)1 PreferenceStore (org.eclipse.jface.preference.PreferenceStore)1 GridData (org.eclipse.swt.layout.GridData)1 GridLayout (org.eclipse.swt.layout.GridLayout)1 Button (org.eclipse.swt.widgets.Button)1 Composite (org.eclipse.swt.widgets.Composite)1 Shell (org.eclipse.swt.widgets.Shell)1 IEncodingSupport (org.eclipse.ui.editors.text.IEncodingSupport)1 AbstractEncodingFieldEditor (org.eclipse.ui.ide.dialogs.AbstractEncodingFieldEditor)1 EncodingFieldEditor (org.eclipse.ui.ide.dialogs.EncodingFieldEditor)1 ResourceEncodingFieldEditor (org.eclipse.ui.ide.dialogs.ResourceEncodingFieldEditor)1