diff --git a/core/org.eclipse.cdt.ui/ChangeLog b/core/org.eclipse.cdt.ui/ChangeLog index 8e04e27be54..6a2e604fc83 100644 --- a/core/org.eclipse.cdt.ui/ChangeLog +++ b/core/org.eclipse.cdt.ui/ChangeLog @@ -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 diff --git a/core/org.eclipse.cdt.ui/icons/full/obj16/cprojects.gif b/core/org.eclipse.cdt.ui/icons/full/obj16/cprojects.gif new file mode 100644 index 00000000000..fcc08ad89c6 Binary files /dev/null and b/core/org.eclipse.cdt.ui/icons/full/obj16/cprojects.gif differ diff --git a/core/org.eclipse.cdt.ui/icons/full/obj16/fldr_obj.gif b/core/org.eclipse.cdt.ui/icons/full/obj16/fldr_obj.gif new file mode 100644 index 00000000000..ab602f25d29 Binary files /dev/null and b/core/org.eclipse.cdt.ui/icons/full/obj16/fldr_obj.gif differ diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CPluginImages.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CPluginImages.java index afe436a9895..2e39046d6c4 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CPluginImages.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CPluginImages.java @@ -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); } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/CSearchMessages.properties b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/CSearchMessages.properties index b5a82cc08f8..f66d4479a49 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/CSearchMessages.properties +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/CSearchMessages.properties @@ -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 diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/CSearchResultPage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/CSearchResultPage.java index 035a1b60839..2dc34630ae8 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/CSearchResultPage.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/CSearchResultPage.java @@ -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 - - _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$ + _groupProjectAction.setImageDescriptor(CPluginImages.DESC_OBJS_SEARCHHIERPROJECT); + + _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) { diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/LevelTreeContentProvider.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/LevelTreeContentProvider.java index 96b7136c1a2..a344ff27f70 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/LevelTreeContentProvider.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/LevelTreeContentProvider.java @@ -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; @@ -51,15 +62,26 @@ public class LevelTreeContentProvider extends CSearchContentProvider implements } public Object getParent(Object child) { + + if (child instanceof BasicSearchMatch){ + BasicSearchMatch tempMatch = (BasicSearchMatch)child; + ICElement cTransUnit = CCorePlugin.getDefault().getCoreModel().create(tempMatch.getResource()); + + if (cTransUnit instanceof ITranslationUnit){ + try { + child = ((ITranslationUnit) cTransUnit).getElementAtOffset(tempMatch.startOffset); + } catch (CModelException e) {} + } + + } - BasicSearchMatch tempMatch = (BasicSearchMatch)child; - child = CCorePlugin.getDefault().getCoreModel().create(tempMatch.getResource()); 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); diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CSearchResultLabelProvider.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CSearchResultLabelProvider.java index ba8f08d9fdb..58e63560721 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CSearchResultLabelProvider.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CSearchResultLabelProvider.java @@ -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(); + } + - if( match == null ) - return 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_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,10 +118,13 @@ public class CSearchResultLabelProvider extends LabelProvider { } int flags = 0; - if( match.isStatic() ) flags |= CElementImageDescriptor.STATIC; - if( match.isConst() ) flags |= CElementImageDescriptor.CONSTANT; - if( match.isVolatile() ) flags |= CElementImageDescriptor.VOLATILE; - + + 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 ); Image image = CUIPlugin.getImageDescriptorRegistry().get( imageDescriptor ); @@ -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; } @@ -174,6 +205,8 @@ public class CSearchResultLabelProvider extends LabelProvider { private int _sortOrder; private int _textFlags; private int _imageFlags; - + private static final Point SMALL_SIZE= new Point(16, 16); + + } \ No newline at end of file