X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/text/folding/DefaultJavaFoldingStructureProvider.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/text/folding/DefaultJavaFoldingStructureProvider.java index a15d39c..77a19ac 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/text/folding/DefaultJavaFoldingStructureProvider.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/text/folding/DefaultJavaFoldingStructureProvider.java @@ -37,6 +37,7 @@ import net.sourceforge.phpdt.core.ToolFactory; import net.sourceforge.phpdt.core.compiler.IScanner; import net.sourceforge.phpdt.core.compiler.ITerminalSymbols; import net.sourceforge.phpdt.core.compiler.InvalidInputException; +import net.sourceforge.phpdt.internal.compiler.parser.Scanner; import net.sourceforge.phpdt.internal.ui.text.DocumentCharacterIterator; import net.sourceforge.phpdt.ui.IWorkingCopyManager; import net.sourceforge.phpdt.ui.PreferenceConstants; @@ -384,7 +385,7 @@ public class DefaultJavaFoldingStructureProvider implements IProjectionListener, private boolean fCollapseJavadoc = false; -// private boolean fCollapseImportContainer = true; + // private boolean fCollapseImportContainer = true; private boolean fCollapseInnerTypes = true; @@ -484,7 +485,7 @@ public class DefaultJavaFoldingStructureProvider implements IProjectionListener, ICompilationUnit unit = (ICompilationUnit) fInput; synchronized (unit) { try { -// unit.reconcile(ICompilationUnit.NO_AST, false, null, null); + // unit.reconcile(ICompilationUnit.NO_AST, false, null, null); unit.reconcile(); } catch (JavaModelException x) { } @@ -517,7 +518,8 @@ public class DefaultJavaFoldingStructureProvider implements IProjectionListener, private void initializePreferences() { IPreferenceStore store = PHPeclipsePlugin.getDefault().getPreferenceStore(); fCollapseInnerTypes = store.getBoolean(PreferenceConstants.EDITOR_FOLDING_INNERTYPES); -// fCollapseImportContainer = store.getBoolean(PreferenceConstants.EDITOR_FOLDING_IMPORTS); + // fCollapseImportContainer = + // store.getBoolean(PreferenceConstants.EDITOR_FOLDING_IMPORTS); fCollapseJavadoc = store.getBoolean(PreferenceConstants.EDITOR_FOLDING_JAVADOC); fCollapseMethods = store.getBoolean(PreferenceConstants.EDITOR_FOLDING_METHODS); fCollapseHeaderComments = store.getBoolean(PreferenceConstants.EDITOR_FOLDING_HEADERS); @@ -525,7 +527,7 @@ public class DefaultJavaFoldingStructureProvider implements IProjectionListener, private Map computeAdditions(IParent parent) { Map map = new LinkedHashMap(); // use a linked map to maintain ordering of - // comments + // comments try { computeAdditions(parent.getChildren(), map); } catch (JavaModelException x) { @@ -553,10 +555,10 @@ public class DefaultJavaFoldingStructureProvider implements IProjectionListener, boolean collapse = false; switch (element.getElementType()) { -// case IJavaElement.IMPORT_CONTAINER: -// collapse = fAllowCollapsing && fCollapseImportContainer; -// createProjection = true; -// break; + // case IJavaElement.IMPORT_CONTAINER: + // collapse = fAllowCollapsing && fCollapseImportContainer; + // createProjection = true; + // break; case IJavaElement.TYPE: collapse = fAllowCollapsing && fCollapseInnerTypes && isInnerType((IType) element); createProjection = true; @@ -637,28 +639,30 @@ public class DefaultJavaFoldingStructureProvider implements IProjectionListener, } } - IScanner scanner = ToolFactory.createScanner(true, false, false, false); - scanner.setSource(contents.toCharArray()); final int shift = range.getOffset(); int start = shift; - while (true) { + if (element instanceof IType) { + Scanner scanner = ToolFactory.createScanner(true, false, false, false); + scanner.setSource(contents.toCharArray()); + scanner.setPHPMode(true); int token = scanner.getNextToken(); - start = shift + scanner.getCurrentTokenStartPosition(); + while (token != ITerminalSymbols.TokenNameEOF) { - switch (token) { - case ITerminalSymbols.TokenNameCOMMENT_PHPDOC: - case ITerminalSymbols.TokenNameCOMMENT_BLOCK: { - int end = shift + scanner.getCurrentTokenEndPosition() + 1; - regions.add(new Region(start, end - start)); - } - case ITerminalSymbols.TokenNameCOMMENT_LINE: - continue; - } + token = scanner.getNextToken(); + start = shift + scanner.getCurrentTokenStartPosition(); - break; + switch (token) { + case ITerminalSymbols.TokenNameCOMMENT_PHPDOC: + case ITerminalSymbols.TokenNameCOMMENT_BLOCK: { + int end = shift + scanner.getCurrentTokenEndPosition() + 1; + regions.add(new Region(start, end - start)); + } + case ITerminalSymbols.TokenNameCOMMENT_LINE: + continue; + } + } } - regions.add(new Region(start, shift + range.getLength() - start)); if (regions.size() > 0) { @@ -666,6 +670,7 @@ public class DefaultJavaFoldingStructureProvider implements IProjectionListener, regions.toArray(result); return result; } + } } catch (JavaModelException e) { } catch (InvalidInputException e) {