Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 102081 | Differences between
and this patch

Collapse All | Expand All

(-)FilteredComboTree.java (-210 lines)
Removed Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2005 IBM Corporation and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 *
8
 * Contributors:
9
 *     IBM Corporation - initial API and implementation
10
 *******************************************************************************/
11
package org.eclipse.ui.internal.dialogs;
12
13
import org.eclipse.jface.dialogs.IDialogSettings;
14
import org.eclipse.swt.SWT;
15
import org.eclipse.swt.events.DisposeEvent;
16
import org.eclipse.swt.events.DisposeListener;
17
import org.eclipse.swt.events.FocusAdapter;
18
import org.eclipse.swt.events.FocusEvent;
19
import org.eclipse.swt.events.SelectionAdapter;
20
import org.eclipse.swt.events.SelectionEvent;
21
import org.eclipse.swt.events.TraverseEvent;
22
import org.eclipse.swt.events.TraverseListener;
23
import org.eclipse.swt.graphics.Point;
24
import org.eclipse.swt.widgets.Combo;
25
import org.eclipse.swt.widgets.Composite;
26
import org.eclipse.swt.widgets.Control;
27
import org.eclipse.swt.widgets.Display;
28
import org.eclipse.ui.internal.WorkbenchPlugin;
29
30
/**
31
 * The FilteredComboTree is a filtered tree that uses an 
32
 * editable combo rather than just a text.
33
 */
34
public class FilteredComboTree extends FilteredTree {
35
36
	private Combo filterCombo;
37
	
38
	private static final String SEARCHHISTORY = "search"; //$NON-NLS-1$
39
40
	//Set a number limitation of items to be saved in combo
41
	private static final int maxNumItems = 20;
42
	/**
43
	 * Create a new instance of the receiver.
44
	 * @param parent
45
	 * @param treeStyle
46
	 */
47
	public FilteredComboTree(Composite parent, int treeStyle) {
48
		super(parent, treeStyle);
49
	}
50
51
	/**
52
	 *  Create a new instance of the receiver with a supplied filter.
53
	 * @param parent
54
	 * @param treeStyle
55
	 * @param filter
56
	 */
57
	public FilteredComboTree(Composite parent, int treeStyle, PatternItemFilter filter) {
58
		super(parent, treeStyle, filter);
59
	}
60
61
	/* (non-Javadoc)
62
	 * @see org.eclipse.ui.internal.dialogs.FilteredTree#createFilterControl(org.eclipse.swt.widgets.Composite)
63
	 */
64
	protected void createFilterControl(Composite parent) {
65
		filterCombo = new Combo(parent, SWT.DROP_DOWN | SWT.BORDER);
66
		filterCombo.setFont(parent.getFont());
67
		getPreferenceSearchHistory();
68
		filterCombo.addTraverseListener( new TraverseListener () {
69
			public void keyTraversed(TraverseEvent e) {
70
				if (e.detail == SWT.TRAVERSE_RETURN) {
71
					e.doit = false;
72
					if (getViewer().getTree().getItemCount() == 0) {
73
						Display.getCurrent().beep();
74
						setFilterText(""); //$NON-NLS-1$
75
					} else {
76
						getViewer().getTree().setFocus();
77
					}
78
				}
79
			}
80
		});
81
		filterCombo.addFocusListener(new FocusAdapter(){
82
			/* (non-Javadoc)
83
			 * @see org.eclipse.swt.events.FocusAdapter#focusLost(org.eclipse.swt.events.FocusEvent)
84
			 */
85
			public void focusLost(FocusEvent e) {
86
				String [] textValues = filterCombo.getItems();
87
				String newText = filterCombo.getText();
88
				
89
				if((newText.equals(""))||(newText .equals(initialText)))//$NON-NLS-1$
90
					return;
91
			
92
				for (int i = 0; i < textValues.length; i++) {
93
					if(textValues[i].equals(newText))
94
						return;					
95
				}
96
					
97
				if(textValues.length >= maxNumItems)				
98
					//Discard the oldest search to get space for new search 
99
					filterCombo.remove(maxNumItems-1);
100
				
101
				filterCombo.add(newText,0);
102
			}
103
		});
104
		filterCombo.addSelectionListener(new SelectionAdapter(){
105
			/* (non-Javadoc)
106
			 * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
107
			 */
108
			public void widgetSelected(SelectionEvent e) {
109
				textChanged();
110
			}
111
		});
112
		
113
		filterCombo.addDisposeListener(new DisposeListener() {
114
		
115
			/* (non-Javadoc)
116
			 * @see org.eclipse.swt.events.DisposeListener#widgetDisposed(org.eclipse.swt.events.DisposeEvent)
117
			 */
118
			public void widgetDisposed(DisposeEvent e) {
119
			   	saveDialogSettings();
120
			}
121
		});
122
		
123
		filterCombo.getAccessible().addAccessibleListener(getAccessibleListener());
124
		
125
	}
126
127
	/* (non-Javadoc)
128
	 * @see org.eclipse.ui.internal.dialogs.FilteredTree#getFilterControl()
129
	 */
130
	public Control getFilterControl() {
131
		return filterCombo;
132
	}
133
134
	/* (non-Javadoc)
135
	 * @see org.eclipse.ui.internal.dialogs.FilteredTree#getFilterControlText()
136
	 */
137
	protected String getFilterControlText() {
138
		return filterCombo.getText();
139
	}
140
141
	/* (non-Javadoc)
142
	 * @see org.eclipse.ui.internal.dialogs.FilteredTree#setFilterText(java.lang.String)
143
	 */
144
	protected void setFilterText(String string) {
145
		filterCombo.setText(string);
146
		selectAll();
147
	}
148
	
149
	protected void selectAll() {
150
		filterCombo.setSelection(new Point(0,filterCombo.getText().length()));
151
	}
152
	
153
	/**
154
	 * Get the combo box used by the receiver.
155
	 * @return Combo
156
	 */
157
	public Combo getFilterCombo() {
158
		return filterCombo;
159
	}
160
	
161
	/* (non-Javadoc)
162
	 * @see org.eclipse.ui.internal.dialogs.FilteredTree#getFilterText()
163
	 */
164
	protected String getFilterText() {
165
		return filterCombo.getText();
166
	}
167
		
168
	/**
169
     * Return a dialog setting section for this dialog
170
     */
171
    private IDialogSettings getDialogSettings() {
172
        IDialogSettings settings = WorkbenchPlugin.getDefault()
173
                .getDialogSettings();
174
        IDialogSettings thisSettings = settings
175
                .getSection(getClass().getName());
176
        if (thisSettings == null)
177
            thisSettings = settings.addNewSection(getClass().getName());
178
        return thisSettings;
179
    }
180
   
181
	
182
	/**
183
	 * Get the preferences search history for this eclipse's start, 
184
	 * Note that this history will not be cleared until this eclipse closes
185
	 * 
186
	 */
187
	public void getPreferenceSearchHistory(){		
188
		IDialogSettings settings = getDialogSettings();
189
		String[] search = settings.getArray(SEARCHHISTORY); //$NON-NLS-1$
190
		
191
		if(search == null)
192
			return;
193
		
194
		for(int i = 0; i < search.length;i++){
195
			filterCombo.add(search[i]);
196
		}
197
				
198
	}
199
	
200
	 /**
201
     * Saves the search history.
202
     */
203
    private void saveDialogSettings() {   
204
    	IDialogSettings settings =getDialogSettings();
205
    	
206
    	//If the settings contains the same key, the previous value will be replaced by new one
207
    	settings.put(SEARCHHISTORY,filterCombo.getItems());
208
               
209
    }
210
}
(-)FilteredPreferenceDialog.java (-4 / +4 lines)
Lines 57-63 Link Here
57
 */
57
 */
58
public abstract class FilteredPreferenceDialog extends PreferenceDialog implements IWorkbenchPreferenceContainer{
58
public abstract class FilteredPreferenceDialog extends PreferenceDialog implements IWorkbenchPreferenceContainer{
59
59
60
	protected FilteredComboTree filteredTree;
60
	protected FilteredTextTree filteredTree;
61
61
62
	private Object pageData;
62
	private Object pageData;
63
	
63
	
Lines 110-116 Link Here
110
	protected TreeViewer createTreeViewer(Composite parent) {
110
	protected TreeViewer createTreeViewer(Composite parent) {
111
		PatternItemFilter filter = new PatternItemFilter(true); 
111
		PatternItemFilter filter = new PatternItemFilter(true); 
112
		int styleBits = SWT.SINGLE | SWT.H_SCROLL;
112
		int styleBits = SWT.SINGLE | SWT.H_SCROLL;
113
		filteredTree = new FilteredComboTree(parent, styleBits, filter);
113
		filteredTree = new FilteredTextTree(parent, styleBits, filter);
114
		GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
114
		GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
115
		gd.horizontalIndent = IDialogConstants.HORIZONTAL_MARGIN;
115
		gd.horizontalIndent = IDialogConstants.HORIZONTAL_MARGIN;
116
		filteredTree.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND));
116
		filteredTree.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND));
Lines 123-130 Link Here
123
		
123
		
124
		//if the tree has only one or zero pages, make the combo area disable
124
		//if the tree has only one or zero pages, make the combo area disable
125
		if(hasAtMostOnePage(tree)){
125
		if(hasAtMostOnePage(tree)){
126
			filteredTree.getFilterCombo().setEnabled(false);
126
			filteredTree.getFilterControl().setEnabled(false);
127
			filteredTree.getFilterCombo().setSelection(new Point(0,0));
127
			filteredTree.getFilterControl().setSelection(new Point(0,0));
128
		}
128
		}
129
		
129
		
130
		
130
		
(-)FilteredTree.java (-27 / +5 lines)
Lines 28-41 Link Here
28
import org.eclipse.swt.events.DisposeListener;
28
import org.eclipse.swt.events.DisposeListener;
29
import org.eclipse.swt.events.FocusEvent;
29
import org.eclipse.swt.events.FocusEvent;
30
import org.eclipse.swt.events.FocusListener;
30
import org.eclipse.swt.events.FocusListener;
31
import org.eclipse.swt.events.KeyAdapter;
32
import org.eclipse.swt.events.KeyEvent;
33
import org.eclipse.swt.graphics.Color;
31
import org.eclipse.swt.graphics.Color;
34
import org.eclipse.swt.layout.GridData;
32
import org.eclipse.swt.layout.GridData;
35
import org.eclipse.swt.layout.GridLayout;
33
import org.eclipse.swt.layout.GridLayout;
36
import org.eclipse.swt.widgets.Combo;
37
import org.eclipse.swt.widgets.Composite;
34
import org.eclipse.swt.widgets.Composite;
38
import org.eclipse.swt.widgets.Control;
39
import org.eclipse.swt.widgets.Text;
35
import org.eclipse.swt.widgets.Text;
40
import org.eclipse.swt.widgets.ToolBar;
36
import org.eclipse.swt.widgets.ToolBar;
41
import org.eclipse.ui.PlatformUI;
37
import org.eclipse.ui.PlatformUI;
Lines 52-62 Link Here
52
 */
48
 */
53
public class FilteredTree extends Composite {
49
public class FilteredTree extends Composite {
54
50
55
    private Text filterText;
51
    protected Text filterText;
56
52
    
57
    private ToolBarManager filterToolBar;
53
    private ToolBarManager filterToolBar;
58
54
59
    private TreeViewer treeViewer;
55
    protected TreeViewer treeViewer;
60
56
61
    private Composite filterParent;
57
    private Composite filterParent;
62
58
Lines 133-157 Link Here
133
                | GridData.GRAB_HORIZONTAL));
129
                | GridData.GRAB_HORIZONTAL));
134
130
135
        createFilterControl(filterParent);
131
        createFilterControl(filterParent);
136
	        getFilterControl().addKeyListener(new KeyAdapter() {
132
	       
137
	
138
	            /*
139
	             * (non-Javadoc)
140
	             * 
141
	             * @see org.eclipse.swt.events.KeyAdapter#keyReleased(org.eclipse.swt.events.KeyEvent)
142
	             */
143
	            public void keyReleased(KeyEvent e) {
144
	            	// on a CR we want to transfer focus to the list
145
	            	if(e.keyCode == SWT.ARROW_DOWN){
146
147
	                    if (!(getFilterControl() instanceof Combo)) {
148
	                    	treeViewer.getTree().setFocus();
149
	                    }
150
	            	} else
151
	            		textChanged();
152
	            }
153
	        });
154
155
        GridData data = new GridData(GridData.FILL_HORIZONTAL
133
        GridData data = new GridData(GridData.FILL_HORIZONTAL
156
                | GridData.GRAB_HORIZONTAL);
134
                | GridData.GRAB_HORIZONTAL);
157
        getFilterControl().setLayoutData(data);
135
        getFilterControl().setLayoutData(data);
Lines 347-353 Link Here
347
     * 
325
     * 
348
     * @return the text field
326
     * @return the text field
349
     */
327
     */
350
    public Control getFilterControl() {
328
    public Text getFilterControl() {
351
        return filterText;
329
        return filterText;
352
    }
330
    }
353
331
(-)PreferenceBoldLabelProvider.java (-2 / +2 lines)
Lines 14-22 Link Here
14
		implements IFontProvider {
14
		implements IFontProvider {
15
15
16
	
16
	
17
	private FilteredComboTree comboTree;
17
	private FilteredTextTree comboTree;
18
18
19
	PreferenceBoldLabelProvider(FilteredComboTree comboTree) {
19
	PreferenceBoldLabelProvider(FilteredTextTree comboTree) {
20
		this.comboTree = comboTree;
20
		this.comboTree = comboTree;
21
	}
21
	}
22
	/**
22
	/**
(-)FilteredTextTree.java (+319 lines)
Added Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2005 IBM Corporation and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 *
8
 * Contributors:
9
 *     IBM Corporation - initial API and implementation
10
 *******************************************************************************/
11
package org.eclipse.ui.internal.dialogs;
12
13
import java.util.ArrayList;
14
import java.util.List;
15
16
import org.eclipse.jface.dialogs.IDialogSettings;
17
import org.eclipse.swt.SWT;
18
import org.eclipse.swt.events.ControlAdapter;
19
import org.eclipse.swt.events.ControlEvent;
20
import org.eclipse.swt.events.DisposeEvent;
21
import org.eclipse.swt.events.DisposeListener;
22
import org.eclipse.swt.events.FocusAdapter;
23
import org.eclipse.swt.events.FocusEvent;
24
import org.eclipse.swt.events.KeyAdapter;
25
import org.eclipse.swt.events.KeyEvent;
26
import org.eclipse.swt.events.SelectionAdapter;
27
import org.eclipse.swt.events.SelectionEvent;
28
import org.eclipse.swt.events.TraverseEvent;
29
import org.eclipse.swt.events.TraverseListener;
30
import org.eclipse.swt.graphics.Point;
31
import org.eclipse.swt.graphics.Rectangle;
32
import org.eclipse.swt.layout.GridData;
33
import org.eclipse.swt.layout.GridLayout;
34
import org.eclipse.swt.widgets.Composite;
35
import org.eclipse.swt.widgets.Display;
36
import org.eclipse.swt.widgets.Event;
37
import org.eclipse.swt.widgets.Listener;
38
import org.eclipse.swt.widgets.Shell;
39
import org.eclipse.swt.widgets.Table;
40
import org.eclipse.swt.widgets.TableItem;
41
import org.eclipse.swt.widgets.Text;
42
import org.eclipse.ui.internal.WorkbenchPlugin;
43
44
/**
45
 * The FilteredTextTree is a filtered tree that uses an 
46
 * editable text.
47
 */
48
public class FilteredTextTree extends FilteredTree {
49
    //A list contains all strings in search history
50
	private List searchHistory;
51
	
52
	private static final String SEARCHHISTORY = "search"; //$NON-NLS-1$
53
	
54
	//A table which contains only strings begin with typed strings
55
	private Table currentSeachTable;
56
	/**
57
	 * Create a new instance of the receiver.
58
	 * @param parent
59
	 * @param treeStyle
60
	 */
61
	public FilteredTextTree(Composite parent, int treeStyle) {
62
		super(parent, treeStyle);
63
	}
64
65
	/**
66
	 *  Create a new instance of the receiver with a supplied filter.
67
	 * @param parent
68
	 * @param treeStyle
69
	 * @param filter
70
	 */
71
	public FilteredTextTree(Composite parent, int treeStyle, PatternItemFilter filter) {
72
		super(parent, treeStyle, filter);
73
	}
74
75
	/* (non-Javadoc)
76
	 * @see org.eclipse.ui.internal.dialogs.FilteredTree#createFilterControl(org.eclipse.swt.widgets.Composite)
77
	 */
78
	protected void createFilterControl(final Composite parent) {
79
		filterText = new Text(parent, SWT.DROP_DOWN | SWT.BORDER);
80
		filterText.setFont(parent.getFont());
81
		searchHistory = getPreferenceSearchHistory();
82
		
83
		final Shell shell = new Shell (parent.getShell(), SWT.NO_TRIM );
84
		shell.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_WHITE));
85
		GridLayout shellGL = new GridLayout();
86
		shellGL.marginHeight = 0;
87
		shellGL.marginWidth = 0;
88
		shell.setLayout(shellGL);
89
		shell.setLayoutData (new GridData((GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL)));
90
		
91
		currentSeachTable = new Table(shell, SWT.SINGLE |SWT.BORDER);  
92
		currentSeachTable.setLayoutData(new GridData((GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL)));
93
		
94
		filterText.addTraverseListener( new TraverseListener () {
95
			public void keyTraversed(TraverseEvent e) {
96
				if (e.detail == SWT.TRAVERSE_RETURN) {
97
					e.doit = false;
98
					shell.setVisible(false);
99
					if (getViewer().getTree().getItemCount() == 0) {
100
						Display.getCurrent().beep();
101
						setFilterText(""); //$NON-NLS-1$
102
					} else {
103
						getViewer().getTree().setFocus();
104
					}
105
				}
106
			}
107
		});
108
		
109
		filterText.addKeyListener(new KeyAdapter() {
110
            /*
111
             * (non-Javadoc)
112
             * 
113
             * @see org.eclipse.swt.events.KeyAdapter#keyReleased(org.eclipse.swt.events.KeyEvent)
114
             */
115
            public void keyReleased(KeyEvent e) {
116
                
117
                   if(e.keyCode == SWT.ARROW_DOWN){
118
                	   if(currentSeachTable.isVisible()){
119
                		   //Make selection at popup table
120
                		   if(currentSeachTable.getSelectionCount()< 1)
121
                			   currentSeachTable.setSelection(0);                		   
122
                		   currentSeachTable.setFocus();	
123
                	   }
124
	                   else
125
	                	   //Make selection be on the left tree
126
	                	   treeViewer.getTree().setFocus();
127
                   }
128
                   else{
129
                	   if(e.character == '\r')
130
                		   return;
131
                   
132
	            	   textChanged();
133
	                   List result = new ArrayList();           		
134
	                   result = reduceSearch(searchHistory,filterText.getText());
135
	                   upDateTable(currentSeachTable,result);
136
	                                        
137
	                   if(currentSeachTable.getItemCount()> 0){
138
	                	   Rectangle textBounds = filterText.getBounds();
139
	                       Point point = getDisplay().map(parent, null, textBounds.x, textBounds.y);
140
	                	   int space = currentSeachTable.getItemHeight();
141
	                       shell.setBounds(point.x, point.y + textBounds.height,textBounds.width, 
142
	                			   currentSeachTable.getItemHeight()*currentSeachTable.getItemCount()+ space);
143
	                       
144
	                	   if(shell.isDisposed())
145
	                		    shell.open ();
146
	                		                	   
147
	                	   if(!shell.getVisible()){	                   		
148
		                   		shell.setVisible(true);
149
		                   		filterText.setFocus();
150
	                	   }
151
	                	   
152
	                   }else
153
	                   		shell.setVisible(false);
154
                   }
155
	            	   	                   			
156
            }
157
		});
158
		
159
				
160
		filterText.addFocusListener(new FocusAdapter(){
161
			/* (non-Javadoc)
162
			 * @see org.eclipse.swt.events.FocusAdapter#focusLost(org.eclipse.swt.events.FocusEvent)
163
			 */
164
			public void focusLost(FocusEvent e) {
165
				
166
				String newText = filterText.getText();				
167
				Object[] textValues = searchHistory.toArray();
168
				
169
				if((newText.equals(""))||(newText .equals(initialText)))//$NON-NLS-1$
170
					return;
171
			
172
				for (int i = 0; i < textValues.length; i++) {
173
					if(((String)textValues[i]).equals(newText))
174
						return;					
175
				}	
176
				searchHistory.add(newText);
177
			}
178
		});
179
		
180
		
181
		parent.getDisplay().addFilter(SWT.MouseDown , new Listener(){
182
			/* (non-Javadoc)
183
			 * @see org.eclipse.swt.widgets.Listener#handleEvent(org.eclipse.swt.widgets.Events)
184
			 */
185
			public void handleEvent(Event event) {				
186
				if(!shell.isDisposed())
187
					shell.setVisible(false);
188
			}});
189
		
190
		getShell().addControlListener(new ControlAdapter(){
191
			/* (non-Javadoc)
192
			 * @see org.eclipse.swt.events.ControlListener#controlMoved(org.eclipse.swt.events.ControlEvent)
193
			 */
194
			public void controlMoved(ControlEvent e) {								
195
				shell.setVisible(false);
196
			}
197
		});
198
		
199
		currentSeachTable.addSelectionListener(new SelectionAdapter(){
200
			/* (non-Javadoc)
201
			 * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
202
			 */
203
			public void widgetSelected(SelectionEvent e) {
204
				
205
				setFilterText(currentSeachTable.getSelection()[0].getText());
206
				textChanged();
207
			}
208
			
209
			public void widgetDefaultSelected(SelectionEvent e) {
210
				shell.setVisible(false);
211
			}
212
		});
213
			
214
		filterText.addDisposeListener(new DisposeListener() {		
215
			/*
216
			 (non-Javadoc)
217
			 * @see org.eclipse.swt.events.DisposeListener#widgetDisposed(org.eclipse.swt.events.DisposeEvent)
218
			 */
219
			public void widgetDisposed(DisposeEvent e) {
220
			   	saveDialogSettings();
221
			}
222
		});
223
				
224
		filterText.getAccessible().addAccessibleListener(getAccessibleListener());
225
		
226
	}
227
228
	 /**
229
	 * Find all items which start with typyed words
230
	 *  list the list contains all strings of the search history
231
	 * @param wordsEntered
232
	 * @return a list in which all strings start from the typed letter(s)
233
	 */
234
	public List reduceSearch(List list,String wordsEntered){
235
	     List result = new ArrayList();
236
	     if(list == null) return result;
237
	     for(int i = 0; i<list.size();i++){
238
	     	if(filterText.getText()== "") //$NON-NLS-1$
239
	     		return result;
240
	     	else if(((String)list.get(i)).startsWith(wordsEntered))
241
	             result.add(list.get(i));
242
	     }
243
	     
244
	     return result;
245
	 }
246
	 
247
	 
248
	 /**Copy all elements from a list to a table
249
	  * @param table
250
	  * @param list
251
	  */
252
	 public void upDateTable(Table table, List list){
253
	     table.removeAll();
254
	     if(list.size()>0){
255
		        TableItem newItem ;
256
		        for(int i=0;i<list.size();i++){
257
		            newItem = new TableItem(table, SWT.NULL, i);
258
		            newItem.setText((String)list.get(i));
259
		            
260
		        }
261
	     }
262
	     
263
	 }
264
	
265
	/**
266
     * Return a dialog setting section for this dialog
267
     * @return IDialogSettings
268
     */
269
    private IDialogSettings getDialogSettings() {
270
        IDialogSettings settings = WorkbenchPlugin.getDefault()
271
                .getDialogSettings();
272
        IDialogSettings thisSettings = settings
273
                .getSection(getClass().getName());
274
        if (thisSettings == null)
275
            thisSettings = settings.addNewSection(getClass().getName());
276
       
277
        return thisSettings;
278
    }
279
   
280
	
281
	/**
282
	 * Get the preferences search history for this eclipse's start, 
283
	 * Note that this history will not be cleared until this eclipse closes
284
	 * @return a list
285
	 */
286
	public List getPreferenceSearchHistory(){	
287
		
288
		List searchList = new ArrayList();
289
		IDialogSettings settings = getDialogSettings();
290
		String[] search = settings.getArray(SEARCHHISTORY); //$NON-NLS-1$
291
		
292
		if(search != null){			
293
			for(int i = 0; i < search.length;i++)
294
				searchList.add(search[i]);
295
		}
296
		return searchList;
297
				
298
	}
299
	
300
	 /**
301
     * Saves the search history.
302
     */
303
    private void saveDialogSettings() {   
304
    	IDialogSettings settings =getDialogSettings();
305
    	
306
    	//If the settings contains the same key, the previous value will be replaced by new one
307
    	String []result = new String[searchHistory.size()];
308
    	listToArray(searchHistory,result);
309
    	settings.put(SEARCHHISTORY, result);
310
               
311
    }
312
    
313
    private void listToArray(List list,String[] string){
314
    	int size = list.size();
315
    	for(int i=0;i<size;i++)
316
    		string[i]=(String)list.get(i);
317
    }
318
    
319
}

Return to bug 102081