/******************************************************************************* * 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; } }