annotate dwtexamples/addressbook/AddressBook.d @ 0:052c3aebd1d3

initial import
author Frank Benoit <benoit@tionex.de>
date Fri, 01 Feb 2008 21:46:26 +0100
parents
children 6e0b2c96d1fd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1 /*******************************************************************************
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2 * Copyright (c) 2000, 2006 IBM Corporation and others.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3 * All rights reserved. This program and the accompanying materials
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4 * are made available under the terms of the Eclipse Public License v1.0
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
5 * which accompanies this distribution, and is available at
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
6 * http://www.eclipse.org/legal/epl-v10.html
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
7 *
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
8 * Contributors:
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
9 * IBM Corporation - initial API and implementation
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
10 *******************************************************************************/
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
11 module dwtexamples.addressbook.AddressBook;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
12
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
13 import dwt.DWT;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
14 import dwt.events.MenuAdapter;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
15 import dwt.events.MenuEvent;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
16 import dwt.events.SelectionAdapter;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
17 import dwt.events.SelectionEvent;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
18 import dwt.events.ShellAdapter;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
19 import dwt.events.ShellEvent;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
20 import dwt.graphics.Cursor;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
21 import dwt.layout.FillLayout;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
22 import dwt.widgets.Display;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
23 import dwt.widgets.FileDialog;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
24 import dwt.widgets.Menu;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
25 import dwt.widgets.MenuItem;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
26 import dwt.widgets.MessageBox;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
27 import dwt.widgets.Shell;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
28 import dwt.widgets.Table;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
29 import dwt.widgets.TableColumn;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
30 import dwt.widgets.TableItem;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
31
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
32 import dwtexamples.addressbook.SearchDialog;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
33 import dwtexamples.addressbook.DataEntryDialog;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
34 import dwtexamples.addressbook.FindListener;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
35
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
36 import dwt.dwthelper.ResourceBundle;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
37
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
38 import tango.core.Exception;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
39 import tango.io.FilePath;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
40 import tango.io.File;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
41 import tango.io.FileConduit;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
42 import tango.io.stream.FileStream;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
43 import TextUtil = tango.text.Util;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
44 import Unicode = tango.text.Unicode;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
45
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
46 /*** Linker workaround start ***/
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
47 import tango.io.Stdout;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
48 import tango.math.Math;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
49 import tango.text.convert.Format;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
50 import tango.util.Convert;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
51 import tango.util.PathUtil;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
52 /*** Linker workaround end ***/
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
53
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
54 void main() {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
55 Display display = new Display();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
56 auto application = new AddressBook();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
57 Shell shell = application.open(display);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
58 while(!shell.isDisposed()){
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
59 if(!display.readAndDispatch()){
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
60 display.sleep();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
61 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
62 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
63 display.dispose();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
64 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
65
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
66 /**
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
67 * AddressBookExample is an example that uses <code>org.eclipse.swt</code>
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
68 * libraries to implement a simple address book. This application has
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
69 * save, load, sorting, and searching functions common
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
70 * to basic address books.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
71 */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
72 public class AddressBook {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
73
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
74 private static ResourceBundle resAddressBook;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
75 private static const char[] resAddressBookData = cast(char[]) import( "addressbook.properties" );
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
76 private Shell shell;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
77
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
78 private Table table;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
79 private SearchDialog searchDialog;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
80
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
81 private FilePath file;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
82 private bool isModified;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
83
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
84 private char[][] copyBuffer;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
85
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
86 private int lastSortColumn= -1;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
87
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
88 private static const char[] DELIMITER = "\t";
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
89 private static char[][] columnNames;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
90
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
91 public this(){
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
92 if( resAddressBook is null ){
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
93 resAddressBook = ResourceBundle.getBundleFromData(resAddressBookData);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
94 columnNames = [
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
95 resAddressBook.getString("Last_name"),
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
96 resAddressBook.getString("First_name"),
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
97 resAddressBook.getString("Business_phone"),
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
98 resAddressBook.getString("Home_phone"),
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
99 resAddressBook.getString("Email"),
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
100 resAddressBook.getString("Fax") ];
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
101 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
102 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
103
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
104
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
105 public Shell open(Display display) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
106 shell = new Shell(display);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
107 shell.setLayout(new FillLayout());
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
108
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
109 shell.addShellListener( new class() ShellAdapter {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
110 public void shellClosed(ShellEvent e) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
111 e.doit = closeAddressBook();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
112 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
113 });
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
114
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
115 createMenuBar();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
116
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
117 searchDialog = new SearchDialog(shell);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
118 searchDialog.setSearchAreaNames(columnNames);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
119 searchDialog.setSearchAreaLabel(resAddressBook.getString("Column"));
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
120 searchDialog.addFindListener(new class() FindListener {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
121 public bool find() {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
122 return findEntry();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
123 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
124 });
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
125
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
126 table = new Table(shell, DWT.SINGLE | DWT.BORDER | DWT.FULL_SELECTION);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
127 table.setHeaderVisible(true);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
128 table.setMenu(createPopUpMenu());
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
129 table.addSelectionListener(new class() SelectionAdapter {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
130 public void widgetDefaultSelected(SelectionEvent e) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
131 TableItem[] items = table.getSelection();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
132 if (items.length > 0) editEntry(items[0]);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
133 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
134 });
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
135 for(int i = 0; i < columnNames.length; i++) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
136 TableColumn column = new TableColumn(table, DWT.NONE);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
137 column.setText(columnNames[i]);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
138 column.setWidth(150);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
139 int columnIndex = i;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
140 column.addSelectionListener(new class(columnIndex) SelectionAdapter {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
141 int c;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
142 this( int c ){ this.c = c; }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
143 public void widgetSelected(SelectionEvent e) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
144 sort(c);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
145 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
146 });
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
147 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
148
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
149 newAddressBook();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
150
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
151 shell.setSize(table.computeSize(DWT.DEFAULT, DWT.DEFAULT).x, 300);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
152 shell.open();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
153 return shell;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
154 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
155
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
156 private bool closeAddressBook() {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
157 if(isModified) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
158 //ask user if they want to save current address book
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
159 MessageBox box = new MessageBox(shell, DWT.ICON_WARNING | DWT.YES | DWT.NO | DWT.CANCEL);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
160 box.setText(shell.getText());
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
161 box.setMessage(resAddressBook.getString("Close_save"));
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
162
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
163 int choice = box.open();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
164 if(choice is DWT.CANCEL) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
165 return false;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
166 } else if(choice is DWT.YES) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
167 if (!save()) return false;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
168 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
169 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
170
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
171 TableItem[] items = table.getItems();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
172 for (int i = 0; i < items.length; i ++) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
173 items[i].dispose();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
174 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
175
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
176 return true;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
177 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
178 /**
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
179 * Creates the menu at the top of the shell where most
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
180 * of the programs functionality is accessed.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
181 *
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
182 * @return The <code>Menu</code> widget that was created
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
183 */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
184 private Menu createMenuBar() {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
185 Menu menuBar = new Menu(shell, DWT.BAR);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
186 shell.setMenuBar(menuBar);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
187
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
188 //create each header and subMenu for the menuBar
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
189 createFileMenu(menuBar);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
190 createEditMenu(menuBar);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
191 createSearchMenu(menuBar);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
192 createHelpMenu(menuBar);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
193
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
194 return menuBar;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
195 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
196
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
197 /**
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
198 * Converts an encoded <code>char[]</code> to a char[] array representing a table entry.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
199 */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
200 private char[][] decodeLine(char[] line) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
201 char[][] toks = TextUtil.split( line, DELIMITER );
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
202 while( toks.length < table.getColumnCount() ){
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
203 toks ~= "";
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
204 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
205 return toks[ 0 .. table.getColumnCount() ];
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
206 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
207 private void displayError(char[] msg) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
208 MessageBox box = new MessageBox(shell, DWT.ICON_ERROR);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
209 box.setMessage(msg);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
210 box.open();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
211 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
212 private void editEntry(TableItem item) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
213 DataEntryDialog dialog = new DataEntryDialog(shell);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
214 dialog.setLabels(columnNames);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
215 char[][] values = new char[][table.getColumnCount()];
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
216 for (int i = 0; i < values.length; i++) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
217 values[i] = item.getText(i);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
218 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
219 dialog.setValues(values);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
220 values = dialog.open();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
221 if (values !is null) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
222 item.setText(values);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
223 isModified = true;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
224 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
225 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
226 private char[] encodeLine(char[][] tableItems) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
227 char[] line = "";
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
228 for (int i = 0; i < tableItems.length - 1; i++) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
229 line ~= tableItems[i] ~ DELIMITER;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
230 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
231 line ~= tableItems[tableItems.length - 1] ~ "\n";
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
232
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
233 return line;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
234 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
235 private bool findEntry() {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
236 Cursor waitCursor = new Cursor(shell.getDisplay(), DWT.CURSOR_WAIT);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
237 shell.setCursor(waitCursor);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
238
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
239 bool matchCase = searchDialog.getMatchCase();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
240 bool matchWord = searchDialog.getMatchWord();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
241 char[] searchString = searchDialog.getSearchString();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
242 int column = searchDialog.getSelectedSearchArea();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
243
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
244 searchString = matchCase ? searchString : Unicode.toLower( searchString );
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
245
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
246 bool found = false;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
247 if (searchDialog.getSearchDown()) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
248 for(int i = table.getSelectionIndex() + 1; i < table.getItemCount(); i++) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
249 found = findMatch(searchString, table.getItem(i), column, matchWord, matchCase);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
250 if ( found ){
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
251 table.setSelection(i);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
252 break;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
253 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
254 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
255 } else {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
256 for(int i = table.getSelectionIndex() - 1; i > -1; i--) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
257 found = findMatch(searchString, table.getItem(i), column, matchWord, matchCase);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
258 if ( found ){
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
259 table.setSelection(i);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
260 break;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
261 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
262 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
263 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
264
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
265 shell.setCursor(cast(Cursor)null);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
266 waitCursor.dispose();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
267
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
268 return found;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
269 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
270 private bool findMatch(char[] searchString, TableItem item, int column, bool matchWord, bool matchCase) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
271
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
272 char[] tableText = matchCase ? item.getText(column) : Unicode.toLower( item.getText(column));
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
273 if (matchWord) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
274 if (tableText !is null && tableText==searchString) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
275 return true;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
276 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
277
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
278 } else {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
279 if(tableText!is null && TextUtil.containsPattern( tableText, searchString)) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
280 return true;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
281 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
282 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
283 return false;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
284 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
285 private void newAddressBook() {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
286 shell.setText(resAddressBook.getString("Title_bar") ~ resAddressBook.getString("New_title"));
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
287 *(cast(Object*)&file) = null;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
288 ///cast(Object)file = null;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
289 isModified = false;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
290 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
291 private void newEntry() {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
292 DataEntryDialog dialog = new DataEntryDialog(shell);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
293 dialog.setLabels(columnNames);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
294 char[][] data = dialog.open();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
295 if (data !is null) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
296 TableItem item = new TableItem(table, DWT.NONE);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
297 item.setText(data);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
298 isModified = true;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
299 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
300 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
301
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
302 private void openAddressBook() {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
303 FileDialog fileDialog = new FileDialog(shell, DWT.OPEN);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
304
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
305 fileDialog.setFilterExtensions(["*.adr;", "*.*"]);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
306 fileDialog.setFilterNames([
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
307 resAddressBook.getString("Book_filter_name") ~ " (*.adr)",
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
308 resAddressBook.getString("All_filter_name") ~ " (*.*)"]);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
309 char[] name = fileDialog.open();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
310
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
311 if(name is null) return;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
312 FilePath file = new FilePath(name);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
313 if (!file.exists()) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
314 displayError(resAddressBook.getString("File")~file.toString()~" "~resAddressBook.getString("Does_not_exist"));
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
315 return;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
316 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
317
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
318 Cursor waitCursor = new Cursor(shell.getDisplay(), DWT.CURSOR_WAIT);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
319 shell.setCursor(waitCursor);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
320
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
321 char[][] data;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
322 try {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
323 scope ioFile = new File (file);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
324 data = TextUtil.splitLines (cast(char[]) ioFile.read);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
325 } catch (IOException e ) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
326 displayError(resAddressBook.getString("IO_error_read") ~ "\n" ~ file.toString());
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
327 return;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
328 } finally {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
329
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
330 shell.setCursor(cast(Cursor)null);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
331 waitCursor.dispose();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
332 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
333
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
334 char[][][] tableInfo = new char[][][](data.length,table.getColumnCount());
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
335 foreach( idx, line; data ){
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
336 char[][] linetoks = decodeLine(line);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
337 tableInfo[ idx ] = linetoks;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
338 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
339 /+
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
340 int writeIndex = 0;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
341 for (int i = 0; i < data.length; i++) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
342 char[][] line = decodeLine(data[i]);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
343 if (line !is null) tableInfo[writeIndex++] = line;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
344 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
345 if (writeIndex !is data.length) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
346 char[][][] result = new char[][writeIndex][table.getColumnCount()];
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
347 System.arraycopy(tableInfo, 0, result, 0, writeIndex);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
348 tableInfo = result;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
349 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
350 +/
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
351 tango.core.Array.sort( tableInfo, new RowComparator(0));
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
352
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
353 for (int i = 0; i < tableInfo.length; i++) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
354 TableItem item = new TableItem(table, DWT.NONE);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
355 item.setText(tableInfo[i]);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
356 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
357 shell.setText(resAddressBook.getString("Title_bar")~fileDialog.getFileName());
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
358 isModified = false;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
359 this.file = file;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
360 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
361 private bool save() {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
362 if(file is null) return saveAs();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
363
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
364 Cursor waitCursor = new Cursor(shell.getDisplay(), DWT.CURSOR_WAIT);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
365 shell.setCursor(waitCursor);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
366
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
367 TableItem[] items = table.getItems();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
368 char[][] lines = new char[][items.length];
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
369 for(int i = 0; i < items.length; i++) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
370 char[][] itemText = new char[][table.getColumnCount()];
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
371 for (int j = 0; j < itemText.length; j++) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
372 itemText[j] = items[i].getText(j);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
373 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
374 lines[i] = encodeLine(itemText);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
375 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
376
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
377 FileOutput fileOutput;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
378 bool result = true;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
379 try {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
380 fileOutput = new FileOutput( file.toString );
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
381 for (int i = 0; i < lines.length; i++) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
382 fileOutput.write(lines[i]);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
383 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
384 } catch(IOException e ) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
385 displayError(resAddressBook.getString("IO_error_write") ~ "\n" ~ file.toString());
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
386 result = false;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
387 } catch(TracedException e2 ) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
388 displayError(resAddressBook.getString("error_write") ~ "\n" ~ e2.toString());
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
389 result = false;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
390 } finally {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
391 shell.setCursor(null);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
392 waitCursor.dispose();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
393
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
394 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
395
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
396 if(fileOutput !is null) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
397 try {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
398 fileOutput.close();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
399 } catch(IOException e) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
400 displayError(resAddressBook.getString("IO_error_close") ~ "\n" ~ file.toString());
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
401 return false;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
402 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
403 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
404 if( !result ){
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
405 return false;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
406 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
407
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
408 shell.setText(resAddressBook.getString("Title_bar")~file.toString());
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
409 isModified = false;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
410 return true;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
411 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
412 private bool saveAs() {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
413
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
414 FileDialog saveDialog = new FileDialog(shell, DWT.SAVE);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
415 saveDialog.setFilterExtensions(["*.adr;", "*.*"]);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
416 saveDialog.setFilterNames(["Address Books (*.adr)", "All Files "]);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
417
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
418 saveDialog.open();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
419 char[] name = saveDialog.getFileName();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
420 if(!name) return false;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
421
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
422 if( TextUtil.locatePatternPrior( name, ".adr" ) !is name.length - 4) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
423 name ~= ".adr";
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
424 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
425
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
426 FilePath file = new FilePath(saveDialog.getFilterPath() );
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
427 file.append( name );
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
428 if(file.exists()) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
429 MessageBox box = new MessageBox(shell, DWT.ICON_WARNING | DWT.YES | DWT.NO);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
430 box.setText(resAddressBook.getString("Save_as_title"));
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
431 box.setMessage(resAddressBook.getString("File") ~ file.toString()~" "~resAddressBook.getString("Query_overwrite"));
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
432 if(box.open() !is DWT.YES) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
433 return false;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
434 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
435 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
436 this.file = file;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
437 return save();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
438 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
439 private void sort(int column) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
440 if(table.getItemCount() <= 1) return;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
441
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
442 TableItem[] items = table.getItems();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
443 char[][][] data = new char[][][](items.length, table.getColumnCount());
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
444 for(int i = 0; i < items.length; i++) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
445 for(int j = 0; j < table.getColumnCount(); j++) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
446 data[i][j] = items[i].getText(j);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
447 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
448 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
449
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
450 tango.core.Array.sort(data, new RowComparator(column));
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
451
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
452 if (lastSortColumn !is column) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
453 table.setSortColumn(table.getColumn(column));
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
454 table.setSortDirection(DWT.DOWN);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
455 for (int i = 0; i < data.length; i++) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
456 items[i].setText(data[i]);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
457 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
458 lastSortColumn = column;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
459 } else {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
460 // reverse order if the current column is selected again
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
461 table.setSortDirection(DWT.UP);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
462 int j = data.length -1;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
463 for (int i = 0; i < data.length; i++) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
464 items[i].setText(data[j--]);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
465 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
466 lastSortColumn = -1;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
467 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
468
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
469 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
470 /**
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
471 * Creates all the items located in the File submenu and
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
472 * associate all the menu items with their appropriate
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
473 * functions.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
474 *
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
475 * @param menuBar Menu
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
476 * the <code>Menu</code> that file contain
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
477 * the File submenu.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
478 */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
479 private void createFileMenu(Menu menuBar) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
480 //File menu.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
481 MenuItem item = new MenuItem(menuBar, DWT.CASCADE);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
482 item.setText(resAddressBook.getString("File_menu_title"));
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
483 Menu menu = new Menu(shell, DWT.DROP_DOWN);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
484 item.setMenu(menu);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
485 /**
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
486 * Adds a listener to handle enabling and disabling
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
487 * some items in the Edit submenu.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
488 */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
489 menu.addMenuListener(new class() MenuAdapter {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
490 public void menuShown(MenuEvent e) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
491 Menu menu = cast(Menu)e.widget;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
492 MenuItem[] items = menu.getItems();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
493 items[1].setEnabled(table.getSelectionCount() !is 0); // edit contact
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
494 items[5].setEnabled((file !is null) && isModified); // save
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
495 items[6].setEnabled(table.getItemCount() !is 0); // save as
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
496 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
497 });
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
498
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
499
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
500 //File -> New Contact
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
501 MenuItem subItem = new MenuItem(menu, DWT.NONE);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
502 subItem.setText(resAddressBook.getString("New_contact"));
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
503 subItem.setAccelerator(DWT.MOD1 + 'N');
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
504 subItem.addSelectionListener(new class() SelectionAdapter {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
505 public void widgetSelected(SelectionEvent e) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
506 newEntry();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
507 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
508 });
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
509 subItem = new MenuItem(menu, DWT.NONE);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
510 subItem.setText(resAddressBook.getString("Edit_contact"));
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
511 subItem.setAccelerator(DWT.MOD1 + 'E');
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
512 subItem.addSelectionListener(new class() SelectionAdapter {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
513 public void widgetSelected(SelectionEvent e) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
514 TableItem[] items = table.getSelection();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
515 if (items.length is 0) return;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
516 editEntry(items[0]);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
517 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
518 });
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
519
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
520
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
521 new MenuItem(menu, DWT.SEPARATOR);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
522
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
523 //File -> New Address Book
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
524 subItem = new MenuItem(menu, DWT.NONE);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
525 subItem.setText(resAddressBook.getString("New_address_book"));
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
526 subItem.setAccelerator(DWT.MOD1 + 'B');
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
527 subItem.addSelectionListener(new class() SelectionAdapter {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
528 public void widgetSelected(SelectionEvent e) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
529 if (closeAddressBook()) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
530 newAddressBook();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
531 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
532 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
533 });
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
534
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
535 //File -> Open
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
536 subItem = new MenuItem(menu, DWT.NONE);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
537 subItem.setText(resAddressBook.getString("Open_address_book"));
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
538 subItem.setAccelerator(DWT.MOD1 + 'O');
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
539 subItem.addSelectionListener(new class() SelectionAdapter {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
540 public void widgetSelected(SelectionEvent e) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
541 if (closeAddressBook()) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
542 openAddressBook();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
543 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
544 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
545 });
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
546
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
547 //File -> Save.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
548 subItem = new MenuItem(menu, DWT.NONE);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
549 subItem.setText(resAddressBook.getString("Save_address_book"));
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
550 subItem.setAccelerator(DWT.MOD1 + 'S');
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
551 subItem.addSelectionListener(new class() SelectionAdapter {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
552 public void widgetSelected(SelectionEvent e) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
553 save();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
554 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
555 });
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
556
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
557 //File -> Save As.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
558 subItem = new MenuItem(menu, DWT.NONE);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
559 subItem.setText(resAddressBook.getString("Save_book_as"));
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
560 subItem.setAccelerator(DWT.MOD1 + 'A');
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
561 subItem.addSelectionListener(new class() SelectionAdapter {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
562 public void widgetSelected(SelectionEvent e) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
563 saveAs();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
564 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
565 });
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
566
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
567
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
568 new MenuItem(menu, DWT.SEPARATOR);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
569
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
570 //File -> Exit.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
571 subItem = new MenuItem(menu, DWT.NONE);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
572 subItem.setText(resAddressBook.getString("Exit"));
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
573 subItem.addSelectionListener(new class() SelectionAdapter {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
574 public void widgetSelected(SelectionEvent e) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
575 shell.close();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
576 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
577 });
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
578 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
579
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
580 /**
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
581 * Creates all the items located in the Edit submenu and
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
582 * associate all the menu items with their appropriate
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
583 * functions.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
584 *
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
585 * @param menuBar Menu
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
586 * the <code>Menu</code> that file contain
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
587 * the Edit submenu.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
588 *
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
589 * @see #createSortMenu()
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
590 */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
591 private MenuItem createEditMenu(Menu menuBar) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
592 //Edit menu.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
593 MenuItem item = new MenuItem(menuBar, DWT.CASCADE);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
594 item.setText(resAddressBook.getString("Edit_menu_title"));
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
595 Menu menu = new Menu(shell, DWT.DROP_DOWN);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
596 item.setMenu(menu);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
597
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
598 /**
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
599 * Add a listener to handle enabling and disabling
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
600 * some items in the Edit submenu.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
601 */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
602 menu.addMenuListener(new class() MenuAdapter {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
603 public void menuShown(MenuEvent e) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
604 Menu menu = cast(Menu)e.widget;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
605 MenuItem[] items = menu.getItems();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
606 int count = table.getSelectionCount();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
607 items[0].setEnabled(count !is 0); // edit
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
608 items[1].setEnabled(count !is 0); // copy
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
609 items[2].setEnabled(copyBuffer !is null); // paste
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
610 items[3].setEnabled(count !is 0); // delete
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
611 items[5].setEnabled(table.getItemCount() !is 0); // sort
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
612 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
613 });
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
614
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
615 //Edit -> Edit
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
616 MenuItem subItem = new MenuItem(menu, DWT.PUSH);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
617 subItem.setText(resAddressBook.getString("Edit"));
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
618 subItem.setAccelerator(DWT.MOD1 + 'E');
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
619 subItem.addSelectionListener(new class() SelectionAdapter {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
620 public void widgetSelected(SelectionEvent e) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
621 TableItem[] items = table.getSelection();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
622 if (items.length is 0) return;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
623 editEntry(items[0]);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
624 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
625 });
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
626
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
627 //Edit -> Copy
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
628 subItem = new MenuItem(menu, DWT.NONE);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
629 subItem.setText(resAddressBook.getString("Copy"));
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
630 subItem.setAccelerator(DWT.MOD1 + 'C');
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
631 subItem.addSelectionListener(new class() SelectionAdapter {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
632 public void widgetSelected(SelectionEvent e) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
633 TableItem[] items = table.getSelection();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
634 if (items.length is 0) return;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
635 copyBuffer = new char[][table.getColumnCount()];
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
636 for (int i = 0; i < copyBuffer.length; i++) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
637 copyBuffer[i] = items[0].getText(i);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
638 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
639 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
640 });
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
641
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
642 //Edit -> Paste
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
643 subItem = new MenuItem(menu, DWT.NONE);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
644 subItem.setText(resAddressBook.getString("Paste"));
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
645 subItem.setAccelerator(DWT.MOD1 + 'V');
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
646 subItem.addSelectionListener(new class() SelectionAdapter {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
647 public void widgetSelected(SelectionEvent e) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
648 if (copyBuffer is null) return;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
649 TableItem item = new TableItem(table, DWT.NONE);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
650 item.setText(copyBuffer);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
651 isModified = true;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
652 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
653 });
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
654
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
655 //Edit -> Delete
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
656 subItem = new MenuItem(menu, DWT.NONE);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
657 subItem.setText(resAddressBook.getString("Delete"));
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
658 subItem.addSelectionListener(new class() SelectionAdapter {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
659 public void widgetSelected(SelectionEvent e) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
660 TableItem[] items = table.getSelection();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
661 if (items.length is 0) return;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
662 items[0].dispose();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
663 isModified = true; }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
664 });
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
665
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
666 new MenuItem(menu, DWT.SEPARATOR);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
667
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
668 //Edit -> Sort(Cascade)
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
669 subItem = new MenuItem(menu, DWT.CASCADE);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
670 subItem.setText(resAddressBook.getString("Sort"));
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
671 Menu submenu = createSortMenu();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
672 subItem.setMenu(submenu);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
673
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
674 return item;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
675
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
676 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
677
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
678 /**
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
679 * Creates all the items located in the Sort cascading submenu and
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
680 * associate all the menu items with their appropriate
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
681 * functions.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
682 *
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
683 * @return Menu
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
684 * The cascading menu with all the sort menu items on it.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
685 */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
686 private Menu createSortMenu() {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
687 Menu submenu = new Menu(shell, DWT.DROP_DOWN);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
688 MenuItem subitem;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
689 for(int i = 0; i < columnNames.length; i++) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
690 subitem = new MenuItem (submenu, DWT.NONE);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
691 subitem.setText(columnNames [i]);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
692 int column = i;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
693 subitem.addSelectionListener(new class(column) SelectionAdapter {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
694 int c;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
695 this(int c){ this.c = c; }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
696 public void widgetSelected(SelectionEvent e) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
697 sort(c);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
698 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
699 });
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
700 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
701
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
702 return submenu;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
703 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
704
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
705 /**
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
706 * Creates all the items located in the Search submenu and
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
707 * associate all the menu items with their appropriate
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
708 * functions.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
709 *
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
710 * @param menuBar Menu
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
711 * the <code>Menu</code> that file contain
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
712 * the Search submenu.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
713 */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
714 private void createSearchMenu(Menu menuBar) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
715 //Search menu.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
716 MenuItem item = new MenuItem(menuBar, DWT.CASCADE);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
717 item.setText(resAddressBook.getString("Search_menu_title"));
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
718 Menu searchMenu = new Menu(shell, DWT.DROP_DOWN);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
719 item.setMenu(searchMenu);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
720
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
721 //Search -> Find...
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
722 item = new MenuItem(searchMenu, DWT.NONE);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
723 item.setText(resAddressBook.getString("Find"));
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
724 item.setAccelerator(DWT.MOD1 + 'F');
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
725 item.addSelectionListener(new class() SelectionAdapter {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
726 public void widgetSelected(SelectionEvent e) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
727 searchDialog.setMatchCase(false);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
728 searchDialog.setMatchWord(false);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
729 searchDialog.setSearchDown(true);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
730 searchDialog.setSearchString("");
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
731 searchDialog.setSelectedSearchArea(0);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
732 searchDialog.open();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
733 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
734 });
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
735
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
736 //Search -> Find Next
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
737 item = new MenuItem(searchMenu, DWT.NONE);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
738 item.setText(resAddressBook.getString("Find_next"));
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
739 item.setAccelerator(DWT.F3);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
740 item.addSelectionListener(new class() SelectionAdapter {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
741 public void widgetSelected(SelectionEvent e) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
742 searchDialog.open();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
743 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
744 });
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
745 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
746
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
747 /**
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
748 * Creates all items located in the popup menu and associates
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
749 * all the menu items with their appropriate functions.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
750 *
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
751 * @return Menu
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
752 * The created popup menu.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
753 */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
754 private Menu createPopUpMenu() {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
755 Menu popUpMenu = new Menu(shell, DWT.POP_UP);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
756
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
757 /**
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
758 * Adds a listener to handle enabling and disabling
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
759 * some items in the Edit submenu.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
760 */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
761 popUpMenu.addMenuListener(new class() MenuAdapter {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
762 public void menuShown(MenuEvent e) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
763 Menu menu = cast(Menu)e.widget;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
764 MenuItem[] items = menu.getItems();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
765 int count = table.getSelectionCount();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
766 items[2].setEnabled(count !is 0); // edit
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
767 items[3].setEnabled(count !is 0); // copy
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
768 items[4].setEnabled(copyBuffer !is null); // paste
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
769 items[5].setEnabled(count !is 0); // delete
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
770 items[7].setEnabled(table.getItemCount() !is 0); // find
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
771 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
772 });
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
773
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
774 //New
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
775 MenuItem item = new MenuItem(popUpMenu, DWT.PUSH);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
776 item.setText(resAddressBook.getString("Pop_up_new"));
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
777 item.addSelectionListener(new class() SelectionAdapter {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
778 public void widgetSelected(SelectionEvent e) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
779 newEntry();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
780 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
781 });
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
782
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
783 new MenuItem(popUpMenu, DWT.SEPARATOR);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
784
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
785 //Edit
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
786 item = new MenuItem(popUpMenu, DWT.PUSH);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
787 item.setText(resAddressBook.getString("Pop_up_edit"));
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
788 item.addSelectionListener(new class() SelectionAdapter {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
789 public void widgetSelected(SelectionEvent e) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
790 TableItem[] items = table.getSelection();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
791 if (items.length is 0) return;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
792 editEntry(items[0]);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
793 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
794 });
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
795
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
796 //Copy
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
797 item = new MenuItem(popUpMenu, DWT.PUSH);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
798 item.setText(resAddressBook.getString("Pop_up_copy"));
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
799 item.addSelectionListener(new class() SelectionAdapter {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
800 public void widgetSelected(SelectionEvent e) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
801 TableItem[] items = table.getSelection();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
802 if (items.length is 0) return;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
803 copyBuffer = new char[][table.getColumnCount()];
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
804 for (int i = 0; i < copyBuffer.length; i++) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
805 copyBuffer[i] = items[0].getText(i);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
806 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
807 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
808 });
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
809
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
810 //Paste
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
811 item = new MenuItem(popUpMenu, DWT.PUSH);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
812 item.setText(resAddressBook.getString("Pop_up_paste"));
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
813 item.addSelectionListener(new class() SelectionAdapter {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
814 public void widgetSelected(SelectionEvent e) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
815 if (copyBuffer is null) return;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
816 TableItem item = new TableItem(table, DWT.NONE);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
817 item.setText(copyBuffer);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
818 isModified = true;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
819 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
820 });
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
821
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
822 //Delete
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
823 item = new MenuItem(popUpMenu, DWT.PUSH);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
824 item.setText(resAddressBook.getString("Pop_up_delete"));
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
825 item.addSelectionListener(new class() SelectionAdapter {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
826 public void widgetSelected(SelectionEvent e) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
827 TableItem[] items = table.getSelection();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
828 if (items.length is 0) return;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
829 items[0].dispose();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
830 isModified = true;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
831 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
832 });
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
833
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
834 new MenuItem(popUpMenu, DWT.SEPARATOR);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
835
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
836 //Find...
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
837 item = new MenuItem(popUpMenu, DWT.PUSH);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
838 item.setText(resAddressBook.getString("Pop_up_find"));
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
839 item.addSelectionListener(new class() SelectionAdapter {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
840 public void widgetSelected(SelectionEvent e) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
841 searchDialog.open();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
842 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
843 });
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
844
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
845 return popUpMenu;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
846 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
847
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
848 /**
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
849 * Creates all the items located in the Help submenu and
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
850 * associate all the menu items with their appropriate
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
851 * functions.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
852 *
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
853 * @param menuBar Menu
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
854 * the <code>Menu</code> that file contain
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
855 * the Help submenu.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
856 */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
857 private void createHelpMenu(Menu menuBar) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
858
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
859 //Help Menu
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
860 MenuItem item = new MenuItem(menuBar, DWT.CASCADE);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
861 item.setText(resAddressBook.getString("Help_menu_title"));
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
862 Menu menu = new Menu(shell, DWT.DROP_DOWN);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
863 item.setMenu(menu);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
864
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
865 //Help -> About Text Editor
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
866 MenuItem subItem = new MenuItem(menu, DWT.NONE);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
867 subItem.setText(resAddressBook.getString("About"));
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
868 subItem.addSelectionListener(new class() SelectionAdapter {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
869 public void widgetSelected(SelectionEvent e) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
870 MessageBox box = new MessageBox(shell, DWT.NONE);
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
871 box.setText(resAddressBook.getString("About_1") ~ shell.getText());
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
872 box.setMessage(shell.getText() ~ resAddressBook.getString("About_2"));
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
873 box.open();
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
874 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
875 });
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
876 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
877
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
878
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
879 /**
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
880 * To compare entries (rows) by the given column
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
881 */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
882 private class RowComparator /*: Comparator*/ {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
883 private int column;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
884
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
885 /**
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
886 * Constructs a RowComparator given the column index
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
887 * @param col The index (starting at zero) of the column
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
888 */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
889 public this(int col) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
890 column = col;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
891 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
892
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
893 /**
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
894 * Compares two rows (type char[][]) using the specified
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
895 * column entry.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
896 * @param obj1 First row to compare
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
897 * @param obj2 Second row to compare
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
898 * @return negative if obj1 less than obj2, positive if
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
899 * obj1 greater than obj2, and zero if equal.
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
900 */
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
901 public bool compare(char[][] row1, char[][] row2) {
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
902 return row1[column] < row2[column];
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
903 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
904
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
905 alias compare opCall;
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
906 }
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
907
052c3aebd1d3 initial import
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
908 }