1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-06-09 10:46:02 +02:00

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
This commit is contained in:
John Camelon 2005-02-08 00:44:18 +00:00
parent 9813808d70
commit 2e1c3b3f50
6 changed files with 66 additions and 2 deletions

View file

@ -103,6 +103,14 @@
class="org.eclipse.cdt.ui.tests.DOMAST.ProblemHolderFilter" class="org.eclipse.cdt.ui.tests.DOMAST.ProblemHolderFilter"
id="org.eclipse.cdt.ui.tests.DOMAST.DOMAST.ProblemHolderFilter"> id="org.eclipse.cdt.ui.tests.DOMAST.DOMAST.ProblemHolderFilter">
</filter> </filter>
<filter
targetId="org.eclipse.cdt.ui.tests.DOMAST.DOMASTFilterGroup"
name="Preprocessor Filter"
enabled="false"
description="Filter Preprocessor Statements"
class="org.eclipse.cdt.ui.tests.DOMAST.PreprocessorFilter"
id="org.eclipse.cdt.ui.tests.DOMAST.DOMAST.PreprocessorFilter">
</filter>
</extension> </extension>

View file

@ -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.IASTPointerOperator;
import org.eclipse.cdt.core.dom.ast.IASTPreprocessorIncludeStatement; import org.eclipse.cdt.core.dom.ast.IASTPreprocessorIncludeStatement;
import org.eclipse.cdt.core.dom.ast.IASTPreprocessorMacroDefinition; 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.IASTProblem;
import org.eclipse.cdt.core.dom.ast.IASTProblemHolder; import org.eclipse.cdt.core.dom.ast.IASTProblemHolder;
import org.eclipse.cdt.core.dom.ast.IASTStatement; import org.eclipse.cdt.core.dom.ast.IASTStatement;
@ -74,10 +75,13 @@ public class CPPPopulateASTViewAction extends CPPBaseVisitorAction implements IP
TreeParent tree = new TreeParent(node); TreeParent tree = new TreeParent(node);
parent.addChild(tree); parent.addChild(tree);
// set filter flags
if (node instanceof IASTProblemHolder) if (node instanceof IASTProblemHolder)
tree.setFiltersFlag(TreeObject.FLAG_PROBLEM); tree.setFiltersFlag(TreeObject.FLAG_PROBLEM);
if (node instanceof IASTProblem) if (node instanceof IASTProblem)
tree.setFiltersFlag(TreeObject.FLAG_PROBLEM); tree.setFiltersFlag(TreeObject.FLAG_PROBLEM);
if (node instanceof IASTPreprocessorStatement)
tree.setFiltersFlag(TreeObject.FLAG_PREPROCESSOR);
} }
/* (non-Javadoc) /* (non-Javadoc)

View file

@ -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.IASTPointerOperator;
import org.eclipse.cdt.core.dom.ast.IASTPreprocessorIncludeStatement; import org.eclipse.cdt.core.dom.ast.IASTPreprocessorIncludeStatement;
import org.eclipse.cdt.core.dom.ast.IASTPreprocessorMacroDefinition; 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.IASTProblem;
import org.eclipse.cdt.core.dom.ast.IASTProblemHolder; import org.eclipse.cdt.core.dom.ast.IASTProblemHolder;
import org.eclipse.cdt.core.dom.ast.IASTStatement; import org.eclipse.cdt.core.dom.ast.IASTStatement;
@ -75,10 +76,13 @@ public class CPopulateASTViewAction extends CBaseVisitorAction implements IPopul
TreeParent tree = new TreeParent(node); TreeParent tree = new TreeParent(node);
parent.addChild(tree); parent.addChild(tree);
// set filter flags
if (node instanceof IASTProblemHolder) if (node instanceof IASTProblemHolder)
tree.setFiltersFlag(TreeObject.FLAG_PROBLEM); tree.setFiltersFlag(TreeObject.FLAG_PROBLEM);
if (node instanceof IASTProblem) if (node instanceof IASTProblem)
tree.setFiltersFlag(TreeObject.FLAG_PROBLEM); tree.setFiltersFlag(TreeObject.FLAG_PROBLEM);
if (node instanceof IASTPreprocessorStatement)
tree.setFiltersFlag(TreeObject.FLAG_PREPROCESSOR);
} }
/* (non-Javadoc) /* (non-Javadoc)

View file

@ -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;
}
}

View file

@ -10,6 +10,9 @@
**********************************************************************/ **********************************************************************/
package org.eclipse.cdt.ui.tests.DOMAST; 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.Viewer;
import org.eclipse.jface.viewers.ViewerFilter; import org.eclipse.jface.viewers.ViewerFilter;
@ -24,12 +27,17 @@ public class ProblemHolderFilter extends ViewerFilter {
public boolean select(Viewer viewer, Object parentElement, Object element) { public boolean select(Viewer viewer, Object parentElement, Object element) {
if (element instanceof TreeObject) { if (element instanceof TreeObject) {
int flag = ((TreeObject)element).getFiltersFlag() & TreeObject.FLAG_PROBLEM; 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 true;
} }
} }
return false; return true;
} }
} }

View file

@ -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 // all parents of the desired tree object to display need to have a flag as well
private int filterFlag = 0; private int filterFlag = 0;
public static final int FLAG_PROBLEM = 0x1; public static final int FLAG_PROBLEM = 0x1;
public static final int FLAG_PREPROCESSOR = 0x2;
public TreeObject(IASTNode node) { public TreeObject(IASTNode node) {
this.node = node; this.node = node;