blob: 676563d98ac8a61b276116012791c7ed6d1f969c [file] [log] [blame]
### Eclipse Workspace Patch 1.0
#P org.eclipse.jdt.ui
diff --git ui/org/eclipse/jdt/internal/ui/preferences/formatter/IndentationTabPage.java ui/org/eclipse/jdt/internal/ui/preferences/formatter/IndentationTabPage.java
index bbcb3bb..949bf62 100644
--- ui/org/eclipse/jdt/internal/ui/preferences/formatter/IndentationTabPage.java
+++ ui/org/eclipse/jdt/internal/ui/preferences/formatter/IndentationTabPage.java
@@ -19,8 +19,6 @@
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group;
-import org.eclipse.core.runtime.Assert;
-
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.core.formatter.DefaultCodeFormatterConstants;
@@ -60,7 +58,6 @@
"}";//$NON-NLS-1$
private CompilationUnitPreview fPreview;
- private String fOldTabChar= null;
public IndentationTabPage(ModifyDialog modifyDialog, Map<String, String> workingValues) {
super(modifyDialog, workingValues);
@@ -79,21 +76,17 @@
};
final ComboPreference tabPolicy= createComboPref(generalGroup, numColumns, FormatterMessages.IndentationTabPage_general_group_option_tab_policy, DefaultCodeFormatterConstants.FORMATTER_TAB_CHAR, tabPolicyValues, tabPolicyLabels);
final CheckboxPreference onlyForLeading= createCheckboxPref(generalGroup, numColumns, FormatterMessages.IndentationTabPage_use_tabs_only_for_leading_indentations, DefaultCodeFormatterConstants.FORMATTER_USE_TABS_ONLY_FOR_LEADING_INDENTATIONS, FALSE_TRUE);
- final NumberPreference indentSize= createNumberPref(generalGroup, numColumns, FormatterMessages.IndentationTabPage_general_group_option_indent_size, DefaultCodeFormatterConstants.FORMATTER_TAB_SIZE, 0, 32);
+ final NumberPreference indentSize= createNumberPref(generalGroup, numColumns, FormatterMessages.IndentationTabPage_general_group_option_indent_size, DefaultCodeFormatterConstants.FORMATTER_INDENTATION_SIZE, 0, 32);
final NumberPreference tabSize= createNumberPref(generalGroup, numColumns, FormatterMessages.IndentationTabPage_general_group_option_tab_size, DefaultCodeFormatterConstants.FORMATTER_TAB_SIZE, 0, 32);
- String tabchar= fWorkingValues.get(DefaultCodeFormatterConstants.FORMATTER_TAB_CHAR);
- updateTabPreferences(tabchar, tabSize, indentSize, onlyForLeading);
- tabPolicy.addObserver(new Observer() {
+ updateTabPreferences(indentSize, onlyForLeading);
+ Observer tabObserver = new Observer() {
public void update(Observable o, Object arg) {
- updateTabPreferences((String) arg, tabSize, indentSize, onlyForLeading);
+ updateTabPreferences(indentSize, onlyForLeading);
}
- });
- tabSize.addObserver(new Observer() {
- public void update(Observable o, Object arg) {
- indentSize.updateWidget();
- }
- });
+ };
+ tabPolicy.addObserver(tabObserver);
+ tabSize.addObserver(tabObserver);
final Group typeMemberGroup= createGroup(numColumns, composite, FormatterMessages.IndentationTabPage_field_alignment_group_title);
createCheckboxPref(typeMemberGroup, numColumns, FormatterMessages.IndentationTabPage_field_alignment_group_align_fields_in_columns, DefaultCodeFormatterConstants.FORMATTER_ALIGN_TYPE_MEMBERS_ON_COLUMNS, FALSE_TRUE);
@@ -141,50 +134,17 @@
fPreview.update();
}
- private void updateTabPreferences(String tabPolicy, NumberPreference tabPreference, NumberPreference indentPreference, CheckboxPreference onlyForLeading) {
- /*
- * If the tab-char is SPACE (or TAB), INDENTATION_SIZE
- * preference is not used by the core formatter. We piggy back the
- * visual tab length setting in that preference in that case. If the
- * user selects MIXED, we use the previous TAB_SIZE preference as the
- * new INDENTATION_SIZE (as this is what it really is) and set the
- * visual tab size to the value piggy backed in the INDENTATION_SIZE
- * preference. See also CodeFormatterUtil.
- */
- if (DefaultCodeFormatterConstants.MIXED.equals(tabPolicy)) {
- if (JavaCore.SPACE.equals(fOldTabChar) || JavaCore.TAB.equals(fOldTabChar))
- swapTabValues();
- tabPreference.setEnabled(true);
- tabPreference.setKey(DefaultCodeFormatterConstants.FORMATTER_TAB_SIZE);
- indentPreference.setEnabled(true);
- indentPreference.setKey(DefaultCodeFormatterConstants.FORMATTER_INDENTATION_SIZE);
- onlyForLeading.setEnabled(true);
- } else if (JavaCore.SPACE.equals(tabPolicy)) {
- if (DefaultCodeFormatterConstants.MIXED.equals(fOldTabChar))
- swapTabValues();
- tabPreference.setEnabled(true);
- tabPreference.setKey(DefaultCodeFormatterConstants.FORMATTER_INDENTATION_SIZE);
- indentPreference.setEnabled(true);
- indentPreference.setKey(DefaultCodeFormatterConstants.FORMATTER_TAB_SIZE);
- onlyForLeading.setEnabled(false);
- } else if (JavaCore.TAB.equals(tabPolicy)) {
- if (DefaultCodeFormatterConstants.MIXED.equals(fOldTabChar))
- swapTabValues();
- tabPreference.setEnabled(true);
- tabPreference.setKey(DefaultCodeFormatterConstants.FORMATTER_TAB_SIZE);
- indentPreference.setEnabled(false);
- indentPreference.setKey(DefaultCodeFormatterConstants.FORMATTER_TAB_SIZE);
- onlyForLeading.setEnabled(true);
- } else {
- Assert.isTrue(false);
- }
- fOldTabChar= tabPolicy;
- }
+ private void updateTabPreferences(NumberPreference indentPreference, CheckboxPreference onlyForLeading) {
+ String tabPolicy = fWorkingValues.get(DefaultCodeFormatterConstants.FORMATTER_TAB_CHAR);
+ onlyForLeading.setEnabled(!JavaCore.SPACE.equals(tabPolicy));
- private void swapTabValues() {
- String tabSize= fWorkingValues.get(DefaultCodeFormatterConstants.FORMATTER_TAB_SIZE);
- String indentSize= fWorkingValues.get(DefaultCodeFormatterConstants.FORMATTER_INDENTATION_SIZE);
- fWorkingValues.put(DefaultCodeFormatterConstants.FORMATTER_TAB_SIZE, indentSize);
- fWorkingValues.put(DefaultCodeFormatterConstants.FORMATTER_INDENTATION_SIZE, tabSize);
+ if (JavaCore.TAB.equals(tabPolicy)) {
+ // indentation size preference must be disabled and show the same value as tab size
+ String tabSize= fWorkingValues.get(DefaultCodeFormatterConstants.FORMATTER_TAB_SIZE);
+ fWorkingValues.put(DefaultCodeFormatterConstants.FORMATTER_INDENTATION_SIZE, tabSize);
+ indentPreference.setEnabled(false);
+ } else {
+ indentPreference.setEnabled(true);
+ }
}
}