org.eclipse.wst.xsd.ui.internal.preferences.XSDEditorPreferencePage.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.wst.xsd.ui.internal.preferences.XSDEditorPreferencePage.java

Source

/*******************************************************************************
 * Copyright (c) 2006, 2009 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 * 
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/

package org.eclipse.wst.xsd.ui.internal.preferences;

import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.dialogs.PreferenceLinkArea;
import org.eclipse.ui.help.IWorkbenchHelpSystem;
import org.eclipse.ui.preferences.IWorkbenchPreferenceContainer;
import org.eclipse.wst.sse.ui.internal.preferences.ui.AbstractPreferencePage;
import org.eclipse.wst.xsd.ui.internal.editor.Messages;
import org.eclipse.wst.xsd.ui.internal.editor.XSDEditorCSHelpIds;
import org.eclipse.wst.xsd.ui.internal.editor.XSDEditorContextIds;
import org.eclipse.wst.xsd.ui.internal.editor.XSDEditorPlugin;

public class XSDEditorPreferencePage extends AbstractPreferencePage {
    private static final String XML_EDITOR_PREFERENCE_PAGE_ID = "org.eclipse.wst.sse.ui.preferences.xml.source"; //$NON-NLS-1$

    private Button removeUnusedImports;

    private Button automaticallyOpenSchemaLocationDialog;

    protected Control createContents(Composite parent) {
        final Composite composite = super.createComposite(parent, 1);
        IWorkbenchHelpSystem helpSystem = PlatformUI.getWorkbench().getHelpSystem();
        helpSystem.setHelp(parent, XSDEditorContextIds.XSDP_EDITOR_PREFERENCE_PAGE);

        new PreferenceLinkArea(composite, SWT.WRAP | SWT.MULTI, XML_EDITOR_PREFERENCE_PAGE_ID,
                Messages._UI_XML_TEXT_EDITOR_PREFS_LINK, (IWorkbenchPreferenceContainer) getContainer(), null)
                        .getControl().setLayoutData(GridDataFactory.fillDefaults().hint(150, SWT.DEFAULT).create());
        new Label(composite, SWT.NONE).setLayoutData(GridDataFactory.swtDefaults().create());

        createContentsForImportCleanup(composite);

        setSize(composite);
        loadPreferences();

        return composite;
    }

    private boolean getRemoveImportSetting() {
        return removeUnusedImports.getSelection();
    }

    private boolean getAutomaticallyOpenSchemaLocationDialogSetting() {
        return automaticallyOpenSchemaLocationDialog.getSelection();
    }

    protected void initializeValues() {
        IPreferenceStore store = getPreferenceStore();
        removeUnusedImports.setSelection(store.getBoolean(XSDEditorPlugin.CONST_XSD_IMPORT_CLEANUP));
        automaticallyOpenSchemaLocationDialog
                .setSelection(store.getBoolean(XSDEditorPlugin.CONST_XSD_AUTO_OPEN_SCHEMA_LOCATION_DIALOG));
    }

    protected void performDefaults() {
        IPreferenceStore preferenceStore = getPreferenceStore();
        removeUnusedImports
                .setSelection(preferenceStore.getDefaultBoolean(XSDEditorPlugin.CONST_XSD_IMPORT_CLEANUP));
        automaticallyOpenSchemaLocationDialog.setSelection(
                preferenceStore.getDefaultBoolean(XSDEditorPlugin.CONST_XSD_AUTO_OPEN_SCHEMA_LOCATION_DIALOG));
        super.performDefaults();
    }

    protected void storeValues() {
        saveValuesForImportsCleanup();
    }

    /**
     * Stores the values of the controls back to the preference store.
     */
    private void saveValuesForImportsCleanup() {
        IPreferenceStore store = getPreferenceStore();

        store.setValue(XSDEditorPlugin.CONST_XSD_IMPORT_CLEANUP, getRemoveImportSetting());
        store.setValue(XSDEditorPlugin.CONST_XSD_AUTO_OPEN_SCHEMA_LOCATION_DIALOG,
                getAutomaticallyOpenSchemaLocationDialogSetting());
    }

    /** 
     * The indent is stored in the preference store associated with the XML Schema Model
     */
    public IPreferenceStore getPreferenceStore() {
        return XSDEditorPlugin.getPlugin().getPreferenceStore();
    }

    private void createContentsForImportCleanup(Composite parent) {
        Group unusedImportGroup = createGroup(parent, 1);
        unusedImportGroup.setText(Messages._UI_GRAPH_DIRECTIVES);

        //GridData
        GridData data = new GridData(SWT.FILL);
        data.verticalAlignment = SWT.CENTER;
        data.horizontalAlignment = SWT.FILL;

        if (removeUnusedImports == null) {
            removeUnusedImports = new Button(unusedImportGroup, SWT.CHECK | SWT.LEFT);
            removeUnusedImports.setText(Messages._UI_TEXT_ENABLE_AUTO_IMPORT_CLEANUP);
            removeUnusedImports.setLayoutData(data);

            PlatformUI.getWorkbench().getHelpSystem().setHelp(removeUnusedImports,
                    XSDEditorCSHelpIds.XMLSCHEMAFILES_PREFERENCES__IMPORT_CLEANUP);

            automaticallyOpenSchemaLocationDialog = new Button(unusedImportGroup, SWT.CHECK | SWT.LEFT);
            automaticallyOpenSchemaLocationDialog.setText(Messages._UI_TEXT_ENABLE_AUTO_OPEN_SCHEMA_DIALOG);
            automaticallyOpenSchemaLocationDialog.setLayoutData(GridDataFactory.copyData(data));
        }
    }

    protected void doSavePreferenceStore() {
        XSDEditorPlugin.getDefault().savePluginPreferences(); // model
    }

    public boolean performOk() {
        boolean result = super.performOk();

        doSavePreferenceStore();

        return result;
    }
}