Package

Source Code of AdminGUIWebService

import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.KeyStroke;
import javax.swing.ListSelectionModel;
import javax.swing.RowFilter;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;
import javax.swing.border.BevelBorder;
import javax.swing.border.EtchedBorder;
import javax.swing.border.SoftBevelBorder;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;

public class AdminGUIWebService implements ActionListener {

  private JButton quitButton, searchButton, resetSearch;
  private JTextField searchText;
  private JPopupMenu tableMenu;
  private static JMenuBar menuBar;
  private JMenu menu;
  private JMenuItem menuItemInsert, menuItemDelete, menuItemShelf,
      menuItemWarehouse, menuPopulate;
  private JMenuItem tablemenuItemInsert, tablemenuItemDelete,
      tablemenuItemShelf, tablemenuItemWarehouse, tablemenuItemPopulate;
  private StatusBar statusBar;

  static JFrame frame;

  private static String INSERT_CMD = "Insert Rows";
  private static String DELETE_CMD = "Delete Rows";
  private static String MOVE_TO_SHELF_CMD = "Move items to shelf";
  private static String MOVE_TO_WAREHOUSE_CMD = "Move items to warehouse";
  private static String POPULATE_CMD = "Populate database";

  ItemTableModelWebService myData = new ItemTableModelWebService();
  JTable table;
  ListSelectionModel listSelectionModel;

  TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(myData);

  private JPanel createContentPane() {
    JPanel gui = new JPanel(new GridBagLayout());
    GridBagConstraints c = new GridBagConstraints();

    MouseListener popupListener = new PopupListener();
    tableMenu = new JPopupMenu();

    tablemenuItemInsert = new JMenuItem(INSERT_CMD);
    tablemenuItemInsert.setMnemonic(KeyEvent.VK_I);
    tablemenuItemInsert.getAccessibleContext().setAccessibleDescription(
        "Insert a new row in the database");
    tablemenuItemInsert.setAccelerator(KeyStroke.getKeyStroke(
        KeyEvent.VK_I, ActionEvent.CTRL_MASK));
    tablemenuItemInsert.addActionListener(this);
    tableMenu.add(tablemenuItemInsert);

    tablemenuItemDelete = new JMenuItem(DELETE_CMD);
    tablemenuItemDelete.setMnemonic(KeyEvent.VK_D);
    tablemenuItemDelete.getAccessibleContext().setAccessibleDescription(
        "Delete the selected row(s) from the database!");
    tablemenuItemDelete.setAccelerator(KeyStroke.getKeyStroke(
        KeyEvent.VK_D, ActionEvent.CTRL_MASK));
    tablemenuItemDelete.addActionListener(this);
    tableMenu.add(tablemenuItemDelete);

    tableMenu.add(new JSeparator());

    tablemenuItemShelf = new JMenuItem(MOVE_TO_SHELF_CMD);
    tablemenuItemShelf.setMnemonic(KeyEvent.VK_S);
    tablemenuItemShelf.getAccessibleContext().setAccessibleDescription(
        "Change the location to shelf for the selected items.");
    tablemenuItemShelf.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,
        ActionEvent.CTRL_MASK));
    tablemenuItemShelf.addActionListener(this);
    tableMenu.add(tablemenuItemShelf);

    tablemenuItemWarehouse = new JMenuItem(MOVE_TO_WAREHOUSE_CMD);
    tablemenuItemWarehouse.setMnemonic(KeyEvent.VK_W);
    tablemenuItemWarehouse.getAccessibleContext().setAccessibleDescription(
        "Change the location to warehouse for the selected items.");
    tablemenuItemWarehouse.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W,
        ActionEvent.CTRL_MASK));
    tablemenuItemWarehouse.addActionListener(this);
    tableMenu.add(tablemenuItemWarehouse);

    tablemenuItemPopulate = new JMenuItem(POPULATE_CMD);
    tablemenuItemPopulate.setMnemonic(KeyEvent.VK_P);
    tablemenuItemPopulate.getAccessibleContext().setAccessibleDescription(
        "Populate the database for tests... Yum,yum!");
    tablemenuItemPopulate.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,
        ActionEvent.CTRL_MASK));
    tablemenuItemPopulate.addActionListener(this);
    tableMenu.add(tablemenuItemPopulate);

    menuItemInsert = new JMenuItem(INSERT_CMD);
    menuItemInsert.setMnemonic(KeyEvent.VK_I);
    menuItemInsert.getAccessibleContext().setAccessibleDescription(
        "Insert a new row in the database");
    menuItemInsert.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_I,
        ActionEvent.CTRL_MASK));
    menuItemInsert.addActionListener(this);
    //tableMenu.add(menuItemInsert);

    menuItemDelete = new JMenuItem(DELETE_CMD);
    menuItemDelete.setMnemonic(KeyEvent.VK_D);
    menuItemDelete.getAccessibleContext().setAccessibleDescription(
        "Delete the selected row(s) from the database!");
    menuItemDelete.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D,
        ActionEvent.CTRL_MASK));
    menuItemDelete.addActionListener(this);
    //tableMenu.add(menuItemDelete);

    //tableMenu.add(new JSeparator());

    menuItemShelf = new JMenuItem(MOVE_TO_SHELF_CMD);
    menuItemShelf.setMnemonic(KeyEvent.VK_S);
    menuItemShelf.getAccessibleContext().setAccessibleDescription(
        "Change the location to shelf for the selected items.");
    menuItemShelf.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,
        ActionEvent.CTRL_MASK));
    menuItemShelf.addActionListener(this);
    //tableMenu.add(menuItemShelf);

    menuItemWarehouse = new JMenuItem(MOVE_TO_WAREHOUSE_CMD);
    menuItemWarehouse.setMnemonic(KeyEvent.VK_W);
    menuItemWarehouse.getAccessibleContext().setAccessibleDescription(
        "Change the location to warehouse for the selected items.");
    menuItemWarehouse.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W,
        ActionEvent.CTRL_MASK));
    menuItemWarehouse.addActionListener(this);
    //tableMenu.add(menuItemWarehouse);

    menuPopulate = new JMenuItem(POPULATE_CMD);
    menuPopulate.setMnemonic(KeyEvent.VK_P);
    menuPopulate.getAccessibleContext().setAccessibleDescription(
        "Populate the database for tests... Yum,yum!");
    menuPopulate.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,
        ActionEvent.CTRL_MASK));
    menuPopulate.addActionListener(this);
    //tableMenu.add(menuPopulate);

    Insets insets = new Insets(5, 5, 5, 5);
    c.insets = insets;
    JLabel item = new JLabel("Search Item:");
    c.gridx = 0;
    c.gridy = 0;
    c.fill = GridBagConstraints.NONE;
    gui.add(item, c);

    searchText = new JTextField();
    c.fill = GridBagConstraints.HORIZONTAL;
    c.weightx = 1.0;
    c.gridx = 1;
    c.gridy = 0;
    searchText.addFocusListener(new FocusListener() {

      @Override
      public void focusGained(FocusEvent e) {
        statusBar
            .setMessage("Type an ID :) , description ,price or location to search.");
      }

      @Override
      public void focusLost(FocusEvent e) {
        // statusBar.setMessage("");
      }

    });
    gui.add(searchText, c);

    searchButton = new JButton("Search");
    searchButton.setMnemonic('s');
    searchButton.addActionListener(this);
    c.weightx = 0.0;
    c.gridx = 2;
    c.gridy = 0;
    c.fill = GridBagConstraints.HORIZONTAL;
    gui.add(searchButton, c);

    resetSearch = new JButton("Reset");
    resetSearch.setMnemonic('r');
    resetSearch.addActionListener(this);
    c.weightx = 0.0;
    c.gridx = 3;
    c.gridy = 0;
    c.fill = GridBagConstraints.HORIZONTAL;
    gui.add(resetSearch, c);

    table = new JTable(myData);
    JScrollPane scrollPane = new JScrollPane(table);
    table.setFillsViewportHeight(true);
    table.setAutoResizeMode(JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);
    table.setRowSorter(sorter);
    c.fill = GridBagConstraints.BOTH;
    c.gridwidth = GridBagConstraints.REMAINDER;
    c.weighty = 1;
    c.gridx = 0;
    c.gridy = 1;
    table.setBorder(new EtchedBorder(2));
    table.add(tableMenu);
    table.addMouseListener(popupListener);
    listSelectionModel = table.getSelectionModel();
    listSelectionModel
        .addListSelectionListener(new SharedListSelectionHandler());
    table.setSelectionModel(listSelectionModel);
    // table.addFocusListener(new FocusListener() {
    //
    // @Override
    // public void focusGained(FocusEvent e) {
    // }
    //
    // @Override
    // public void focusLost(FocusEvent e) {
    // System.out.println(e.getSource());
    // if (e.getSource() != tableMenu)
    // table.getSelectionModel().clearSelection();
    // }
    // });
    gui.add(scrollPane, c);

    quitButton = new JButton("Quit");
    quitButton.setMnemonic('q');
    quitButton.addActionListener(this);
    c.weighty = 0;
    // c.anchor = GridBagConstraints.PAGE_END;
    c.fill = GridBagConstraints.NONE;
    c.gridwidth = GridBagConstraints.REMAINDER;
    c.weightx = 0;
    c.gridwidth = 1;
    c.ipady = 0;
    c.gridx = 3;
    c.gridy = 3;
    gui.add(quitButton, c);

    statusBar = new StatusBar();
    c.gridx = 0;
    c.gridy = 3;
    c.gridwidth = 3;
    c.fill = GridBagConstraints.HORIZONTAL;
    statusBar.setMessage("Total nr. of Items: " + myData.getRowCount());
    statusBar.setBorder(new EtchedBorder());
    gui.add(statusBar, c);
    gui.setBorder(new SoftBevelBorder(BevelBorder.LOWERED));

    menuBar = new JMenuBar();
    menu = new JMenu("Operations");
    menu.setMnemonic(KeyEvent.VK_O);
    menu.getAccessibleContext().setAccessibleDescription(
        "Available operations for items");
    menu.add(menu);
    menu.add(menuItemInsert);
    menu.add(menuItemDelete);
    menu.add(menuItemShelf);
    menu.add(menuItemWarehouse);
    menu.add(menuPopulate);
    menuBar.add(menu);

    return gui;
  }

  private void centerFrame(JFrame frame) {
    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    Dimension frameSize = frame.getSize();

    if (frameSize.height > screenSize.height) {
      frameSize.height = screenSize.height;
    }

    if (frameSize.width > screenSize.width) {
      frameSize.width = screenSize.width;
    }

    frame.setLocation((screenSize.width - frameSize.width) / 2,
        (screenSize.height - frameSize.height) / 2);
  }

  private static void createAndShowGUI() {
    frame = new JFrame("AdminGUI");
    JFrame.setDefaultLookAndFeelDecorated(true);
    frame.setSize(640, 480);
    frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);

    AdminGUIWebService ag = new AdminGUIWebService();
    frame.setContentPane(ag.createContentPane());
    // Center window
    ag.centerFrame(frame);
    // activate
    frame.setJMenuBar(menuBar);
    frame.validate();
    frame.setVisible(true);
  }

  @Override
  public void actionPerformed(ActionEvent e) {
    if (e.getSource() == quitButton) {
      statusBar.setMessage("Bye! ");
      frame.dispose();
    }
    if (e.getSource() == searchButton) {
      String text = searchText.getText();
      if (text.length() == 0) {
        sorter.setRowFilter(null);
      } else {
        sorter.setRowFilter(RowFilter.regexFilter(text));
        statusBar
            .setMessage("Items containing " + searchText.getText());
      }
    }
    if (e.getSource() == resetSearch) {
      searchText.setText("");
      sorter.setRowFilter(null);
      statusBar.setMessage("Total nr. of Items: " + myData.getRowCount());
    }
    if (e.getSource() == menuItemInsert ||e.getSource() == tablemenuItemInsert) {
      table.setAutoCreateColumnsFromModel(false);
      myData.insertRow();
      statusBar.setMessage("Total nr. of Items: " + myData.getRowCount());
      table.setAutoCreateColumnsFromModel(true);
    }

    if (e.getSource() == menuItemDelete||e.getSource() == tablemenuItemDelete) {
      if (table.getSelectedRow() != -1) {
        askRemove("Are you sure you want to delete the items?");
      }
      table.clearSelection();
    }
    if (e.getSource() == menuPopulate||e.getSource() == tablemenuItemPopulate) {
      // int n = 0;
      String s = JOptionPane.showInputDialog("How many items? ");
      try {
        final int n = Integer.parseInt(s);
        if (n > 0) {
          statusBar.setMessage("Populating database...");
          table.setAutoCreateColumnsFromModel(false);
          SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
              myData.populateDatabase(n);
            }
          });
          table.setAutoCreateColumnsFromModel(true);
          statusBar.setMessage(n + " items created.");
        }
      } catch (NumberFormatException nfe) {
        statusBar.setMessage("You don't know how a number looks like?");
        nfe.printStackTrace();
      }

    }
    if (e.getSource() == menuItemShelf||e.getSource() == tablemenuItemShelf) {
      if (table.getSelectedRow() != -1) {
        int n = JOptionPane.showConfirmDialog(null,
            "Are you sure you want to move the items?",
            "Move items to shelf", JOptionPane.YES_NO_OPTION);

        // the user has clicked the cross
        if (n == -1) {
          return;
        }

        // the user has clicked cancel
        if (n == 2) {
          return;
        }

        // yes
        if (n == 0) {
          int[] rows = table.getSelectedRows();
          // table.setAutoCreateColumnsFromModel(false);
          for (int row : rows) {
            myData.moveToLocation("shelf", row);
          }
          // table.clearSelection();
          statusBar.setMessage("Location changed for " + rows.length
              + " items.");
          // table.setAutoCreateColumnsFromModel(true);
        }
      }
      table.clearSelection();
    }

    if (e.getSource() == menuItemWarehouse||e.getSource() == tablemenuItemWarehouse) {
      if (table.getSelectedRow() != -1) {
        int n = JOptionPane.showConfirmDialog(null,
            "Are you sure you want to move the items?",
            "Move items to warehouse", JOptionPane.YES_NO_OPTION);

        // the user has clicked the cross
        if (n == -1) {
          return;
        }

        // the user has clicked cancel
        if (n == 2) {
          return;
        }

        // yes
        if (n == 0) {
          int[] rows = table.getSelectedRows();
          // table.setAutoCreateColumnsFromModel(false);
          for (int row : rows) {
            myData.moveToLocation("warehouse", row);
          }
          // table.clearSelection();
          statusBar.setMessage("Location changed for " + rows.length
              + " items.");
          // table.setAutoCreateColumnsFromModel(true);
        }
      }
      table.clearSelection();
    }
    // }
  }

  public void askRemove(String message) {
    int n = JOptionPane.showConfirmDialog(null, message, "Delete",
        JOptionPane.YES_NO_OPTION);

    // the user has clicked the cross
    if (n == -1) {
      return;
    }

    // the user has clicked cancel
    if (n == 2) {
      return;
    }

    // yes
    if (n == 0) {
      int[] rows = table.getSelectedRows();
      table.setAutoCreateColumnsFromModel(false);
      for (int row : rows) {
        myData.deleteRow(row);
      }
      myData.updateModel();
      table.clearSelection();
      statusBar.setMessage(rows.length + " items were deleted. "
          + rows.length);
      table.setAutoCreateColumnsFromModel(true);
    }

    // no
    if (n == 1) {
      return;
    }
  }

  public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
      @Override
      public void run() {
        createAndShowGUI();
      }
    });
  }

  class PopupListener extends MouseAdapter {
    @Override
    public void mousePressed(MouseEvent e) {
      showPopup(e);
    }

    @Override
    public void mouseReleased(MouseEvent e) {
      showPopup(e);
    }

    private void showPopup(MouseEvent e) {
      if (e.isPopupTrigger()) {
        if (table.getSelectedRows().length > 0) {
          menuItemDelete.setEnabled(true);
          menuItemShelf.setEnabled(true);
          menuItemWarehouse.setEnabled(true);
          tablemenuItemDelete.setEnabled(true);
          tablemenuItemShelf.setEnabled(true);
          tablemenuItemWarehouse.setEnabled(true);
        } else {
          menuItemDelete.setEnabled(false);
          menuItemShelf.setEnabled(false);
          menuItemWarehouse.setEnabled(false);
          tablemenuItemDelete.setEnabled(false);
          tablemenuItemShelf.setEnabled(false);
          tablemenuItemWarehouse.setEnabled(false);
        }
        tableMenu.show(e.getComponent(), e.getX(), e.getY());
      }
    }
  }

  @SuppressWarnings("serial")
  class StatusBar extends JLabel {
    public StatusBar() {
      super();
      super.setPreferredSize(new Dimension(100, 16));
      setMessage("Ready");
    }

    public void setMessage(String message) {
      setText(" " + message);
    }
  }

  class SharedListSelectionHandler implements ListSelectionListener {
    public void valueChanged(ListSelectionEvent e) {
      ListSelectionModel lsm = (ListSelectionModel) e.getSource();

      if (!lsm.isSelectionEmpty())
        statusBar.setMessage(table.getSelectedRowCount()
            + " items selected.");
    }
  }
}
TOP

Related Classes of AdminGUIWebService

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.