-
Notifications
You must be signed in to change notification settings - Fork 166
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Proposal: modern and well-integrated Find/Replace #1090
Comments
I strongly support this initiative! The integration in the view/editor/part seems to be relatively intrusive: I supsect it requires change to more than the Search dialog, so I would defer that part for later. |
At this stage, I would encourage you to submit a pull request that contains the very minimal subset available to try this approach out. |
@mickaelistria Thank you for your feedback! |
Yes please, a PR makes it easier to try and review. |
This is the PR! |
I very much like this approach. Eclipse search dialog is one of the worst out their and with your change, it looks very modern (and similar to other modern tools). |
For transparency, I want to summarize a conversation with @HeikoKlare which shed light on a fundamental question. contextIt is clear that inserting the find-replace dialog as a composite onto the editor is intrusive and requires a lot of testing before even being considered for merging, however, it is also clearly the final solution if we want to allow other views to provide this functionality.A simple straight-forward solution is to implement a temporary solution for the next release, consisting in the find-replace dialog as a hovering overlay that is anchored and follows the editor when it moves or changes size. This solution cannot be the final solution for all views, but if we limit ourselves to the editor as a first increment, it should be fine. I personally would opt for directly implementing this solution correctly, accepting possible delays down the road for testing. I can also understand the calls to caution, asking to first implement a temporary solution (that will likely stay!) and to subsequently implement the final solution - I would like to hear more input on this before committing to any roadmap With this in mind, I want to present a temporary RoadmapMilestone 1e.g., December 2023 Refactor
|
This roadmap seems quite good to me! I don't think you should try to commit to dates and so on; just do your best and we'll integrate it as soon as we collectively agree it is ready to be merged, step by step. The sooner the better, of course; but we don't have nor need particular deadlines. |
It would be nice to get more lines for the search and replace fields when the find view is in regex mode. |
The FindReplaceDialog's business-logic is now handled in the FindReplacer. The FindReplacer communicates using a FindReplaceStatus object which is polled by FindReplaceDialog as needed and allows for displaying correct messages in the Interface. This Refactoring is required so that the business-logic can be reused in the new FindReplace overlay, as proposed in issue eclipse-platform#1090
The FindReplaceDialog's business-logic is now handled in the FindReplacer. The FindReplacer communicates using a FindReplaceStatus object which is polled by FindReplaceDialog as needed and allows for displaying correct messages in the Interface. This Refactoring is required so that the business-logic can be reused in the new FindReplace overlay, as proposed in issue eclipse-platform#1090
The FindReplaceDialog's business-logic is now handled in the FindReplacer. The FindReplacer communicates using a FindReplaceStatus object which is polled by FindReplaceDialog as needed and allows for displaying correct messages in the Interface. This Refactoring is required so that the business-logic can be reused in the new FindReplace overlay, as proposed in issue eclipse-platform#1090
The FindReplaceDialog's business-logic is now handled in the FindReplacer. The FindReplacer communicates using a FindReplaceStatus object which is polled by FindReplaceDialog as needed and allows for displaying correct messages in the Interface. This Refactoring is required so that the business-logic can be reused in the new FindReplace overlay, as proposed in issue eclipse-platform#1090
According to Proposal eclipse-platform#1090 This Find-Replace overlay is a trimless Dialog that stays on top of the workbench and repositions itself automatically as the editor is being moved. It reuses the business-logic of the FindReplaceDialog extracted into FindReplacer.
In response to issue eclipse-platform#1090. Goals for this overlay are a simple and modern UI/UX for finding/replacing in eclipse. -- [Modern Find/Replace] Refactor FindReplaceDialog The FindReplaceDialog's business-logic is now handled in the FindReplacer. The FindReplacer communicates using a FindReplaceStatus object which is polled by FindReplaceDialog as needed and allows for displaying correct messages in the Interface. This Refactoring is required so that the business-logic can be reused in the new FindReplace overlay, as proposed in issue eclipse-platform#1090
The FindReplaceDialog's business-logic is now handled in the FindReplacer. The FindReplacer communicates using a FindReplaceStatus object which is polled by FindReplaceDialog as needed and allows for displaying correct messages in the Interface. This Refactoring is required so that the business-logic can be reused in the new FindReplace overlay, as proposed in issue eclipse-platform#1090
The FindReplaceDialog's business-logic is now handled in the FindReplacer. The FindReplacer communicates using a FindReplaceStatus object which is polled by FindReplaceDialog as needed and allows for displaying correct messages in the Interface. This Refactoring is required so that the business-logic can be reused in the new FindReplace overlay, as proposed in issue eclipse-platform#1090
In response to issue eclipse-platform#1090. Goals for this overlay are a simple and modern UI/UX for finding/replacing in eclipse. -- [Modern Find/Replace] Refactor FindReplaceDialog The FindReplaceDialog's business-logic is now handled in the FindReplacer. The FindReplacer communicates using a FindReplaceStatus object which is polled by FindReplaceDialog as needed and allows for displaying correct messages in the Interface. This Refactoring is required so that the business-logic can be reused in the new FindReplace overlay, as proposed in issue eclipse-platform#1090
In response to issue eclipse-platform#1090. Goals for this overlay are a simple and modern UI/UX for finding/replacing in eclipse. -- [Modern Find/Replace] Refactor FindReplaceDialog The FindReplaceDialog's business-logic is now handled in the FindReplacer. The FindReplacer communicates using a FindReplaceStatus object which is polled by FindReplaceDialog as needed and allows for displaying correct messages in the Interface. This Refactoring is required so that the business-logic can be reused in the new FindReplace overlay, as proposed in issue eclipse-platform#1090
The FindReplaceDialog's business-logic is now handled in the FindReplacer. The FindReplacer communicates using a FindReplaceStatus object which is polled by FindReplaceDialog as needed and allows for displaying correct messages in the Interface. This Refactoring is required so that the business-logic can be reused in the new FindReplace overlay, as proposed in issue eclipse-platform#1090
The FindReplaceDialog's business-logic is now handled in the FindReplacer. The FindReplacer communicates using a FindReplaceStatus object which is polled by FindReplaceDialog as needed and allows for displaying correct messages in the Interface. This Refactoring is required so that the business-logic can be reused in the new FindReplace overlay, as proposed in issue eclipse-platform#1090
In response to issue eclipse-platform#1090. Goals for this overlay are a simple and modern UI/UX for finding/replacing in eclipse. -- [Modern Find/Replace] Refactor FindReplaceDialog The FindReplaceDialog's business-logic is now handled in the FindReplacer. The FindReplacer communicates using a FindReplaceStatus object which is polled by FindReplaceDialog as needed and allows for displaying correct messages in the Interface. This Refactoring is required so that the business-logic can be reused in the new FindReplace overlay, as proposed in issue eclipse-platform#1090
In response to issue eclipse-platform#1090. Goals for this overlay are a simple and modern UI/UX for finding/replacing in eclipse. !!!!! This commit is only a functional commit meant to showcase a new feature. The code still has several flaws and needs a lot of improvement and redesign before being considered for Merging. !!!!! -- [Modern Find/Replace] Refactor FindReplaceDialog The FindReplaceDialog's business-logic is now handled in the FindReplacer. The FindReplacer communicates using a FindReplaceStatus object which is polled by FindReplaceDialog as needed and allows for displaying correct messages in the Interface. This Refactoring is required so that the business-logic can be reused in the new FindReplace overlay, as proposed in issue eclipse-platform#1090
In response to issue eclipse-platform#1090. Goals for this overlay are a simple and modern UI/UX for finding/replacing in eclipse. !!!!! This commit is only a functional commit meant to showcase a new feature. The code still has several flaws and needs a lot of improvement and redesign before being considered for Merging. !!!!! -- [Modern Find/Replace] Refactor FindReplaceDialog The FindReplaceDialog's business-logic is now handled in the FindReplacer. The FindReplacer communicates using a FindReplaceStatus object which is polled by FindReplaceDialog as needed and allows for displaying correct messages in the Interface. This Refactoring is required so that the business-logic can be reused in the new FindReplace overlay, as proposed in issue eclipse-platform#1090
In response to issue eclipse-platform#1090. Goals for this overlay are a simple and modern UI/UX for finding/replacing in eclipse. !!!!! This commit is only a functional commit meant to showcase a new feature. The code still has several flaws and needs a lot of improvement and redesign before being considered for Merging. !!!!! -- [Modern Find/Replace] Refactor FindReplaceDialog The FindReplaceDialog's business-logic is now handled in the FindReplacer. The FindReplacer communicates using a FindReplaceStatus object which is polled by FindReplaceDialog as needed and allows for displaying correct messages in the Interface. This Refactoring is required so that the business-logic can be reused in the new FindReplace overlay, as proposed in issue eclipse-platform#1090
This PR implements and tests a find/replace dialog which can be overlayed on top of the editor. The overlay uses the FindReplaceLogic which is also used by the existing find/replace dialog. The overlay can be enabled and disabled in the preferences. eclipse-platform#1090
This PR implements and tests a find/replace dialog which can be overlayed on top of the editor. The overlay uses the FindReplaceLogic which is also used by the existing find/replace dialog. The overlay can be enabled and disabled in the preferences. eclipse-platform#1090
This PR implements and tests a find/replace dialog which can be overlayed on top of the editor. The overlay uses the FindReplaceLogic which is also used by the existing find/replace dialog. The overlay can be enabled and disabled in the preferences. eclipse-platform#1090
This PR implements and tests a find/replace dialog which can be overlayed on top of the editor. The overlay uses the FindReplaceLogic which is also used by the existing find/replace dialog. The overlay can be enabled and disabled in the preferences. eclipse-platform#1090
This PR implements and tests a find/replace dialog which can be overlayed on top of the editor. The overlay uses the FindReplaceLogic which is also used by the existing find/replace dialog. The overlay can be enabled and disabled in the preferences. eclipse-platform#1090
This PR implements and tests a find/replace dialog which can be overlayed on top of the editor. The overlay uses the FindReplaceLogic which is also used by the existing find/replace dialog. The overlay can be enabled and disabled in the preferences. eclipse-platform#1090
This PR implements and tests a find/replace dialog which can be overlayed on top of the editor. The overlay uses the FindReplaceLogic which is also used by the existing find/replace dialog. The overlay can be enabled and disabled in the preferences. eclipse-platform#1090
This PR implements and tests a find/replace dialog which can be overlayed on top of the editor. The overlay uses the FindReplaceLogic which is also used by the existing find/replace dialog. The overlay can be enabled and disabled in the preferences. eclipse-platform#1090
This PR implements and tests a find/replace dialog which can be overlayed on top of the editor. The overlay uses the FindReplaceLogic which is also used by the existing find/replace dialog. The overlay can be enabled and disabled in the preferences. eclipse-platform#1090
This PR implements and tests a find/replace dialog which can be overlayed on top of the editor. The overlay uses the FindReplaceLogic which is also used by the existing find/replace dialog. The overlay can be enabled and disabled in the preferences. eclipse-platform#1090
This PR implements and tests a find/replace dialog which can be overlayed on top of the editor. The overlay uses the FindReplaceLogic which is also used by the existing find/replace dialog. The overlay can be enabled and disabled in the preferences. eclipse-platform#1090
This PR implements and tests a find/replace dialog which can be overlayed on top of the editor. The overlay uses the FindReplaceLogic which is also used by the existing find/replace dialog. The overlay can be enabled and disabled in the preferences. eclipse-platform#1090
This PR implements and tests a find/replace dialog which can be overlayed on top of the editor. The overlay uses the FindReplaceLogic which is also used by the existing find/replace dialog. The overlay can be enabled and disabled in the preferences. eclipse-platform#1090
This PR implements and tests a find/replace dialog which can be overlayed on top of the editor. The overlay uses the FindReplaceLogic which is also used by the existing find/replace dialog. The overlay can be enabled and disabled in the preferences. eclipse-platform#1090
This PR implements and tests a find/replace dialog which can be overlayed on top of the editor. The overlay uses the FindReplaceLogic which is also used by the existing find/replace dialog. The overlay can be enabled and disabled in the preferences. eclipse-platform#1090
This PR implements and tests a find/replace dialog which can be overlayed on top of the editor. The overlay uses the FindReplaceLogic which is also used by the existing find/replace dialog. The overlay can be enabled and disabled in the preferences. eclipse-platform#1090
This PR implements and tests a find/replace dialog which can be overlayed on top of the editor. The overlay uses the FindReplaceLogic which is also used by the existing find/replace dialog. The overlay can be enabled and disabled in the preferences. eclipse-platform#1090
This PR implements and tests a find/replace dialog which can be overlayed on top of the editor. The overlay uses the FindReplaceLogic which is also used by the existing find/replace dialog. The overlay can be enabled and disabled in the preferences. eclipse-platform#1090
This PR implements and tests a find/replace dialog which can be overlayed on top of the editor. The overlay uses the FindReplaceLogic which is also used by the existing find/replace dialog. The overlay can be enabled and disabled in the preferences. eclipse-platform#1090
This PR implements and tests a find/replace dialog which can be overlayed on top of the editor. The overlay uses the FindReplaceLogic which is also used by the existing find/replace dialog. The overlay can be enabled and disabled in the preferences. eclipse-platform#1090
This PR implements and tests a find/replace dialog which can be overlayed on top of the editor. The overlay uses the FindReplaceLogic which is also used by the existing find/replace dialog. The overlay can be enabled and disabled in the preferences. eclipse-platform#1090
This PR implements and tests a find/replace dialog which can be overlayed on top of the editor. The overlay uses the FindReplaceLogic which is also used by the existing find/replace dialog. The overlay can be enabled and disabled in the preferences. eclipse-platform#1090
This PR implements and tests a find/replace dialog which can be overlayed on top of the editor. The overlay uses the FindReplaceLogic which is also used by the existing find/replace dialog. The overlay can be enabled and disabled in the preferences. eclipse-platform#1090
This PR implements and tests a find/replace dialog which can be overlayed on top of the editor. The overlay uses the FindReplaceLogic which is also used by the existing find/replace dialog. The overlay can be enabled and disabled in the preferences. eclipse-platform#1090
This PR implements and tests a find/replace dialog which can be overlayed on top of the editor. The overlay uses the FindReplaceLogic which is also used by the existing find/replace dialog. The overlay can be enabled and disabled in the preferences. eclipse-platform#1090
This PR implements and tests a find/replace dialog which can be overlayed on top of the editor. The overlay uses the FindReplaceLogic which is also used by the existing find/replace dialog. The overlay can be enabled and disabled in the preferences. eclipse-platform#1090
This PR implements and tests a find/replace dialog which can be overlayed on top of the editor. The overlay uses the FindReplaceLogic which is also used by the existing find/replace dialog. The overlay can be enabled and disabled in the preferences. eclipse-platform#1090
This PR implements and tests a find/replace dialog which can be overlayed on top of the editor. The overlay uses the FindReplaceLogic which is also used by the existing find/replace dialog. The overlay can be enabled and disabled in the preferences. #1090
This PR implements and tests a find/replace dialog which can be overlayed on top of the editor. The overlay uses the FindReplaceLogic which is also used by the existing find/replace dialog. The overlay can be enabled and disabled in the preferences. eclipse-platform#1090
Proposal: modern and well-integrated Find-replace
Proof of concept here
Problem
User-Interface
The current solution opens a Modal on keypress Control + F - prompting a user to enter a string for finding
and optionally a string to replace the currently found string with.
The status quo also has multiple options for searching which are available by selecting
the appropriate checkbox.
Integration
A lot of views currently don't provide a Find/Replace functionality. The Find/Replace-Dialog binds to them but will not perform any actions. Furthermore, the Interface of the Find/Replace-Functionality using
IFindReplaceTargetExtension
is rigid and taylor-made for Editor-Views only.Solution
The solution will
The new solution aims at being enabled by default in some products such as the IDE.
It is up for discussion wether the implementations should have a button to swith to the other representation (i.e., to modify the preference)
Look and Feel
Design goals
The new Dialog should be well integrated, within the workbench and not on top. Additionally, the Dialog should be very easy to use quickly and not feel like a burden to use.
Design Options
I have opted for integrating the search-bar on the bottom of the editor (like IntelliJ does). There is an option to implement the Dialog as a subtle overly to the view (like in VSCode). This can be discussed in the exploration phase of this Proposal.
Concrete Proof of Concept
The Design is not definitive and can be discussed. The Icons will be replaced to fit into the general Eclipse-Theme
The proposed solution consists of an inline-search bar, that pops up from below the text-editor.
3
and4
Additional
As a proof-of-concept, the same dialog was implemented for the
Problems View
to show that this feature can easily be extended to other views. The Problems-view does not allow for replacing, for example, so the search-bar does not show that as an option.As part of the interface-design, each view can optionally specify which "search providers" it supports (See Search-providers), if it wants to provide a search-functionality.
Design (Engineering)
The old Dialog
Part of this proposal is extracting the business-logic of the old Find/Replace-Dialog and sharing it with the new inline visualization. This brings the following advantages:
Search-providers
Each view should be able to specify it's search-providers and it's search-options. When opening the FindReplace-popupbar, the the bar will request the viewpart for search providers and a UI-renderer from the viewpart. It is likely tha tthe UI-Renderer will be shared across most views while the functional search provider will depend on the view type.
Further ideas
More search options
Inline-toolbar
This proposal introduces an "inline popup toolbar", which can later be used by other features which are currently implemented as modals, for example a new refactoring.
Views that provide support for such an inline toolbar, can inherit from
IInlinePopupToolbarProvider
which specifies functions for creating the toolbar composite and closing it.The text was updated successfully, but these errors were encountered: