/*=============================================================================#
# 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.internal.ui;
import java.util.Arrays;
import java.util.Map;
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.StringArrayPref;
import de.walware.statet.r.core.RSymbolComparator;
import de.walware.statet.r.ui.RUI;
import de.walware.statet.r.ui.RUIPreferenceConstants;
/**
*
*/
public class RIdentifierGroups extends AbstractPreferencesModelObject {
public final static String GROUP_ID = "r.editor/identifiergroups"; //$NON-NLS-1$
private String[] fIdentifiersItemsAssignment;
private String[] fIdentifiersItemsLogical;
private String[] fIdentifiersItemsFlowcontrol;
private String[] fIdentifiersItemsCustom1;
private String[] fIdentifiersItemsCustom2;
public RIdentifierGroups() {
installLock();
}
@Override
public String[] getNodeQualifiers() {
return new String[0];
}
@Override
public void loadDefaults() {
}
@Override
public void load(final IPreferenceAccess prefs) {
final RSymbolComparator comparator = new RSymbolComparator();
fIdentifiersItemsAssignment = loadValues(prefs, RUIPreferenceConstants.R.TS_IDENTIFIER_SUB_ASSIGNMENT_ITEMS);
Arrays.sort(fIdentifiersItemsAssignment, comparator);
fIdentifiersItemsLogical = loadValues(prefs, RUIPreferenceConstants.R.TS_IDENTIFIER_SUB_LOGICAL_ITEMS);
Arrays.sort(fIdentifiersItemsLogical, comparator);
fIdentifiersItemsFlowcontrol = loadValues(prefs, RUIPreferenceConstants.R.TS_IDENTIFIER_SUB_FLOWCONTROL_ITEMS);
Arrays.sort(fIdentifiersItemsFlowcontrol, comparator);
fIdentifiersItemsCustom1 = loadValues(prefs, RUIPreferenceConstants.R.TS_IDENTIFIER_SUB_CUSTOM1_ITEMS);
Arrays.sort(fIdentifiersItemsCustom1, comparator);
fIdentifiersItemsCustom2 = loadValues(prefs, RUIPreferenceConstants.R.TS_IDENTIFIER_SUB_CUSTOM2_ITEMS);
Arrays.sort(fIdentifiersItemsCustom2, comparator);
}
@Override
public Map<Preference<?>, Object> deliverToPreferencesMap(final Map<Preference<?>, Object> map) {
return map;
}
private final String[] loadValues(final IPreferenceAccess prefs, final String key) {
final Preference<String[]> pref = new StringArrayPref(RUI.PLUGIN_ID, key);
return prefs.getPreferenceValue(pref);
}
public String[] getAssignmentIdentifiers() {
return fIdentifiersItemsAssignment;
}
public String[] getLogicalIdentifiers() {
return fIdentifiersItemsLogical;
}
public String[] getFlowcontrolIdentifiers() {
return fIdentifiersItemsFlowcontrol;
}
public String[] getCustom1Identifiers() {
return fIdentifiersItemsCustom1;
}
public String[] getCustom2Identifiers() {
return fIdentifiersItemsCustom2;
}
}