diff --git a/core/org.eclipse.cdt.ui.tests/icons/dom_view/brkpd_obj.gif b/core/org.eclipse.cdt.ui.tests/icons/dom_view/brkpd_obj.gif new file mode 100644 index 00000000000..8e8cac5a9d7 Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/dom_view/brkpd_obj.gif differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/dom_view/cdeclaration_obj.gif b/core/org.eclipse.cdt.ui.tests/icons/dom_view/cdeclaration_obj.gif new file mode 100644 index 00000000000..d079ebb14fa Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/dom_view/cdeclaration_obj.gif differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/dom_view/clear.gif b/core/org.eclipse.cdt.ui.tests/icons/dom_view/clear.gif new file mode 100644 index 00000000000..ffb59e4ebec Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/dom_view/clear.gif differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/dom_view/collapseall.gif b/core/org.eclipse.cdt.ui.tests/icons/dom_view/collapseall.gif new file mode 100644 index 00000000000..dc923f5e826 Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/dom_view/collapseall.gif differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/dom_view/define_obj.gif b/core/org.eclipse.cdt.ui.tests/icons/dom_view/define_obj.gif new file mode 100644 index 00000000000..b3ddb5deebc Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/dom_view/define_obj.gif differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/dom_view/disassembly.gif b/core/org.eclipse.cdt.ui.tests/icons/dom_view/disassembly.gif new file mode 100644 index 00000000000..dbde1a090aa Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/dom_view/disassembly.gif differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/dom_view/enumerator_obj.gif b/core/org.eclipse.cdt.ui.tests/icons/dom_view/enumerator_obj.gif new file mode 100644 index 00000000000..a73f31a81f6 Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/dom_view/enumerator_obj.gif differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/dom_view/expandall.gif b/core/org.eclipse.cdt.ui.tests/icons/dom_view/expandall.gif new file mode 100644 index 00000000000..c4a67bb21f6 Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/dom_view/expandall.gif differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/dom_view/expression_obj.gif b/core/org.eclipse.cdt.ui.tests/icons/dom_view/expression_obj.gif new file mode 100644 index 00000000000..870df5c473a Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/dom_view/expression_obj.gif differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/dom_view/jump_co.gif b/core/org.eclipse.cdt.ui.tests/icons/dom_view/jump_co.gif new file mode 100644 index 00000000000..0107e2ecc6c Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/dom_view/jump_co.gif differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/dom_view/method_public_obj.gif b/core/org.eclipse.cdt.ui.tests/icons/dom_view/method_public_obj.gif new file mode 100644 index 00000000000..18103b11fc7 Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/dom_view/method_public_obj.gif differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/dom_view/output_obj.gif b/core/org.eclipse.cdt.ui.tests/icons/dom_view/output_obj.gif new file mode 100644 index 00000000000..d90a51c0220 Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/dom_view/output_obj.gif differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/dom_view/search_ref_obj.gif b/core/org.eclipse.cdt.ui.tests/icons/dom_view/search_ref_obj.gif new file mode 100644 index 00000000000..1b0c43bc1ee Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/dom_view/search_ref_obj.gif differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/dom_view/showasarray_co.gif b/core/org.eclipse.cdt.ui.tests/icons/dom_view/showasarray_co.gif new file mode 100644 index 00000000000..a87ddbf9ca8 Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/dom_view/showasarray_co.gif differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/dom_view/source_attach_attrib.gif b/core/org.eclipse.cdt.ui.tests/icons/dom_view/source_attach_attrib.gif new file mode 100644 index 00000000000..3976f8f7913 Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/dom_view/source_attach_attrib.gif differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/dom_view/statement_obj.gif b/core/org.eclipse.cdt.ui.tests/icons/dom_view/statement_obj.gif new file mode 100644 index 00000000000..eccb83c6975 Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/dom_view/statement_obj.gif differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/dom_view/tnames_co.gif b/core/org.eclipse.cdt.ui.tests/icons/dom_view/tnames_co.gif new file mode 100644 index 00000000000..764201b3783 Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/dom_view/tnames_co.gif differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/dom_view/types.gif b/core/org.eclipse.cdt.ui.tests/icons/dom_view/types.gif new file mode 100644 index 00000000000..5ba5b91c5bb Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/dom_view/types.gif differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/dom_view/var_declaration_obj.gif b/core/org.eclipse.cdt.ui.tests/icons/dom_view/var_declaration_obj.gif new file mode 100644 index 00000000000..74a3d222c70 Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/dom_view/var_declaration_obj.gif differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/dom_view/var_pointer.gif b/core/org.eclipse.cdt.ui.tests/icons/dom_view/var_pointer.gif new file mode 100644 index 00000000000..ca17bd232f6 Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/dom_view/var_pointer.gif differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/dom_view/var_simple.gif b/core/org.eclipse.cdt.ui.tests/icons/dom_view/var_simple.gif new file mode 100644 index 00000000000..600d968f7cf Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/dom_view/var_simple.gif differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/dom_view/variable_local_obj.gif b/core/org.eclipse.cdt.ui.tests/icons/dom_view/variable_local_obj.gif new file mode 100644 index 00000000000..461c4e79feb Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/dom_view/variable_local_obj.gif differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/dom_view/variable_obj.gif b/core/org.eclipse.cdt.ui.tests/icons/dom_view/variable_obj.gif new file mode 100644 index 00000000000..9fa6383efc9 Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/dom_view/variable_obj.gif differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/dom_view/warning_obj.gif b/core/org.eclipse.cdt.ui.tests/icons/dom_view/warning_obj.gif new file mode 100644 index 00000000000..cf8d571833d Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/dom_view/warning_obj.gif differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/dom_view/watch_globals.gif b/core/org.eclipse.cdt.ui.tests/icons/dom_view/watch_globals.gif new file mode 100644 index 00000000000..797b0e0e7b4 Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/dom_view/watch_globals.gif differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/indexer_view/class_obj.gif b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/class_obj.gif new file mode 100644 index 00000000000..a4a14864987 Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/class_obj.gif differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/indexer_view/constructor_obj.gif b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/constructor_obj.gif new file mode 100644 index 00000000000..2b76d36edf5 Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/constructor_obj.gif differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/indexer_view/constructor_ref_obj.GIF b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/constructor_ref_obj.GIF new file mode 100644 index 00000000000..9d9ff734748 Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/constructor_ref_obj.GIF differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/indexer_view/derived.gif b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/derived.gif new file mode 100644 index 00000000000..beecb160a02 Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/derived.gif differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/indexer_view/enum_obj.gif b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/enum_obj.gif new file mode 100644 index 00000000000..4a77d8cf115 Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/enum_obj.gif differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/indexer_view/enumerator_obj.gif b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/enumerator_obj.gif new file mode 100644 index 00000000000..a73f31a81f6 Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/enumerator_obj.gif differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/indexer_view/enumerator_ref_obj.GIF b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/enumerator_ref_obj.GIF new file mode 100644 index 00000000000..6c4c4e208e4 Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/enumerator_ref_obj.GIF differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/indexer_view/field_obj.gif b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/field_obj.gif new file mode 100644 index 00000000000..19d27defb62 Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/field_obj.gif differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/indexer_view/field_ref_obj.GIF b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/field_ref_obj.GIF new file mode 100644 index 00000000000..cec8a3646e4 Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/field_ref_obj.GIF differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/indexer_view/filterbutton.gif b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/filterbutton.gif new file mode 100644 index 00000000000..c3a89302e5e Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/filterbutton.gif differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/indexer_view/friend.gif b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/friend.gif new file mode 100644 index 00000000000..a9a08d038fd Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/friend.gif differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/indexer_view/function_obj.gif b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/function_obj.gif new file mode 100644 index 00000000000..e44ceee9c04 Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/function_obj.gif differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/indexer_view/function_ref_obj.GIF b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/function_ref_obj.GIF new file mode 100644 index 00000000000..c644c3e3d68 Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/function_ref_obj.GIF differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/indexer_view/fwd_class.gif b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/fwd_class.gif new file mode 100644 index 00000000000..51396ef6114 Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/fwd_class.gif differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/indexer_view/fwd_struct.GIF b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/fwd_struct.GIF new file mode 100644 index 00000000000..c5052b9ee4a Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/fwd_struct.GIF differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/indexer_view/fwd_union.GIF b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/fwd_union.GIF new file mode 100644 index 00000000000..8396e8eeb89 Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/fwd_union.GIF differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/indexer_view/include_obj.gif b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/include_obj.gif new file mode 100644 index 00000000000..2cc5866a64c Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/include_obj.gif differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/indexer_view/macroDecl_obj.gif b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/macroDecl_obj.gif new file mode 100644 index 00000000000..b3ddb5deebc Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/macroDecl_obj.gif differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/indexer_view/method_public_obj.gif b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/method_public_obj.gif new file mode 100644 index 00000000000..18103b11fc7 Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/method_public_obj.gif differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/indexer_view/method_public_ref_obj.GIF b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/method_public_ref_obj.GIF new file mode 100644 index 00000000000..3bca3e8eda4 Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/method_public_ref_obj.GIF differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/indexer_view/namespace_obj.gif b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/namespace_obj.gif new file mode 100644 index 00000000000..d495f3e790a Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/namespace_obj.gif differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/indexer_view/namespace_ref_obj.GIF b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/namespace_ref_obj.GIF new file mode 100644 index 00000000000..dbda5b32a7c Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/namespace_ref_obj.GIF differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/indexer_view/ngback.gif b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/ngback.gif new file mode 100644 index 00000000000..86f437113b7 Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/ngback.gif differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/indexer_view/ngnext.gif b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/ngnext.gif new file mode 100644 index 00000000000..874563abfb2 Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/ngnext.gif differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/indexer_view/ref_obj.gif b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/ref_obj.gif new file mode 100644 index 00000000000..7ef1a62ba7d Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/ref_obj.gif differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/indexer_view/struct_obj.gif b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/struct_obj.gif new file mode 100644 index 00000000000..cb2869f2488 Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/struct_obj.gif differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/indexer_view/super_co.gif b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/super_co.gif new file mode 100644 index 00000000000..59ac11633f2 Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/super_co.gif differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/indexer_view/typedecl_obj.gif b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/typedecl_obj.gif new file mode 100644 index 00000000000..7e3ace3e77b Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/typedecl_obj.gif differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/indexer_view/typedecl_ref_obj.GIF b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/typedecl_ref_obj.GIF new file mode 100644 index 00000000000..fd9a7989f42 Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/typedecl_ref_obj.GIF differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/indexer_view/typedef_obj.gif b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/typedef_obj.gif new file mode 100644 index 00000000000..34bcaf71351 Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/typedef_obj.gif differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/indexer_view/union_obj.gif b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/union_obj.gif new file mode 100644 index 00000000000..b8405d54bb4 Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/union_obj.gif differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/indexer_view/variable_obj.gif b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/variable_obj.gif new file mode 100644 index 00000000000..600d968f7cf Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/variable_obj.gif differ diff --git a/core/org.eclipse.cdt.ui.tests/icons/indexer_view/warning_icon.gif b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/warning_icon.gif new file mode 100644 index 00000000000..cf8d571833d Binary files /dev/null and b/core/org.eclipse.cdt.ui.tests/icons/indexer_view/warning_icon.gif differ diff --git a/core/org.eclipse.cdt.ui.tests/plugin.xml b/core/org.eclipse.cdt.ui.tests/plugin.xml index 1f8d3e2181e..83c621813b6 100644 --- a/core/org.eclipse.cdt.ui.tests/plugin.xml +++ b/core/org.eclipse.cdt.ui.tests/plugin.xml @@ -56,6 +56,14 @@ name="DOM AST" id="org.eclipse.cdt.ui.tests.DOMAST.DOMAST"> + @@ -72,8 +80,17 @@ + targetID="#CEditorContext" + id="org.eclipse.cdt.ui.tests.cEditorContribution"> + + + + id="org.eclipse.cdt.ui.CView2" + targetID="org.eclipse.cdt.ui.CView"> + class="org.eclipse.cdt.ui.tests.IndexerView.OpenIndexerViewAction" + id="org.eclipse.cdt.ui.tests.IndexerView.OpenIndexerViewAction" + label="Show in Indexer View" + menubarPath="additions"/> + + + + + - 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 56129ed6691..fb20aa131b8 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 @@ -65,12 +65,12 @@ public class CPPPopulateASTViewAction extends CPPASTVisitor implements IPopulate shouldVisitNamespaces = true; } - TreeParent root = null; + DOMASTNodeParent root = null; IProgressMonitor monitor = null; IASTProblem[] astProblems = new IASTProblem[INITIAL_PROBLEM_SIZE]; public CPPPopulateASTViewAction(IASTTranslationUnit tu, IProgressMonitor monitor) { - root = new TreeParent(tu); + root = new DOMASTNodeParent(tu); this.monitor = monitor; } @@ -85,17 +85,17 @@ public class CPPPopulateASTViewAction extends CPPASTVisitor implements IPopulate nodeLocations[0].getNodeLength() > 0)) return PROCESS_CONTINUE; - TreeParent parent = root.findTreeParentForNode(node); + DOMASTNodeParent parent = root.findTreeParentForNode(node); if (parent == null) parent = root; - TreeParent tree = new TreeParent(node); + DOMASTNodeParent tree = new DOMASTNodeParent(node); parent.addChild(tree); // set filter flags if (node instanceof IASTProblemHolder || node instanceof IASTProblem) { - tree.setFiltersFlag(TreeObject.FLAG_PROBLEM); + tree.setFiltersFlag(DOMASTNodeLeaf.FLAG_PROBLEM); if (node instanceof IASTProblemHolder) astProblems = (IASTProblem[])ArrayUtil.append(IASTProblem.class, astProblems, ((IASTProblemHolder)node).getProblem()); @@ -103,9 +103,9 @@ public class CPPPopulateASTViewAction extends CPPASTVisitor implements IPopulate astProblems = (IASTProblem[])ArrayUtil.append(IASTProblem.class, astProblems, node); } if (node instanceof IASTPreprocessorStatement) - tree.setFiltersFlag(TreeObject.FLAG_PREPROCESSOR); + tree.setFiltersFlag(DOMASTNodeLeaf.FLAG_PREPROCESSOR); if (node instanceof IASTPreprocessorIncludeStatement) - tree.setFiltersFlag(TreeObject.FLAG_INCLUDE_STATEMENTS); + tree.setFiltersFlag(DOMASTNodeLeaf.FLAG_INCLUDE_STATEMENTS); return PROCESS_CONTINUE; } @@ -248,7 +248,7 @@ public class CPPPopulateASTViewAction extends CPPASTVisitor implements IPopulate } } - public TreeParent getTree() { + public DOMASTNodeParent getTree() { return root; } @@ -269,7 +269,7 @@ public class CPPPopulateASTViewAction extends CPPASTVisitor implements IPopulate } // get the tree model elements corresponding to the includes - TreeParent[] treeIncludes = new TreeParent[index]; + DOMASTNodeParent[] treeIncludes = new DOMASTNodeParent[index]; for (int i=0; i=0; i--) { if (treeIncludes[i] == null) continue; 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 f97398222eb..efd0765eb39 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 @@ -58,12 +58,12 @@ public class CPopulateASTViewAction extends CASTVisitor implements IPopulateDOMA shouldVisitEnumerators = true; } - TreeParent root = null; + DOMASTNodeParent root = null; IProgressMonitor monitor = null; IASTProblem[] astProblems = new IASTProblem[INITIAL_PROBLEM_SIZE]; public CPopulateASTViewAction(IASTTranslationUnit tu, IProgressMonitor monitor) { - root = new TreeParent(tu); + root = new DOMASTNodeParent(tu); this.monitor = monitor; } @@ -77,17 +77,17 @@ public class CPopulateASTViewAction extends CASTVisitor implements IPopulateDOMA nodeLocations[0].getNodeLength() > 0)) return PROCESS_CONTINUE; - TreeParent parent = root.findTreeParentForNode(node); + DOMASTNodeParent parent = root.findTreeParentForNode(node); if (parent == null) parent = root; - TreeParent tree = new TreeParent(node); + DOMASTNodeParent tree = new DOMASTNodeParent(node); parent.addChild(tree); // set filter flags if (node instanceof IASTProblemHolder || node instanceof IASTProblem) { - tree.setFiltersFlag(TreeObject.FLAG_PROBLEM); + tree.setFiltersFlag(DOMASTNodeLeaf.FLAG_PROBLEM); if (node instanceof IASTProblemHolder) astProblems = (IASTProblem[])ArrayUtil.append(IASTProblem.class, astProblems, ((IASTProblemHolder)node).getProblem()); @@ -95,9 +95,9 @@ public class CPopulateASTViewAction extends CASTVisitor implements IPopulateDOMA astProblems = (IASTProblem[])ArrayUtil.append(IASTProblem.class, astProblems, node); } if (node instanceof IASTPreprocessorStatement) - tree.setFiltersFlag(TreeObject.FLAG_PREPROCESSOR); + tree.setFiltersFlag(DOMASTNodeLeaf.FLAG_PREPROCESSOR); if (node instanceof IASTPreprocessorIncludeStatement) - tree.setFiltersFlag(TreeObject.FLAG_INCLUDE_STATEMENTS); + tree.setFiltersFlag(DOMASTNodeLeaf.FLAG_INCLUDE_STATEMENTS); @@ -221,7 +221,7 @@ public class CPopulateASTViewAction extends CASTVisitor implements IPopulateDOMA } } - public TreeParent getTree() { + public DOMASTNodeParent getTree() { return root; } @@ -242,7 +242,7 @@ public class CPopulateASTViewAction extends CASTVisitor implements IPopulateDOMA } // get the tree model elements corresponding to the includes - TreeParent[] treeIncludes = new TreeParent[index]; + DOMASTNodeParent[] treeIncludes = new DOMASTNodeParent[index]; for (int i=0; i=0; i--) { if (treeIncludes[i] == null) continue; diff --git a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/DOMAST.java b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/DOMAST.java index 5bd0097bf95..0d8883384ad 100644 --- a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/DOMAST.java +++ b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/DOMAST.java @@ -110,6 +110,7 @@ import org.eclipse.ui.views.properties.PropertySheet; */ public class DOMAST extends ViewPart { + public static final String VIEW_ID = "org.eclipse.cdt.ui.tests.DOMAST.DOMAST"; //$NON-NLS-1$ private static final String PROPERTIES_VIEW = "org.eclipse.ui.views.PropertySheet"; //$NON-NLS-1$ private static final String ASTUTIL_MENU_LABEL = "ASTUtil#"; //$NON-NLS-1$ private static final String DISPLAY_TYPE = "getNodeType(IASTNode)"; //$NON-NLS-1$ @@ -168,8 +169,8 @@ public class DOMAST extends ViewPart { public class ViewContentProvider implements IStructuredContentProvider, ITreeContentProvider { private static final String POPULATING_AST_VIEW = "Populating AST View"; //$NON-NLS-1$ - private TreeParent invisibleRoot; - private TreeParent tuTreeParent = null; + private DOMASTNodeParent invisibleRoot; + private DOMASTNodeParent tuTreeParent = null; private IASTTranslationUnit tu = null; private IASTProblem[] astProblems = null; @@ -186,11 +187,11 @@ public class DOMAST extends ViewPart { } - public TreeParent getTUTreeParent() { + public DOMASTNodeParent getTUTreeParent() { if (tuTreeParent == null && invisibleRoot != null) { for(int i=0; i=0; i--) { if (nodeChain[i] != null) { parentToFind = nodeChain[i]; - for(; j>=0; j--) { // use the TreeParent's index to start searching at the end of it's children (performance optimization) - if (j=0; j--) { // use the DOMASTNodeParent's index to start searching at the end of it's children (performance optimization) + if (j=0; i--) { if (nodeChain[i] != null) { nodeToFind = nodeChain[i]; for(int j=0; j 0) { - IASTNode node = ((TreeObject)element).getNode(); + IASTNode node = ((DOMASTNodeLeaf)element).getNode(); if (node instanceof IASTPreprocessorIncludeStatement) return false; diff --git a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/OpenDOMViewAction.java b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/OpenDOMViewAction.java index 58328a8bf04..5a6a225ade6 100644 --- a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/OpenDOMViewAction.java +++ b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/OpenDOMViewAction.java @@ -35,7 +35,6 @@ import org.eclipse.ui.PartInitException; */ public class OpenDOMViewAction implements IViewActionDelegate, IEditorActionDelegate, IObjectActionDelegate { - public static final String VIEW_ID = "org.eclipse.cdt.ui.tests.DOMAST.DOMAST"; //$NON-NLS-1$ IViewPart viewPart = null; ISelection selection = null; IFile file = null; @@ -76,7 +75,7 @@ public class OpenDOMViewAction implements IViewActionDelegate, IEditorActionDele IViewPart tempView = null; try { - tempView = viewPart.getSite().getPage().showView(VIEW_ID); + tempView = viewPart.getSite().getPage().showView(DOMAST.VIEW_ID); } catch (PartInitException pie) {} if (tempView != null) { 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 index 07e9fbad91d..c77fc1db41d 100644 --- 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 @@ -23,10 +23,10 @@ public class PreprocessorFilter extends ViewerFilter { * @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 (element instanceof DOMASTNodeLeaf) { + int flag = ((DOMASTNodeLeaf)element).getFiltersFlag() & DOMASTNodeLeaf.FLAG_PREPROCESSOR; if (flag > 0) { - if (((TreeObject)element).getNode() instanceof IASTPreprocessorStatement) + if (((DOMASTNodeLeaf)element).getNode() instanceof IASTPreprocessorStatement) return false; 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 0ebd2742d5e..e10fd9e8a6a 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 @@ -25,10 +25,10 @@ public class ProblemHolderFilter extends ViewerFilter { * @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_PROBLEM; + if (element instanceof DOMASTNodeLeaf) { + int flag = ((DOMASTNodeLeaf)element).getFiltersFlag() & DOMASTNodeLeaf.FLAG_PROBLEM; if (flag > 0) { - IASTNode node = ((TreeObject)element).getNode(); + IASTNode node = ((DOMASTNodeLeaf)element).getNode(); if (node instanceof IASTProblem || node instanceof IASTProblemHolder) return false; diff --git a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/ShowInDOMViewAction.java b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/ShowInDOMViewAction.java index 1769991a880..c69eb4a6e15 100644 --- a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/ShowInDOMViewAction.java +++ b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/DOMAST/ShowInDOMViewAction.java @@ -84,7 +84,7 @@ public class ShowInDOMViewAction extends ActionDelegate implements if (file == null) return false; try { - view = editor.getSite().getPage().showView(OpenDOMViewAction.VIEW_ID); + view = editor.getSite().getPage().showView(DOMAST.VIEW_ID); } catch (PartInitException pie) {} if (view instanceof DOMAST) { diff --git a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/IndexerView/FilterIndexerViewDialog.java b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/IndexerView/FilterIndexerViewDialog.java new file mode 100644 index 00000000000..9593d3f90fb --- /dev/null +++ b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/IndexerView/FilterIndexerViewDialog.java @@ -0,0 +1,846 @@ +/********************************************************************** + * 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.IndexerView; + +import java.util.Collection; +import java.util.HashSet; +import java.util.Set; + +import org.eclipse.cdt.internal.core.search.indexing.IIndexConstants; +import org.eclipse.cdt.ui.CUIPlugin; +import org.eclipse.cdt.ui.browser.typeinfo.TypeInfoMessages; +import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.dialogs.IDialogConstants; +import org.eclipse.jface.dialogs.IDialogSettings; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.graphics.Point; +import org.eclipse.swt.graphics.Rectangle; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.swt.widgets.Text; + +/** + * @author dsteffle + */ +public class FilterIndexerViewDialog extends Dialog { + + private static final String BLANK_STRING = ""; //$NON-NLS-1$ + private static final String PAGE_SIZE_ = "Page Size:"; //$NON-NLS-1$ + private static final String TYPESELECTIONDIALOG_FILTERLABEL = "TypeSelectionDialog.filterLabel"; //$NON-NLS-1$ + private static final String FILTER_INDEXER_RESULTS = "Filter Indexer Results"; //$NON-NLS-1$ + private static final String SETTINGS = "Settings"; //$NON-NLS-1$ + private static final String PAGE_SIZE = "PAGE_SIZE"; //$NON-NLS-1$ + private String fFilter = BLANK_STRING; //$NON-NLS-1$ + Text filterText = null; + private String pageSize = BLANK_STRING; //$NON-NLS-1$ + Text pageSizeText = null; + protected Collection fFilterMatcher = new HashSet(); + + private String message = "Filter Indexer Results (. = any character, .* = any string):"; //$NON-NLS-1$ + + public static final int ENTRY_REF = 1; + public static final String ENTRY_REF_STRING = String.valueOf(IIndexConstants.REF); + public static final int ENTRY_TYPE_REF = 2; + public static final String ENTRY_TYPE_REF_STRING = String.valueOf(IIndexConstants.TYPE_REF); + public static final String ENTRY_TYPE_DECL_STRING = String.valueOf(IIndexConstants.TYPE_DECL); + public static final int ENTRY_FUNCTION_REF = 4; + public static final String ENTRY_FUNCTION_REF_STRING = String.valueOf(IIndexConstants.FUNCTION_REF); + public static final int ENTRY_FUNCTION_DECL = 5; + public static final String ENTRY_FUNCTION_DECL_STRING = String.valueOf(IIndexConstants.FUNCTION_DECL); + public static final int ENTRY_CONSTRUCTOR_REF = 6; + public static final String ENTRY_CONSTRUCTOR_REF_STRING = String.valueOf(IIndexConstants.CONSTRUCTOR_REF); + public static final int ENTRY_CONSTRUCTOR_DECL = 7; + public static final String ENTRY_CONSTRUCTOR_DECL_STRING = String.valueOf(IIndexConstants.CONSTRUCTOR_DECL); + public static final int ENTRY_NAMESPACE_REF = 8; + public static final String ENTRY_NAMESPACE_REF_STRING = String.valueOf(IIndexConstants.NAMESPACE_REF); + public static final int ENTRY_NAMESPACE_DECL = 9; + public static final String ENTRY_NAMESPACE_DECL_STRING = String.valueOf(IIndexConstants.NAMESPACE_DECL); + public static final int ENTRY_FIELD_REF = 10; + public static final String ENTRY_FIELD_REF_STRING = String.valueOf(IIndexConstants.FIELD_REF); + public static final int ENTRY_FIELD_DECL = 11; + public static final String ENTRY_FIELD_DECL_STRING = String.valueOf(IIndexConstants.FIELD_DECL); + public static final int ENTRY_ENUMTOR_REF = 12; + public static final String ENTRY_ENUMTOR_REF_STRING = String.valueOf(IIndexConstants.ENUMTOR_REF); + public static final int ENTRY_ENUMTOR_DECL = 13; + public static final String ENTRY_ENUMTOR_DECL_STRING = String.valueOf(IIndexConstants.ENUMTOR_DECL); + public static final int ENTRY_METHOD_REF = 14; + public static final String ENTRY_METHOD_REF_STRING = String.valueOf(IIndexConstants.METHOD_REF); + public static final int ENTRY_METHOD_DECL = 15; + public static final String ENTRY_METHOD_DECL_STRING = String.valueOf(IIndexConstants.METHOD_DECL); + public static final int ENTRY_MACRO_DECL = 16; + public static final String ENTRY_MACRO_DECL_STRING = String.valueOf(IIndexConstants.MACRO_DECL); + public static final int ENTRY_INCLUDE_REF = 17; + public static final String ENTRY_INCLUDE_REF_STRING = String.valueOf(IIndexConstants.INCLUDE_REF); + public static final int ENTRY_SUPER_REF = 18; + public static final String ENTRY_SUPER_REF_STRING = String.valueOf(IIndexConstants.SUPER_REF); + public static final int ENTRY_TYPE_DECL_T = 19; + public static final String ENTRY_TYPE_DECL_T_STRING = String.valueOf(IIndexConstants.TYPEDEF_DECL); + public static final int ENTRY_TYPE_DECL_C = 20; + public static final String ENTRY_TYPE_DECL_C_STRING = String.valueOf(IIndexConstants.CLASS_DECL); + public static final int ENTRY_TYPE_DECL_V = 21; + public static final String ENTRY_TYPE_DECL_V_STRING = String.valueOf(IIndexConstants.VAR_DECL); + public static final int ENTRY_TYPE_DECL_S = 22; + public static final String ENTRY_TYPE_DECL_S_STRING = String.valueOf(IIndexConstants.STRUCT_DECL); + public static final int ENTRY_TYPE_DECL_E = 23; + public static final String ENTRY_TYPE_DECL_E_STRING = String.valueOf(IIndexConstants.ENUM_DECL); + public static final int ENTRY_TYPE_DECL_U = 24; + public static final String ENTRY_TYPE_DECL_U_STRING = String.valueOf(IIndexConstants.UNION_DECL); + public static final int ENTRY_TYPE_DECL_D = 25; + public static final String ENTRY_TYPE_DECL_D_STRING = String.valueOf(IIndexConstants.TYPE_DECL) + String.valueOf(IIndexConstants.DERIVED_SUFFIX) + String.valueOf(IIndexConstants.SEPARATOR); + public static final int ENTRY_TYPE_DECL_F = 26; + public static final String ENTRY_TYPE_DECL_F_STRING = String.valueOf(IIndexConstants.TYPE_DECL) + String.valueOf(IIndexConstants.FRIEND_SUFFIX) + String.valueOf(IIndexConstants.SEPARATOR); + public static final int ENTRY_TYPE_DECL_G = 27; + public static final String ENTRY_TYPE_DECL_G_STRING = String.valueOf(IIndexConstants.TYPE_DECL) + String.valueOf(IIndexConstants.FWD_CLASS_SUFFIX) + String.valueOf(IIndexConstants.SEPARATOR); + public static final int ENTRY_TYPE_DECL_H = 28; + public static final String ENTRY_TYPE_DECL_H_STRING = String.valueOf(IIndexConstants.TYPE_DECL) + String.valueOf(IIndexConstants.FWD_STRUCT_SUFFIX) + String.valueOf(IIndexConstants.SEPARATOR); + public static final int ENTRY_TYPE_DECL_I = 29; + public static final String ENTRY_TYPE_DECL_I_STRING = String.valueOf(IIndexConstants.TYPE_DECL) + String.valueOf(IIndexConstants.FWD_UNION_SUFFIX) + String.valueOf(IIndexConstants.SEPARATOR); + + private String fDialogSection; + + private static final String DIALOG_SETTINGS = FilterIndexerViewDialog.class.getName(); + private static final String SETTINGS_X_POS = "x"; //$NON-NLS-1$ + private static final String SETTINGS_Y_POS = "y"; //$NON-NLS-1$ + private static final String SETTINGS_WIDTH = "width"; //$NON-NLS-1$ + private static final String SETTINGS_HEIGHT = "height"; //$NON-NLS-1$ + + private Point fLocation; + private Point fSize; + + IndexerNodeParent root = null; + + private String projName = null; + + private static final int[] fAllTypes = { ENTRY_REF, ENTRY_TYPE_REF, + ENTRY_FUNCTION_REF, ENTRY_FUNCTION_DECL, // ENTRY_TYPE_DECL, + ENTRY_CONSTRUCTOR_REF, ENTRY_CONSTRUCTOR_DECL, ENTRY_NAMESPACE_REF, + ENTRY_NAMESPACE_DECL, ENTRY_FIELD_REF, ENTRY_FIELD_DECL, + ENTRY_ENUMTOR_REF, ENTRY_ENUMTOR_DECL, ENTRY_METHOD_REF, + ENTRY_METHOD_DECL, ENTRY_MACRO_DECL, ENTRY_INCLUDE_REF, + ENTRY_SUPER_REF, ENTRY_TYPE_DECL_T, ENTRY_TYPE_DECL_C, + ENTRY_TYPE_DECL_V, ENTRY_TYPE_DECL_S, ENTRY_TYPE_DECL_E, + ENTRY_TYPE_DECL_U, ENTRY_TYPE_DECL_D, ENTRY_TYPE_DECL_F, + ENTRY_TYPE_DECL_G, ENTRY_TYPE_DECL_H, ENTRY_TYPE_DECL_I }; + + private Set fKnownTypes = new HashSet(fAllTypes.length); + + protected FilterIndexerViewDialog(Shell parentShell, IndexerNodeParent root, String projName) { + super(parentShell); + + this.root = root; + this.projName = projName; + + setVisibleTypes(fAllTypes); + setDialogSettings(DIALOG_SETTINGS); + } + + /** + * Sets section name to use when storing the dialog settings. + * + * @param section Name of section. + */ + public void setDialogSettings(String section) { + fDialogSection = section + SETTINGS + projName; + } + + public boolean close() { + return super.close(); + } + + /* + * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell) + */ + protected void configureShell(Shell newShell) { + super.configureShell(newShell); + newShell.setText(FILTER_INDEXER_RESULTS); + } + + /* + * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite) + */ + protected Control createDialogArea(Composite parent) { + readSettings(getDialogSettings()); + + Composite composite = new Composite(parent, SWT.NONE); + GridLayout layout = new GridLayout(); + layout.marginHeight = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN); + layout.marginWidth = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN); + layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING); + layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING); + composite.setLayout(layout); + composite.setLayoutData(new GridData(GridData.FILL_BOTH)); + applyDialogFont(composite); + + createMessageArea(composite); + createFilterText(composite); + createTypeFilterArea(composite); + createPageSizeArea(composite); + + return composite; + } + + /** + * Creates a label if name was not null. + * + * @param parent + * the parent composite. + * @param name + * the name of the label. + * @return returns a label if a name was given, null + * otherwise. + */ + protected Label createLabel(Composite parent, String name) { + if (name == null) + return null; + Label label = new Label(parent, SWT.NONE); + label.setText(name); + label.setFont(parent.getFont()); + return label; + } + + /** + * Sets which CElement types are visible in the dialog. + * + * @param types + * Array of CElement types. + */ + public void setVisibleTypes(int[] types) { + fKnownTypes.clear(); + for (int i = 0; i < types.length; ++i) { + fKnownTypes.add(new Integer(types[i])); + } + } + + /** + * Creates a type filter checkbox. + */ + private void createTypeCheckbox(Composite parent, Integer typeObject) { + String name; + int type = typeObject.intValue(); + switch (type) { + case ENTRY_REF: + name = ENTRY_REF_STRING; + break; + case ENTRY_TYPE_REF: + name = ENTRY_TYPE_REF_STRING; + break; +// case ENTRY_TYPE_DECL: +// name = ENTRY_TYPE_DECL_STRING; +// break; + case ENTRY_FUNCTION_REF: + name = ENTRY_FUNCTION_REF_STRING; + break; + case ENTRY_FUNCTION_DECL: + name = ENTRY_FUNCTION_DECL_STRING; + break; + case ENTRY_CONSTRUCTOR_REF: + name = ENTRY_CONSTRUCTOR_REF_STRING; + break; + case ENTRY_CONSTRUCTOR_DECL: + name = ENTRY_CONSTRUCTOR_DECL_STRING; + break; + case ENTRY_NAMESPACE_REF: + name = ENTRY_NAMESPACE_REF_STRING; + break; + case ENTRY_NAMESPACE_DECL: + name = ENTRY_NAMESPACE_DECL_STRING; + break; + case ENTRY_FIELD_REF: + name = ENTRY_FIELD_REF_STRING; + break; + case ENTRY_FIELD_DECL: + name = ENTRY_FIELD_DECL_STRING; + break; + case ENTRY_ENUMTOR_REF: + name = ENTRY_ENUMTOR_REF_STRING; + break; + case ENTRY_ENUMTOR_DECL: + name = ENTRY_ENUMTOR_DECL_STRING; + break; + case ENTRY_METHOD_REF: + name = ENTRY_METHOD_REF_STRING; + break; + case ENTRY_METHOD_DECL: + name = ENTRY_METHOD_DECL_STRING; + break; + case ENTRY_MACRO_DECL: + name = ENTRY_MACRO_DECL_STRING; + break; + case ENTRY_INCLUDE_REF: + name = ENTRY_INCLUDE_REF_STRING; + break; + case ENTRY_SUPER_REF: + name = ENTRY_SUPER_REF_STRING; + break; + case ENTRY_TYPE_DECL_T: + name = ENTRY_TYPE_DECL_T_STRING; + break; + case ENTRY_TYPE_DECL_C: + name = ENTRY_TYPE_DECL_C_STRING; + break; + case ENTRY_TYPE_DECL_V: + name = ENTRY_TYPE_DECL_V_STRING; + break; + case ENTRY_TYPE_DECL_S: + name = ENTRY_TYPE_DECL_S_STRING; + break; + case ENTRY_TYPE_DECL_E: + name = ENTRY_TYPE_DECL_E_STRING; + break; + case ENTRY_TYPE_DECL_U: + name = ENTRY_TYPE_DECL_U_STRING; + break; + case ENTRY_TYPE_DECL_D: + name = ENTRY_TYPE_DECL_D_STRING; + break; + case ENTRY_TYPE_DECL_F: + name = ENTRY_TYPE_DECL_F_STRING; + break; + case ENTRY_TYPE_DECL_G: + name = ENTRY_TYPE_DECL_G_STRING; + break; + case ENTRY_TYPE_DECL_H: + name = ENTRY_TYPE_DECL_H_STRING; + break; + case ENTRY_TYPE_DECL_I: + name = ENTRY_TYPE_DECL_I_STRING; + break; + default: + return; + } + Image icon = getTypeIcon(type); + + Composite composite = new Composite(parent, SWT.NONE); + GridLayout layout = new GridLayout(2, false); + layout.marginHeight = 0; + composite.setLayout(layout); + + final Integer fTypeObject = typeObject; + Button checkbox = new Button(composite, SWT.CHECK); + checkbox.setFont(composite.getFont()); + checkbox.setImage(icon); + checkbox.setSelection(fFilterMatcher.contains(fTypeObject)); + checkbox.addSelectionListener(new SelectionAdapter() { + public void widgetSelected(SelectionEvent e) { + if (e.widget instanceof Button) { + Button aCheckbox = (Button) e.widget; + if (aCheckbox.getSelection()) + fFilterMatcher.add(fTypeObject); + else + fFilterMatcher.remove(fTypeObject); + } + } + }); + + Label label = new Label(composite, SWT.LEFT); + label.setFont(composite.getFont()); + label.setText(name); + } + + private Image getTypeIcon(int type) + { + switch (type) + { + case ENTRY_REF: + return IndexerViewPluginImages.get(IndexerViewPluginImages.IMG_REF); + case ENTRY_TYPE_REF: + return IndexerViewPluginImages.get(IndexerViewPluginImages.IMG_TYPE_REF); +// case ENTRY_TYPE_DECL: +// return IndexerViewPluginImages.get(IndexerViewPluginImages.IMG_TYPE_DECL); + case ENTRY_FUNCTION_REF: + return IndexerViewPluginImages.get(IndexerViewPluginImages.IMG_FUNCTION_REF); + case ENTRY_FUNCTION_DECL: + return IndexerViewPluginImages.get(IndexerViewPluginImages.IMG_FUNCTION_DECL); + case ENTRY_CONSTRUCTOR_REF: + return IndexerViewPluginImages.get(IndexerViewPluginImages.IMG_CONSTRUCTOR_REF); + case ENTRY_CONSTRUCTOR_DECL: + return IndexerViewPluginImages.get(IndexerViewPluginImages.IMG_CONSTRUCTOR_DECL); + case ENTRY_NAMESPACE_REF: + return IndexerViewPluginImages.get(IndexerViewPluginImages.IMG_NAMESPACE_REF); + case ENTRY_NAMESPACE_DECL: + return IndexerViewPluginImages.get(IndexerViewPluginImages.IMG_NAMESPACE_DECL); + case ENTRY_FIELD_REF: + return IndexerViewPluginImages.get(IndexerViewPluginImages.IMG_FIELD_REF); + case ENTRY_FIELD_DECL: + return IndexerViewPluginImages.get(IndexerViewPluginImages.IMG_FIELD_DECL); + case ENTRY_ENUMTOR_REF: + return IndexerViewPluginImages.get(IndexerViewPluginImages.IMG_ENUMTOR_REF); + case ENTRY_ENUMTOR_DECL: + return IndexerViewPluginImages.get(IndexerViewPluginImages.IMG_ENUMTOR_DECL); + case ENTRY_METHOD_REF: + return IndexerViewPluginImages.get(IndexerViewPluginImages.IMG_METHOD_REF); + case ENTRY_METHOD_DECL: + return IndexerViewPluginImages.get(IndexerViewPluginImages.IMG_METHOD_DECL); + case ENTRY_MACRO_DECL: + return IndexerViewPluginImages.get(IndexerViewPluginImages.IMG_MACRO_DECL); + case ENTRY_INCLUDE_REF: + return IndexerViewPluginImages.get(IndexerViewPluginImages.IMG_INCLUDE_REF); + case ENTRY_SUPER_REF: + return IndexerViewPluginImages.get(IndexerViewPluginImages.IMG_SUPER_REF); + case ENTRY_TYPE_DECL_T: + return IndexerViewPluginImages.get(IndexerViewPluginImages.IMG_TYPEDEF); + case ENTRY_TYPE_DECL_C: + return IndexerViewPluginImages.get(IndexerViewPluginImages.IMG_CLASS); + case ENTRY_TYPE_DECL_V: + return IndexerViewPluginImages.get(IndexerViewPluginImages.IMG_VARIABLE); + case ENTRY_TYPE_DECL_S: + return IndexerViewPluginImages.get(IndexerViewPluginImages.IMG_STRUCT); + case ENTRY_TYPE_DECL_E: + return IndexerViewPluginImages.get(IndexerViewPluginImages.IMG_ENUM); + case ENTRY_TYPE_DECL_U: + return IndexerViewPluginImages.get(IndexerViewPluginImages.IMG_UNION); + case ENTRY_TYPE_DECL_D: + return IndexerViewPluginImages.get(IndexerViewPluginImages.IMG_DERIVED); + case ENTRY_TYPE_DECL_F: + return IndexerViewPluginImages.get(IndexerViewPluginImages.IMG_FRIEND); + case ENTRY_TYPE_DECL_G: + return IndexerViewPluginImages.get(IndexerViewPluginImages.IMG_FWD_CLASS); + case ENTRY_TYPE_DECL_H: + return IndexerViewPluginImages.get(IndexerViewPluginImages.IMG_FWD_STRUCT); + case ENTRY_TYPE_DECL_I: + return IndexerViewPluginImages.get(IndexerViewPluginImages.IMG_FWD_UNION); + default: + return IndexerViewPluginImages.get(IndexerViewPluginImages.IMG_WARNING); + } + } + + /** + * Creates an area to filter types. + * + * @param parent + * area to create controls in + */ + private void createTypeFilterArea(Composite parent) { + createLabel(parent, TypeInfoMessages + .getString(TYPESELECTIONDIALOG_FILTERLABEL)); + + Composite upperRow = new Composite(parent, SWT.NONE); + GridLayout upperLayout = new GridLayout(3, true); + upperLayout.verticalSpacing = 2; + upperLayout.marginHeight = 0; + upperLayout.marginWidth = 0; + upperRow.setLayout(upperLayout); + + // the for loop is here to guarantee we always + // create the checkboxes in the same order + for (int i = 0; i < fAllTypes.length; ++i) { + Integer typeObject = new Integer(fAllTypes[i]); + if (fKnownTypes.contains(typeObject)) + createTypeCheckbox(upperRow, typeObject); + } + + Composite lowerRow = new Composite(parent, SWT.NONE); + GridLayout lowerLayout = new GridLayout(1, true); + lowerLayout.verticalSpacing = 2; + lowerLayout.marginHeight = 0; + upperLayout.marginWidth = 0; + lowerRow.setLayout(lowerLayout); + + Composite composite = new Composite(lowerRow, SWT.NONE); + GridLayout layout = new GridLayout(2, false); + layout.marginHeight = 0; + layout.marginWidth = 0; + composite.setLayout(layout); + } + + /** + * Creates an area to filter types. + * + * @param parent + * area to create controls in + */ + private void createPageSizeArea(Composite parent) { + createLabel(parent, PAGE_SIZE_); + + pageSizeText = new Text(parent, SWT.BORDER); + + GridData data = new GridData(); + data.grabExcessVerticalSpace = false; + data.grabExcessHorizontalSpace = true; + data.horizontalAlignment = GridData.FILL; + data.verticalAlignment = GridData.BEGINNING; + pageSizeText.setLayoutData(data); + pageSizeText.setFont(parent.getFont()); + + pageSizeText.setText((pageSize == null ? BLANK_STRING : pageSize)); + } + + /** + * Creates the message text widget and sets layout data. + * + * @param composite + * the parent composite of the message area. + */ + protected Label createMessageArea(Composite composite) { + Label label = new Label(composite, SWT.NONE); + if (message != null) { + label.setText(message); + } + label.setFont(composite.getFont()); + + GridData data = new GridData(); + data.grabExcessVerticalSpace = false; + data.grabExcessHorizontalSpace = true; + data.horizontalAlignment = GridData.FILL; + data.verticalAlignment = GridData.BEGINNING; + label.setLayoutData(data); + + return label; + } + + protected Text createFilterText(Composite parent) { + filterText = new Text(parent, SWT.BORDER); + + GridData data = new GridData(); + data.grabExcessVerticalSpace = false; + data.grabExcessHorizontalSpace = true; + data.horizontalAlignment = GridData.FILL; + data.verticalAlignment = GridData.BEGINNING; + filterText.setLayoutData(data); + filterText.setFont(parent.getFont()); + + filterText.setText((fFilter == null ? BLANK_STRING : fFilter)); + + return filterText; + } + + /* + * @see org.eclipse.jface.dialogs.Dialog#buttonPressed(int) + */ + protected void buttonPressed(int buttonId) { + if (buttonId == IDialogConstants.OK_ID) { + apply(); + } + + super.buttonPressed(buttonId); + } + + public IDialogSettings getDialogSettings() { + IDialogSettings allSettings = CUIPlugin.getDefault().getDialogSettings(); + IDialogSettings section = allSettings.getSection(fDialogSection); + if (section == null) { + section = allSettings.addNewSection(fDialogSection); + writeDefaultSettings(section); + } + return section; + } + + /** + * Stores current configuration in the dialog store. + */ + protected void writeSettings(IDialogSettings section) { + Point location = getShell().getLocation(); + section.put(SETTINGS_X_POS, location.x); + section.put(SETTINGS_Y_POS, location.y); + + Point size = getShell().getSize(); + section.put(SETTINGS_WIDTH, size.x); + section.put(SETTINGS_HEIGHT, size.y); + + section.put(ENTRY_REF_STRING, fFilterMatcher.contains(new Integer(ENTRY_REF))); + section.put(ENTRY_TYPE_REF_STRING, fFilterMatcher.contains(new Integer(ENTRY_TYPE_REF))); +// section.put(ENTRY_TYPE_DECL_STRING, fFilterMatcher.contains(new Integer(ENTRY_TYPE_DECL))); + section.put(ENTRY_FUNCTION_REF_STRING, fFilterMatcher.contains(new Integer(ENTRY_FUNCTION_REF))); + section.put(ENTRY_FUNCTION_DECL_STRING, fFilterMatcher.contains(new Integer(ENTRY_FUNCTION_DECL))); + section.put(ENTRY_CONSTRUCTOR_REF_STRING, fFilterMatcher.contains(new Integer(ENTRY_CONSTRUCTOR_REF))); + section.put(ENTRY_CONSTRUCTOR_DECL_STRING, fFilterMatcher.contains(new Integer(ENTRY_CONSTRUCTOR_DECL))); + section.put(ENTRY_NAMESPACE_REF_STRING, fFilterMatcher.contains(new Integer(ENTRY_NAMESPACE_REF))); + section.put(ENTRY_NAMESPACE_DECL_STRING, fFilterMatcher.contains(new Integer(ENTRY_NAMESPACE_DECL))); + section.put(ENTRY_FIELD_REF_STRING, fFilterMatcher.contains(new Integer(ENTRY_FIELD_REF))); + section.put(ENTRY_FIELD_DECL_STRING, fFilterMatcher.contains(new Integer(ENTRY_FIELD_DECL))); + section.put(ENTRY_ENUMTOR_REF_STRING, fFilterMatcher.contains(new Integer(ENTRY_ENUMTOR_REF))); + section.put(ENTRY_ENUMTOR_DECL_STRING, fFilterMatcher.contains(new Integer(ENTRY_ENUMTOR_DECL))); + section.put(ENTRY_METHOD_REF_STRING, fFilterMatcher.contains(new Integer(ENTRY_METHOD_REF))); + section.put(ENTRY_METHOD_DECL_STRING, fFilterMatcher.contains(new Integer(ENTRY_METHOD_DECL))); + section.put(ENTRY_MACRO_DECL_STRING, fFilterMatcher.contains(new Integer(ENTRY_MACRO_DECL))); + section.put(ENTRY_INCLUDE_REF_STRING, fFilterMatcher.contains(new Integer(ENTRY_INCLUDE_REF))); + section.put(ENTRY_SUPER_REF_STRING, fFilterMatcher.contains(new Integer(ENTRY_SUPER_REF))); + section.put(ENTRY_TYPE_DECL_T_STRING, fFilterMatcher.contains(new Integer(ENTRY_TYPE_DECL_T))); + section.put(ENTRY_TYPE_DECL_C_STRING, fFilterMatcher.contains(new Integer(ENTRY_TYPE_DECL_C))); + section.put(ENTRY_TYPE_DECL_V_STRING, fFilterMatcher.contains(new Integer(ENTRY_TYPE_DECL_V))); + section.put(ENTRY_TYPE_DECL_S_STRING, fFilterMatcher.contains(new Integer(ENTRY_TYPE_DECL_S))); + section.put(ENTRY_TYPE_DECL_E_STRING, fFilterMatcher.contains(new Integer(ENTRY_TYPE_DECL_E))); + section.put(ENTRY_TYPE_DECL_U_STRING, fFilterMatcher.contains(new Integer(ENTRY_TYPE_DECL_U))); + section.put(ENTRY_TYPE_DECL_D_STRING, fFilterMatcher.contains(new Integer(ENTRY_TYPE_DECL_D))); + section.put(ENTRY_TYPE_DECL_F_STRING, fFilterMatcher.contains(new Integer(ENTRY_TYPE_DECL_F))); + section.put(ENTRY_TYPE_DECL_G_STRING, fFilterMatcher.contains(new Integer(ENTRY_TYPE_DECL_G))); + section.put(ENTRY_TYPE_DECL_H_STRING, fFilterMatcher.contains(new Integer(ENTRY_TYPE_DECL_H))); + section.put(ENTRY_TYPE_DECL_I_STRING, fFilterMatcher.contains(new Integer(ENTRY_TYPE_DECL_I))); + + section.put(PAGE_SIZE, pageSize); + } + + /** + * Stores default dialog settings. + */ + protected void writeDefaultSettings(IDialogSettings section) { + section.put(ENTRY_REF_STRING, true); + section.put(ENTRY_TYPE_REF_STRING, true); +// section.put(ENTRY_TYPE_DECL_STRING, true); + section.put(ENTRY_FUNCTION_REF_STRING, true); + section.put(ENTRY_FUNCTION_DECL_STRING, true); + section.put(ENTRY_CONSTRUCTOR_REF_STRING, true); + section.put(ENTRY_CONSTRUCTOR_DECL_STRING, true); + section.put(ENTRY_NAMESPACE_REF_STRING, true); + section.put(ENTRY_NAMESPACE_DECL_STRING, true); + section.put(ENTRY_FIELD_REF_STRING, true); + section.put(ENTRY_FIELD_DECL_STRING, true); + section.put(ENTRY_ENUMTOR_REF_STRING, true); + section.put(ENTRY_ENUMTOR_DECL_STRING, true); + section.put(ENTRY_METHOD_REF_STRING, true); + section.put(ENTRY_METHOD_DECL_STRING, true); + section.put(ENTRY_MACRO_DECL_STRING, true); + section.put(ENTRY_INCLUDE_REF_STRING, true); + section.put(ENTRY_SUPER_REF_STRING, true); + section.put(ENTRY_TYPE_DECL_T_STRING, true); + section.put(ENTRY_TYPE_DECL_C_STRING, true); + section.put(ENTRY_TYPE_DECL_V_STRING, true); + section.put(ENTRY_TYPE_DECL_S_STRING, true); + section.put(ENTRY_TYPE_DECL_E_STRING, true); + section.put(ENTRY_TYPE_DECL_U_STRING, true); + section.put(ENTRY_TYPE_DECL_D_STRING, true); + section.put(ENTRY_TYPE_DECL_F_STRING, true); + section.put(ENTRY_TYPE_DECL_G_STRING, true); + section.put(ENTRY_TYPE_DECL_H_STRING, true); + section.put(ENTRY_TYPE_DECL_I_STRING, true); + + section.put(PAGE_SIZE, IndexerNodeParent.PAGE_SIZE); + } + + protected Point getInitialLocation(Point initialSize) { + Point result = super.getInitialLocation(initialSize); + if (fLocation != null) { + result.x = fLocation.x; + result.y = fLocation.y; + Rectangle display = getShell().getDisplay().getClientArea(); + int xe = result.x + initialSize.x; + if (xe > display.width) { + result.x -= xe - display.width; + } + int ye = result.y + initialSize.y; + if (ye > display.height) { + result.y -= ye - display.height; + } + } + return result; + } + + protected Point getInitialSize() { + Point result = super.getInitialSize(); + if (fSize != null) { + result.x = Math.max(result.x, fSize.x); + result.y = Math.max(result.y, fSize.y); + Rectangle display = getShell().getDisplay().getClientArea(); + result.x = Math.min(result.x, display.width); + result.y = Math.min(result.y, display.height); + } + return result; + } + + /** + * Initializes itself from the dialog settings with the same state + * as at the previous invocation. + */ + public void readSettings(IDialogSettings section) { + try { + int x = section.getInt(SETTINGS_X_POS); + int y = section.getInt(SETTINGS_Y_POS); + fLocation = new Point(x, y); + int width = section.getInt(SETTINGS_WIDTH); + int height = section.getInt(SETTINGS_HEIGHT); + fSize = new Point(width, height); + + pageSize = String.valueOf(section.getInt(PAGE_SIZE)); + } catch (NumberFormatException e) { + fLocation = null; + fSize = null; + } + + if (section.getBoolean(ENTRY_REF_STRING)) { + Integer typeObject = new Integer(ENTRY_REF); + if (fKnownTypes.contains(typeObject)) + fFilterMatcher.add(typeObject); + } + if (section.getBoolean(ENTRY_TYPE_REF_STRING)) { + Integer typeObject = new Integer(ENTRY_TYPE_REF); + if (fKnownTypes.contains(typeObject)) + fFilterMatcher.add(typeObject); + } +// if (section.getBoolean(ENTRY_TYPE_DECL_STRING)) { +// Integer typeObject = new Integer(ENTRY_TYPE_DECL); +// if (fKnownTypes.contains(typeObject)) +// fFilterMatcher.add(typeObject); +// } + if (section.getBoolean(ENTRY_FUNCTION_REF_STRING)) { + Integer typeObject = new Integer(ENTRY_FUNCTION_REF); + if (fKnownTypes.contains(typeObject)) + fFilterMatcher.add(typeObject); + } + if (section.getBoolean(ENTRY_FUNCTION_DECL_STRING)) { + Integer typeObject = new Integer(ENTRY_FUNCTION_DECL); + if (fKnownTypes.contains(typeObject)) + fFilterMatcher.add(typeObject); + } + if (section.getBoolean(ENTRY_CONSTRUCTOR_REF_STRING)) { + Integer typeObject = new Integer(ENTRY_CONSTRUCTOR_REF); + if (fKnownTypes.contains(typeObject)) + fFilterMatcher.add(typeObject); + } + if (section.getBoolean(ENTRY_CONSTRUCTOR_DECL_STRING)) { + Integer typeObject = new Integer(ENTRY_CONSTRUCTOR_DECL); + if (fKnownTypes.contains(typeObject)) + fFilterMatcher.add(typeObject); + } + if (section.getBoolean(ENTRY_NAMESPACE_REF_STRING)) { + Integer typeObject = new Integer(ENTRY_NAMESPACE_REF); + if (fKnownTypes.contains(typeObject)) + fFilterMatcher.add(typeObject); + } + if (section.getBoolean(ENTRY_NAMESPACE_DECL_STRING)) { + Integer typeObject = new Integer(ENTRY_NAMESPACE_DECL); + if (fKnownTypes.contains(typeObject)) + fFilterMatcher.add(typeObject); + } + if (section.getBoolean(ENTRY_FIELD_REF_STRING)) { + Integer typeObject = new Integer(ENTRY_FIELD_REF); + if (fKnownTypes.contains(typeObject)) + fFilterMatcher.add(typeObject); + } + if (section.getBoolean(ENTRY_FIELD_DECL_STRING)) { + Integer typeObject = new Integer(ENTRY_FIELD_DECL); + if (fKnownTypes.contains(typeObject)) + fFilterMatcher.add(typeObject); + } + if (section.getBoolean(ENTRY_ENUMTOR_REF_STRING)) { + Integer typeObject = new Integer(ENTRY_ENUMTOR_REF); + if (fKnownTypes.contains(typeObject)) + fFilterMatcher.add(typeObject); + } + if (section.getBoolean(ENTRY_ENUMTOR_DECL_STRING)) { + Integer typeObject = new Integer(ENTRY_ENUMTOR_DECL); + if (fKnownTypes.contains(typeObject)) + fFilterMatcher.add(typeObject); + } + if (section.getBoolean(ENTRY_METHOD_REF_STRING)) { + Integer typeObject = new Integer(ENTRY_METHOD_REF); + if (fKnownTypes.contains(typeObject)) + fFilterMatcher.add(typeObject); + } + if (section.getBoolean(ENTRY_METHOD_DECL_STRING)) { + Integer typeObject = new Integer(ENTRY_METHOD_DECL); + if (fKnownTypes.contains(typeObject)) + fFilterMatcher.add(typeObject); + } + if (section.getBoolean(ENTRY_MACRO_DECL_STRING)) { + Integer typeObject = new Integer(ENTRY_MACRO_DECL); + if (fKnownTypes.contains(typeObject)) + fFilterMatcher.add(typeObject); + } + if (section.getBoolean(ENTRY_INCLUDE_REF_STRING)) { + Integer typeObject = new Integer(ENTRY_INCLUDE_REF); + if (fKnownTypes.contains(typeObject)) + fFilterMatcher.add(typeObject); + } + if (section.getBoolean(ENTRY_SUPER_REF_STRING)) { + Integer typeObject = new Integer(ENTRY_SUPER_REF); + if (fKnownTypes.contains(typeObject)) + fFilterMatcher.add(typeObject); + } + if (section.getBoolean(ENTRY_TYPE_DECL_T_STRING)) { + Integer typeObject = new Integer(ENTRY_TYPE_DECL_T); + if (fKnownTypes.contains(typeObject)) + fFilterMatcher.add(typeObject); + } + if (section.getBoolean(ENTRY_TYPE_DECL_C_STRING)) { + Integer typeObject = new Integer(ENTRY_TYPE_DECL_C); + if (fKnownTypes.contains(typeObject)) + fFilterMatcher.add(typeObject); + } + if (section.getBoolean(ENTRY_TYPE_DECL_V_STRING)) { + Integer typeObject = new Integer(ENTRY_TYPE_DECL_V); + if (fKnownTypes.contains(typeObject)) + fFilterMatcher.add(typeObject); + } + if (section.getBoolean(ENTRY_TYPE_DECL_S_STRING)) { + Integer typeObject = new Integer(ENTRY_TYPE_DECL_S); + if (fKnownTypes.contains(typeObject)) + fFilterMatcher.add(typeObject); + } + if (section.getBoolean(ENTRY_TYPE_DECL_E_STRING)) { + Integer typeObject = new Integer(ENTRY_TYPE_DECL_E); + if (fKnownTypes.contains(typeObject)) + fFilterMatcher.add(typeObject); + } + if (section.getBoolean(ENTRY_TYPE_DECL_U_STRING)) { + Integer typeObject = new Integer(ENTRY_TYPE_DECL_U); + if (fKnownTypes.contains(typeObject)) + fFilterMatcher.add(typeObject); + } + if (section.getBoolean(ENTRY_TYPE_DECL_D_STRING)) { + Integer typeObject = new Integer(ENTRY_TYPE_DECL_D); + if (fKnownTypes.contains(typeObject)) + fFilterMatcher.add(typeObject); + } + if (section.getBoolean(ENTRY_TYPE_DECL_F_STRING)) { + Integer typeObject = new Integer(ENTRY_TYPE_DECL_F); + if (fKnownTypes.contains(typeObject)) + fFilterMatcher.add(typeObject); + } + if (section.getBoolean(ENTRY_TYPE_DECL_G_STRING)) { + Integer typeObject = new Integer(ENTRY_TYPE_DECL_G); + if (fKnownTypes.contains(typeObject)) + fFilterMatcher.add(typeObject); + } + if (section.getBoolean(ENTRY_TYPE_DECL_H_STRING)) { + Integer typeObject = new Integer(ENTRY_TYPE_DECL_H); + if (fKnownTypes.contains(typeObject)) + fFilterMatcher.add(typeObject); + } + if (section.getBoolean(ENTRY_TYPE_DECL_I_STRING)) { + Integer typeObject = new Integer(ENTRY_TYPE_DECL_I); + if (fKnownTypes.contains(typeObject)) + fFilterMatcher.add(typeObject); + } + } + + public IndexerFilterManager createFilterManager() { + return new IndexerFilterManager(fFilterMatcher, fFilter); + } + + private void apply() { + fFilter = filterText.getText(); + pageSize = pageSizeText.getText(); + writeSettings(getDialogSettings()); + root.setFilterManager(fFilterMatcher, fFilter); + + int size=IndexerNodeParent.PAGE_SIZE; + try { + size = Integer.valueOf(pageSize).intValue(); + if (size<=0) size=IndexerNodeParent.PAGE_SIZE; + } catch (NumberFormatException e) {} + + root.setPageSize(size); + root.reset(); + } + + public String getPageSize() { + return pageSize; + } + +} diff --git a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/IndexerView/IndexerFilterManager.java b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/IndexerView/IndexerFilterManager.java new file mode 100644 index 00000000000..2a7cf120409 --- /dev/null +++ b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/IndexerView/IndexerFilterManager.java @@ -0,0 +1,51 @@ +/********************************************************************** + * 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.IndexerView; + +import java.util.Collection; + +/** + * @author dsteffle + */ +public class IndexerFilterManager { + private static final String BLANK_STRING = ""; //$NON-NLS-1$ + private static final String COMMA_SEPARATOR = ","; //$NON-NLS-1$ + Collection filters = null; + String nameFilter = null; + + public IndexerFilterManager(Collection filters, String nameFilter) { + this.filters = filters; + this.nameFilter = nameFilter; + } + + public boolean isFiltered(IndexerNodeLeaf leaf) { + String[] nameFilters = nameFilter.split(COMMA_SEPARATOR); + for(int i=0; i 0) { + boolean matchesPattern=false; + for(int l=0; l 0) end = word.indexOf(IIndexConstants.SEPARATOR, word.indexOf(stringBeforeName) + stringBeforeName.length() ); + name = word.substring(word.indexOf(stringBeforeName) + stringBeforeName.length(), end); + + } + + public IndexerNodeParent getParent() { + return parent; + } + + public void setParent(IndexerNodeParent parent) { + this.parent = parent; + } + + public Object getAdapter(Class adapter) { + if (adapter == IPropertySource.class) + return new IndexerPropertySource(result); + + return null; + } + + private class IndexerPropertySource implements IPropertySource { + + private static final String IENTRYRESULT = "IEntryResult"; //$NON-NLS-1$ + private static final String IENTRYRESULT_GETWORD__ = "IEntryResult#getWord()"; //$NON-NLS-1$ + private static final String REFERENCES = "References"; //$NON-NLS-1$ + private static final String REFERENCE_NUMBER_ = "reference# "; //$NON-NLS-1$ + private static final int DEFAULT_DESCRIPTOR_SIZE = 4; + IEntryResult entryResult = null; + + public IndexerPropertySource(IEntryResult result) { + this.entryResult = result; + } + + public Object getEditableValue() { + return null; + } + + public IPropertyDescriptor[] getPropertyDescriptors() { + IPropertyDescriptor[] descriptors = new IPropertyDescriptor[DEFAULT_DESCRIPTOR_SIZE]; + + TextPropertyDescriptor text = null; + + IndexInput input = new BlocksIndexInput(indexFile); + try { + input.open(); + + // get the reference descriptors + int[] references = entryResult.getFileReferences(); + if (references != null) { + for (int j = 0; j < references.length; ++j) { + IndexedFile file = input.getIndexedFile(references[j]); + if (file != null && file.getPath() != null) { + String id = REFERENCE_NUMBER_ + String.valueOf(j); + text = new TextPropertyDescriptor(new TextDescriptorId(id, PathUtil.getWorkspaceRelativePath(file.getPath()).toOSString()), id); + text.setCategory(REFERENCES); + descriptors = (IPropertyDescriptor[])ArrayUtil.append(IPropertyDescriptor.class, descriptors, text); + } + } + } + + // add a word descriptor + text = new TextPropertyDescriptor(new TextDescriptorId(IENTRYRESULT_GETWORD__, String.valueOf(entryResult.getWord())), IENTRYRESULT_GETWORD__); + text.setCategory(IENTRYRESULT); + descriptors = (IPropertyDescriptor[])ArrayUtil.append(IPropertyDescriptor.class, descriptors, text); + + } catch (IOException e) { + } + + return (IPropertyDescriptor[])ArrayUtil.trim(IPropertyDescriptor.class, descriptors); + } + + private class TextDescriptorId { + String id = null; + String file = null; + + public TextDescriptorId(String id, String file) { + this.id=id; + this.file=file; + } + + public String getFile() { + return file; + } + + } + + public Object getPropertyValue(Object id) { + if (id instanceof TextDescriptorId) { + return ((TextDescriptorId)id).getFile(); + } + + return null; + } + + public boolean isPropertySet(Object id) { + return false; + } + + public void resetPropertyValue(Object id) { } + + public void setPropertyValue(Object id, Object value) { } + + } + + public IEntryResult getResult() { + return result; + } + + public void setResult(IEntryResult result) { + this.result = result; + } + + public String toString() { + return name; + } + + public int getFiltersType() { + return filtersType; + } + + public char getType() { + return type; + } + + public String getName() { + return name; + } +} diff --git a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/IndexerView/IndexerNodeParent.java b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/IndexerView/IndexerNodeParent.java new file mode 100644 index 00000000000..7cdf9a9d0ad --- /dev/null +++ b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/IndexerView/IndexerNodeParent.java @@ -0,0 +1,177 @@ +/********************************************************************** + * 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.IndexerView; + +import java.io.File; +import java.util.Collection; + +import org.eclipse.cdt.core.parser.util.ArrayUtil; +import org.eclipse.cdt.internal.core.index.IEntryResult; +import org.eclipse.cdt.ui.testplugin.CTestPlugin; + +/** + * @author dsteffle + */ +public class IndexerNodeParent extends IndexerNodeLeaf { + public static final int PAGE_SIZE = 40; + private int pageSize=PAGE_SIZE; + private static final IndexerNodeLeaf[] EMPTY_INDEXER_NODE_LEAVES = new IndexerNodeLeaf[0]; + private IndexerNodeLeaf[] children = EMPTY_INDEXER_NODE_LEAVES; + private IndexerNodeLeaf[] childrenToDisplay = new IndexerNodeLeaf[PAGE_SIZE]; + private int lastBackwardDisplayed = 0; + private int lastForwardDisplayed=0; + private boolean isForward=true; + private boolean firstDisplay=true; + private IndexerFilterManager filterManager = null; + private IndexerView.ViewContentProvider view=null; + + public IndexerNodeParent(IEntryResult result, File indexerFile, IndexerView.ViewContentProvider view) { + super(result, indexerFile); + + // create an IndexerFilterManager using the FilterIndexerViewDialog (since all of the work is done there anyways) + FilterIndexerViewDialog dialog = new FilterIndexerViewDialog(CTestPlugin.getStandardDisplay().getActiveShell(), this, view.getProjectName()); + dialog.readSettings(dialog.getDialogSettings()); + filterManager = dialog.createFilterManager(); + + try { + pageSize = Integer.valueOf(dialog.getPageSize()).intValue(); + } catch (NumberFormatException e) {} + + this.view = view; + } + + public IndexerNodeLeaf[] getChildren() { + // if there is nothing to display return an empty list + if (children.length == 0) return EMPTY_INDEXER_NODE_LEAVES; + // obey the bounds of the list! + if (!firstDisplay && (!isForward && lastBackwardDisplayed==0 || + isForward && lastForwardDisplayed==children.length-1)) { + if (isForward) + view.setDisplayForwards(false); + else + view.setDisplayBackwards(false); + + return (IndexerNodeLeaf[])ArrayUtil.removeNulls(IndexerNodeLeaf.class, childrenToDisplay); + } + + int start=0; + if (isForward) { + if (lastForwardDisplayed==0) start=0; + else start=lastForwardDisplayed+1; + } else { + if (lastBackwardDisplayed==0) start=0; + else start=lastBackwardDisplayed-1; + } + boolean shouldDisplay=true; + int numAdded=0; + + int i=start, j=(isForward?0:pageSize-1); + IndexerNodeLeaf[] temp = new IndexerNodeLeaf[pageSize]; + boolean tempIsUseful=false; + while(numAdded=0) { + // only add the child to the children to display if it matches the current filters set on the view + shouldDisplay = filterManager.isFiltered(children[i]); + + if (shouldDisplay) { + tempIsUseful=true; + + temp[j] = children[i]; + numAdded++; + if (isForward) lastForwardDisplayed=i; + else if (j==pageSize-1) lastForwardDisplayed=i; + if (j==0) lastBackwardDisplayed=i; + + // move the index to the next entry in the array to store the next valid child to display + if (isForward) { + if (j+1=0) j--; + } + } + + shouldDisplay=true; // reset this value + + // move the index to the next child to analyze + if (isForward) { + i++; + } else { + i--; + } + } + + // if there is useful content on the next page, return it, otherwise just return what is being displayed + if (tempIsUseful) { + childrenToDisplay = new IndexerNodeLeaf[pageSize]; // blank the old array being displayed + // copy the temp array into the actual array + for(int k=0, l=0; k 0); + } + + public int getFullLength() { + return children.length; + } + + public void setIsForward(boolean direction) { + isForward = direction; + } + + public void setFilterManager(Collection filters, String filterName) { + this.filterManager = new IndexerFilterManager(filters, filterName); + } + + public void reset() { + lastBackwardDisplayed = 0; + lastForwardDisplayed=0; + isForward=true; + firstDisplay=true; + childrenToDisplay = EMPTY_INDEXER_NODE_LEAVES; + } + + public void setPageSize(int size) { + pageSize = size; + } + + public void setView(IndexerView.ViewContentProvider view) { + this.view = view; + } + +} diff --git a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/IndexerView/IndexerView.java b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/IndexerView/IndexerView.java new file mode 100644 index 00000000000..6877e8352c8 --- /dev/null +++ b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/IndexerView/IndexerView.java @@ -0,0 +1,525 @@ +/********************************************************************** + * 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.IndexerView; + +import java.io.IOException; + +import org.eclipse.cdt.core.index.ICDTIndexer; +import org.eclipse.cdt.core.parser.util.ArrayUtil; +import org.eclipse.cdt.core.search.ICSearchConstants; +import org.eclipse.cdt.internal.core.index.IEntryResult; +import org.eclipse.cdt.internal.core.index.IIndex; +import org.eclipse.cdt.internal.core.index.IIndexer; +import org.eclipse.cdt.internal.core.index.sourceindexer.AbstractIndexer; +import org.eclipse.cdt.ui.testplugin.CTestPlugin; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Status; +import org.eclipse.core.runtime.jobs.Job; +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; +import org.eclipse.jface.dialogs.IDialogConstants; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.IStructuredContentProvider; +import org.eclipse.jface.viewers.ITreeContentProvider; +import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.TableViewer; +import org.eclipse.jface.viewers.Viewer; +import org.eclipse.jface.viewers.ViewerFilter; +import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Menu; +import org.eclipse.swt.widgets.TableItem; +import org.eclipse.ui.IActionBars; +import org.eclipse.ui.IViewPart; +import org.eclipse.ui.IWorkbenchActionConstants; +import org.eclipse.ui.part.ViewPart; +import org.eclipse.ui.views.properties.PropertySheet; + +/** + * @author dsteffle + */ +public class IndexerView extends ViewPart { + private static final String INDEXER_VIEW___ = "Indexer View - "; //$NON-NLS-1$ + private static final String _INDEXER_MENU_MANAGER = "#Indexer_Menu_Manager"; //$NON-NLS-1$ + private static final String SET_FILTERS = "Set Filters"; //$NON-NLS-1$ + private static final String NEXT_PAGE = "Next Page"; //$NON-NLS-1$ + private static final String PREVIOUS_PAGE = "Previous Page"; //$NON-NLS-1$ + public static final String VIEW_ID = "org.eclipse.cdt.ui.tests.IndexerView"; //$NON-NLS-1$ + private static final String PROPERTIES_VIEW = "org.eclipse.ui.views.PropertySheet"; //$NON-NLS-1$ + protected static final String BLANK_STRING = ""; //$NON-NLS-1$ + static TableViewer viewer; + protected Action previousPageAction; + protected Action nextPageAction; + protected Action singleClickAction; + protected Action setFiltersAction; + protected IIndexer[] indexers = new IIndexer[CTestPlugin.getWorkspace().getRoot().getProjects().length]; + protected IProject project = null; + + protected static ViewContentProvider.StartInitializingIndexerView initializeIndexerViewJob = null; + + public class ViewContentProvider implements IStructuredContentProvider, + ITreeContentProvider { + + private static final String POPULATING_INDEXER_VIEW = "populating indexer view"; //$NON-NLS-1$ + protected IndexerNodeParent invisibleRoot; + + protected boolean displayForwards=false; + protected boolean displayBackwards=false; + + private class InitializeView extends Job { + private static final String ALL_NAME_SEARCH = "*"; //$NON-NLS-1$ + private static final String INDEXER_VIEW = "Indexer View"; //$NON-NLS-1$ + TableViewer theViewer = null; + + public InitializeView(String name, TableViewer viewer) { + super(name); + this.theViewer = viewer; + } + + protected IStatus run(IProgressMonitor monitor) { + + for(int i=0; i 0) { + TableItem[] selection = new TableItem[1]; + selection[0] = view.getTable().getItems()[0]; + + // select the first item to prevent it from being selected accidentally (and possibly switching editors accidentally) + view.getTable().setSelection(selection); + } + + previousPageAction.setEnabled(displayBackwards); + nextPageAction.setEnabled(displayForwards); + } + } + + private class StartInitializingIndexerView extends Job { + private static final String INITIALIZE_INDEXER_VIEW = "initialize Indexer View"; //$NON-NLS-1$ + InitializeView job = null; + boolean updateView=true; + + public StartInitializingIndexerView(InitializeView job, boolean updateView) { + super(INITIALIZE_INDEXER_VIEW); + this.job = job; + this.updateView = updateView; + } + + protected IStatus run(IProgressMonitor monitor) { + job.schedule(); + + try { + job.join(); + } catch (InterruptedException ie) { + return Status.CANCEL_STATUS; + } + + CTestPlugin.getStandardDisplay().asyncExec(new InitializeRunnable(viewer, updateView)); // update the view from the Display thread + + updateView=true; + + return job.getResult(); + } + } + + public ViewContentProvider() { + this(null, false, false); + } + + public void setDisplayForwards(boolean displayForwards) { + this.displayForwards = displayForwards; + } + + public void setDisplayBackwards(boolean displayBackwards) { + this.displayBackwards = displayBackwards; + } + + public ViewContentProvider(IndexerNodeParent parent, boolean displayForwards, boolean displayBackwards) { + if (parent == null) { + invisibleRoot = new IndexerNodeParent(null, null, this); + initializeIndexerViewJob = new StartInitializingIndexerView(new InitializeView(POPULATING_INDEXER_VIEW, viewer), true); + initializeIndexerViewJob.schedule(); + } else { + invisibleRoot = parent; + initializeIndexerViewJob = new StartInitializingIndexerView(new InitializeView(POPULATING_INDEXER_VIEW, viewer), false); + initializeIndexerViewJob.schedule(); + } + + this.displayForwards=displayForwards; + this.displayBackwards=displayBackwards; + } + + public Object[] getElements(Object inputElement) { + if (inputElement.equals(getViewSite())) { + return getChildren(invisibleRoot); + } + return getChildren(inputElement); + } + + public void dispose() {} + + public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { + // TODO Auto-generated method stub + } + + public Object[] getChildren(Object parentElement) { + if (parentElement instanceof IndexerNodeParent) { + return ((IndexerNodeParent) parentElement).getChildren(); + } + return new Object[0]; + } + + public Object getParent(Object element) { + if (element instanceof IndexerNodeLeaf) { + return ((IndexerNodeLeaf) element).getParent(); + } + return null; + } + + public boolean hasChildren(Object element) { + if (element instanceof IndexerNodeParent) + return ((IndexerNodeParent) element).hasChildren(); + return false; + } + + public IndexerNodeParent getInvisibleRoot() { + return invisibleRoot; + } + + public boolean isDisplayForwards() { + return displayForwards; + } + + public boolean isDisplayBackwards() { + return displayBackwards; + } + + public String getProjectName() { + if (project == null) return BLANK_STRING; + + return project.getName(); + } + } + + class ViewLabelProvider extends LabelProvider { + + public String getText(Object obj) { + if (obj == null) return BLANK_STRING; + return obj.toString(); + } + + public Image getImage(Object obj) { + String imageKey = IndexerViewPluginImages.IMG_WARNING; + + if (obj instanceof IndexerNodeLeaf) { + String word = String.valueOf(((IndexerNodeLeaf)obj).getResult().getWord()); + + if (word.startsWith(FilterIndexerViewDialog.ENTRY_REF_STRING)) { + imageKey = IndexerViewPluginImages.IMG_REF; + } else if (word.startsWith(FilterIndexerViewDialog.ENTRY_FUNCTION_REF_STRING)) { + imageKey = IndexerViewPluginImages.IMG_FUNCTION_REF; + } else if (word.startsWith(FilterIndexerViewDialog.ENTRY_FUNCTION_DECL_STRING)) { + imageKey = IndexerViewPluginImages.IMG_FUNCTION_DECL; + } else if (word.startsWith(FilterIndexerViewDialog.ENTRY_CONSTRUCTOR_REF_STRING)) { + imageKey = IndexerViewPluginImages.IMG_CONSTRUCTOR_REF; + } else if (word.startsWith(FilterIndexerViewDialog.ENTRY_CONSTRUCTOR_DECL_STRING)) { + imageKey = IndexerViewPluginImages.IMG_CONSTRUCTOR_DECL; + } else if (word.startsWith(FilterIndexerViewDialog.ENTRY_NAMESPACE_REF_STRING)) { + imageKey = IndexerViewPluginImages.IMG_NAMESPACE_REF; + } else if (word.startsWith(FilterIndexerViewDialog.ENTRY_NAMESPACE_DECL_STRING)) { + imageKey = IndexerViewPluginImages.IMG_NAMESPACE_DECL; + } else if (word.startsWith(FilterIndexerViewDialog.ENTRY_FIELD_REF_STRING)) { + imageKey = IndexerViewPluginImages.IMG_FIELD_REF; + } else if (word.startsWith(FilterIndexerViewDialog.ENTRY_FIELD_DECL_STRING)) { + imageKey = IndexerViewPluginImages.IMG_FIELD_DECL; + } else if (word.startsWith(FilterIndexerViewDialog.ENTRY_ENUMTOR_REF_STRING)) { + imageKey = IndexerViewPluginImages.IMG_ENUMTOR_REF; + } else if (word.startsWith(FilterIndexerViewDialog.ENTRY_ENUMTOR_DECL_STRING)) { + imageKey = IndexerViewPluginImages.IMG_ENUMTOR_DECL; + } else if (word.startsWith(FilterIndexerViewDialog.ENTRY_METHOD_REF_STRING)) { + imageKey = IndexerViewPluginImages.IMG_METHOD_REF; + } else if (word.startsWith(FilterIndexerViewDialog.ENTRY_METHOD_DECL_STRING)) { + imageKey = IndexerViewPluginImages.IMG_METHOD_DECL; + } else if (word.startsWith(FilterIndexerViewDialog.ENTRY_MACRO_DECL_STRING)) { + imageKey = IndexerViewPluginImages.IMG_MACRO_DECL; + } else if (word.startsWith(FilterIndexerViewDialog.ENTRY_INCLUDE_REF_STRING)) { + imageKey = IndexerViewPluginImages.IMG_INCLUDE_REF; + } else if (word.startsWith(FilterIndexerViewDialog.ENTRY_SUPER_REF_STRING)) { + imageKey = IndexerViewPluginImages.IMG_SUPER_REF; + } else if (word.startsWith(FilterIndexerViewDialog.ENTRY_TYPE_DECL_T_STRING)) { + imageKey = IndexerViewPluginImages.IMG_TYPEDEF; + } else if (word.startsWith(FilterIndexerViewDialog.ENTRY_TYPE_DECL_C_STRING)) { + imageKey = IndexerViewPluginImages.IMG_CLASS; + } else if (word.startsWith(FilterIndexerViewDialog.ENTRY_TYPE_DECL_V_STRING)) { + imageKey = IndexerViewPluginImages.IMG_VARIABLE; + } else if (word.startsWith(FilterIndexerViewDialog.ENTRY_TYPE_DECL_S_STRING)) { + imageKey = IndexerViewPluginImages.IMG_STRUCT; + } else if (word.startsWith(FilterIndexerViewDialog.ENTRY_TYPE_DECL_E_STRING)) { + imageKey = IndexerViewPluginImages.IMG_ENUM; + } else if (word.startsWith(FilterIndexerViewDialog.ENTRY_TYPE_DECL_U_STRING)) { + imageKey = IndexerViewPluginImages.IMG_UNION; + } else if (word.startsWith(FilterIndexerViewDialog.ENTRY_TYPE_REF_STRING)) { + imageKey = IndexerViewPluginImages.IMG_TYPE_REF; + } else if (word.startsWith(FilterIndexerViewDialog.ENTRY_TYPE_DECL_D_STRING)) { + imageKey = IndexerViewPluginImages.IMG_DERIVED; + } else if (word.startsWith(FilterIndexerViewDialog.ENTRY_TYPE_DECL_F_STRING)) { + imageKey = IndexerViewPluginImages.IMG_FRIEND; + } else if (word.startsWith(FilterIndexerViewDialog.ENTRY_TYPE_DECL_G_STRING)) { + imageKey = IndexerViewPluginImages.IMG_FWD_CLASS; + } else if (word.startsWith(FilterIndexerViewDialog.ENTRY_TYPE_DECL_H_STRING)) { + imageKey = IndexerViewPluginImages.IMG_FWD_STRUCT; + } else if (word.startsWith(FilterIndexerViewDialog.ENTRY_TYPE_DECL_I_STRING)) { + imageKey = IndexerViewPluginImages.IMG_FWD_UNION; + } + } + + return IndexerViewPluginImages.get(imageKey); + } + } + + public void createPartControl(Composite parent) { + viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL); + + viewer.setContentProvider(new ViewContentProvider()); + + viewer.setLabelProvider(new ViewLabelProvider()); + viewer.setInput(getViewSite()); + + makeActions(); + hookContextMenu(); + hookSingleClickAction(); + + contributeToActionBars(); + } + + private void makeActions() { + previousPageAction = new Action() { + public void run() { + if (viewer.getContentProvider() instanceof ViewContentProvider) { + IndexerNodeParent root = ((ViewContentProvider)viewer.getContentProvider()).getInvisibleRoot(); + root.setIsForward(false); + } + viewer.refresh(); + + setEnabled(((ViewContentProvider)viewer.getContentProvider()).isDisplayBackwards()); + nextPageAction.setEnabled(((ViewContentProvider)viewer.getContentProvider()).isDisplayForwards()); + } + }; + previousPageAction.setText(PREVIOUS_PAGE); + previousPageAction.setToolTipText(PREVIOUS_PAGE); + previousPageAction.setImageDescriptor(IndexerViewPluginImages.DESC_BACK); + + nextPageAction = new Action() { + public void run() { + if (viewer.getContentProvider() instanceof ViewContentProvider) { + IndexerNodeParent root = ((ViewContentProvider)viewer.getContentProvider()).getInvisibleRoot(); + root.setIsForward(true); + } + viewer.refresh(); + + previousPageAction.setEnabled(((ViewContentProvider)viewer.getContentProvider()).isDisplayBackwards()); + setEnabled(((ViewContentProvider)viewer.getContentProvider()).isDisplayForwards()); + } + }; + nextPageAction.setText(NEXT_PAGE); + nextPageAction.setToolTipText(NEXT_PAGE); + nextPageAction.setImageDescriptor(IndexerViewPluginImages.DESC_NEXT); + + setFiltersAction = new Action() { + public void run() { + if (!(viewer.getContentProvider() instanceof ViewContentProvider)) return; + + FilterIndexerViewDialog dialog = new FilterIndexerViewDialog(getSite().getShell(), ((ViewContentProvider)viewer.getContentProvider()).getInvisibleRoot(), project.getName()); + int result = dialog.open(); + + if (result == IDialogConstants.OK_ID) { + viewer.setContentProvider(new ViewContentProvider(((ViewContentProvider)viewer.getContentProvider()).getInvisibleRoot(), true, true)); + ((ViewContentProvider)viewer.getContentProvider()).getInvisibleRoot().setView((ViewContentProvider)viewer.getContentProvider()); // update the root's content provider + + previousPageAction.setEnabled(((ViewContentProvider)viewer.getContentProvider()).isDisplayBackwards()); + nextPageAction.setEnabled(((ViewContentProvider)viewer.getContentProvider()).isDisplayForwards()); + } + } + }; + setFiltersAction.setText(SET_FILTERS); + setFiltersAction.setToolTipText(SET_FILTERS); + setFiltersAction.setImageDescriptor(IndexerViewPluginImages.DESC_FILTER_BUTTON); + + singleClickAction = new IndexerHighlighterAction(); + } + + private void hookContextMenu() { + MenuManager menuMgr = new MenuManager(_INDEXER_MENU_MANAGER); + menuMgr.setRemoveAllWhenShown(true); + menuMgr.addMenuListener(new IMenuListener() { + private void hideMenuItems(IMenuManager manager) { + } + + public void menuAboutToShow(IMenuManager manager) { + IndexerView.this.fillContextMenu(manager); + hideMenuItems(manager); + } + }); + Menu menu = menuMgr.createContextMenu(viewer.getControl()); + viewer.getControl().setMenu(menu); + getSite().registerContextMenu(menuMgr, viewer); + } + + void fillContextMenu(IMenuManager manager) { + // Other plug-ins can contribute there actions here + manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); + } + + private class IndexerHighlighterAction extends Action { + public void run() { + ISelection selection = viewer.getSelection(); + + IViewPart part = getSite().getPage().findView(PROPERTIES_VIEW); + if (part instanceof PropertySheet) { + ((PropertySheet)part).selectionChanged(getSite().getPart(), selection); // TODO Devin need to instead get the part that this action belongs to... + } + } + } + + private void hookSingleClickAction() { + viewer.addSelectionChangedListener(new ISelectionChangedListener() { + public void selectionChanged(SelectionChangedEvent event) { + singleClickAction.run(); + } + }); + } + + private void contributeToActionBars() { + IActionBars bars = getViewSite().getActionBars(); + fillLocalPullDown(bars.getMenuManager()); + fillLocalToolBar(bars.getToolBarManager()); + } + + private void fillLocalPullDown(IMenuManager manager) { + } + + private void fillLocalToolBar(IToolBarManager manager) { + manager.add(previousPageAction); + manager.add(nextPageAction); + manager.add(new Separator()); + manager.add(setFiltersAction); + manager.add(new Separator()); + } + + public void setFocus() { + IViewPart part = getSite().getPage().findView(PROPERTIES_VIEW); + if (part instanceof PropertySheet) { + ((PropertySheet)part).selectionChanged(getSite().getPart(), viewer.getSelection()); + } + } + + public void appendIndexer(IIndexer indexer) { + indexers = (IIndexer[])ArrayUtil.append(IIndexer.class, indexers, indexer); + } + + public void clearIndexers() { + indexers = new IIndexer[CTestPlugin.getWorkspace().getRoot().getProjects().length]; + } + + public void setContentProvider(ViewContentProvider provider) { + viewer.setContentProvider(provider); + } + + public void setProject(IProject project) { + this.setPartName(INDEXER_VIEW___ + project.getName()); + this.project=project; + } + + public static ViewerFilter[] getViewerFilters() { + return viewer.getFilters(); + } + + public String getProjectName() { + if (project == null) return BLANK_STRING; + + return project.getName(); + } +} diff --git a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/IndexerView/IndexerViewPluginImages.java b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/IndexerView/IndexerViewPluginImages.java new file mode 100644 index 00000000000..c5c8d5042ed --- /dev/null +++ b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/IndexerView/IndexerViewPluginImages.java @@ -0,0 +1,149 @@ +/********************************************************************** + * 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.IndexerView; + +import java.net.MalformedURLException; +import java.net.URL; + +import org.eclipse.cdt.ui.CUIPlugin; +import org.eclipse.cdt.ui.testplugin.CTestPlugin; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.jface.resource.ImageRegistry; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.widgets.Display; + +/** + * @author dsteffle + */ +public class IndexerViewPluginImages { + private static ImageRegistry imageRegistry = new ImageRegistry(CUIPlugin.getStandardDisplay()); + + /** + * Returns the standard display to be used. The method first checks, if + * the thread calling this method has an associated display. If so, this + * display is returned. Otherwise the method returns the default display. + */ + public static Display getStandardDisplay() { + Display display= Display.getCurrent(); + if (display == null) { + display= Display.getDefault(); + } + return display; + } + + // Subdirectory (under the package containing this class) where 16 color images are + private static URL fgIconBaseURL; + + static { + try { + fgIconBaseURL= new URL(CTestPlugin.getDefault().getBundle().getEntry("/"), "icons/" ); //$NON-NLS-1$ //$NON-NLS-2$ + } catch (MalformedURLException e) {} + } + public static final String PLUGIN_ID = "org.eclipse.cdt.testplugin.CTestPlugin"; //$NON-NLS-1$ + private static final String NAME_PREFIX= PLUGIN_ID + '.'; + private static final int NAME_PREFIX_LENGTH= NAME_PREFIX.length(); + public static final String ICON_PREFIX= "indexer_view/"; //$NON-NLS-1$ + + public static final String IMG_REF= NAME_PREFIX + "ref_obj.gif"; //$NON-NLS-1$ + public static final String IMG_TYPE_REF= NAME_PREFIX + "typedecl_ref_obj.gif"; //$NON-NLS-1$ + public static final String IMG_TYPE_DECL= NAME_PREFIX + "typedecl_obj.gif"; //$NON-NLS-1$ + public static final String IMG_FUNCTION_REF= NAME_PREFIX + "function_ref_obj.gif"; //$NON-NLS-1$ + public static final String IMG_FUNCTION_DECL= NAME_PREFIX + "function_obj.gif"; //$NON-NLS-1$ + public static final String IMG_CONSTRUCTOR_REF= NAME_PREFIX + "constructor_ref_obj.gif"; //$NON-NLS-1$ + public static final String IMG_CONSTRUCTOR_DECL= NAME_PREFIX + "constructor_obj.gif"; //$NON-NLS-1$ + public static final String IMG_NAMESPACE_REF= NAME_PREFIX + "namespace_ref_obj.gif"; //$NON-NLS-1$ + public static final String IMG_NAMESPACE_DECL= NAME_PREFIX + "namespace_obj.gif"; //$NON-NLS-1$ + public static final String IMG_FIELD_REF= NAME_PREFIX + "field_ref_obj.gif"; //$NON-NLS-1$ + public static final String IMG_FIELD_DECL= NAME_PREFIX + "field_obj.gif"; //$NON-NLS-1$ + public static final String IMG_ENUMTOR_REF= NAME_PREFIX + "enumerator_ref_obj.gif"; //$NON-NLS-1$ + public static final String IMG_ENUMTOR_DECL= NAME_PREFIX + "enumerator_obj.gif"; //$NON-NLS-1$ + public static final String IMG_METHOD_REF= NAME_PREFIX + "method_public_ref_obj.gif"; //$NON-NLS-1$ + public static final String IMG_METHOD_DECL= NAME_PREFIX + "method_public_obj.gif"; //$NON-NLS-1$ + public static final String IMG_MACRO_DECL= NAME_PREFIX + "macroDecl_obj.gif"; //$NON-NLS-1$ + public static final String IMG_INCLUDE_REF= NAME_PREFIX + "include_obj.gif"; //$NON-NLS-1$ + public static final String IMG_SUPER_REF= NAME_PREFIX + "super_co.gif"; //$NON-NLS-1$ + public static final String IMG_VARIABLE= NAME_PREFIX + "variable_obj.gif"; //$NON-NLS-1$ + public static final String IMG_CLASS= NAME_PREFIX + "class_obj.gif"; //$NON-NLS-1$ + public static final String IMG_ENUM= NAME_PREFIX + "enum_obj.gif"; //$NON-NLS-1$ + public static final String IMG_BACK= NAME_PREFIX + "ngback.gif"; //$NON-NLS-1$ + public static final String IMG_NEXT= NAME_PREFIX + "ngnext.gif"; //$NON-NLS-1$ + public static final String IMG_STRUCT= NAME_PREFIX + "struct_obj.gif"; //$NON-NLS-1$ + public static final String IMG_TYPEDEF= NAME_PREFIX + "typedef_obj.gif"; //$NON-NLS-1$ + public static final String IMG_UNION= NAME_PREFIX + "union_obj.gif"; //$NON-NLS-1$ + public static final String IMG_DERIVED= NAME_PREFIX + "derived.gif"; //$NON-NLS-1$ + public static final String IMG_FRIEND= NAME_PREFIX + "friend.gif"; //$NON-NLS-1$ + public static final String IMG_FWD_CLASS= NAME_PREFIX + "fwd_class.gif"; //$NON-NLS-1$ + public static final String IMG_FWD_STRUCT= NAME_PREFIX + "fwd_struct.gif"; //$NON-NLS-1$ + public static final String IMG_FWD_UNION= NAME_PREFIX + "fwd_union.gif"; //$NON-NLS-1$ + public static final String IMG_WARNING= NAME_PREFIX + "warning_icon.gif"; //$NON-NLS-1$ + public static final String IMG_FILTER_BUTTON= NAME_PREFIX + "filterbutton.gif"; //$NON-NLS-1$ + + public static final ImageDescriptor DESC_REF= createManaged(ICON_PREFIX, IMG_REF); + public static final ImageDescriptor DESC_TYPE_REF= createManaged(ICON_PREFIX, IMG_TYPE_REF); + public static final ImageDescriptor DESC_TYPE_DECL= createManaged(ICON_PREFIX, IMG_TYPE_DECL); + public static final ImageDescriptor DESC_FUNCTION_REF= createManaged(ICON_PREFIX, IMG_FUNCTION_REF); + public static final ImageDescriptor DESC_FUNCTION_DECL= createManaged(ICON_PREFIX, IMG_FUNCTION_DECL); + public static final ImageDescriptor DESC_CONSTRUCTOR_REF= createManaged(ICON_PREFIX, IMG_CONSTRUCTOR_REF); + public static final ImageDescriptor DESC_CONSTRUCTOR_DECL= createManaged(ICON_PREFIX, IMG_CONSTRUCTOR_DECL); + public static final ImageDescriptor DESC_NAMESPACE_REF= createManaged(ICON_PREFIX, IMG_NAMESPACE_REF); + public static final ImageDescriptor DESC_NAMESPACE_DECL= createManaged(ICON_PREFIX, IMG_NAMESPACE_DECL); + public static final ImageDescriptor DESC_FIELD_REF= createManaged(ICON_PREFIX, IMG_FIELD_REF); + public static final ImageDescriptor DESC_FIELD_DECL= createManaged(ICON_PREFIX, IMG_FIELD_DECL); + public static final ImageDescriptor DESC_ENUMTOR_REF= createManaged(ICON_PREFIX, IMG_ENUMTOR_REF); + public static final ImageDescriptor DESC_ENUMTOR_DECL= createManaged(ICON_PREFIX, IMG_ENUMTOR_DECL); + public static final ImageDescriptor DESC_METHOD_REF= createManaged(ICON_PREFIX, IMG_METHOD_REF); + public static final ImageDescriptor DESC_METHOD_DECL= createManaged(ICON_PREFIX, IMG_METHOD_DECL); + public static final ImageDescriptor DESC_MACRO_DECL= createManaged(ICON_PREFIX, IMG_MACRO_DECL); + public static final ImageDescriptor DESC_INCLUDE_REF= createManaged(ICON_PREFIX, IMG_INCLUDE_REF); + public static final ImageDescriptor DESC_SUPER_REF= createManaged(ICON_PREFIX, IMG_SUPER_REF); + public static final ImageDescriptor DESC_VARIABLE= createManaged(ICON_PREFIX, IMG_VARIABLE); + public static final ImageDescriptor DESC_CLASS= createManaged(ICON_PREFIX, IMG_CLASS); + public static final ImageDescriptor DESC_ENUM= createManaged(ICON_PREFIX, IMG_ENUM); + public static final ImageDescriptor DESC_BACK= createManaged(ICON_PREFIX, IMG_BACK); + public static final ImageDescriptor DESC_NEXT= createManaged(ICON_PREFIX, IMG_NEXT); + public static final ImageDescriptor DESC_STRUCT= createManaged(ICON_PREFIX, IMG_STRUCT); + public static final ImageDescriptor DESC_TYPEDEF= createManaged(ICON_PREFIX, IMG_TYPEDEF); + public static final ImageDescriptor DESC_UNION= createManaged(ICON_PREFIX, IMG_UNION); + public static final ImageDescriptor DESC_DERIVED= createManaged(ICON_PREFIX, IMG_DERIVED); + public static final ImageDescriptor DESC_FRIEND= createManaged(ICON_PREFIX, IMG_FRIEND); + public static final ImageDescriptor DESC_FWD_CLASS= createManaged(ICON_PREFIX, IMG_FWD_CLASS); + public static final ImageDescriptor DESC_FWD_STRUCT= createManaged(ICON_PREFIX, IMG_FWD_STRUCT); + public static final ImageDescriptor DESC_FWD_UNION= createManaged(ICON_PREFIX, IMG_FWD_UNION); + public static final ImageDescriptor DESC_WARNING= createManaged(ICON_PREFIX, IMG_WARNING); + public static final ImageDescriptor DESC_FILTER_BUTTON= createManaged(ICON_PREFIX, IMG_FILTER_BUTTON); + + private static ImageDescriptor createManaged(String prefix, String name) { + return createManaged(imageRegistry, prefix, name); + } + + private static ImageDescriptor createManaged(ImageRegistry registry, String prefix, String name) { + ImageDescriptor result= ImageDescriptor.createFromURL(makeIconFileURL(prefix, name.substring(NAME_PREFIX_LENGTH))); + registry.put(name, result); + return result; + } + + private static URL makeIconFileURL(String prefix, String name) { + StringBuffer buffer= new StringBuffer(prefix); + buffer.append(name); + try { + return new URL(fgIconBaseURL, buffer.toString()); + } catch (MalformedURLException e) { + CUIPlugin.getDefault().log(e); + return null; + } + } + + public static Image get(String key) { + return imageRegistry.get(key); + } + + +} diff --git a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/IndexerView/OpenIndexerViewAction.java b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/IndexerView/OpenIndexerViewAction.java new file mode 100644 index 00000000000..1101a1529dd --- /dev/null +++ b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/IndexerView/OpenIndexerViewAction.java @@ -0,0 +1,82 @@ +/********************************************************************** + * 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.IndexerView; + +import org.eclipse.cdt.core.CCorePlugin; +import org.eclipse.cdt.internal.core.index.IIndexer; +import org.eclipse.cdt.internal.core.model.CProject; +import org.eclipse.core.resources.IProject; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.ui.IEditorActionDelegate; +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.IObjectActionDelegate; +import org.eclipse.ui.IViewActionDelegate; +import org.eclipse.ui.IViewPart; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.PartInitException; + +/** + * @author dsteffle + */ +public class OpenIndexerViewAction implements IViewActionDelegate, + IEditorActionDelegate, IObjectActionDelegate { + + IViewPart viewPart = null; + IProject proj = null; + public static int numViewsOpen=0; + + public void init(IViewPart view) { + this.viewPart = view; + } + + public void run(IAction action) { + IViewPart tempView = null; + + try { + // TODO Devin add support for multiple views +// tempView = viewPart.getSite().getPage().showView(IndexerView.VIEW_ID, proj.getName(), IWorkbenchPage.VIEW_ACTIVATE); + tempView = viewPart.getSite().getPage().showView(IndexerView.VIEW_ID); + if (tempView instanceof IndexerView) + ((IndexerView)tempView).setProject(proj); + + OpenIndexerViewAction.numViewsOpen++; + } catch (PartInitException pie) {} + + if (tempView != null) { + if (tempView instanceof IndexerView) { + ((IndexerView)tempView).clearIndexers(); + IIndexer indexer = CCorePlugin.getDefault().getCoreModel().getIndexManager().getIndexerForProject(proj); + ((IndexerView)tempView).appendIndexer(indexer); + ((IndexerView)tempView).setContentProvider(((IndexerView)tempView).new ViewContentProvider()); + } + } + + viewPart.getSite().getPage().activate(tempView); + } + + public void selectionChanged(IAction action, ISelection selection) { + if (selection instanceof IStructuredSelection && + ((IStructuredSelection)selection).getFirstElement() instanceof CProject) { + proj = ((CProject)((IStructuredSelection)selection).getFirstElement()).getProject(); + } + } + + public void setActiveEditor(IAction action, IEditorPart targetEditor) { + // TODO Auto-generated method stub + } + + public void setActivePart(IAction action, IWorkbenchPart targetPart) { + // TODO Auto-generated method stub + } + +}