Bug 304440 - [UX] Common search bar in the workbench
Summary: [UX] Common search bar in the workbench
Status: RESOLVED FIXED
Alias: None
Product: e4
Classification: Eclipse Project
Component: UI (show other bugs)
Version: 1.0   Edit
Hardware: PC Windows 7
: P3 normal (vote)
Target Milestone: 1.0 RC2   Edit
Assignee: Susan McCourt CLA
QA Contact: Bogdan Gheorghe CLA
URL:
Whiteboard:
Keywords:
Depends on: 69200
Blocks:
  Show dependency tree
 
Reported: 2010-03-02 20:49 EST by Susan McCourt CLA
Modified: 2019-05-29 06:24 EDT (History)
19 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Susan McCourt CLA 2010-03-02 20:49:21 EST
There have been numerous discussions regarding the desire to have a "common search box" in the eclipse workbench.  There are a number of bugs surrounding the implementation of said box, but I don't think we have a bug anywhere that captures what kind of search should be supported in the workbench.

- are we saying there should be a common search bar?
- does it have selectable search engines a la firefox search bar?
- where does it live visually?  (in the trim?  in the title bar on win7/cocoa?  etc....)

and most importantly:

What does a common search box do in Eclipse?

- several people have said this search box should support Ctrl-3 "quick access" style navigation. So that you could always type the name of any command/dialog/part you were looking for and quickly find it.  This seems to be a favorite of Eclipse developers

- Surely there is a bug asking for firefox-style text find/replace in the eclipse editors.  Do we have such a bug?  Do we think this would be implemented with a common search bar (or this is more of an editor thing?)

- Are there existing platform search bugs where a common search bar has already been discussed?

- Bug 69200 talks about common search for lists and trees.  One might imagine a search box operating on the active part.

- What is the relationship (if any) between this common search bar and the existing search extension points?  Would it be useful/possible to present the existing searches in this search bar somehow?  How would the user specify the search parameters besides text that are currently shown in the dialog?  Maybe only those searches for which there are reasonable defaults should live in this bar.

- Is there an extension point by which plug-ins can contribute their own kind of "simple search" and is this related at all to the existing search extension points?

Please mark any relevant bugs that should be considered as blocking bugs so we can understand the various requirements.
Comment 1 Boris Bokowski CLA 2010-03-03 01:00:18 EST
To kick things off, here is my personal opinion:

> - are we saying there should be a common search bar?

+1

> - does it have selectable search engines a la firefox search bar?

+1

> - where does it live visually?  (in the trim?  in the title bar on win7/cocoa? 

no preference

> What does a common search box do in Eclipse?

I would like to have it support many search providers (similar to the Firefox search box). This would make things like Ctrl-3 but also "Open Type"/"Open Resource" better discoverable. The current key binding for these could assign keyboard focus to the search box and select the right search provider.

Not sure what the default search provider should be for the Eclipse IDE - perhaps "Open Resource"?

> - Surely there is a bug asking for firefox-style text find/replace in the
> eclipse editors.  Do we have such a bug?  Do we think this would be implemented
> with a common search bar (or this is more of an editor thing?)

I don't think this would be appropriate, it's more of an editor thing and Firefox does not use its search box for finding text in the current page - it grows a separate search area in the trim.

> - Bug 69200 talks about common search for lists and trees.  One might imagine a
> search box operating on the active part.

Similar to the above, I think it is important to have searches that operate on a part be local to that part.

> - What is the relationship (if any) between this common search bar and the
> existing search extension points?  Would it be useful/possible to present the
> existing searches in this search bar somehow?  How would the user specify the
> search parameters besides text that are currently shown in the dialog?  Maybe
> only those searches for which there are reasonable defaults should live in this
> bar.

Not sure, but one possibility would be to allow search queries in the search box, with further refinement (where you'd want a forms-based UI similar to the current one) being triggered from the place where you see the search result.

> - Is there an extension point by which plug-ins can contribute their own kind
> of "simple search" and is this related at all to the existing search extension
> points?

Not sure if related, but I would like to see this be extensible. "Open Type" and "Open Resource" would be contributions to this extension point.
Comment 2 Lars Vogel CLA 2010-03-03 03:06:38 EST
I completely agree with Boris. To state my opinion:

> - are we saying there should be a common search bar?

+1

> - does it have selectable search engines a la firefox search bar?

+1

This should definitely be extensible. "Open Type"
and "Open Resource", and "Text Search" would be contributions to this extension point.
Comment 3 Gunnar Wagenknecht CLA 2010-03-03 03:57:11 EST
(In reply to comment #0)
> - are we saying there should be a common search bar?

+1

> - does it have selectable search engines a la firefox search bar?

-0.5

> - where does it live visually?  (in the trim?  in the title bar on win7/cocoa? 
> etc....)

no preference, it should be a prominent location, though

> What does a common search box do in Eclipse?

I like the concept of multiple search providers. However, I dislike the concept of manually selecting the search provider. Therefore I voted "-0.5" above.

If you look at the future of browsers the search bar merges with the address/location bar to become a global navigation bar. This Eclipse search bar should go into a similar direction. 

As a lazy user I just start typing in the bar. "IAdap<cursor>". As soon as I pause a bit auto completion kicks in and comes back with a few proposals.

* IAdaptable.java - org.eclipse.equinox.common/src/... (Open in Editor)
* Class org.eclipse.core.runtime.IAdaptable (Open JavaDoc)
* MyAdapter.java - myproject/src/.... (Open Editor)
* plugin.xml - myproject (Open Editor)
* Adapters (Eclipse Help)
* org.eclipse.core.runtime (Eclipse Platform API Specification)
* Search for references to org.eclipse.core.runtime.IAdaptable
* Search help for "IAdap"
* Search workspace for files containing "IAdap"
* ...

> - What is the relationship (if any) between this common search bar and the
> existing search extension points?

Ideally, I would stop using existing searches (Ctrl+H) but only use the search bar and find what I want quickly.

>  Would it be useful/possible to present the
> existing searches in this search bar somehow? 

As I outline above, existing search could be integrated into the search bar using search actions. For example, I type something, JDT recognizes that this could be a Java class and offers me an "action" to search for references. Similar, another "action" would allow me to start a file search.

> How would the user specify the
> search parameters besides text that are currently shown in the dialog?  Maybe
> only those searches for which there are reasonable defaults should live in this
> bar.

+1

> - Is there an extension point by which plug-ins can contribute their own kind
> of "simple search" and is this related at all to the existing search extension
> points?

+1 for allowing others to contribute results to the search bar. Such results could be other "actions" or real search results.

FWIW, I could imagine that one day the common search bar is connected to an index (likely Lucene). The index is filled by many providers. The search bar could become something like a desktop/Google search scoped to the SDK and its content. Everything is indexed and I get results quickly. Results a ranked properly. 

Eventually this index will be hooked into desktop search engines.
Comment 4 Chris Aniszczyk CLA 2010-03-03 10:08:02 EST
I'm a definite +1 for this.

Funny though, we discussed something like this about 4-5 years ago with a proposal, just can't find it now.
Comment 5 Dani Megert CLA 2010-03-04 04:56:08 EST
+1, such a search field is definitely something to explore further. I agree
with Boris, that editor/text search is different/separate from that and some
investigation (tough stalled at this time) has already been done, see bug
99294.

Currently we already have two extension points for searches: one in Platform
Search and another one in Platform UI (help). If there's a way to somehow reuse
that, it would be good.

Regarding Open Type and Open Resource: there's already a feature request that
wants to marry the two, see bug 279624.

Another interesting question is how we would present the matches: would the
search bar show the matches so that a single result can be selected or would it
simply feed the search string into the appropriate dialogs and/or views (e.g.
Open Type dialog, Search view, etc.)? If this feature would allow to present
results then it might find matches using several plugged-in search providers,
e.g. resources and types starting with "Foo".
Comment 6 Gunnar Wagenknecht CLA 2010-03-04 05:04:40 EST
(In reply to comment #5)
> Another interesting question is how we would present the matches: would the
> search bar show the matches so that a single result can be selected or would it
> simply feed the search string into the appropriate dialogs and/or views (e.g.
> Open Type dialog, Search view, etc.)? If this feature would allow to present
> results then it might find matches using several plugged-in search providers,
> e.g. resources and types starting with "Foo".

I think that there should be some "auto-completion" like presentation to the user (while a user is typing in the search bar) - similar to browsers. Up/Down arrow keys could be used to navigate the quick results and Enter/Return "opens"/"invokes" the result.

The presentation should be prepared for some richer styling of the "quick" results (eg. some text formatting, an icon, etc.). This would be useful to differentiate the different kind of results, eg. a search action would have a search icon in front of the text, an editor result could have the corresponding editor icon, a command the command icon.

Some result might open editors directly. Others are "actions" which (upon its invocation) start a search which populates the search results view (like find references for example).
Comment 7 Susan McCourt CLA 2010-03-04 10:35:05 EST
I really like where Gunnar and Dani are going with this - minimizing user choice of search engines and merging results.  There could still be some preferences to guide which searches are active, or perhaps priority when showing results.
Comment 8 Gunnar Wagenknecht CLA 2010-03-04 11:09:46 EST
(In reply to comment #7)
> There could still be some preferences to guide which searches are active, 
> or perhaps priority when showing results.

Yes, feedback (for ongoing background operation) as well as ranking is important. For example, results from JDT searchers should be ranked higher in a JDT perspective. A more advanced ranking algorithm might also boost results from PDE searches even though a JDT perspective is active but a PDE project is selected or a PDE editor is active. Hmmm .... so much possibilities. :)
Comment 9 Eugene Ostroukhov CLA 2010-03-26 02:41:13 EDT
I have been thinking for a few years now about the "search service" that would be a part of the platform. Actually, the "token viewer" (https://bugs.eclipse.org/bugs/show_bug.cgi?id=262846) was a byproduct of one of the prototype implementations (they all failed for me :) but I'm meaning to start anew).

I believe modern UI relies heavily on search - we can see it as Spotlight on Mac, whatever rip-off they have on Windows. Searchboxes are everywhere. The IDE really relies on search for stuff like content assist, open type/resource/etc. Having "search service" would allow decoupling UI from the search logic itself.

Here are some of the requirements for the search service I gathered:
1. Search engine is not a part of the UI. There are several UI elements that may consume it (toolbar searchbox, content assist processors, "Open Resource" dialog, a lot of application-specific UIs) but it may also make sense for non-UI parts like refactoring support. It may also be great for reuse in web-based applications.
2. It should provide object agnostic API. I.e. it should not specifically search for Java elements, resources, company employees (in RCP application).
3. It should not need to rely on a workspace. RCP application may use it to search for apples, oranges, whatever.
4. It should be extensible. Default implementation of the "resource search processor" may find files based on file name - while plugin may contribute to the same search results to search by author.
5. It should have consistent and extensible query language (plain text match, camelcase, comparison), support for arbitrary attributes (author:"John Doe")
6. I should be possible to restrict search scope (i.e. based on working set, object type, "department").
7. It should also have an extensible UI part (i.e. label providers for the search results - that will work in both content assist pop-ups and searchbox).
8. It should have high-performance (i.e. it should be able to invoke "search processors" concurrently and asynchronously) while maintaining simple programming model for both extension and consumption.
9. It should provide session management, when several concurrent sessions may be under way (i.e. search processors backed by database may opt to avoid requiring database if next search narrows down previous - i.e. if we have results for employees named "Jo" we need only filter out some of them if next query is "Joh" - that can be done without going to the backend.
Comment 10 Eric Moffatt CLA 2010-03-29 16:14:12 EDT
Re-assigning to the 'e4' stream...
Comment 11 Boris Bokowski CLA 2010-05-12 09:07:09 EDT
(In reply to comment #9)
> I have been thinking for a few years now about the "search service" that would
> be a part of the platform.

Thanks Eugene, your requirements list is very useful.  Do you think there is anything we could do in short order, for the July release?  What's the simplest thing that could possibly work?
Comment 12 Susan McCourt CLA 2010-05-25 11:13:09 EDT
in bug 293481 comment 37 there is a request that the user can eliminate the search bar from the toolbar if they don't want it.  Also discussion about left vs. right positioning. 

We would probably give configurability to the search bar similar to perspective bar (dock on-> ???)
Comment 13 Susan McCourt CLA 2010-06-03 20:21:54 EDT
I'm going to take a stab at something bare bones/non-extensible.

My fantasy idea is that:
- the filter box in the QuickAccessDialog can be separated from the rest of it, so that typing in the search box would give you a categorized popup like quick access
- somehow merge open resource into the search 

If this can't be done then I will probably fall back to the selectable search and these two kinds of search would be treated separately, but both available from the box.

If this can't be done then there will be no search box in 4.0.
Comment 14 Boris Bokowski CLA 2010-06-27 12:55:58 EDT
I have released changes to HEAD for putting a search box in the trim. It currently has the Quick Access functionality only. I am not sure if I will have the time to also get "open resource" functionality in there.

Also high on my list is to port the "new look" non-native search control from FilteredTree, because the search box only looks like a search box on the Mac and on GTK.
Comment 15 Dani Megert CLA 2010-07-01 05:08:04 EDT
>Also high on my list is to port the "new look" non-native search control from
>FilteredTree
I think the best thing is to provide a FilterText or SearchText widget. We also have the need for such a widget in 3.7.
Comment 16 John Arthorne CLA 2010-07-02 14:34:01 EDT
Moving open bugs to a target milestone that is not in the past. Please adjust target as you see fit.
Comment 17 Dani Megert CLA 2010-07-07 02:51:08 EDT
>I think the best thing is to provide a FilterText or SearchText widget. We also
>have the need for such a widget in 3.7.
See bug 293230.
Comment 18 Boris Bokowski CLA 2010-07-07 10:50:25 EDT
(In reply to comment #17)
> >I think the best thing is to provide a FilterText or SearchText widget. We also
> >have the need for such a widget in 3.7.
> See bug 293230.

We won't have the cycles to work on an emulated widget for the 4.0 search box in time for the release, but if anyone else has time, feel free to provide a patch... :-)
Comment 19 Susan McCourt CLA 2010-07-21 12:07:41 EDT
marking bug fixed since work was done and milestone is recorded.
Opened bug 320529 to track the evolution of this feature (and point to this bug since other ideas were captured.)

Of course anyone can open a specific bug for specific suggestions...