5858import  org .eclipse .jface .resource .JFaceResources ;
5959import  org .eclipse .jface .text .BadLocationException ;
6060import  org .eclipse .jface .text .CursorLinePainter ;
61+ import  org .eclipse .jface .text .Document ;
6162import  org .eclipse .jface .text .IDocument ;
6263import  org .eclipse .jface .text .IRegion ;
6364import  org .eclipse .jface .text .source .CompositeRuler ;
153154public  class  QuickSearchDialog  extends  SelectionStatusDialog  {
154155
155156	private  static  final  int  OPEN_BUTTON_ID  = IDialogConstants .OK_ID ;
156- 	private  static  final  int  REFRESH_BUTTON_ID  = IDialogConstants .RETRY_ID ;
157157
158158	public  static  final  Styler  HIGHLIGHT_STYLE  = org .eclipse .search .internal .ui .text .DecoratingFileSearchLabelProvider .HIGHLIGHT_STYLE ;
159159
@@ -666,7 +666,7 @@ private Label createLabels(Composite parent) {
666666		Composite  labels  = new  Composite (parent , SWT .NONE );
667667
668668		GridLayout  layout  = new  GridLayout ();
669- 		layout .numColumns  = 2 ;
669+ 		layout .numColumns  = 3 ;
670670		layout .marginWidth  = 0 ;
671671		layout .marginHeight  = 0 ;
672672		labels .setLayout (layout );
@@ -688,7 +688,20 @@ private Label createLabels(Composite parent) {
688688		progressLabel  = new  Label (labels , SWT .RIGHT );
689689		gd  = new  GridData (GridData .FILL_HORIZONTAL );
690690		progressLabel .setLayoutData (gd );
691- 		createButton (labels , REFRESH_BUTTON_ID , Messages .QuickSearchDialog_Refresh , false );
691+ 		ToolBar  toolBar  = new  ToolBar (labels , SWT .FLAT  | SWT .RIGHT );
692+ 		ToolItem  refreshItem  = new  ToolItem (toolBar , SWT .PUSH );
693+ 		Image  refreshIcon  = new  Image (Display .getCurrent (),getClass ().
694+ 				getClassLoader ().getResourceAsStream ("icons/elcl16/refresh.svg" )); //$NON-NLS-1$ 
695+ 
696+ 		refreshItem .setImage (refreshIcon );
697+ 		refreshItem .setToolTipText (Messages .QuickSearchDialog_Refresh );
698+ 
699+ 		refreshItem .addDisposeListener (e  -> {
700+ 			if  (refreshIcon  != null  && !refreshIcon .isDisposed ()) {
701+ 				refreshIcon .dispose ();
702+ 			}
703+ 		});
704+ 		refreshItem .addListener (SWT .Selection , e  -> refreshButtonPressed ());
692705
693706		labels .setLayoutData (gd );
694707		return  listLabel ;
@@ -1289,6 +1302,10 @@ public void refreshWidgets() {
12891302				//element is available in the list. 
12901303				openButton .setEnabled (itemCount >0 );
12911304			}
1305+ 			//Auto-select the first search result for preview when greater than 1 result exists. 
1306+ 			if  (itemCount  >= 1  && list .getSelection ().isEmpty ()) {
1307+ 	            list .getTable ().select (0 );
1308+ 	        }
12921309			refreshDetails ();
12931310		}
12941311	}
@@ -1345,15 +1362,6 @@ protected void okPressed() {
13451362		}
13461363	}
13471364
1348- 	@ Override 
1349- 	protected  void  buttonPressed (int  buttonId ) {
1350- 		if  (buttonId  == REFRESH_BUTTON_ID ) {
1351- 			refreshButtonPressed ();
1352- 		} else  {
1353- 			super .buttonPressed (buttonId );
1354- 		}
1355- 	}
1356- 
13571365	@ Override 
13581366	protected  void  createButtonsForButtonBar (Composite  parent ) {
13591367		createButton (parent , OPEN_BUTTON_ID , Messages .QuickSearchDialog_Open , true );
@@ -1484,6 +1492,14 @@ public void update(LineItem match) {
14841492		} else  {
14851493			//The QuickTextSearcher is already active update the query 
14861494			this .searcher .setQuery (newFilter , force );
1495+ 			if (newFilter .getPatternString ().trim ().isEmpty ()) {
1496+ 				//When pattern is cleared, clear the preview section 
1497+ 				viewer .setDocument (new  Document ("" )); //$NON-NLS-1$ 
1498+ 			    if  (lineNumberColumn  != null ) {
1499+ 			        viewer .removeVerticalRulerColumn (lineNumberColumn );
1500+ 			        viewer .addVerticalRulerColumn (lineNumberColumn );
1501+ 			    }
1502+ 			}
14871503		}
14881504		if  (progressJob !=null ) {
14891505			progressJob .schedule ();
0 commit comments