/*******************************************************************************
* Copyright (c) 2004 Vlad Dumitrescu 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:
* Vlad Dumitrescu
*******************************************************************************/
package org.erlide.ui.prefs.plugin;
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import org.eclipse.xtext.xbase.lib.Pair;
import org.erlide.ui.ErlideUIConstants;
import org.erlide.ui.editors.erl.ErlangEditor;
import org.erlide.ui.internal.ErlideUIPlugin;
/**
* The editor preferences
*
*
* @author Jakob
*/
public class EditorPreferencePage extends ErlidePreferencePage
implements IWorkbenchPreferencePage {
/**
* Initialize the system preferences
*
*/
public EditorPreferencePage() {
setDescription(ErlEditorMessages.ErlEditorPreferencePage_description);
setPreferenceStore(ErlideUIPlugin.getDefault().getPreferenceStore());
}
/**
* @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
*/
@Override
public void init(final IWorkbench workbench) {
}
static final String EDITOR_KEY = "erlangEditor"; //$NON-NLS-1$
private static final int DEFAULT_INDENT_WIDTH = 4;
private static final boolean DEFAULT_ENABLE_HOVER = true;
private void setToPreferences() {
final IEclipsePreferences node = ErlideUIPlugin.getPrefsNode();
final Integer i = node.getInt(indentWidthKey, DEFAULT_INDENT_WIDTH);
indentWidthText.setText(i.toString());
enableHoverCheckBox
.setSelection(node.getBoolean(enableHoverKey, DEFAULT_ENABLE_HOVER));
}
@Override
protected void putPreferences() {
final IEclipsePreferences node = ErlideUIPlugin.getPrefsNode();
node.putInt(indentWidthKey, Integer.parseInt(indentWidthText.getText()));
node.putBoolean(enableHoverKey, enableHoverCheckBox.getSelection());
}
public static boolean getEnableHover() {
final IEclipsePreferences node = ErlideUIPlugin.getPrefsNode();
return node.getBoolean(EDITOR_KEY + "/" + ErlideUIConstants.EDITOR_ENABLE_HOVER,
DEFAULT_ENABLE_HOVER);
}
@Override
protected String getDialogPreferenceKey() {
return EDITOR_KEY;
}
private Text indentWidthText;
private Button enableHoverCheckBox;
private String indentWidthKey;
private String enableHoverKey;
/*
* @see PreferencePage#createControl(Composite)
*/
@Override
public void createControl(final Composite parent) {
super.createControl(parent);
// WorkbenchHelp.setHelp(getControl(),
// ITextEditorHelpContextIds.TEXT_EDITOR_PREFERENCE_PAGE);
}
private Control createAppearancePage(final Composite parent) {
final Composite appearanceComposite = new Composite(parent, SWT.NONE);
final GridLayout layout = new GridLayout();
layout.numColumns = 2;
appearanceComposite.setLayout(layout);
String label = ErlEditorMessages.ErlEditorPreferencePage_indentationWidth;
final Pair<Text, String> addTextField = addTextField(appearanceComposite, label,
ErlangEditor.EDITOR_INDENTATION_WIDTH, 3, 0, true);
indentWidthText = addTextField.getKey();
indentWidthText.setEnabled(false);
indentWidthKey = addTextField.getValue();
label = ErlEditorMessages.ErlEditorPreferencePage_enable_hover;
final Pair<Button, String> addCheckBox = addCheckBox(appearanceComposite, label,
ErlideUIConstants.EDITOR_ENABLE_HOVER, 0);
enableHoverCheckBox = addCheckBox.getKey();
enableHoverKey = addCheckBox.getValue();
return appearanceComposite;
}
/*
* @see PreferencePage#createContents(Composite)
*/
@Override
protected Control createContents(final Composite parent) {
final Control control = createAppearancePage(parent);
Dialog.applyDialogFont(control);
setToPreferences();
return control;
}
/*
* @see PreferencePage#performDefaults()
*/
@Override
protected void performDefaults() {
enableHoverCheckBox.setSelection(DEFAULT_ENABLE_HOVER);
indentWidthText.setText(Integer.toString(DEFAULT_INDENT_WIDTH));
super.performDefaults();
}
}