From 2e1c3b3f506e1997366a44c6890c90afd51d7366 Mon Sep 17 00:00:00 2001 From: John Camelon Date: Tue, 8 Feb 2005 00:44:18 +0000 Subject: [PATCH] Patch for Devin Steffler. Further updates to the DOM AST View. patch includes: - problem filter fixed so that it filters problems (and not everything but problems) - added preprocessor statement filter --- core/org.eclipse.cdt.ui.tests/plugin.xml | 8 ++++ .../DOMAST/CPPPopulateASTViewAction.java | 4 ++ .../tests/DOMAST/CPopulateASTViewAction.java | 4 ++ .../ui/tests/DOMAST/PreprocessorFilter.java | 39 +++++++++++++++++++ .../ui/tests/DOMAST/ProblemHolderFilter.java | 12 +++++- .../cdt/ui/tests/DOMAST/TreeObject.java | 1 + 6 files changed, 66 insertions(+), 2 deletions(-) create mode 100644 core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/PreprocessorFilter.java diff --git a/core/org.eclipse.cdt.ui.tests/plugin.xml b/core/org.eclipse.cdt.ui.tests/plugin.xml index fb6d6b992fb..f2cb3416536 100644 --- a/core/org.eclipse.cdt.ui.tests/plugin.xml +++ b/core/org.eclipse.cdt.ui.tests/plugin.xml @@ -103,6 +103,14 @@ class="org.eclipse.cdt.ui.tests.DOMAST.ProblemHolderFilter" id="org.eclipse.cdt.ui.tests.DOMAST.DOMAST.ProblemHolderFilter"> + + diff --git a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/CPPPopulateASTViewAction.java b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/CPPPopulateASTViewAction.java index bd452cd579d..4fab44a029c 100644 --- a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/CPPPopulateASTViewAction.java +++ b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/CPPPopulateASTViewAction.java @@ -23,6 +23,7 @@ import org.eclipse.cdt.core.dom.ast.IASTParameterDeclaration; import org.eclipse.cdt.core.dom.ast.IASTPointerOperator; import org.eclipse.cdt.core.dom.ast.IASTPreprocessorIncludeStatement; import org.eclipse.cdt.core.dom.ast.IASTPreprocessorMacroDefinition; +import org.eclipse.cdt.core.dom.ast.IASTPreprocessorStatement; import org.eclipse.cdt.core.dom.ast.IASTProblem; import org.eclipse.cdt.core.dom.ast.IASTProblemHolder; import org.eclipse.cdt.core.dom.ast.IASTStatement; @@ -74,10 +75,13 @@ public class CPPPopulateASTViewAction extends CPPBaseVisitorAction implements IP TreeParent tree = new TreeParent(node); parent.addChild(tree); + // set filter flags if (node instanceof IASTProblemHolder) tree.setFiltersFlag(TreeObject.FLAG_PROBLEM); if (node instanceof IASTProblem) tree.setFiltersFlag(TreeObject.FLAG_PROBLEM); + if (node instanceof IASTPreprocessorStatement) + tree.setFiltersFlag(TreeObject.FLAG_PREPROCESSOR); } /* (non-Javadoc) diff --git a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/CPopulateASTViewAction.java b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/CPopulateASTViewAction.java index ae2cadf188c..1d0610fbd11 100644 --- a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/CPopulateASTViewAction.java +++ b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/CPopulateASTViewAction.java @@ -24,6 +24,7 @@ import org.eclipse.cdt.core.dom.ast.IASTParameterDeclaration; import org.eclipse.cdt.core.dom.ast.IASTPointerOperator; import org.eclipse.cdt.core.dom.ast.IASTPreprocessorIncludeStatement; import org.eclipse.cdt.core.dom.ast.IASTPreprocessorMacroDefinition; +import org.eclipse.cdt.core.dom.ast.IASTPreprocessorStatement; import org.eclipse.cdt.core.dom.ast.IASTProblem; import org.eclipse.cdt.core.dom.ast.IASTProblemHolder; import org.eclipse.cdt.core.dom.ast.IASTStatement; @@ -75,10 +76,13 @@ public class CPopulateASTViewAction extends CBaseVisitorAction implements IPopul TreeParent tree = new TreeParent(node); parent.addChild(tree); + // set filter flags if (node instanceof IASTProblemHolder) tree.setFiltersFlag(TreeObject.FLAG_PROBLEM); if (node instanceof IASTProblem) tree.setFiltersFlag(TreeObject.FLAG_PROBLEM); + if (node instanceof IASTPreprocessorStatement) + tree.setFiltersFlag(TreeObject.FLAG_PREPROCESSOR); } /* (non-Javadoc) diff --git a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/PreprocessorFilter.java b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/PreprocessorFilter.java new file mode 100644 index 00000000000..07e9fbad91d --- /dev/null +++ b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/PreprocessorFilter.java @@ -0,0 +1,39 @@ +/********************************************************************** + * Copyright (c) 2005 IBM Canada and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v0.5 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v05.html + * + * Contributors: + * IBM Rational Software - Initial API and implementation + **********************************************************************/ +package org.eclipse.cdt.ui.tests.DOMAST; + +import org.eclipse.cdt.core.dom.ast.IASTPreprocessorStatement; +import org.eclipse.jface.viewers.Viewer; +import org.eclipse.jface.viewers.ViewerFilter; + +/** + * @author dsteffle + */ +public class PreprocessorFilter extends ViewerFilter { + + /* (non-Javadoc) + * @see org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object) + */ + public boolean select(Viewer viewer, Object parentElement, Object element) { + if (element instanceof TreeObject) { + int flag = ((TreeObject)element).getFiltersFlag() & TreeObject.FLAG_PREPROCESSOR; + if (flag > 0) { + if (((TreeObject)element).getNode() instanceof IASTPreprocessorStatement) + return false; + + return true; + } + } + + return true; + } + +} diff --git a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/ProblemHolderFilter.java b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/ProblemHolderFilter.java index 266ed72b6e1..0ebd2742d5e 100644 --- a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/ProblemHolderFilter.java +++ b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/ProblemHolderFilter.java @@ -10,6 +10,9 @@ **********************************************************************/ package org.eclipse.cdt.ui.tests.DOMAST; +import org.eclipse.cdt.core.dom.ast.IASTNode; +import org.eclipse.cdt.core.dom.ast.IASTProblem; +import org.eclipse.cdt.core.dom.ast.IASTProblemHolder; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerFilter; @@ -24,12 +27,17 @@ public class ProblemHolderFilter extends ViewerFilter { public boolean select(Viewer viewer, Object parentElement, Object element) { if (element instanceof TreeObject) { int flag = ((TreeObject)element).getFiltersFlag() & TreeObject.FLAG_PROBLEM; - if (flag != 0) { + if (flag > 0) { + IASTNode node = ((TreeObject)element).getNode(); + if (node instanceof IASTProblem || + node instanceof IASTProblemHolder) + return false; + return true; } } - return false; + return true; } } diff --git a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/TreeObject.java b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/TreeObject.java index 1e9e7073f97..dbcd7fd363c 100644 --- a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/TreeObject.java +++ b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/TreeObject.java @@ -121,6 +121,7 @@ public class TreeObject implements IAdaptable { // all parents of the desired tree object to display need to have a flag as well private int filterFlag = 0; public static final int FLAG_PROBLEM = 0x1; + public static final int FLAG_PREPROCESSOR = 0x2; public TreeObject(IASTNode node) { this.node = node;