Index: core extension/org/eclipse/jdt/internal/corext/util/CodeFormatterUtil.java =================================================================== RCS file: /home/eclipse/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/util/CodeFormatterUtil.java,v retrieving revision 1.49 diff -u -r1.49 CodeFormatterUtil.java --- core extension/org/eclipse/jdt/internal/corext/util/CodeFormatterUtil.java 8 Dec 2004 17:42:45 -0000 1.49 +++ core extension/org/eclipse/jdt/internal/corext/util/CodeFormatterUtil.java 10 Jan 2005 21:25:50 -0000 @@ -75,9 +75,29 @@ public static int getTabWidth(IJavaProject project) { String tabSize; if (project != null) { - tabSize= project.getOption(DefaultCodeFormatterConstants.FORMATTER_TAB_SIZE, true); + tabSize= project.getOption(DefaultCodeFormatterConstants.FORMATTER_INDENTATION_SIZE, true); } else { - tabSize= JavaCore.getOption(DefaultCodeFormatterConstants.FORMATTER_TAB_SIZE); + tabSize= JavaCore.getOption(DefaultCodeFormatterConstants.FORMATTER_INDENTATION_SIZE); + } + try { + return Integer.parseInt(tabSize); + } catch (NumberFormatException e) { + return 4; + } + } + + /** + * Gets the current tab width. + * @param project The project where the source is used, used for project specific options or null if + * the project is unknown and the workspace default should be used + * @return The indent width + */ + public static int getTabLength(IJavaProject project) { + String tabSize; + if (project != null) { + tabSize= project.getOption(DefaultCodeFormatterConstants.FORMATTER_TAB_LENGTH, true); + } else { + tabSize= JavaCore.getOption(DefaultCodeFormatterConstants.FORMATTER_TAB_LENGTH); } try { return Integer.parseInt(tabSize); Index: ui/org/eclipse/jdt/internal/ui/JavaPlugin.java =================================================================== RCS file: /home/eclipse/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/JavaPlugin.java,v retrieving revision 1.148 diff -u -r1.148 JavaPlugin.java --- ui/org/eclipse/jdt/internal/ui/JavaPlugin.java 3 Jan 2005 15:55:28 -0000 1.148 +++ ui/org/eclipse/jdt/internal/ui/JavaPlugin.java 10 Jan 2005 21:25:50 -0000 @@ -684,6 +684,18 @@ } catch (IOException e) { log(e); } + + getPreferenceStore().addPropertyChangeListener(new IPropertyChangeListener() { + public void propertyChange(PropertyChangeEvent event) { + if (TEMPLATES_KEY.equals(event.getProperty())) + try { + fTemplateStore.load(); + } catch (IOException e) { + log(e); + } + } + }); + } return fTemplateStore; @@ -729,9 +741,17 @@ log(e); } - // compatibility / bug fixing code for duplicated templates - // TODO remove for 3.0 - CompatibilityTemplateStore.pruneDuplicates(fCodeTemplateStore, true); + getPreferenceStore().addPropertyChangeListener(new IPropertyChangeListener() { + public void propertyChange(PropertyChangeEvent event) { + if (CODE_TEMPLATES_KEY.equals(event.getProperty())) + try { + fCodeTemplateStore.load(); + } catch (IOException e) { + log(e); + } + } + }); + } return fCodeTemplateStore; Index: ui/org/eclipse/jdt/internal/ui/javaeditor/CompilationUnitEditor.java =================================================================== RCS file: /home/eclipse/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/CompilationUnitEditor.java,v retrieving revision 1.261 diff -u -r1.261 CompilationUnitEditor.java --- ui/org/eclipse/jdt/internal/ui/javaeditor/CompilationUnitEditor.java 5 Jan 2005 10:11:59 -0000 1.261 +++ ui/org/eclipse/jdt/internal/ui/javaeditor/CompilationUnitEditor.java 10 Jan 2005 21:25:51 -0000 @@ -1108,7 +1108,7 @@ } /** Preference key for code formatter tab size */ - private final static String CODE_FORMATTER_TAB_SIZE= DefaultCodeFormatterConstants.FORMATTER_TAB_SIZE; + private final static String CODE_FORMATTER_TAB_SIZE= DefaultCodeFormatterConstants.FORMATTER_TAB_LENGTH; /** Preference key for inserting spaces rather than tabs */ private final static String SPACES_FOR_TABS= DefaultCodeFormatterConstants.FORMATTER_TAB_CHAR; /** Preference key for automatically closing strings */ Index: ui/org/eclipse/jdt/internal/ui/javaeditor/JavaEditor.java =================================================================== RCS file: /home/eclipse/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/JavaEditor.java,v retrieving revision 1.328 diff -u -r1.328 JavaEditor.java --- ui/org/eclipse/jdt/internal/ui/javaeditor/JavaEditor.java 10 Jan 2005 14:18:14 -0000 1.328 +++ ui/org/eclipse/jdt/internal/ui/javaeditor/JavaEditor.java 10 Jan 2005 21:25:52 -0000 @@ -2413,7 +2413,7 @@ return; } - if (DefaultCodeFormatterConstants.FORMATTER_TAB_SIZE.equals(property)) { + if (DefaultCodeFormatterConstants.FORMATTER_TAB_LENGTH.equals(property)) { sourceViewer.getTextWidget().setTabs(getSourceViewerConfiguration().getTabWidth(sourceViewer)); return; } Index: ui/org/eclipse/jdt/internal/ui/preferences/formatter/IndentationTabPage.java =================================================================== RCS file: /home/eclipse/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/formatter/IndentationTabPage.java,v retrieving revision 1.12 diff -u -r1.12 IndentationTabPage.java --- ui/org/eclipse/jdt/internal/ui/preferences/formatter/IndentationTabPage.java 9 Sep 2004 17:25:27 -0000 1.12 +++ ui/org/eclipse/jdt/internal/ui/preferences/formatter/IndentationTabPage.java 10 Jan 2005 21:25:52 -0000 @@ -59,7 +59,8 @@ protected void doCreatePreferences(Composite composite, int numColumns) { final Group generalGroup= createGroup(numColumns, composite, FormatterMessages.getString("IndentationTabPage.general_group.title")); //$NON-NLS-1$ - createNumberPref(generalGroup, numColumns, FormatterMessages.getString("IndentationTabPage.general_group.option.tab_size"), DefaultCodeFormatterConstants.FORMATTER_TAB_SIZE, 0, 999); //$NON-NLS-1$ + createNumberPref(generalGroup, numColumns, "Indentation Size", DefaultCodeFormatterConstants.FORMATTER_INDENTATION_SIZE, 0, 999); //$NON-NLS-1$ + createNumberPref(generalGroup, numColumns, FormatterMessages.getString("IndentationTabPage.general_group.option.tab_size"), DefaultCodeFormatterConstants.FORMATTER_TAB_LENGTH, 1, 999); //$NON-NLS-1$ createCheckboxPref(generalGroup, numColumns, FormatterMessages.getString("IndentationTabPage.general_group.option.use_tab_char"), DefaultCodeFormatterConstants.FORMATTER_TAB_CHAR, new String [] {JavaCore.SPACE, JavaCore.TAB}); //$NON-NLS-1$ final Group typeMemberGroup= createGroup(numColumns, composite, FormatterMessages.getString("IndentationTabPage.field_alignment_group.title")); //$NON-NLS-1$ Index: ui/org/eclipse/jdt/internal/ui/preferences/formatter/JavaPreview.java =================================================================== RCS file: /home/eclipse/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/formatter/JavaPreview.java,v retrieving revision 1.13 diff -u -r1.13 JavaPreview.java --- ui/org/eclipse/jdt/internal/ui/preferences/formatter/JavaPreview.java 4 Jan 2005 10:57:21 -0000 1.13 +++ ui/org/eclipse/jdt/internal/ui/preferences/formatter/JavaPreview.java 10 Jan 2005 21:25:52 -0000 @@ -148,7 +148,7 @@ fMarginPainter.setMarginRulerColumn(lineWidth); // update the tab size - final int tabSize= getPositiveIntValue((String) fWorkingValues.get(DefaultCodeFormatterConstants.FORMATTER_TAB_SIZE), 0); + final int tabSize= getPositiveIntValue((String) fWorkingValues.get(DefaultCodeFormatterConstants.FORMATTER_TAB_LENGTH), 0); if (tabSize != fTabSize) fSourceViewer.getTextWidget().setTabs(tabSize); fTabSize= tabSize; Index: ui/org/eclipse/jdt/internal/ui/text/JavaIndenter.java =================================================================== RCS file: /home/eclipse/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/JavaIndenter.java,v retrieving revision 1.37 diff -u -r1.37 JavaIndenter.java --- ui/org/eclipse/jdt/internal/ui/text/JavaIndenter.java 9 Dec 2004 11:47:06 -0000 1.37 +++ ui/org/eclipse/jdt/internal/ui/text/JavaIndenter.java 10 Jan 2005 21:25:53 -0000 @@ -1091,6 +1091,21 @@ } /** + * Skips a generic type definition between "<>". The current token + * is expected to be a ">". If true is returned, the current + * token points to a "<"; + * + * @return true if a [] could be scanned, the + * current token is left at the LANGULAR. + */ + private boolean skipAngularBrackets() { + if (fToken == Symbols.TokenGREATERTHAN) { + return skipScope(Symbols.TokenLESSTHAN, Symbols.TokenGREATERTHAN); + } + return false; + } + + /** * Reads the next token in backward direction from the heuristic scanner * and sets the fields fToken, fPreviousPosition and fPosition * accordingly. @@ -1133,15 +1148,20 @@ * TODO This heuristic does not recognize package private constructors * since those do have neither type nor visibility keywords. * One option would be to go over the parameter list, but that might - * be empty as well - hard to do without an AST... + * be empty as well, or not typed in yet - hard to do without an AST... */ nextToken(); if (fToken == Symbols.TokenIDENT) { // method name do nextToken(); while (skipBrackets()); // optional brackets for array valued return types - // [1.5] TODO also need to skip angular brackets for generic return types - return fToken == Symbols.TokenIDENT; // type name + + if (hasGenerics()) { + // [1.5] also skip angular brackets for generic return types + do nextToken(); + while (skipAngularBrackets()); + } + return fToken == Symbols.TokenIDENT; // return type name } return false; @@ -1158,6 +1178,7 @@ * header. */ private boolean looksLikeMethodCall() { + // TODO [5.0] add awareness for constructor calls with generic types: new ArrayList() nextToken(); return fToken == Symbols.TokenIDENT; // method name } @@ -1492,4 +1513,7 @@ return JavaCore.getPlugin() == null; } + private boolean hasGenerics() { + return JavaCore.VERSION_1_5.compareTo(getCoreFormatterOption(JavaCore.COMPILER_SOURCE)) <= 0; + } } Index: ui/org/eclipse/jdt/ui/text/JavaSourceViewerConfiguration.java =================================================================== RCS file: /home/eclipse/org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/text/JavaSourceViewerConfiguration.java,v retrieving revision 1.114 diff -u -r1.114 JavaSourceViewerConfiguration.java --- ui/org/eclipse/jdt/ui/text/JavaSourceViewerConfiguration.java 10 Jan 2005 14:18:14 -0000 1.114 +++ ui/org/eclipse/jdt/ui/text/JavaSourceViewerConfiguration.java 10 Jan 2005 21:25:53 -0000 @@ -492,7 +492,7 @@ // prefix[0] is either '\t' or ' ' x tabWidth, depending on useSpaces IJavaProject project= getProject(); - int tabWidth= CodeFormatterUtil.getTabWidth(project); + int tabWidth= CodeFormatterUtil.getTabLength(project); boolean useSpaces; if (project == null) useSpaces= JavaCore.SPACE.equals(JavaCore.getOption(DefaultCodeFormatterConstants.FORMATTER_TAB_CHAR));