diff examples/addressbook/SearchDialog.d @ 78:4a04b6759f98

Clean up directory names
author John Reimer <terminal.node@gmail.com>
date Sat, 10 May 2008 13:32:45 -0700
parents
children 9c2803aea121
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/addressbook/SearchDialog.d	Sat May 10 13:32:45 2008 -0700
@@ -0,0 +1,221 @@
+/*******************************************************************************
+ * 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
+ *******************************************************************************/
+module examples.addressbook.SearchDialog;
+
+
+import dwt.DWT;
+import dwt.events.ModifyEvent;
+import dwt.events.ModifyListener;
+import dwt.events.SelectionAdapter;
+import dwt.events.SelectionEvent;
+import dwt.events.ShellAdapter;
+import dwt.events.ShellEvent;
+import dwt.layout.FillLayout;
+import dwt.layout.GridData;
+import dwt.layout.GridLayout;
+import dwt.widgets.Button;
+import dwt.widgets.Combo;
+import dwt.widgets.Composite;
+import dwt.widgets.Group;
+import dwt.widgets.Label;
+import dwt.widgets.MessageBox;
+import dwt.widgets.Shell;
+import dwt.widgets.Text;
+
+import examples.addressbook.FindListener;
+
+import dwt.dwthelper.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;
+
+    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 this(Shell parent) {
+    if( resAddressBook is null ){
+        resAddressBook = ResourceBundle.getBundle("examples_addressbook");
+    }
+    shell = new Shell(parent, DWT.CLOSE | DWT.BORDER | DWT.TITLE);
+    GridLayout layout = new GridLayout();
+    layout.numColumns = 2;
+    shell.setLayout(layout);
+    shell.setText(resAddressBook.getString("Search_dialog_title"));
+    shell.addShellListener(new class() 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, DWT.LEFT);
+    label.setText(resAddressBook.getString("Dialog_find_what"));
+    searchText = new Text(shell, DWT.BORDER);
+    GridData gridData = new GridData(GridData.FILL_HORIZONTAL);
+    gridData.widthHint = 200;
+    searchText.setLayoutData(gridData);
+    searchText.addModifyListener(new class() ModifyListener {
+        public void modifyText(ModifyEvent e) {
+            bool enableFind = (searchText.getCharCount() !is 0);
+            findButton.setEnabled(enableFind);
+        }
+    });
+
+    searchAreaLabel = new Label(shell, DWT.LEFT);
+    searchArea = new Combo(shell, DWT.DROP_DOWN | DWT.READ_ONLY);
+    gridData = new GridData(GridData.FILL_HORIZONTAL);
+    gridData.widthHint = 200;
+    searchArea.setLayoutData(gridData);
+
+    matchCase = new Button(shell, DWT.CHECK);
+    matchCase.setText(resAddressBook.getString("Dialog_match_case"));
+    gridData = new GridData();
+    gridData.horizontalSpan = 2;
+    matchCase.setLayoutData(gridData);
+
+    matchWord = new Button(shell, DWT.CHECK);
+    matchWord.setText(resAddressBook.getString("Dialog_match_word"));
+    gridData = new GridData();
+    gridData.horizontalSpan = 2;
+    matchWord.setLayoutData(gridData);
+
+    Group direction = new Group(shell, DWT.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, DWT.RADIO);
+    up.setText(resAddressBook.getString("Dialog_dir_up"));
+    up.setSelection(false);
+
+    down = new Button(direction, DWT.RADIO);
+    down.setText(resAddressBook.getString("Dialog_dir_down"));
+    down.setSelection(true);
+
+    Composite composite = new Composite(shell, DWT.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, DWT.PUSH);
+    findButton.setText(resAddressBook.getString("Dialog_find"));
+    findButton.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END));
+    findButton.setEnabled(false);
+    findButton.addSelectionListener(new class() SelectionAdapter {
+        public void widgetSelected(SelectionEvent e) {
+            if (!findHandler.find()){
+                MessageBox box = new MessageBox(shell, DWT.ICON_INFORMATION | DWT.OK | DWT.PRIMARY_MODAL);
+                box.setText(shell.getText());
+                box.setMessage(resAddressBook.getString("Cannot_find") ~ "\"" ~ searchText.getText() ~ "\"");
+                box.open();
+            }
+        }
+    });
+
+    Button cancelButton = new Button(composite, DWT.PUSH);
+    cancelButton.setText(resAddressBook.getString("Cancel"));
+    cancelButton.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING));
+    cancelButton.addSelectionListener(new class() SelectionAdapter {
+        public void widgetSelected(SelectionEvent e) {
+            shell.setVisible(false);
+        }
+    });
+
+    shell.pack();
+}
+public char[] getSearchAreaLabel(char[] label) {
+    return searchAreaLabel.getText();
+}
+
+public char[][] getsearchAreaNames() {
+    return searchArea.getItems();
+}
+public bool getMatchCase() {
+    return matchCase.getSelection();
+}
+public bool getMatchWord() {
+    return matchWord.getSelection();
+}
+public char[] getSearchString() {
+    return searchText.getText();
+}
+public bool 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(char[][] names) {
+    for (int i = 0; i < names.length; i++) {
+        searchArea.add(names[i]);
+    }
+    searchArea.select(0);
+}
+public void setSearchAreaLabel(char[] label) {
+    searchAreaLabel.setText(label);
+}
+public void setMatchCase(bool match) {
+    matchCase.setSelection(match);
+}
+public void setMatchWord(bool match) {
+    matchWord.setSelection(match);
+}
+public void setSearchDown(bool searchDown){
+    down.setSelection(searchDown);
+}
+public void setSearchString(char[] 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;
+}
+}