annotate dwtexamples/addressbook/AddressBook.d @ 65:a84ba4d1820f

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