in org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/history/FindToolbar.java [201:387]
private void createToolbar() {
ResourceManager resourceManager = Activator.getDefault()
.getResourceManager();
allIcon = UIIcons.getImage(resourceManager, UIIcons.SEARCH_COMMIT);
commitIdIcon = UIIcons.getImage(resourceManager,
UIIcons.ELCL16_ID);
commentsIcon = UIIcons.getImage(resourceManager,
UIIcons.ELCL16_COMMENTS);
authorIcon = UIIcons.getImage(resourceManager, UIIcons.ELCL16_AUTHOR);
committerIcon = UIIcons.getImage(resourceManager,
UIIcons.ELCL16_COMMITTER);
branchesIcon = UIIcons.getImage(resourceManager, UIIcons.BRANCHES);
GridLayout findLayout = new GridLayout();
findLayout.marginHeight = 0;
findLayout.marginBottom = 1;
findLayout.marginWidth = 0;
findLayout.numColumns = 2;
setLayout(findLayout);
setLayoutData(new GridData(SWT.FILL, SWT.TOP, false, false));
patternField = new Text(this,
SWT.SEARCH | SWT.ICON_CANCEL | SWT.ICON_SEARCH);
GridData findTextData = new GridData(SWT.FILL, SWT.TOP, true,
false);
findTextData.minimumWidth = 150;
patternField.setLayoutData(findTextData);
patternField.setMessage(UIText.HistoryPage_findbar_find_msg);
patternField.setTextLimit(100);
// Do _not_ set the font to JFaceResources.getDialogFont() here. It'll
// scale if changed, but the Text field may not adjust.
ToolBarManager manager = new ToolBarManager(SWT.HORIZONTAL);
findNextAction = new Action() {
@Override
public void run() {
findNext();
}
};
findNextAction.setImageDescriptor(UIIcons.ELCL16_NEXT);
findNextAction.setText(UIText.HistoryPage_findbar_next);
findNextAction.setToolTipText(UIText.FindToolbar_NextTooltip);
findNextAction.setEnabled(false);
manager.add(findNextAction);
findPreviousAction = new Action() {
@Override
public void run() {
findPrevious();
}
};
findPreviousAction.setImageDescriptor(UIIcons.ELCL16_PREVIOUS);
findPreviousAction.setText(UIText.HistoryPage_findbar_previous);
findPreviousAction.setToolTipText(UIText.FindToolbar_PreviousTooltip);
findPreviousAction.setEnabled(false);
manager.add(findPreviousAction);
final ToolBar toolBar = manager.createControl(this);
toolBar.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, false, false));
prefsDropDown = new ToolItem(toolBar, SWT.DROP_DOWN);
prefsMenu = new Menu(getShell(), SWT.POP_UP);
caseItem = new MenuItem(prefsMenu, SWT.CHECK);
caseItem.setText(UIText.HistoryPage_findbar_ignorecase);
new MenuItem(prefsMenu, SWT.SEPARATOR);
allItem = createFindInMenuItem();
allItem.setText(UIText.HistoryPage_findbar_all);
allItem.setImage(allIcon);
commentsItem = createFindInMenuItem();
commentsItem.setText(UIText.HistoryPage_findbar_comments);
commentsItem.setImage(commentsIcon);
authorItem = createFindInMenuItem();
authorItem.setText(UIText.HistoryPage_findbar_author);
authorItem.setImage(authorIcon);
commitIdItem = createFindInMenuItem();
commitIdItem.setText(UIText.HistoryPage_findbar_commit);
commitIdItem.setImage(commitIdIcon);
committerItem = createFindInMenuItem();
committerItem.setText(UIText.HistoryPage_findbar_committer);
committerItem.setImage(committerIcon);
referenceItem = createFindInMenuItem();
referenceItem.setText(UIText.HistoryPage_findbar_reference);
referenceItem.setImage(branchesIcon);
prefsDropDown.addListener(SWT.Selection, new Listener() {
@Override
public void handleEvent(Event event) {
if (event.detail == SWT.ARROW) {
// Arrow clicked, show drop down menu
Rectangle itemBounds = prefsDropDown.getBounds();
Point point = toolBar.toDisplay(itemBounds.x, itemBounds.y
+ itemBounds.height);
prefsMenu.setLocation(point);
prefsMenu.setVisible(true);
} else {
// Button clicked, cycle to next option
if (allItem.getSelection())
selectFindInItem(commentsItem);
else if (commentsItem.getSelection())
selectFindInItem(authorItem);
else if (authorItem.getSelection())
selectFindInItem(commitIdItem);
else if (commitIdItem.getSelection())
selectFindInItem(committerItem);
else if (committerItem.getSelection())
selectFindInItem(referenceItem);
else if (referenceItem.getSelection())
selectFindInItem(allItem);
}
}
});
patternModifyListener = new ModifyListener() {
@Override
public void modifyText(ModifyEvent e) {
String pattern = getSearchPattern();
if (pattern.equals(lastSearchPattern)) {
// Don't bother if it's still the same.
return;
}
if (pattern.isEmpty()) {
setNormalBackgroundColor();
}
final FindToolbarJob finder = createFinder();
finder.setUser(false);
finder.schedule(200);
}
};
patternField.addModifyListener(patternModifyListener);
patternField.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetDefaultSelected(SelectionEvent e) {
if (e.detail != SWT.ICON_CANCEL
&& !getSearchPattern().isEmpty()) {
// ENTER or the search icon clicked
final FindToolbarJob finder = createFinder();
finder.setUser(false);
finder.schedule();
}
}
});
patternField.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if (e.keyCode == SWT.ARROW_DOWN) {
findNext();
} else if (e.keyCode == SWT.ARROW_UP) {
findPrevious();
}
}
});
caseItem.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
store.setValue(UIPreferences.FINDTOOLBAR_IGNORE_CASE,
caseItem.getSelection());
if (store.needsSaving()){
try {
store.save();
} catch (IOException e1) {
Activator.handleError(e1.getMessage(), e1, false);
}
}
clear();
}
});
caseItem.setSelection(store
.getBoolean(UIPreferences.FINDTOOLBAR_IGNORE_CASE));
int selectedPrefsItem = store.getInt(UIPreferences.FINDTOOLBAR_FIND_IN);
if (selectedPrefsItem == PREFS_FINDIN_ALL)
selectFindInItem(allItem);
else if (selectedPrefsItem == PREFS_FINDIN_COMMENTS)
selectFindInItem(commentsItem);
else if (selectedPrefsItem == PREFS_FINDIN_AUTHOR)
selectFindInItem(authorItem);
else if (selectedPrefsItem == PREFS_FINDIN_COMMITID)
selectFindInItem(commitIdItem);
else if (selectedPrefsItem == PREFS_FINDIN_COMMITTER)
selectFindInItem(committerItem);
else if (selectedPrefsItem == PREFS_FINDIN_REFERENCE)
selectFindInItem(referenceItem);
registerDisposal();
}