MainFrame.java 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. package eu.tankernn.accounts.frame;
  2. import java.awt.BorderLayout;
  3. import java.awt.Dimension;
  4. import java.awt.EventQueue;
  5. import java.awt.LayoutManager;
  6. import java.awt.event.WindowAdapter;
  7. import java.awt.event.WindowEvent;
  8. import javax.swing.JFrame;
  9. import javax.swing.JList;
  10. import javax.swing.JPanel;
  11. import javax.swing.JScrollPane;
  12. import javax.swing.JTextField;
  13. import javax.swing.event.DocumentEvent;
  14. import javax.swing.event.DocumentListener;
  15. import javax.swing.event.ListSelectionEvent;
  16. import javax.swing.event.ListSelectionListener;
  17. import eu.tankernn.accounts.Account;
  18. import eu.tankernn.accounts.AccountManager;
  19. import eu.tankernn.accounts.frame.menu.MainMenuBar;
  20. import eu.tankernn.accounts.util.GUIUtils;
  21. public class MainFrame implements ListSelectionListener, DocumentListener {
  22. private JFrame frame;
  23. private LayoutManager manager;
  24. // GUI components
  25. private MainMenuBar menubar;
  26. private JPanel listPanel;
  27. private JTextField search;
  28. private JList<Account> accounts;
  29. private JScrollPane accountScrollPane;
  30. private AccountPanel accountPanel;
  31. /**
  32. * Launch the application.
  33. */
  34. public static void main(String[] args) {
  35. System.setProperty("apple.eawt.quitStrategy", "CLOSE_ALL_WINDOWS");
  36. EventQueue.invokeLater(new Runnable() {
  37. public void run() {
  38. try {
  39. MainFrame window = new MainFrame();
  40. AccountManager.init(window);
  41. window.refresh();
  42. window.frame.setVisible(true);
  43. } catch (Exception e) {
  44. e.printStackTrace();
  45. }
  46. }
  47. });
  48. }
  49. /**
  50. * Create the application.
  51. */
  52. public MainFrame() {
  53. initialize();
  54. }
  55. /**
  56. * Initialize the contents of the frame.
  57. */
  58. private void initialize() {
  59. manager = new BorderLayout();
  60. menubar = new MainMenuBar(this);
  61. search = new JTextField("Search...");
  62. accounts = new JList<Account>();
  63. frame = new JFrame();
  64. frame.setLayout(manager);
  65. frame.setJMenuBar(menubar);
  66. listPanel = new JPanel();
  67. listPanel.setLayout(new BorderLayout());
  68. search.getDocument().addDocumentListener(this);
  69. listPanel.add(search, BorderLayout.NORTH);
  70. accounts.addListSelectionListener(this);
  71. accountScrollPane = new JScrollPane(accounts);
  72. accountScrollPane.setPreferredSize(new Dimension(100, 100));
  73. listPanel.add(accountScrollPane, BorderLayout.CENTER);
  74. frame.add(listPanel, BorderLayout.WEST);
  75. accountPanel = new AccountPanel();
  76. frame.add(accountPanel, BorderLayout.EAST);
  77. frame.setTitle("Account Management System");
  78. frame.pack();
  79. frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
  80. frame.addWindowListener(new WindowAdapter() {
  81. public void windowClosing(WindowEvent ev) {
  82. if (AccountManager.closeFile()) {
  83. frame.dispose();
  84. }
  85. }
  86. });
  87. }
  88. @Override
  89. public void valueChanged(ListSelectionEvent e) {
  90. if (accounts.getSelectedValue() != null)
  91. accountPanel.updatePanel(accounts.getSelectedValue());
  92. }
  93. public void refresh() {
  94. accounts.setModel(GUIUtils.listModelFromList(AccountManager.getAccounts()));
  95. accountPanel.updatePanel(null);
  96. }
  97. private void search() {
  98. String s = search.getText();
  99. accounts.setModel(GUIUtils.listModelFromList(AccountManager.search(s)));
  100. }
  101. @Override
  102. public void insertUpdate(DocumentEvent e) {
  103. search();
  104. }
  105. @Override
  106. public void removeUpdate(DocumentEvent e) {
  107. search();
  108. }
  109. @Override
  110. public void changedUpdate(DocumentEvent e) {
  111. search();
  112. }
  113. }