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:
parent
9813808d70
commit
2e1c3b3f50
6 changed files with 66 additions and 2 deletions
|
@ -103,6 +103,14 @@
|
|||
class="org.eclipse.cdt.ui.tests.DOMAST.ProblemHolderFilter"
|
||||
id="org.eclipse.cdt.ui.tests.DOMAST.DOMAST.ProblemHolderFilter">
|
||||
</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>
|
||||
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Add table
Reference in a new issue