/*=============================================================================#
# Copyright (c) 2007-2016 Stephan Wahlbrink (WalWare.de) 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:
# Stephan Wahlbrink - initial API and implementation
#=============================================================================*/
package de.walware.statet.r.ui.editors;
import static de.walware.statet.r.internal.ui.RUIPreferenceInitializer.REDITOR_NODE;
import java.util.Map;
import de.walware.ecommons.ltk.ui.sourceediting.ISmartInsertSettings;
import de.walware.ecommons.preferences.AbstractPreferencesModelObject;
import de.walware.ecommons.preferences.core.IPreferenceAccess;
import de.walware.ecommons.preferences.core.Preference;
import de.walware.ecommons.preferences.core.Preference.BooleanPref;
import de.walware.ecommons.preferences.core.Preference.EnumPref;
public class REditorOptions extends AbstractPreferencesModelObject
implements ISmartInsertSettings {
// Default values see RUIPreferenceInitializer
public static final String GROUP_ID = "r/r.editor/options"; //$NON-NLS-1$
public static final String SMARTINSERT_GROUP_ID = "r/r.editor/smartinsert"; //$NON-NLS-1$
public static final BooleanPref SMARTINSERT_BYDEFAULT_ENABLED_PREF = new BooleanPref(
REDITOR_NODE, "smartinsert.as_default.enabled"); //$NON-NLS-1$
public static final BooleanPref SMARTINSERT_ONPASTE_ENABLED_PREF = new BooleanPref(
REDITOR_NODE, "smartinsert.on_paste.enabled"); //$NON-NLS-1$
public static final Preference<TabAction> SMARTINSERT_TAB_ACTION_PREF= new EnumPref<>(
REDITOR_NODE, "SmartInsert.Tab.action", TabAction.class); //$NON-NLS-1$
public static final BooleanPref SMARTINSERT_CLOSECURLY_ENABLED_PREF = new BooleanPref(
REDITOR_NODE, "smartinsert.close_curlybrackets.enabled"); //$NON-NLS-1$
public static final BooleanPref SMARTINSERT_CLOSEROUND_ENABLED_PREF = new BooleanPref(
REDITOR_NODE, "smartinsert.close_roundbrackets.enabled"); //$NON-NLS-1$
public static final BooleanPref SMARTINSERT_CLOSESQUARE_ENABLED_PREF = new BooleanPref(
REDITOR_NODE, "smartinsert.close_squarebrackets.enabled"); //$NON-NLS-1$
public static final BooleanPref SMARTINSERT_CLOSESPECIAL_ENABLED_PREF = new BooleanPref(
REDITOR_NODE, "smartinsert.close_specialpercent.enabled"); //$NON-NLS-1$
public static final BooleanPref SMARTINSERT_CLOSESTRINGS_ENABLED_PREF = new BooleanPref(
REDITOR_NODE, "smartinsert.close_strings.enabled"); //$NON-NLS-1$
public static final BooleanPref PREF_SPELLCHECKING_ENABLED = new BooleanPref(
REDITOR_NODE, "spellcheck.enabled"); //$NON-NLS-1$
// not in group
public static final BooleanPref FOLDING_ENABLED_PREF = new BooleanPref(
REDITOR_NODE, "folding.enabled"); //$NON-NLS-1$
public static final String FOLDING_SHARED_GROUP_ID = "r/r.editor/folding.shared"; //$NON-NLS-1$
public static final BooleanPref FOLDING_RESTORE_STATE_ENABLED_PREF = new BooleanPref(
REDITOR_NODE, "Folding.RestoreState.enabled"); //$NON-NLS-1$
public static final BooleanPref PREF_MARKOCCURRENCES_ENABLED = new BooleanPref(
REDITOR_NODE, "markoccurrences.enabled"); //$NON-NLS-1$
private boolean fIsSmartByDefaultEnabled;
private TabAction fSmartTabAction;
private boolean fIsSmartCurlyBracketsEnabled;
private boolean fIsSmartRoundBracketsEnabled;
private boolean fIsSmartSquareBracketsEnabled;
private boolean fIsSmartSpecialPercentEnabled;
private boolean fIsSmartStringsEnabled;
private boolean fIsSmartPasteEnabled;
public REditorOptions(final int mode) {
if (mode >= 1) {
installLock();
}
loadDefaults();
}
@Override
public String[] getNodeQualifiers() {
return new String[0];
}
@Override
public void loadDefaults() {
fIsSmartByDefaultEnabled = true;
fSmartTabAction = TabAction.INSERT_INDENT_LEVEL;
fIsSmartCurlyBracketsEnabled = true;
fIsSmartRoundBracketsEnabled = true;
fIsSmartSquareBracketsEnabled = true;
fIsSmartSpecialPercentEnabled = true;
fIsSmartStringsEnabled = true;
fIsSmartPasteEnabled = true;
}
@Override
public void load(final IPreferenceAccess prefs) {
fIsSmartByDefaultEnabled = prefs.getPreferenceValue(SMARTINSERT_BYDEFAULT_ENABLED_PREF);
fSmartTabAction = prefs.getPreferenceValue(SMARTINSERT_TAB_ACTION_PREF);
fIsSmartCurlyBracketsEnabled = prefs.getPreferenceValue(SMARTINSERT_CLOSECURLY_ENABLED_PREF);
fIsSmartRoundBracketsEnabled = prefs.getPreferenceValue(SMARTINSERT_CLOSEROUND_ENABLED_PREF);
fIsSmartSquareBracketsEnabled = prefs.getPreferenceValue(SMARTINSERT_CLOSESQUARE_ENABLED_PREF);
fIsSmartSpecialPercentEnabled = prefs.getPreferenceValue(SMARTINSERT_CLOSESPECIAL_ENABLED_PREF);
fIsSmartStringsEnabled = prefs.getPreferenceValue(SMARTINSERT_CLOSESTRINGS_ENABLED_PREF);
fIsSmartPasteEnabled = prefs.getPreferenceValue(SMARTINSERT_ONPASTE_ENABLED_PREF);
}
@Override
public Map<Preference<?>, Object> deliverToPreferencesMap(final Map<Preference<?>, Object> map) {
map.put(SMARTINSERT_BYDEFAULT_ENABLED_PREF, fIsSmartByDefaultEnabled);
map.put(SMARTINSERT_TAB_ACTION_PREF, fSmartTabAction);
map.put(SMARTINSERT_CLOSECURLY_ENABLED_PREF, fIsSmartCurlyBracketsEnabled);
map.put(SMARTINSERT_CLOSEROUND_ENABLED_PREF, fIsSmartRoundBracketsEnabled);
map.put(SMARTINSERT_CLOSESQUARE_ENABLED_PREF, fIsSmartSquareBracketsEnabled);
map.put(SMARTINSERT_CLOSESPECIAL_ENABLED_PREF, fIsSmartSpecialPercentEnabled);
map.put(SMARTINSERT_CLOSESTRINGS_ENABLED_PREF, fIsSmartStringsEnabled);
map.put(SMARTINSERT_ONPASTE_ENABLED_PREF, fIsSmartPasteEnabled);
return map;
}
@Override
public boolean isSmartInsertEnabledByDefault() {
return fIsSmartByDefaultEnabled;
}
@Override
public TabAction getSmartInsertTabAction() {
return fSmartTabAction;
}
public boolean isSmartPasteEnabled() {
return fIsSmartPasteEnabled;
}
public boolean isSmartCurlyBracketsEnabled() {
return fIsSmartCurlyBracketsEnabled;
}
public boolean isSmartRoundBracketsEnabled() {
return fIsSmartRoundBracketsEnabled;
}
public boolean isSmartSquareBracketsEnabled() {
return fIsSmartSquareBracketsEnabled;
}
public boolean isSmartSpecialPercentEnabled() {
return fIsSmartSpecialPercentEnabled;
}
public boolean isSmartStringsEnabled() {
return fIsSmartStringsEnabled;
}
}