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 + -
显示快捷键?