1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

Fix for Bug 60629 : [Search] Big error when Searching view layout is set to Hierarchical

This commit is contained in:
Bogdan Gheorghe 2004-06-07 02:19:21 +00:00
parent a029d87d56
commit dc2bb390ae
8 changed files with 112 additions and 31 deletions

View file

@ -1,3 +1,13 @@
2004-06-06 Bogdan Gheorghe
Fix for Bug 60629
* src/org/eclipse/cdt/internal/ui/CPluginImages.java
* src/org/eclipse/cdt/internal/ui/search/CSearchMessages.properties
* src/org/eclipse/cdt/internal/ui/search/CSearchResultPage.java
* src/org/eclipse/cdt/internal/ui/search/LevelTreeContentProvider.java
* src/org/eclipse/cdt/ui/CSearchResultLabelProvider.java
2004-06-03 Alain Magloire 2004-06-03 Alain Magloire
Fix for PR 60650 Fix for PR 60650

Binary file not shown.

After

Width:  |  Height:  |  Size: 365 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 B

View file

@ -204,10 +204,16 @@ public class CPluginImages {
public static final String IMG_OBJS_SEARCH_DECL = NAME_PREFIX + "search_decl_obj.gif"; //$NON-NLS-1$ public static final String IMG_OBJS_SEARCH_DECL = NAME_PREFIX + "search_decl_obj.gif"; //$NON-NLS-1$
public static final String IMG_OBJS_CSEARCH = NAME_PREFIX + "csearch_obj.gif"; //$NON-NLS-1$ public static final String IMG_OBJS_CSEARCH = NAME_PREFIX + "csearch_obj.gif"; //$NON-NLS-1$
public static final String IMG_OBJS_SEARCHFOLDER = NAME_PREFIX + "fldr_obj.gif"; //$NON-NLS-1$
public static final String IMG_OBJS_SEARCHPROJECT = NAME_PREFIX + "cprojects.gif"; //$NON-NLS-1$
public static final ImageDescriptor DESC_OBJS_SEARCH_DECL = createManaged(T_OBJ, IMG_OBJS_SEARCH_DECL); public static final ImageDescriptor DESC_OBJS_SEARCH_DECL = createManaged(T_OBJ, IMG_OBJS_SEARCH_DECL);
public static final ImageDescriptor DESC_OBJS_SEARCH_REF = createManaged(T_OBJ, IMG_OBJS_SEARCH_REF); public static final ImageDescriptor DESC_OBJS_SEARCH_REF = createManaged(T_OBJ, IMG_OBJS_SEARCH_REF);
public static final ImageDescriptor DESC_OBJS_CSEARCH = createManaged(T_OBJ, IMG_OBJS_CSEARCH); public static final ImageDescriptor DESC_OBJS_CSEARCH = createManaged(T_OBJ, IMG_OBJS_CSEARCH);
public static final ImageDescriptor DESC_OBJS_SEARCHHIERPROJECT = createManaged(T_OBJ,IMG_OBJS_SEARCHPROJECT);
public static final ImageDescriptor DESC_OBJS_SEARCHHIERFODLER = createManaged(T_OBJ,IMG_OBJS_SEARCHFOLDER);
// refactoring // refactoring
public static final String IMG_OBJS_REFACTORING_FATAL= NAME_PREFIX + "fatalerror_obj.gif"; //$NON-NLS-1$ public static final String IMG_OBJS_REFACTORING_FATAL= NAME_PREFIX + "fatalerror_obj.gif"; //$NON-NLS-1$
public static final String IMG_OBJS_REFACTORING_ERROR= NAME_PREFIX + "error_obj.gif"; //$NON-NLS-1$ public static final String IMG_OBJS_REFACTORING_ERROR= NAME_PREFIX + "error_obj.gif"; //$NON-NLS-1$
@ -229,6 +235,7 @@ public class CPluginImages {
public static final ImageDescriptor DESC_OBJS_FILE_CHANGE= create(T_OBJ, "file_change.gif"); //$NON-NLS-1$ public static final ImageDescriptor DESC_OBJS_FILE_CHANGE= create(T_OBJ, "file_change.gif"); //$NON-NLS-1$
public static final ImageDescriptor DESC_OBJS_TEXT_EDIT= create(T_OBJ, "text_edit.gif"); //$NON-NLS-1$ public static final ImageDescriptor DESC_OBJS_TEXT_EDIT= create(T_OBJ, "text_edit.gif"); //$NON-NLS-1$
private static ImageDescriptor createManaged(String prefix, String name) { private static ImageDescriptor createManaged(String prefix, String name) {
return createManaged(imageRegistry, prefix, name); return createManaged(imageRegistry, prefix, name);
} }

View file

@ -116,8 +116,10 @@ CSearchResultPage.groupby_project=Project
CSearchResultPage.groupby_project.tooltip=Group by Project CSearchResultPage.groupby_project.tooltip=Group by Project
CSearchResultPage.groupby_file=File CSearchResultPage.groupby_file=File
CSearchResultPage.groupby_file.tooltip=Group by File CSearchResultPage.groupby_file.tooltip=Group by File
CSearchResultPage.groupby_namespace=Namespace CSearchResultPage.groupby_folder=Folder
CSearchResultPage.groupby_namespace.tooltip=Group by Namespace CSearchResultPage.groupby_folder.tooltip=Group by Folder
CSearchResultPage.groupby_class=Class
CSearchResultPage.groupby_class.tooltip=Group by Class
# Search Page Indexer warnings # Search Page Indexer warnings
CSearchPage.warning.indexernoprojects=Index not enabled on any projects CSearchPage.warning.indexernoprojects=Index not enabled on any projects

View file

@ -50,8 +50,9 @@ public class CSearchResultPage extends AbstractTextSearchViewPage {
private SortAction _elementNameSortAction; private SortAction _elementNameSortAction;
private GroupAction _groupFileAction; private GroupAction _groupFileAction;
private GroupAction _groupNamespaceAction; private GroupAction _groupFoldersAction;
private GroupAction _groupProjectAction; private GroupAction _groupProjectAction;
private GroupAction _groupClassAction;
private static final String KEY_GROUPING= "org.eclipse.cdt.search.resultpage.grouping"; //$NON-NLS-1$ private static final String KEY_GROUPING= "org.eclipse.cdt.search.resultpage.grouping"; //$NON-NLS-1$
@ -71,13 +72,16 @@ public class CSearchResultPage extends AbstractTextSearchViewPage {
*/ */
private void initGroupingActions() { private void initGroupingActions() {
_groupProjectAction= new GroupAction(CSearchMessages.getString("CSearchResultPage.groupby_project"),CSearchMessages.getString("CSearchResultPage.groupby_project.tooltip"), this, LevelTreeContentProvider.LEVEL_PROJECT); //$NON-NLS-1$ //$NON-NLS-2$ _groupProjectAction= new GroupAction(CSearchMessages.getString("CSearchResultPage.groupby_project"),CSearchMessages.getString("CSearchResultPage.groupby_project.tooltip"), this, LevelTreeContentProvider.LEVEL_PROJECT); //$NON-NLS-1$ //$NON-NLS-2$
CPluginImages.setImageDescriptors(_groupProjectAction,CPluginImages.T_TOOL, CPluginImages.IMG_OBJS_PROJECT); //$NON-NLS-1$)//.setLocalImageDescriptors(f _groupProjectAction.setImageDescriptor(CPluginImages.DESC_OBJS_SEARCHHIERPROJECT);
_groupNamespaceAction= new GroupAction(CSearchMessages.getString("CSearchResultPage.groupby_namespace"), CSearchMessages.getString("CSearchResultPage.groupby_namespace.tooltip"), this, LevelTreeContentProvider.LEVEL_NAMESPACE); //$NON-NLS-1$ //$NON-NLS-2$ _groupFoldersAction= new GroupAction(CSearchMessages.getString("CSearchResultPage.groupby_folder"), CSearchMessages.getString("CSearchResultPage.groupby_folder.tooltip"), this, LevelTreeContentProvider.LEVEL_FOLDER); //$NON-NLS-1$ //$NON-NLS-2$
CPluginImages.setImageDescriptors(_groupNamespaceAction,CPluginImages.T_TOOL, CPluginImages.IMG_OBJS_PROJECT); //$NON-NLS-1$ _groupFoldersAction.setImageDescriptor(CPluginImages.DESC_OBJS_SEARCHHIERFODLER);
_groupFileAction= new GroupAction(CSearchMessages.getString("CSearchResultPage.groupby_file"), CSearchMessages.getString("CSearchResultPage.groupby_file.tooltip"), this, LevelTreeContentProvider.LEVEL_FILE); //$NON-NLS-1$ //$NON-NLS-2$ _groupFileAction= new GroupAction(CSearchMessages.getString("CSearchResultPage.groupby_file"), CSearchMessages.getString("CSearchResultPage.groupby_file.tooltip"), this, LevelTreeContentProvider.LEVEL_FILE); //$NON-NLS-1$ //$NON-NLS-2$
CPluginImages.setImageDescriptors(_groupFileAction,CPluginImages.T_TOOL,CPluginImages.IMG_OBJS_PROJECT); //$NON-NLS-1$ _groupFileAction.setImageDescriptor(CPluginImages.DESC_OBJS_TUNIT);
_groupClassAction = new GroupAction(CSearchMessages.getString("CSearchResultPage.groupby_class"), CSearchMessages.getString("CSearchResultPage.groupby_class.tooltip"),this, LevelTreeContentProvider.LEVEL_CLASS); //$NON-NLS-1$//$NON-NLS-2$
_groupClassAction.setImageDescriptor(CPluginImages.DESC_OBJS_CLASS);
try { try {
_currentGrouping= getSettings().getInt(KEY_GROUPING); _currentGrouping= getSettings().getInt(KEY_GROUPING);
@ -211,9 +215,9 @@ public class CSearchResultPage extends AbstractTextSearchViewPage {
private void addGroupActions(IToolBarManager mgr) { private void addGroupActions(IToolBarManager mgr) {
mgr.appendToGroup(IContextMenuConstants.GROUP_VIEWER_SETUP, _groupProjectAction); mgr.appendToGroup(IContextMenuConstants.GROUP_VIEWER_SETUP, _groupProjectAction);
mgr.appendToGroup(IContextMenuConstants.GROUP_VIEWER_SETUP, _groupNamespaceAction); mgr.appendToGroup(IContextMenuConstants.GROUP_VIEWER_SETUP, _groupFoldersAction);
mgr.appendToGroup(IContextMenuConstants.GROUP_VIEWER_SETUP, _groupFileAction); mgr.appendToGroup(IContextMenuConstants.GROUP_VIEWER_SETUP, _groupFileAction);
//mgr.appendToGroup(IContextMenuConstants.GROUP_VIEWER_SETUP, fGroupTypeAction); mgr.appendToGroup(IContextMenuConstants.GROUP_VIEWER_SETUP, _groupClassAction);
updateGroupingActions(); updateGroupingActions();
} }
@ -234,8 +238,9 @@ public class CSearchResultPage extends AbstractTextSearchViewPage {
private void updateGroupingActions() { private void updateGroupingActions() {
_groupProjectAction.setChecked(_currentGrouping == LevelTreeContentProvider.LEVEL_PROJECT); _groupProjectAction.setChecked(_currentGrouping == LevelTreeContentProvider.LEVEL_PROJECT);
_groupNamespaceAction.setChecked(_currentGrouping == LevelTreeContentProvider.LEVEL_NAMESPACE); _groupFoldersAction.setChecked(_currentGrouping == LevelTreeContentProvider.LEVEL_FOLDER);
_groupFileAction.setChecked(_currentGrouping == LevelTreeContentProvider.LEVEL_FILE); _groupFileAction.setChecked(_currentGrouping == LevelTreeContentProvider.LEVEL_FILE);
_groupClassAction.setChecked(_currentGrouping == LevelTreeContentProvider.LEVEL_CLASS);
} }
protected void fillToolbar(IToolBarManager tbm) { protected void fillToolbar(IToolBarManager tbm) {

View file

@ -15,8 +15,11 @@ import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.model.CModelException;
import org.eclipse.cdt.core.model.ICElement; import org.eclipse.cdt.core.model.ICElement;
import org.eclipse.cdt.core.model.ITranslationUnit;
import org.eclipse.cdt.core.search.BasicSearchMatch; import org.eclipse.cdt.core.search.BasicSearchMatch;
import org.eclipse.cdt.ui.CElementContentProvider; import org.eclipse.cdt.ui.CElementContentProvider;
import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IResource;
@ -29,20 +32,28 @@ public class LevelTreeContentProvider extends CSearchContentProvider implements
private Map fChildrenMap; private Map fChildrenMap;
private CElementContentProvider fContentProvider; private CElementContentProvider fContentProvider;
private static int[][] C_ELEMENT_TYPES= {{ICElement.C_ENUMERATION}, private static int[][] C_ELEMENT_TYPES= {
{ICElement.C_STRUCT, ICElement.C_CLASS},{ICElement.C_UNIT},{ICElement.C_PROJECT}}; {ICElement.C_CLASS},
{ICElement.C_UNIT, ICElement.C_NAMESPACE},
{ICElement.C_CCONTAINER},
{ICElement.C_PROJECT},
{ICElement.C_MODEL}};
private static int[][] RESOURCE_TYPES= { private static int[][] RESOURCE_TYPES= {
{}, {},
{IResource.FILE}, {IResource.FILE},
{IResource.FOLDER}, {IResource.FOLDER},
{IResource.PROJECT}, {IResource.PROJECT},
{IResource.ROOT}}; {IResource.ROOT}};
private static final int MAX_LEVEL= C_ELEMENT_TYPES.length - 1; private static final int MAX_LEVEL= C_ELEMENT_TYPES.length - 1;
private int fCurrentLevel; private int fCurrentLevel;
public static final int LEVEL_FILE= 1; public static final int LEVEL_CLASS= 1;
public static final int LEVEL_NAMESPACE= 2; public static final int LEVEL_FILE= 2;
public static final int LEVEL_PROJECT= 3; public static final int LEVEL_FOLDER= 3;
public static final int LEVEL_PROJECT= 4;
public LevelTreeContentProvider(AbstractTreeViewer viewer, int level) { public LevelTreeContentProvider(AbstractTreeViewer viewer, int level) {
fTreeViewer= viewer; fTreeViewer= viewer;
@ -52,14 +63,25 @@ public class LevelTreeContentProvider extends CSearchContentProvider implements
public Object getParent(Object child) { public Object getParent(Object child) {
if (child instanceof BasicSearchMatch){
BasicSearchMatch tempMatch = (BasicSearchMatch)child; BasicSearchMatch tempMatch = (BasicSearchMatch)child;
child = CCorePlugin.getDefault().getCoreModel().create(tempMatch.getResource()); ICElement cTransUnit = CCorePlugin.getDefault().getCoreModel().create(tempMatch.getResource());
if (cTransUnit instanceof ITranslationUnit){
try {
child = ((ITranslationUnit) cTransUnit).getElementAtOffset(tempMatch.startOffset);
} catch (CModelException e) {}
}
}
Object possibleParent= internalGetParent(child); Object possibleParent= internalGetParent(child);
if (possibleParent instanceof ICElement) { if (possibleParent instanceof ICElement) {
ICElement javaElement= (ICElement) possibleParent; ICElement cElement= (ICElement) possibleParent;
for (int j= fCurrentLevel; j < MAX_LEVEL + 1; j++) { for (int j= fCurrentLevel; j < MAX_LEVEL + 1; j++) {
for (int i= 0; i < C_ELEMENT_TYPES[j].length; i++) { for (int i= 0; i < C_ELEMENT_TYPES[j].length; i++) {
if (javaElement.getElementType() == C_ELEMENT_TYPES[j][i]) { if (cElement.getElementType() == C_ELEMENT_TYPES[j][i]) {
return null; return null;
} }
} }
@ -74,6 +96,7 @@ public class LevelTreeContentProvider extends CSearchContentProvider implements
} }
} }
} }
return possibleParent; return possibleParent;
} }
@ -110,6 +133,7 @@ public class LevelTreeContentProvider extends CSearchContentProvider implements
child= parent; child= parent;
parent= getParent(child); parent= getParent(child);
} }
if (insertChild(_result, child)) { if (insertChild(_result, child)) {
if (refreshViewer) if (refreshViewer)
fTreeViewer.add(_result, child); fTreeViewer.add(_result, child);

View file

@ -57,25 +57,35 @@ public class CSearchResultLabelProvider extends LabelProvider {
public Image getImage( Object element ) { public Image getImage( Object element ) {
IMatch match = null; IMatch match = null;
int elementType = -1;
if( element instanceof ISearchResultViewEntry ){ if( element instanceof ISearchResultViewEntry ){
ISearchResultViewEntry viewEntry = (ISearchResultViewEntry)element; ISearchResultViewEntry viewEntry = (ISearchResultViewEntry)element;
IMarker marker = viewEntry.getSelectedMarker(); IMarker marker = viewEntry.getSelectedMarker();
try { try {
match = (IMatch) marker.getAttribute( CSearchResultCollector.IMATCH ); match = (IMatch) marker.getAttribute( CSearchResultCollector.IMATCH );
if( match == null )
return null;
elementType = match.getElementType();
} catch (CoreException e) { } catch (CoreException e) {
return null; return null;
} }
} else if ( element instanceof IMatch ){ } else if ( element instanceof IMatch ){
match = (IMatch) element; match = (IMatch) element;
}
if( match == null ) if( match == null )
return null; return null;
elementType = match.getElementType();
} else if (element instanceof ICElement){
elementType = ((ICElement) element).getElementType();
}
ImageDescriptor imageDescriptor = null; ImageDescriptor imageDescriptor = null;
switch( match.getElementType() ){ switch( elementType ){
case ICElement.C_PROJECT: imageDescriptor = CPluginImages.DESC_OBJS_SEARCHHIERPROJECT; break;
case ICElement.C_CCONTAINER: imageDescriptor = CPluginImages.DESC_OBJS_SEARCHHIERFODLER; break;
case ICElement.C_CLASS: imageDescriptor = CPluginImages.DESC_OBJS_CLASS; break; case ICElement.C_CLASS: imageDescriptor = CPluginImages.DESC_OBJS_CLASS; break;
case ICElement.C_STRUCT: imageDescriptor = CPluginImages.DESC_OBJS_STRUCT; break; case ICElement.C_STRUCT: imageDescriptor = CPluginImages.DESC_OBJS_STRUCT; break;
case ICElement.C_UNION: imageDescriptor = CPluginImages.DESC_OBJS_UNION; break; case ICElement.C_UNION: imageDescriptor = CPluginImages.DESC_OBJS_UNION; break;
@ -86,6 +96,7 @@ public class CSearchResultLabelProvider extends LabelProvider {
case ICElement.C_VARIABLE: imageDescriptor = CPluginImages.DESC_OBJS_VARIABLE; break; case ICElement.C_VARIABLE: imageDescriptor = CPluginImages.DESC_OBJS_VARIABLE; break;
case ICElement.C_ENUMERATOR: imageDescriptor = CPluginImages.DESC_OBJS_ENUMERATOR; break; case ICElement.C_ENUMERATOR: imageDescriptor = CPluginImages.DESC_OBJS_ENUMERATOR; break;
case ICElement.C_TYPEDEF: imageDescriptor = CPluginImages.DESC_OBJS_TYPEDEF; break; case ICElement.C_TYPEDEF: imageDescriptor = CPluginImages.DESC_OBJS_TYPEDEF; break;
case ICElement.C_UNIT: imageDescriptor = CPluginImages.DESC_OBJS_TUNIT; break;
case ICElement.C_FIELD: case ICElement.C_FIELD:
{ {
switch( match.getVisibility() ){ switch( match.getVisibility() ){
@ -107,9 +118,12 @@ public class CSearchResultLabelProvider extends LabelProvider {
} }
int flags = 0; int flags = 0;
if (match != null){
if( match.isStatic() ) flags |= CElementImageDescriptor.STATIC; if( match.isStatic() ) flags |= CElementImageDescriptor.STATIC;
if( match.isConst() ) flags |= CElementImageDescriptor.CONSTANT; if( match.isConst() ) flags |= CElementImageDescriptor.CONSTANT;
if( match.isVolatile() ) flags |= CElementImageDescriptor.VOLATILE; if( match.isVolatile() ) flags |= CElementImageDescriptor.VOLATILE;
}
imageDescriptor = new CElementImageDescriptor( imageDescriptor, flags, SMALL_SIZE ); imageDescriptor = new CElementImageDescriptor( imageDescriptor, flags, SMALL_SIZE );
@ -134,6 +148,9 @@ public class CSearchResultLabelProvider extends LabelProvider {
} else if( element instanceof IMatch ){ } else if( element instanceof IMatch ){
match = (IMatch) element; match = (IMatch) element;
} }
else if ( element instanceof ICElement){
return getElementText((ICElement) element);
}
if( match == null ) if( match == null )
return ""; //$NON-NLS-1$ return ""; //$NON-NLS-1$
@ -164,6 +181,20 @@ public class CSearchResultLabelProvider extends LabelProvider {
return result; return result;
} }
private String getElementText(ICElement element){
String result=""; //$NON-NLS-1$
String path=""; //$NON-NLS-1$
ICElement parent=element.getParent();
result = element.getElementName() + " ( " + element.getPath() + " )"; //$NON-NLS-1$ //$NON-NLS-2$
return result;
}
public int getOrder(){ public int getOrder(){
return _sortOrder; return _sortOrder;
} }
@ -176,4 +207,6 @@ public class CSearchResultLabelProvider extends LabelProvider {
private int _imageFlags; private int _imageFlags;
private static final Point SMALL_SIZE= new Point(16, 16); private static final Point SMALL_SIZE= new Point(16, 16);
} }