/**
* Copyright (c) 2011 Cloudsmith Inc. and other contributors, as listed below.
* 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:
* Cloudsmith
*
*/
package org.cloudsmith.geppetto.pp.dsl.ui.preferences;
import org.cloudsmith.geppetto.pp.dsl.ui.preferences.editors.AbstractPreferencePage;
import org.eclipse.jface.preference.BooleanFieldEditor;
import org.eclipse.xtext.ui.editor.preferences.fields.CheckBoxGroupFieldEditor;
/**
* A Preference pane for auto edit settings (insert of matches pairs [] {} () ...)
*/
public class AutoEditPreferencePage extends AbstractPreferencePage {
@Override
protected void createFieldEditors() {
// Automatically Complete
//
addField(new CheckBoxGroupFieldEditor(//
PPPreferenceConstants.AUTO_EDIT_STRATEGY, "Automatically Complete:", 1, new String[][] {
{ "[ ]", String.valueOf(PPPreferencesHelper.AUTO_INSERT_BRACKETS) }, //
{ "{ }", String.valueOf(PPPreferencesHelper.AUTO_INSERT_BRACES) }, //
{ "( )", String.valueOf(PPPreferencesHelper.AUTO_INSERT_PARENTHESES) }, //
{ "\" \"", String.valueOf(PPPreferencesHelper.AUTO_INSERT_DQ) }, //
{ "' '", String.valueOf(PPPreferencesHelper.AUTO_INSERT_SQ) }, //
{ "/* */", String.valueOf(PPPreferencesHelper.AUTO_INSERT_COMMENT) }, //
}, getFieldEditorParent(), true) {
@Override
protected String calculateResult(String[][] settings) {
int result = 0;
for(int i = 0; i < settings.length; i++) {
String[] row = settings[i];
String value = row[1];
String checked = row[2];
if(Boolean.valueOf(checked)) {
result += Integer.valueOf(value);
}
}
return String.valueOf(~result);
}
@Override
protected void doStore() {
if(result == null) {
// Do NOT do this - it overwrites the stored preference if they are unchanged
// getPreferenceStore().setToDefault(getPreferenceName());
return;
}
getPreferenceStore().setValue(getPreferenceName(), result);
}
@Override
protected boolean isSelected(String fieldName, String valueToSet) {
int value = 0;
try {
value = Integer.valueOf(valueToSet);
value = ~value;
}
catch(NumberFormatException nfe) {
// ignore preference value
return false;
}
if(value == 0)
return false;
if(fieldName.equals("[ ]"))
return (value & PPPreferencesHelper.AUTO_INSERT_BRACKETS) == PPPreferencesHelper.AUTO_INSERT_BRACKETS;
else if(fieldName.equals("{ }"))
return (value & PPPreferencesHelper.AUTO_INSERT_BRACES) == PPPreferencesHelper.AUTO_INSERT_BRACES;
else if(fieldName.equals("( )"))
return (value & PPPreferencesHelper.AUTO_INSERT_PARENTHESES) == PPPreferencesHelper.AUTO_INSERT_PARENTHESES;
else if(fieldName.equals("\" \""))
return (value & PPPreferencesHelper.AUTO_INSERT_DQ) == PPPreferencesHelper.AUTO_INSERT_DQ;
else if(fieldName.equals("' '"))
return (value & PPPreferencesHelper.AUTO_INSERT_SQ) == PPPreferencesHelper.AUTO_INSERT_SQ;
else if(fieldName.equals("/* */"))
return (value & PPPreferencesHelper.AUTO_INSERT_COMMENT) == PPPreferencesHelper.AUTO_INSERT_COMMENT;
return false;
}
});
BooleanFieldEditor completeBlocks = new BooleanFieldEditor(
PPPreferenceConstants.AUTO_EDIT_COMPLETE_COMPOUND_BLOCKS, //
"Automatically complete opened (), {}, [] blocks.", //
getFieldEditorParent());
addField(completeBlocks);
}
}