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
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_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_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_SEARCHHIERPROJECT = createManaged(T_OBJ,IMG_OBJS_SEARCHPROJECT);
public static final ImageDescriptor DESC_OBJS_SEARCHHIERFODLER = createManaged(T_OBJ,IMG_OBJS_SEARCHFOLDER);
// refactoring
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$
@ -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_TEXT_EDIT= create(T_OBJ, "text_edit.gif"); //$NON-NLS-1$
private static ImageDescriptor createManaged(String prefix, String 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_file=File
CSearchResultPage.groupby_file.tooltip=Group by File
CSearchResultPage.groupby_namespace=Namespace
CSearchResultPage.groupby_namespace.tooltip=Group by Namespace
CSearchResultPage.groupby_folder=Folder
CSearchResultPage.groupby_folder.tooltip=Group by Folder
CSearchResultPage.groupby_class=Class
CSearchResultPage.groupby_class.tooltip=Group by Class
# Search Page Indexer warnings
CSearchPage.warning.indexernoprojects=Index not enabled on any projects

View file

@ -50,8 +50,9 @@ public class CSearchResultPage extends AbstractTextSearchViewPage {
private SortAction _elementNameSortAction;
private GroupAction _groupFileAction;
private GroupAction _groupNamespaceAction;
private GroupAction _groupFoldersAction;
private GroupAction _groupProjectAction;
private GroupAction _groupClassAction;
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() {
_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$
CPluginImages.setImageDescriptors(_groupNamespaceAction,CPluginImages.T_TOOL, CPluginImages.IMG_OBJS_PROJECT); //$NON-NLS-1$
_groupFoldersAction= new GroupAction(CSearchMessages.getString("CSearchResultPage.groupby_folder"), CSearchMessages.getString("CSearchResultPage.groupby_folder.tooltip"), this, LevelTreeContentProvider.LEVEL_FOLDER); //$NON-NLS-1$ //$NON-NLS-2$
_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$
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 {
_currentGrouping= getSettings().getInt(KEY_GROUPING);
@ -211,9 +215,9 @@ public class CSearchResultPage extends AbstractTextSearchViewPage {
private void addGroupActions(IToolBarManager mgr) {
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, fGroupTypeAction);
mgr.appendToGroup(IContextMenuConstants.GROUP_VIEWER_SETUP, _groupClassAction);
updateGroupingActions();
}
@ -234,8 +238,9 @@ public class CSearchResultPage extends AbstractTextSearchViewPage {
private void updateGroupingActions() {
_groupProjectAction.setChecked(_currentGrouping == LevelTreeContentProvider.LEVEL_PROJECT);
_groupNamespaceAction.setChecked(_currentGrouping == LevelTreeContentProvider.LEVEL_NAMESPACE);
_groupFoldersAction.setChecked(_currentGrouping == LevelTreeContentProvider.LEVEL_FOLDER);
_groupFileAction.setChecked(_currentGrouping == LevelTreeContentProvider.LEVEL_FILE);
_groupClassAction.setChecked(_currentGrouping == LevelTreeContentProvider.LEVEL_CLASS);
}
protected void fillToolbar(IToolBarManager tbm) {

View file

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

View file

@ -57,25 +57,35 @@ public class CSearchResultLabelProvider extends LabelProvider {
public Image getImage( Object element ) {
IMatch match = null;
int elementType = -1;
if( element instanceof ISearchResultViewEntry ){
ISearchResultViewEntry viewEntry = (ISearchResultViewEntry)element;
IMarker marker = viewEntry.getSelectedMarker();
try {
match = (IMatch) marker.getAttribute( CSearchResultCollector.IMATCH );
if( match == null )
return null;
elementType = match.getElementType();
} catch (CoreException e) {
return null;
}
} else if ( element instanceof IMatch ){
match = (IMatch) element;
}
if( match == null )
return null;
elementType = match.getElementType();
} else if (element instanceof ICElement){
elementType = ((ICElement) element).getElementType();
}
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_STRUCT: imageDescriptor = CPluginImages.DESC_OBJS_STRUCT; 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_ENUMERATOR: imageDescriptor = CPluginImages.DESC_OBJS_ENUMERATOR; 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:
{
switch( match.getVisibility() ){
@ -107,9 +118,12 @@ public class CSearchResultLabelProvider extends LabelProvider {
}
int flags = 0;
if (match != null){
if( match.isStatic() ) flags |= CElementImageDescriptor.STATIC;
if( match.isConst() ) flags |= CElementImageDescriptor.CONSTANT;
if( match.isVolatile() ) flags |= CElementImageDescriptor.VOLATILE;
}
imageDescriptor = new CElementImageDescriptor( imageDescriptor, flags, SMALL_SIZE );
@ -134,6 +148,9 @@ public class CSearchResultLabelProvider extends LabelProvider {
} else if( element instanceof IMatch ){
match = (IMatch) element;
}
else if ( element instanceof ICElement){
return getElementText((ICElement) element);
}
if( match == null )
return ""; //$NON-NLS-1$
@ -164,6 +181,20 @@ public class CSearchResultLabelProvider extends LabelProvider {
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(){
return _sortOrder;
}
@ -176,4 +207,6 @@ public class CSearchResultLabelProvider extends LabelProvider {
private int _imageFlags;
private static final Point SMALL_SIZE= new Point(16, 16);
}