Skip to content

Commit 21c0c67

Browse files
committed
Find/replace overlay: improve replace toggle button appearance
The button to toggle whether the replace bar in a find/replace overlay is shown currently appears to be a rather heavyweight button with a border. With this change, the button is replace with a lightweight toolbar item like used for all other buttons in the overlay. This improves the appearance as well as the implementation as the same implementation patterns can now be applied to all buttons in the overlay.
1 parent 175f65e commit 21c0c67

File tree

3 files changed

+21
-22
lines changed

3 files changed

+21
-22
lines changed

bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/overlay/AccessibleToolItem.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.eclipse.swt.widgets.ToolItem;
2323

2424
import org.eclipse.jface.bindings.keys.KeyStroke;
25+
import org.eclipse.jface.layout.GridDataFactory;
2526

2627
class AccessibleToolItem {
2728
private final ToolItem toolItem;
@@ -30,6 +31,7 @@ class AccessibleToolItem {
3031

3132
AccessibleToolItem(Composite parent, int styleBits) {
3233
ToolBar toolbar = new ToolBar(parent, SWT.FLAT | SWT.HORIZONTAL);
34+
GridDataFactory.fillDefaults().grab(true, true).align(SWT.CENTER, SWT.CENTER).applyTo(toolbar);
3335
toolItem = new ToolItem(toolbar, styleBits);
3436
addToolItemTraverseListener(toolbar);
3537
}

bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/overlay/FindReplaceOverlay.java

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@
1313
*******************************************************************************/
1414
package org.eclipse.ui.internal.findandreplace.overlay;
1515

16-
import static org.eclipse.ui.internal.findandreplace.overlay.FindReplaceShortcutUtil.registerActionShortcutsAtControl;
17-
1816
import java.util.List;
1917
import java.util.function.Consumer;
2018

@@ -28,7 +26,7 @@
2826
import org.eclipse.swt.events.FocusEvent;
2927
import org.eclipse.swt.events.FocusListener;
3028
import org.eclipse.swt.events.KeyListener;
31-
import org.eclipse.swt.events.SelectionListener;
29+
import org.eclipse.swt.events.MouseListener;
3230
import org.eclipse.swt.events.ShellAdapter;
3331
import org.eclipse.swt.events.ShellEvent;
3432
import org.eclipse.swt.graphics.Color;
@@ -37,7 +35,6 @@
3735
import org.eclipse.swt.graphics.RGBA;
3836
import org.eclipse.swt.graphics.Rectangle;
3937
import org.eclipse.swt.layout.GridData;
40-
import org.eclipse.swt.widgets.Button;
4138
import org.eclipse.swt.widgets.Composite;
4239
import org.eclipse.swt.widgets.Control;
4340
import org.eclipse.swt.widgets.Display;
@@ -119,8 +116,8 @@ private final class KeyboardShortcuts {
119116
private boolean replaceBarOpen;
120117

121118
private Composite container;
122-
private Button replaceToggle;
123-
private FindReplaceOverlayAction replaceToggleShortcut;
119+
private AccessibleToolBar replaceToggleTools;
120+
private ToolItem replaceToggle;
124121

125122
private Composite contentGroup;
126123

@@ -496,7 +493,7 @@ private Control createDialog(final Composite parent) {
496493
private void initializeSearchShortcutHandlers() {
497494
searchTools.registerActionShortcutsAtControl(searchBar);
498495
closeTools.registerActionShortcutsAtControl(searchBar);
499-
registerActionShortcutsAtControl(replaceToggleShortcut, searchBar);
496+
replaceToggleTools.registerActionShortcutsAtControl(searchBar);
500497
}
501498

502499
/**
@@ -734,15 +731,16 @@ private void createMainContainer(final Composite parent) {
734731
}
735732

736733
private void createReplaceToggle() {
737-
replaceToggleShortcut = new FindReplaceOverlayAction(this::toggleReplace);
738-
replaceToggleShortcut.addShortcuts(KeyboardShortcuts.TOGGLE_REPLACE);
739-
replaceToggle = new Button(container, SWT.FLAT | SWT.PUSH);
740-
GridDataFactory.fillDefaults().grab(false, true).align(GridData.BEGINNING, GridData.FILL)
741-
.applyTo(replaceToggle);
742-
replaceToggle.setToolTipText(replaceToggleShortcut
743-
.addShortcutHintToTooltipText(FindReplaceMessages.FindReplaceOverlay_replaceToggle_toolTip));
744-
replaceToggle.setImage(FindReplaceOverlayImages.get(FindReplaceOverlayImages.KEY_OPEN_REPLACE_AREA));
745-
replaceToggle.addSelectionListener(SelectionListener.widgetSelectedAdapter(e -> toggleReplace()));
734+
replaceToggleTools = new AccessibleToolBar(container);
735+
GridDataFactory.fillDefaults().grab(false, true).align(GridData.FILL, GridData.FILL)
736+
.applyTo(replaceToggleTools);
737+
replaceToggleTools.addMouseListener(MouseListener.mouseDownAdapter(__ -> toggleReplace()));
738+
739+
replaceToggle = new AccessibleToolItemBuilder(replaceToggleTools)
740+
.withShortcuts(KeyboardShortcuts.TOGGLE_REPLACE)
741+
.withImage(FindReplaceOverlayImages.get(FindReplaceOverlayImages.KEY_OPEN_REPLACE_AREA))
742+
.withToolTipText(FindReplaceMessages.FindReplaceOverlay_replaceToggle_toolTip)
743+
.withOperation(this::toggleReplace).build();
746744
}
747745

748746
private void toggleReplace() {
@@ -788,7 +786,7 @@ private void createReplaceDialog() {
788786
private void initializeReplaceShortcutHandlers() {
789787
replaceTools.registerActionShortcutsAtControl(replaceBar);
790788
closeTools.registerActionShortcutsAtControl(replaceBar);
791-
registerActionShortcutsAtControl(replaceToggleShortcut, replaceBar);
789+
replaceToggleTools.registerActionShortcutsAtControl(replaceBar);
792790
}
793791

794792
private void enableSearchTools(boolean enable) {
@@ -801,8 +799,8 @@ private void enableReplaceToggle(boolean enable) {
801799
return;
802800
}
803801
boolean visible = enable && findReplaceLogic.getTarget().isEditable();
804-
((GridData) replaceToggle.getLayoutData()).exclude = !visible;
805-
replaceToggle.setVisible(visible);
802+
((GridData) replaceToggleTools.getLayoutData()).exclude = !visible;
803+
replaceToggleTools.setVisible(visible);
806804
}
807805

808806
private void enableReplaceTools(boolean enable) {

tests/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/internal/findandreplace/overlay/OverlayAccess.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
import java.util.stream.Collectors;
2525

2626
import org.eclipse.swt.SWT;
27-
import org.eclipse.swt.widgets.Button;
2827
import org.eclipse.swt.widgets.Control;
2928
import org.eclipse.swt.widgets.Event;
3029
import org.eclipse.swt.widgets.Shell;
@@ -54,7 +53,7 @@ class OverlayAccess implements IFindReplaceUIAccess {
5453

5554
private final ToolItem searchBackward;
5655

57-
private final Button openReplaceDialog;
56+
private final ToolItem openReplaceDialog;
5857

5958
private HistoryTextWrapper replace;
6059

@@ -78,7 +77,7 @@ class OverlayAccess implements IFindReplaceUIAccess {
7877
inSelection= widgetExtractor.findToolItem("searchInSelection");
7978
searchForward= widgetExtractor.findToolItem("searchForward");
8079
searchBackward= widgetExtractor.findToolItem("searchBackward");
81-
openReplaceDialog= widgetExtractor.findButton("replaceToggle");
80+
openReplaceDialog= widgetExtractor.findToolItem("replaceToggle");
8281
extractReplaceWidgets();
8382
}
8483

0 commit comments

Comments
 (0)