/fin_val/src/production/artem/finance/gui/CountsCatalog.java
Java | 705 lines | 506 code | 79 blank | 120 comment | 49 complexity | d2105cd53e79fd1d383683ad608ee479 MD5 | raw file
Possible License(s): MPL-2.0-no-copyleft-exception, IPL-1.0, Apache-2.0, LGPL-2.1, LGPL-2.0, BSD-3-Clause
- package artem.finance.gui;
-
- import javax.swing.JPanel;
-
- import java.awt.Component;
- import java.awt.Dimension;
- import java.awt.Rectangle;
- import javax.swing.DefaultCellEditor;
- import javax.swing.DefaultComboBoxModel;
- import javax.swing.JButton;
- import javax.swing.JCheckBox;
- import javax.swing.JInternalFrame;
- import javax.swing.JOptionPane;
- import javax.swing.JRadioButton;
- import javax.swing.JTextField;
- import javax.swing.JScrollPane;
- import javax.swing.JTable;
- import javax.swing.ListSelectionModel;
- import javax.swing.event.ListSelectionEvent;
- import javax.swing.event.ListSelectionListener;
- import javax.swing.table.DefaultTableColumnModel;
- import javax.swing.table.TableCellRenderer;
- import javax.swing.table.TableColumn;
-
- import java.awt.event.ItemEvent;
- import java.awt.event.ItemListener;
- import java.lang.reflect.InvocationTargetException;
- import java.rmi.RemoteException;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Properties;
-
- import javax.swing.JLabel;
- import javax.swing.JComboBox;
-
- import artem.finance.gui.db.BeansFactory;
- import artem.finance.server.persist.Bank;
- import artem.finance.server.persist.Schet;
- import artem.finance.server.persist.Valuta;
- import artem.finance.server.persist.beans.BankBean;
- import artem.finance.server.persist.beans.SchetBean;
- import artem.finance.server.persist.beans.ValutaBean;
-
- /**
- *
- * @author Ivan Burtsev
- *
- */
-
- public class CountsCatalog extends JInternalFrame {
-
- private static final long serialVersionUID = 1L;
- private JPanel jContentPane = null;
- private JButton addButton = null;
- private JTextField countTextField = null;
- private JTextField countNameTextField = null;
- private JScrollPane jScrollPane = null;
- private JTable jTable = null;
- private JButton cancelButton = null;
- private JLabel countLabel = null;
- private JLabel countNameLabel = null;
- private JButton editButton = null;
- private JLabel ClosedLabel = null;
- private JLabel valLabel = null;
- private JLabel bankLabel = null;
- private JCheckBox closedCheckBox = null;
- private JComboBox bankComboBox = null;
- private JComboBox valComboBox = null;
- private JButton delButton = null;
- private BeansFactory factory;
- private Schet selectedCount;
- private Properties properties;
-
- /**
- * This is the default constructor
- */
- public CountsCatalog(Properties properties) {
- super("",
- false, //resizable
- true, //closable
- false, //maximizable
- true);//iconifiable
- this.properties = properties;
- this.factory = BeansFactory.getInstance();
- initialize();
- }
-
- public Properties getLanguageLabelsProperties(){
- return properties;
- }
- /**
- * This method initializes this
- *
- * @return void
- */
- private void initialize() {
- this.setSize(675, 535);
- this.setContentPane(getJContentPane());
- this.setTitle(properties.getProperty("counts"));
- }
-
- /**
- * This method initializes jContentPane
- *
- * @return javax.swing.JPanel
- */
- private JPanel getJContentPane() {
- if (jContentPane == null) {
-
- bankLabel = new JLabel();
- bankLabel.setBounds(new Rectangle(15, 505, 50, 16));
- bankLabel.setText(properties.getProperty("bank"));
- valLabel = new JLabel();
- valLabel.setBounds(new Rectangle(150, 505, 50, 16));
- valLabel.setText(properties.getProperty("currency"));
- ClosedLabel = new JLabel();
- ClosedLabel.setBounds(new Rectangle(600, 505, 51, 16));
- ClosedLabel.setText(properties.getProperty("closed"));
- countNameLabel = new JLabel();
- countNameLabel.setBounds(new Rectangle(400, 505, 130, 16));
- countNameLabel.setText(properties.getProperty("countName"));
- countLabel = new JLabel();
- countLabel.setBounds(new Rectangle(225, 505, 38, 16));
- countLabel.setText(properties.getProperty("count"));
- jContentPane = new JPanel();
- jContentPane.setLayout(null);
- jContentPane.setSize(new Dimension(690, 230));
- jContentPane.add(getAddButton(), null);
- jContentPane.add(getCountTextField(), null);
- jContentPane.add(getCountNameTextField(), null);
- jContentPane.add(getJScrollPane(), null);
- jContentPane.setOpaque(true);
- jContentPane.add(getCancelButton(), null);
- jContentPane.add(countLabel, null);
- jContentPane.add(countNameLabel, null);
- jContentPane.add(getEditButton(), null);
- jContentPane.add(ClosedLabel, null);
- jContentPane.add(valLabel, null);
- jContentPane.add(bankLabel, null);
- jContentPane.add(getClosedCheckBox(), null);
- jContentPane.add(getBankComboBox(), null);
- jContentPane.add(getValComboBox(), null);
- jContentPane.add(getDelButton(), null);
-
- }
- return jContentPane;
- }
-
- /**
- * This method initializes addButton
- *
- * @return javax.swing.JButton
- */
- private JButton getAddButton()
- {
- if (addButton == null)
- {
- addButton = new JButton();
- addButton.setBounds(new Rectangle(15, 466, 140, 26));
- addButton.setText(properties.getProperty("add"));
- addButton.setEnabled(false);
- addButton.setVisible(false);
- addButton.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent e) {
- //add new field or update current
- if(getCountTextField().getText().equals("") || getCountTextField().getText() == null){
- JOptionPane.showMessageDialog(getJTable(), properties.getProperty("countNumMissing"));
- return;
- }
-
- if(getCountNameTextField().getText().equals("") || getCountNameTextField().getText() == null){
- JOptionPane.showMessageDialog(getJTable(), properties.getProperty("countNameMissing"));
- return;
- }
-
- if(selectedCount == null ){
- try{
- selectedCount = new Schet();
-
- selectedCount.setSchet(getCountTextField().getText());
- selectedCount.setNaimenovanie(getCountNameTextField().getText());
- selectedCount.setBank((Bank)getBankComboBox().getSelectedItem());
- selectedCount.setValuta((Valuta)getValComboBox().getSelectedItem());
- selectedCount.setClosed(getClosedCheckBox().isSelected());
-
- factory.getSchetServiceSLSB().saveOrUpdate(new SchetBean(selectedCount));
- JOptionPane.showMessageDialog(getJTable(), properties.getProperty("count")+" "+selectedCount.getSchet()+properties.getProperty("savedSuccessfully"));
- cleanTextFields();
- //update jTable
- getDatabaseTableModel().setData(getDataFromDb());
- getDatabaseTableModel().fireTableRowsInserted(getJTable().getRowCount()-1, getJTable().getRowCount());
-
- selectedCount = null;
- }catch(Exception ex){
- JOptionPane.showMessageDialog(getJTable(), properties.getProperty("count")+properties.getProperty("notSaved")+ex.getMessage());
- selectedCount = null;
- }
- }else{
- try{
- selectedCount.setSchet(getCountTextField().getText());
- selectedCount.setNaimenovanie(getCountNameTextField().getText());
- selectedCount.setBank((Bank)getBankComboBox().getSelectedItem());
- selectedCount.setValuta((Valuta)getValComboBox().getSelectedItem());
- selectedCount.setClosed(getClosedCheckBox().isSelected());
-
- factory.getSchetServiceSLSB().saveOrUpdate(new SchetBean(selectedCount));
- JOptionPane.showMessageDialog(getJTable(), properties.getProperty("count")+" "+selectedCount.getSchet()+properties.getProperty("updatedSuccessfully"));
- cleanTextFields();
- //update jTable
- getDatabaseTableModel().setData(getDataFromDb());
- getDatabaseTableModel().fireTableRowsInserted(getJTable().getRowCount()-1, getJTable().getRowCount());
-
- selectedCount = null;
- }catch(Exception ex){
- JOptionPane.showMessageDialog(getJTable(), properties.getProperty("count")+properties.getProperty("notUpdated")+ex.getMessage());
- selectedCount = null;
- }
- }
-
- }
- });
- }
- return addButton;
- }
-
- private void cleanTextFields()
- {
- getCountTextField().setText("");
- getCountNameTextField().setText("");
- }
-
- /**
- * This method initializes countTextField
- *
- * @return javax.swing.JTextField
- */
- private JTextField getCountTextField()
- {
- if (countTextField == null)
- {
- countTextField = new JTextField();
- countTextField.setBounds(new Rectangle(225, 530, 160, 20));
- }
- return countTextField;
- }
-
- /**
- * This method initializes countNameTextField
- *
- * @return javax.swing.JTextField
- */
- private JTextField getCountNameTextField()
- {
- if (countNameTextField == null)
- {
- countNameTextField = new JTextField();
- countNameTextField.setBounds(new Rectangle(400, 530, 190, 20));
- }
- return countNameTextField;
- }
-
- /**
- * This method initializes jScrollPane
- *
- * @return javax.swing.JScrollPane
- */
- private JScrollPane getJScrollPane()
- {
- if (jScrollPane == null)
- {
- jScrollPane = new JScrollPane();
- jScrollPane.setBounds(new Rectangle(13, 15, 640, 445));
- jScrollPane.setViewportView(getJTable());
- }
- return jScrollPane;
- }
-
- private List<Object> getDataFromDb()
- {
- List<Object> data = new ArrayList<Object>();
- List<SchetBean> counts;
- try {
- counts = factory.getSchetServiceSLSB().findAll();
-
- for (int i = 0; i < counts.size(); i++) {
- SchetBean count = counts.get(i);
- List<Object> raw = new ArrayList<Object>();
- raw.add(count.getSchet().getId());
- raw.add(count.getSchet().getBank());
- raw.add(count.getSchet().getValuta());
- raw.add(count.getSchet().getSchet());
- raw.add(count.getSchet().getNaimenovanie());
- raw.add(count.getSchet().getClosed());
- data.add(raw);
-
- }
- } catch (RemoteException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return data;
- }
-
- /**
- * Used for lazy data loading to the table. Fills the data only after first frame shoving
- */
- public void fillCountsTable()
- {
- getDatabaseTableModel().setData(getDataFromDb());
- getDatabaseTableModel().fireTableDataChanged();
- }
-
- /**
- * This method initializes jTable
- *
- * @return javax.swing.JTable
- */
- private JTable getJTable() {
- if (jTable == null) {
-
- //?????? ?????? ??????.
- DatabaseTableModel tableModel = new DatabaseTableModel(true);
- final List<String> names = new ArrayList<String>();
- names.add("");
- names.add(properties.getProperty("bank"));
- names.add(properties.getProperty("currency"));
- names.add(properties.getProperty("count"));
- names.add(properties.getProperty("countName"));
- names.add(properties.getProperty("closed"));
-
- tableModel.setColumnNames(names);
-
- final List<Class> types = new ArrayList<Class>(0);
- types.add(Long.class);
- types.add(Long.class);
- types.add(Long.class);
- types.add(String.class);
- types.add(String.class);
- types.add(JCheckBox.class);
-
- tableModel.setColumnTypes(types);
-
- //Gets all the counts during loading!
- //tableModel.setData(getDataFromDb());
-
- jTable = new JTable(tableModel);
-
- DefaultTableColumnModel columns = (DefaultTableColumnModel) jTable.getColumnModel();
-
- TableColumn tc = columns.getColumn(0);
- tc.setPreferredWidth(0);
- tc = columns.getColumn(1);
- tc.setPreferredWidth(200);
- tc = columns.getColumn(2);
- tc.setPreferredWidth(100);
- tc = columns.getColumn(3);
- tc.setPreferredWidth(500);
- tc = columns.getColumn(4);
- tc.setPreferredWidth(400);
- tc = columns.getColumn(5);
- tc.setPreferredWidth(100);
-
- jTable.setPreferredScrollableViewportSize(new Dimension(500, 70));
- jTable.setBounds(new Rectangle(15, 15, 455, 420));
- jTable.setFillsViewportHeight(true);
-
- //User can select only one row.
- jTable.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
- jTable.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
-
- @Override
- public void valueChanged(ListSelectionEvent e) {
- int selectedRow = getJTable().getSelectionModel().getLeadSelectionIndex();
-
- Long id = (Long)getJTable().getModel().getValueAt(selectedRow, 0);
-
- Bank bank = (Bank)getJTable().getModel().getValueAt(selectedRow, 1);
- Valuta valuta = (Valuta)getJTable().getModel().getValueAt(selectedRow, 2);
- String count = (String)getJTable().getModel().getValueAt(selectedRow, 3);
- String naimenovanie = (String)getJTable().getModel().getValueAt(selectedRow, 4);
- Boolean closed = (Boolean)getJTable().getModel().getValueAt(selectedRow, 5);
-
- selectedCount = new Schet();
-
- selectedCount.setId(id);
- selectedCount.setBank(bank);
- selectedCount.setValuta(valuta);
- selectedCount.setSchet(count);
- selectedCount.setNaimenovanie(naimenovanie);
- selectedCount.setClosed(closed);
-
- getBankComboBox().setSelectedItem(bank);
- getValComboBox().setSelectedItem(valuta);
- getCountTextField().setText( count );
- getCountNameTextField().setText( naimenovanie );
- getClosedCheckBox().setSelected(closed);
- }
-
- });
- }
- return jTable;
- }
-
- private DatabaseTableModel getDatabaseTableModel(){
- DatabaseTableModel model = (DatabaseTableModel)jTable.getModel();
- return model;
- }
-
- /**
- * This method initializes cancelButton
- *
- * @return javax.swing.JButton
- */
- private JButton getCancelButton() {
- if (cancelButton == null) {
- cancelButton = new JButton();
- cancelButton.setBounds(new Rectangle(315, 466, 140, 26));
- cancelButton.setText(properties.getProperty("cancel"));
- cancelButton.setEnabled(false);
- cancelButton.setVisible(false);
- cancelButton.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent e) {
- //active
- editButton.setEnabled(true);
- editButton.setVisible(true);
- //not active
- delButton.setVisible(false);
- delButton.setEnabled(false);
- addButton.setVisible(false);
- addButton.setEnabled(false);
- cancelButton.setVisible(false);
- cancelButton.setEnabled(false);
- //change frame size
- setSize(675, 535);
- //clear fields
- countTextField.setText(null);
- countNameTextField.setText(null);
- bankComboBox.removeAllItems();
- valComboBox.removeAllItems();
-
- //Clear highlighting the selected row in the table.
- int leadSelectionInd = getJTable().getSelectionModel().getLeadSelectionIndex();
- getJTable().getSelectionModel().removeSelectionInterval(leadSelectionInd, leadSelectionInd);
- }
- });
- }
- return cancelButton;
- }
-
-
-
-
- /**
- * This method initializes editButton1
- *
- * @return javax.swing.JButton
- */
- private JButton getEditButton() {
- if (editButton == null) {
- editButton = new JButton();
- editButton.setBounds(new Rectangle(15, 466, 140, 26));
- editButton.setText(properties.getProperty("edit"));
- editButton.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent e) {
- //not active
- editButton.setEnabled(false);
- editButton.setVisible(false);
- //active
- addButton.setVisible(true);
- addButton.setEnabled(true);
- delButton.setVisible(true);
- delButton.setEnabled(true);
- cancelButton.setVisible(true);
- cancelButton.setEnabled(true);
- //change frame size
- setSize(675, 600);
- }
- });
- }
- return editButton;
- }
- /**
- * This method initializes closedCheckBox
- *
- * @return javax.swing.JCheckBox
- */
- private JCheckBox getClosedCheckBox() {
- if (closedCheckBox == null) {
- closedCheckBox = new JCheckBox();
- closedCheckBox.setBounds(new Rectangle(612, 530, 21, 21));
- }
- return closedCheckBox;
- }
- /**
- * This method initializes bankComboBox
- *
- * @return javax.swing.JComboBox
- * @throws InvocationTargetException
- * @throws IllegalAccessException
- * @throws NoSuchMethodException
- * @throws IllegalArgumentException
- * @throws SecurityException
- */
- private JComboBox getBankComboBox() {
- if (bankComboBox == null) {
- bankComboBox = new JComboBox();
- bankComboBox.setBounds(new Rectangle(15, 530, 120, 20));
- List<Bank> unpacked = new ArrayList<Bank>();
- try {
- List<BankBean> banksList = factory.getBankServiceSLSB().findAll();
- for(BankBean bean: banksList){
- unpacked.add(bean.getBank());
- }
-
- Object[] banks = unpacked.toArray();
- DefaultComboBoxModel model = new DefaultComboBoxModel(banks);
- bankComboBox.setModel(model);
- } catch (RemoteException e) {
- JOptionPane.showMessageDialog(null, e.getCause());
- e.printStackTrace();
-
- }
- }
- return bankComboBox;
- }
- /**
- * This method initializes valComboBox
- *
- * @return javax.swing.JComboBox
- */
- private JComboBox getValComboBox() {
- if (valComboBox == null) {
- valComboBox = new JComboBox();
- valComboBox.setBounds(new Rectangle(150, 530, 60, 20));
- List<Valuta> unpacked = new ArrayList<Valuta>();
- try {
- List<ValutaBean> currencies = factory.getValutaServiceSLSB().findAll();
- for(ValutaBean bean: currencies){
- unpacked.add(bean.getValuta());
- }
- Object[] curr = unpacked.toArray();
-
- DefaultComboBoxModel model = new DefaultComboBoxModel(curr);
- valComboBox.setModel(model);
- } catch (RemoteException e) {
- JOptionPane.showMessageDialog(null, e.getCause());
- e.printStackTrace();
- }
- }
- return valComboBox;
- }
- /**
- * This method initializes delButton
- *
- * @return javax.swing.JButton
- */
- private JButton getDelButton() {
- if (delButton == null) {
- delButton = new JButton();
- delButton.setBounds(new Rectangle(165, 466, 140, 26));
- delButton.setEnabled(false);
- delButton.setText(properties.getProperty("delete"));
- delButton.setVisible(false);
- delButton.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent e) {
- //delete selected field
- getCountTextField().setText( "" );
- getCountNameTextField().setText( "" );
-
- if(selectedCount == null ){
- JOptionPane.showMessageDialog(getJTable(), properties.getProperty("countNotSelectedToDelete"));
- }else{
- try{
- factory.getSchetServiceSLSB().delete(new SchetBean(selectedCount));
- JOptionPane.showMessageDialog(getJTable(), properties.getProperty("count")+" "+selectedCount.getSchet()+properties.getProperty("deleted"));
- selectedCount = null;
- //TODO repaint the table.
- }catch(Exception ex){
- JOptionPane.showMessageDialog(getJTable(), properties.getProperty("count")+" "+selectedCount.getSchet()+properties.getProperty("notDeleted"));
- }
- }
-
- //update jTable
- getDatabaseTableModel().setData(getDataFromDb());
- int selectedRow = getJTable().getSelectionModel().getLeadSelectionIndex();
- getDatabaseTableModel().fireTableRowsDeleted(selectedRow, selectedRow);
-
- }
- });
- }
- return delButton;
- }
-
-
- /**
- * This class used to render RadioButtons in the cells of jTable
- *
- * @author Ivan Burtsev
- */
- class RadioButtonRenderer implements TableCellRenderer
- {
- public Component getTableCellRendererComponent(JTable table,
- Object value, boolean isSelected, boolean hasFocus, int row,
- int column) {
- if (value == null)
- {
- return null;
- }
- if (hasFocus)
- {
- countTextField.setText(table.getValueAt(row, 2).toString());
- countNameTextField.setText(table.getValueAt(row, 3).toString());
-
- if (bankComboBox.getItemAt(0) == null)
- {
- bankComboBox.addItem(table.getValueAt(row, 0));
- }else {
- bankComboBox.removeAllItems();
- bankComboBox.addItem(table.getValueAt(row, 0));
- }
- if (valComboBox.getItemAt(0) == null)
- {
- valComboBox.addItem(table.getValueAt(row, 1));
- }
- else {
- valComboBox.removeAllItems();
- valComboBox.addItem(table.getValueAt(row, 1));
- }
-
- delButton.setEnabled(true);
-
- }
-
- return (Component) value;
- }
- }
- /**
- * This class used to edit RadioButtons in the cells of jTable
- *
- * @author Andrey Sirak
- */
- class RadioButtonEditor extends DefaultCellEditor implements ItemListener {
- /**
- *
- */
- private static final long serialVersionUID = 1L;
- private JRadioButton button;
-
-
- public RadioButtonEditor(JCheckBox checkBox) {
- super(checkBox);
- }
-
- @Override
- public Component getTableCellEditorComponent(JTable table, Object value,
- boolean isSelected, int row, int column) {
- if (value == null)
- return null;
- button = (JRadioButton) value;
- button.addItemListener(this);
-
- return (Component) value;
- }
-
- @Override
- public Object getCellEditorValue() {
- button.removeItemListener(this);
-
- return button;
- }
-
- public void itemStateChanged(ItemEvent e) {
- super.fireEditingStopped();
-
- }
- }
- /**
- * This class used to render checkboxes in jTable
- *
- * @author Ivan Burtsev
- */
- public class CheckBoxRenderer extends JCheckBox implements TableCellRenderer
- {
-
- private static final long serialVersionUID = 1L;
-
- public CheckBoxRenderer() {
- super();
- }
-
- public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
- if (isSelected) {
- setForeground(table.getSelectionForeground());
- super.setBackground(table.getSelectionBackground() );
- } else {
- setForeground(table.getForeground());
- setBackground(table.getBackground());
- }
-
- //setSelected(((Boolean)value).booleanValue() ? false : true);
- return this;
- }
- }
- }
- // @jve:decl-index=0:visual-constraint="8,-87"