Index: editor/tools/plugins/com.google.dart.tools.deploy/src/com/google/dart/tools/ui/omni/OmniBoxPopup.java |
=================================================================== |
--- editor/tools/plugins/com.google.dart.tools.deploy/src/com/google/dart/tools/ui/omni/OmniBoxPopup.java (revision 7702) |
+++ editor/tools/plugins/com.google.dart.tools.deploy/src/com/google/dart/tools/ui/omni/OmniBoxPopup.java (working copy) |
@@ -459,6 +459,9 @@ |
} else { |
boldStyle = null; |
} |
+ final TextStyle grayStyle = new TextStyle(table.getFont(), |
+ OmniBoxColors.SEARCH_ENTRY_ITEM_TEXT, null); |
+ |
Listener listener = new Listener() { |
@Override |
public void handleEvent(Event event) { |
@@ -469,8 +472,7 @@ |
entry.measure(event, textLayout, resourceManager, boldStyle); |
break; |
case SWT.PaintItem: |
- entry.paint(event, textLayout, resourceManager, boldStyle, |
- OmniBoxColors.SEARCH_ENTRY_ITEM_TEXT); |
+ entry.paint(event, textLayout, resourceManager, boldStyle, grayStyle); |
break; |
case SWT.EraseItem: |
entry.erase(event); |
@@ -798,6 +800,25 @@ |
return false; |
} |
+ private void markDuplicates(List<OmniEntry>[] entries) { |
+ |
+ final HashMap<String, OmniElement> seen = new HashMap<String, OmniElement>(); |
+ OmniElement current; |
+ |
+ for (List<OmniEntry> entrySets : entries) { |
+ for (OmniEntry entry : entrySets) { |
+ current = entry.element; |
+ OmniElement previous = seen.get(current.getLabel()); |
+ if (previous != null) { |
+ previous.setIsDuplicate(true); |
+ current.setIsDuplicate(true); |
+ } else { |
+ seen.put(current.getLabel(), current); |
+ } |
+ } |
+ } |
+ } |
+ |
private void refreshInternal(final String filter) { |
//an empty filter indicates a new query, meaning we need to clear caches |
if (filter.length() == 0) { |
@@ -880,6 +901,9 @@ |
//} |
table.removeAll(); |
+ //elements flagged as duplicates get rendered with disambiguating details |
+ markDuplicates(entries); |
+ |
TableItem[] items = table.getItems(); |
int selectionIndex = -1; |
int index = 0; |
@@ -913,6 +937,7 @@ |
item.setData(entry); |
item.setText(0, entry.provider.getName()); |
item.setText(1, entry.element.getLabel()); |
+ |
if (Util.isWpf()) { |
item.setImage(1, entry.getImage(entry.element, resourceManager)); |
} |