swtaddressbook.java
来自「java的swt图形程序」· Java 代码 · 共 1,335 行 · 第 1/3 页
JAVA
1,335 行
"All Files " });
saveDialog.open();
String name = saveDialog.getFileName();
if (name.equals(""))
return false;
if (name.indexOf(".adr") != name.length() - 4) {
name += ".adr";
}
File file = new File(saveDialog.getFilterPath(), name);
if (file.exists()) {
MessageBox box = new MessageBox(shell, SWT.ICON_WARNING | SWT.YES
| SWT.NO);
box.setText("Save_as_title");
box.setMessage("File" + file.getName()
+ " " + "Query_overwrite");
if (box.open() != SWT.YES) {
return false;
}
}
this.file = file;
return save();
}
private void sort(int column) {
if (table.getItemCount() <= 1)
return;
TableItem[] items = table.getItems();
String[][] data = new String[items.length][table.getColumnCount()];
for (int i = 0; i < items.length; i++) {
for (int j = 0; j < table.getColumnCount(); j++) {
data[i][j] = items[i].getText(j);
}
}
Arrays.sort(data, new RowComparator(column));
if (lastSortColumn != column) {
for (int i = 0; i < data.length; i++) {
items[i].setText(data[i]);
}
lastSortColumn = column;
} else {
// reverse order if the current column is selected again
int j = data.length - 1;
for (int i = 0; i < data.length; i++) {
items[i].setText(data[j--]);
}
lastSortColumn = -1;
}
}
/**
* Creates all the items located in the File submenu and associate all the
* menu items with their appropriate functions.
*
* @param menuBar
* Menu the <code>Menu</code> that file contain the File
* submenu.
*/
private void createFileMenu(Menu menuBar) {
// File menu.
MenuItem item = new MenuItem(menuBar, SWT.CASCADE);
item.setText("File_menu_title");
Menu menu = new Menu(shell, SWT.DROP_DOWN);
item.setMenu(menu);
/**
* Adds a listener to handle enabling and disabling some items in the
* Edit submenu.
*/
menu.addMenuListener(new MenuAdapter() {
public void menuShown(MenuEvent e) {
Menu menu = (Menu) e.widget;
MenuItem[] items = menu.getItems();
items[1].setEnabled(table.getSelectionCount() != 0); // edit
// contact
items[5].setEnabled((file != null) && isModified); // save
items[6].setEnabled(table.getItemCount() != 0); // save as
}
});
// File -> New Contact
MenuItem subItem = new MenuItem(menu, SWT.NULL);
subItem.setText("New_contact");
subItem.setAccelerator(SWT.MOD1 + 'N');
subItem.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
newEntry();
}
});
subItem = new MenuItem(menu, SWT.NULL);
subItem.setText("Edit_contact");
subItem.setAccelerator(SWT.MOD1 + 'E');
subItem.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
TableItem[] items = table.getSelection();
if (items.length == 0)
return;
editEntry(items[0]);
}
});
new MenuItem(menu, SWT.SEPARATOR);
// File -> New Address Book
subItem = new MenuItem(menu, SWT.NULL);
subItem.setText("New_address_book");
subItem.setAccelerator(SWT.MOD1 + 'B');
subItem.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
if (closeAddressBook()) {
newAddressBook();
}
}
});
// File -> Open
subItem = new MenuItem(menu, SWT.NULL);
subItem.setText("Open_address_book");
subItem.setAccelerator(SWT.MOD1 + 'O');
subItem.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
if (closeAddressBook()) {
openAddressBook();
}
}
});
// File -> Save.
subItem = new MenuItem(menu, SWT.NULL);
subItem.setText("Save_address_book");
subItem.setAccelerator(SWT.MOD1 + 'S');
subItem.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
save();
}
});
// File -> Save As.
subItem = new MenuItem(menu, SWT.NULL);
subItem.setText("Save_book_as");
subItem.setAccelerator(SWT.MOD1 + 'A');
subItem.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
saveAs();
}
});
new MenuItem(menu, SWT.SEPARATOR);
// File -> Exit.
subItem = new MenuItem(menu, SWT.NULL);
subItem.setText("Exit");
subItem.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
shell.close();
}
});
}
/**
* Creates all the items located in the Edit submenu and associate all the
* menu items with their appropriate functions.
*
* @param menuBar
* Menu the <code>Menu</code> that file contain the Edit
* submenu.
*
* @see #createSortMenu()
*/
private MenuItem createEditMenu(Menu menuBar) {
// Edit menu.
MenuItem item = new MenuItem(menuBar, SWT.CASCADE);
item.setText("Edit_menu_title");
Menu menu = new Menu(shell, SWT.DROP_DOWN);
item.setMenu(menu);
/**
* Add a listener to handle enabling and disabling some items in the
* Edit submenu.
*/
menu.addMenuListener(new MenuAdapter() {
public void menuShown(MenuEvent e) {
Menu menu = (Menu) e.widget;
MenuItem[] items = menu.getItems();
int count = table.getSelectionCount();
items[0].setEnabled(count != 0); // edit
items[1].setEnabled(count != 0); // copy
items[2].setEnabled(copyBuffer != null); // paste
items[3].setEnabled(count != 0); // delete
items[5].setEnabled(table.getItemCount() != 0); // sort
}
});
// Edit -> Edit
MenuItem subItem = new MenuItem(menu, SWT.CASCADE);
subItem.setText("Edit");
subItem.setAccelerator(SWT.MOD1 + 'E');
subItem.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
TableItem[] items = table.getSelection();
if (items.length == 0)
return;
editEntry(items[0]);
}
});
// Edit -> Copy
subItem = new MenuItem(menu, SWT.NULL);
subItem.setText("Copy");
subItem.setAccelerator(SWT.MOD1 + 'C');
subItem.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
TableItem[] items = table.getSelection();
if (items.length == 0)
return;
copyBuffer = new String[table.getColumnCount()];
for (int i = 0; i < copyBuffer.length; i++) {
copyBuffer[i] = items[0].getText(i);
}
}
});
// Edit -> Paste
subItem = new MenuItem(menu, SWT.NULL);
subItem.setText("Paste");
subItem.setAccelerator(SWT.MOD1 + 'V');
subItem.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
if (copyBuffer == null)
return;
TableItem item = new TableItem(table, SWT.NONE);
item.setText(copyBuffer);
isModified = true;
}
});
// Edit -> Delete
subItem = new MenuItem(menu, SWT.NULL);
subItem.setText("Delete");
subItem.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
TableItem[] items = table.getSelection();
if (items.length == 0)
return;
items[0].dispose();
isModified = true;
}
});
new MenuItem(menu, SWT.SEPARATOR);
// Edit -> Sort(Cascade)
subItem = new MenuItem(menu, SWT.CASCADE);
subItem.setText("Sort");
Menu submenu = createSortMenu();
subItem.setMenu(submenu);
return item;
}
/**
* Creates all the items located in the Sort cascading submenu and associate
* all the menu items with their appropriate functions.
*
* @return Menu The cascading menu with all the sort menu items on it.
*/
private Menu createSortMenu() {
Menu submenu = new Menu(shell, SWT.DROP_DOWN);
MenuItem subitem;
for (int i = 0; i < columnNames.length; i++) {
subitem = new MenuItem(submenu, SWT.NULL);
subitem.setText(columnNames[i]);
final int column = i;
subitem.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
sort(column);
}
});
}
return submenu;
}
/**
* Creates all the items located in the Search submenu and associate all the
* menu items with their appropriate functions.
*
* @param menuBar
* Menu the <code>Menu</code> that file contain the Search
* submenu.
*/
private void createSearchMenu(Menu menuBar) {
// Search menu.
MenuItem item = new MenuItem(menuBar, SWT.CASCADE);
item.setText("Search_menu_title");
Menu searchMenu = new Menu(shell, SWT.DROP_DOWN);
item.setMenu(searchMenu);
// Search -> Find...
item = new MenuItem(searchMenu, SWT.NULL);
item.setText("Find");
item.setAccelerator(SWT.MOD1 + 'F');
item.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
searchDialog.setMatchCase(false);
searchDialog.setMatchWord(false);
searchDialog.setSearchDown(true);
searchDialog.setSearchString("");
searchDialog.setSelectedSearchArea(0);
searchDialog.open();
}
});
// Search -> Find Next
item = new MenuItem(searchMenu, SWT.NULL);
item.setText("Find_next");
item.setAccelerator(SWT.F3);
item.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
searchDialog.open();
}
});
}
/**
* Creates all items located in the popup menu and associates all the menu
* items with their appropriate functions.
*
* @return Menu The created popup menu.
*/
private Menu createPopUpMenu() {
Menu popUpMenu = new Menu(shell, SWT.POP_UP);
/**
* Adds a listener to handle enabling and disabling some items in the
* Edit submenu.
*/
popUpMenu.addMenuListener(new MenuAdapter() {
public void menuShown(MenuEvent e) {
Menu menu = (Menu) e.widget;
MenuItem[] items = menu.getItems();
int count = table.getSelectionCount();
items[2].setEnabled(count != 0); // edit
items[3].setEnabled(count != 0); // copy
items[4].setEnabled(copyBuffer != null); // paste
items[5].setEnabled(count != 0); // delete
items[7].setEnabled(table.getItemCount() != 0); // find
}
});
// New
MenuItem item = new MenuItem(popUpMenu, SWT.CASCADE);
item.setText("Pop_up_new");
item.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
newEntry();
}
});
new MenuItem(popUpMenu, SWT.SEPARATOR);
// Edit
item = new MenuItem(popUpMenu, SWT.CASCADE);
item.setText("Pop_up_edit");
item.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
TableItem[] items = table.getSelection();
if (items.length == 0)
return;
editEntry(items[0]);
}
});
// Copy
item = new MenuItem(popUpMenu, SWT.CASCADE);
item.setText("Pop_up_copy");
item.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
TableItem[] items = table.getSelection();
if (items.length == 0)
return;
copyBuffer = new String[table.getColumnCount()];
for (int i = 0; i < copyBuffer.length; i++) {
copyBuffer[i] = items[0].getText(i);
}
}
});
// Paste
item = new MenuItem(popUpMenu, SWT.CASCADE);
item.setText("Pop_up_paste");
item.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
if (copyBuffer == null)
return;
TableItem item = new TableItem(table, SWT.NONE);
item.setText(copyBuffer);
isModified = true;
}
});
// Delete
item = new MenuItem(popUpMenu, SWT.CASCADE);
item.setText("Pop_up_delete");
item.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
TableItem[] items = table.getSelection();
if (items.length == 0)
return;
items[0].dispose();
isModified = true;
}
});
new MenuItem(popUpMenu, SWT.SEPARATOR);
// Find...
item = new MenuItem(popUpMenu, SWT.NULL);
item.setText("Pop_up_find");
item.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
searchDialog.open();
}
});
return popUpMenu;
}
/**
* Creates all the items located in the Help submenu and associate all the
* menu items with their appropriate functions.
*
* @param menuBar
* Menu the <code>Menu</code> that file contain the Help
* submenu.
*/
private void createHelpMenu(Menu menuBar) {
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?