blob: 24b66e2e850951697ccb25e87632d3fb534b4b31 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2003 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.swt.examples.addressbook;
/* Imports */
import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.events.*;
import java.util.ResourceBundle;
/**
* SearchDialog is a simple class that uses <code>org.eclipse.swt</code>
* libraries to implement a basic search dialog.
*/
public class SearchDialog {
private static ResourceBundle resAddressBook = ResourceBundle.getBundle("examples_addressbook");
Shell shell;
Text searchText;
Combo searchArea;
Label searchAreaLabel;
Button matchCase;
Button matchWord;
Button findButton;
Button down;
FindListener findHandler;
/**
* Class constructor that sets the parent shell and the table widget that
* the dialog will search.
*
* @param parent Shell
* The shell that is the parent of the dialog.
*/
public SearchDialog(Shell parent) {
shell = new Shell(parent, SWT.CLOSE | SWT.BORDER | SWT.TITLE);
GridLayout layout = new GridLayout();
layout.numColumns = 2;
shell.setLayout(layout);
shell.setText(resAddressBook.getString("Search_dialog_title"));
shell.addShellListener(new ShellAdapter(){
public void shellClosed(ShellEvent e) {
// don't dispose of the shell, just hide it for later use
e.doit = false;
shell.setVisible(false);
}
});
Label label = new Label(shell, SWT.LEFT);
label.setText(resAddressBook.getString("Dialog_find_what"));
searchText = new Text(shell, SWT.BORDER);
GridData gridData = new GridData(GridData.FILL_HORIZONTAL);
gridData.widthHint = 200;
searchText.setLayoutData(gridData);
searchText.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent e) {
boolean enableFind = (searchText.getCharCount() != 0);
findButton.setEnabled(enableFind);
}
});
searchAreaLabel = new Label(shell, SWT.LEFT);
searchArea = new Combo(shell, SWT.DROP_DOWN | SWT.READ_ONLY);
gridData = new GridData(GridData.FILL_HORIZONTAL);
gridData.widthHint = 200;
searchArea.setLayoutData(gridData);
matchCase = new Button(shell, SWT.CHECK);
matchCase.setText(resAddressBook.getString("Dialog_match_case"));
gridData = new GridData();
gridData.horizontalSpan = 2;
matchCase.setLayoutData(gridData);
matchWord = new Button(shell, SWT.CHECK);
matchWord.setText(resAddressBook.getString("Dialog_match_word"));
gridData = new GridData();
gridData.horizontalSpan = 2;
matchWord.setLayoutData(gridData);
Group direction = new Group(shell, SWT.NONE);
gridData = new GridData();
gridData.horizontalSpan = 2;
direction.setLayoutData(gridData);
direction.setLayout (new FillLayout ());
direction.setText(resAddressBook.getString("Dialog_direction"));
Button up = new Button(direction, SWT.RADIO);
up.setText(resAddressBook.getString("Dialog_dir_up"));
up.setSelection(false);
down = new Button(direction, SWT.RADIO);
down.setText(resAddressBook.getString("Dialog_dir_down"));
down.setSelection(true);
Composite composite = new Composite(shell, SWT.NONE);
gridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
gridData.horizontalSpan = 2;
composite.setLayoutData(gridData);
layout = new GridLayout();
layout.numColumns = 2;
layout.makeColumnsEqualWidth = true;
composite.setLayout(layout);
findButton = new Button(composite, SWT.PUSH);
findButton.setText(resAddressBook.getString("Dialog_find"));
findButton.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
findButton.setEnabled(false);
findButton.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
if (!findHandler.find()){
MessageBox box = new MessageBox(shell, SWT.ICON_INFORMATION | SWT.OK | SWT.PRIMARY_MODAL);
box.setText(shell.getText());
box.setMessage(resAddressBook.getString("Cannot_find") + "\"" + searchText.getText() + "\"");
box.open();
}
}
});
Button cancelButton = new Button(composite, SWT.PUSH);
cancelButton.setText(resAddressBook.getString("Cancel"));
cancelButton.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
cancelButton.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
shell.setVisible(false);
}
});
shell.pack();
}
public String getSearchAreaLabel(String label) {
return searchAreaLabel.getText();
}
public String[] getsearchAreaNames() {
return searchArea.getItems();
}
public boolean getMatchCase() {
return matchCase.getSelection();
}
public boolean getMatchWord() {
return matchWord.getSelection();
}
public String getSearchString() {
return searchText.getText();
}
public boolean getSearchDown(){
return down.getSelection();
}
public int getSelectedSearchArea() {
return searchArea.getSelectionIndex();
}
public void open() {
if (shell.isVisible()) {
shell.setFocus();
} else {
shell.open();
}
searchText.setFocus();
}
public void setSearchAreaNames(String[] names) {
for (int i = 0; i < names.length; i++) {
searchArea.add(names[i]);
}
searchArea.select(0);
}
public void setSearchAreaLabel(String label) {
searchAreaLabel.setText(label);
}
public void setMatchCase(boolean match) {
matchCase.setSelection(match);
}
public void setMatchWord(boolean match) {
matchWord.setSelection(match);
}
public void setSearchDown(boolean searchDown){
down.setSelection(searchDown);
}
public void setSearchString(String searchString) {
searchText.setText(searchString);
}
public void setSelectedSearchArea(int index) {
searchArea.select(index);
}
public void addFindListener(FindListener listener) {
this.findHandler = listener;
}
public void removeFindListener(FindListener listener) {
this.findHandler = null;
}
}