Class UserView

java.lang.Object
  extended by javax.swing.table.AbstractTableModel
      extended by UserView
All Implemented Interfaces:
java.io.Serializable, javax.swing.table.TableModel

public class UserView
extends javax.swing.table.AbstractTableModel

Luokka toimii JTable-komponentin tieto-oliona, jonka palveluita käyttäen JTable saa tarvitsemansa taulukon piirtämiseen ja sen tietojen muokkaamiseen.

Luokka toteuttaa tähän vaaditun TableModel-rajapinnan perimänsä AbstractTableModel-luokan kautta, joka tarjoaa monia valmiiksi toteutettuja ominaisuuksia jättäen toteutettavaksi vain välttämättömimmän.

UserView-oliota käytetään JTable-komponentin tietosisällön mallina, kun halutaan näyttää ja käsitellä käyttäjiä:

Luokan ilmentymä säilöö ja tarjoaa piirrettäväksi Käyttäjät-välilehden tietosisällön.

UserView asetetaan JTable-komponentille esimerkiksi konstruktorissa

  • JTable table = new JTable(new UserView());
  • UserView-olion oma tietosisältö täytyy asettaa ja päivittää setData-metodilla.

    See Also:
    Serialized Form

    Constructor Summary
    UserView()
              Konstruktorissa ei tee mitään.
     
    Method Summary
     BasicProduct[] getBalanceProducts()
              Metodi palauttaa listan tämän olion sisältämistä perustuotteista.
     java.lang.Class<?> getColumnClass(int col)
               JTable käyttää metodia selvittääkseen sarakkeen arvojen tyypin.
     int getColumnCount()
              JTable käyttää tätä metodia selvittääkseen sarakkeiden määrän.
     java.lang.String getColumnName(int col)
              JTable käyttää metodia sarakkeiden otsikoiden saamiseksi.
     int getIntLastEditedRow()
               
     int getRowCount()
              JTable käyttää tätä metodia selvittääkseen rivien määrän.
     User[] getUsers()
              Metodi palauttaa listan tämän olion sisältämistä käyttäjistä.
     java.lang.Object getValueAt(int row, int col)
              JTable käyttää tätä metodia selvittääkseen solun arvon piirtämistä varten.
     boolean isCellEditable(int row, int col)
               JTable määrittää metodin avulla, onko tietyn solu arvo muokattavissa.
     void setData(User[] objUsers, BasicProduct[] objBps)
              Metodilla asetetaan taulukon tietosisältö.
     void setIntLastEditedRow(int argIntLastEditedRow)
               
     void setValueAt(java.lang.Object value, int row, int col)
               JTable käyttää metodia, kun käyttäjä muokkaa jonkun solun arvoa.
     
    Methods inherited from class javax.swing.table.AbstractTableModel
    addTableModelListener, findColumn, fireTableCellUpdated, fireTableChanged, fireTableDataChanged, fireTableRowsDeleted, fireTableRowsInserted, fireTableRowsUpdated, fireTableStructureChanged, getListeners, getTableModelListeners, removeTableModelListener
     
    Methods inherited from class java.lang.Object
    equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
     

    Constructor Detail

    UserView

    public UserView()
    Konstruktorissa ei tee mitään. Tietosisältö päivitetään setData-metodilla.

    Method Detail

    getColumnClass

    public java.lang.Class<?> getColumnClass(int col)

    JTable käyttää metodia selvittääkseen sarakkeen arvojen tyypin. Se tarvitsee tietoa määrittäessään editorin ja piirtäjän sarakkeen soluille.

    Jos indeksi on virheellinen, palauttaa metodi Object.class

    Specified by:
    getColumnClass in interface javax.swing.table.TableModel
    Overrides:
    getColumnClass in class javax.swing.table.AbstractTableModel
    Parameters:
    col - sarakkeen indeksi
    Returns:
    sarakkeen arvojen luokka tai Object.class

    getColumnCount

    public int getColumnCount()

    JTable käyttää tätä metodia selvittääkseen sarakkeiden määrän.

    Käyttäjätaulukossa on 9 + objBalanceProducts.length*3 saraketta.

    Returns:
    9 + objBalanceProducts.length*3 tai 0, jos oliota ei ole alustettu kunnolla

    getRowCount

    public int getRowCount()
    JTable käyttää tätä metodia selvittääkseen rivien määrän. Käyttäjätaulukossa jokainen käyttäjä on omalla rivillään.

    Returns:
    palauttaa taulukossa olevien rivien määrän tai 0, jos taulukkoa ei ole

    getColumnName

    public java.lang.String getColumnName(int col)

    JTable käyttää metodia sarakkeiden otsikoiden saamiseksi.

    Metodi päättelee col-arvon perusteella palautettavan merkkijonon, jonka se hakee Utilities.getString(String) -metodin avulla.

    Specified by:
    getColumnName in interface javax.swing.table.TableModel
    Overrides:
    getColumnName in class javax.swing.table.AbstractTableModel
    Parameters:
    col - sarakkeen indeksi
    Returns:
    annetun sarakkeen otsikko

    isCellEditable

    public boolean isCellEditable(int row,
                                  int col)

    JTable määrittää metodin avulla, onko tietyn solu arvo muokattavissa.

    Metodi palauttaa false, jos

  • rivi on eri kuin muokattava rivi (this.intLastEditedRow), eikä this.intLastEditedRow ole -1
    (Yritetään muokata uutta riviä, vaikka edellinen on tallentamatta.)
  • sormenjälkitunnistin ei ole kytketty ja ollaan sormenjälki-sarakkeessa
  • col-indeksi on vähintään 4 (id-sarake) ja enintään 4+objBalanceProducts.length
    (id- ja saldo-sarakkeita ei voi muokata)
  • ollaan uuden käyttäjän poisto-valintaruudussa (ei voi poistaa jos käyttäjää ei ole)
  • riviä ei ole muokattu ja ollaan tallennus-sarakkeessa
  • Muissa tapauksissa palautetaan true.

    Specified by:
    isCellEditable in interface javax.swing.table.TableModel
    Overrides:
    isCellEditable in class javax.swing.table.AbstractTableModel
    Parameters:
    row - rivi
    col - sarake
    Returns:
    onko solu muokattavissa

    getValueAt

    public java.lang.Object getValueAt(int row,
                                       int col)
    JTable käyttää tätä metodia selvittääkseen solun arvon piirtämistä varten.

    Parameters:
    row - rivin indeksi
    col - sarakkeen indeksi
    Returns:
    viite solussa olevaan olioarvoon Object-muodossa tai null, jos tietoja ei ole
    Throws:
    java.lang.NullPointerException - jos rivin indeksissä on null-viite

    setValueAt

    public void setValueAt(java.lang.Object value,
                           int row,
                           int col)

    JTable käyttää metodia, kun käyttäjä muokkaa jonkun solun arvoa.

    Parametrit viittaavat indekseillään tiettyyn taulukon soluun. Value-parametrin arvo tulee joltakin JTable-komponentille rekisteröidyltä editorilta, jolla käyttäjä on muokannut solun arvoa.

    Specified by:
    setValueAt in interface javax.swing.table.TableModel
    Overrides:
    setValueAt in class javax.swing.table.AbstractTableModel
    Parameters:
    value - editorin antama arvo
    row - rivin indeksi
    col - sarakkeen indeksi

    getUsers

    public User[] getUsers()
    Metodi palauttaa listan tämän olion sisältämistä käyttäjistä.

    Returns:
    käyttäjät

    getBalanceProducts

    public BasicProduct[] getBalanceProducts()
    Metodi palauttaa listan tämän olion sisältämistä perustuotteista.

    Returns:
    perustuotteet

    setData

    public void setData(User[] objUsers,
                        BasicProduct[] objBps)

    Metodilla asetetaan taulukon tietosisältö.

    JTablen tarvitsemat palvelut nojautuvat tällä metodilla asetetun taulukon sisältöön.

    Metodia kutsutaan MainFrame-luokan RefreshTables()-metodista käsin.

    Metodi asettaa suoraan saamansa User-taulukon oman User[]-attribuuttinsa arvoksi.

    Tälle metodille voi syöttää suoraan Utilities.getBasicProducts()-metodin paluuarvon. Metodi asettaa parametrina saamansa BasicProduct-taulukon objBasicProducts-kentän arvoksi, mutta jättää viimeisen, uuden tuotteen luomiseen tarkoitetun olion kopioimatta.

    Null-parametri aiheuttaa poikkeuksen.

    Parameters:
    objUsers - Utilities.getUsers()
    objBps - Utilities.getBasicProducts()
    Throws:
    java.lang.IllegalArgumentException - jos parametri on null

    getIntLastEditedRow

    public int getIntLastEditedRow()
    Returns:
    the intLastEditedRow

    setIntLastEditedRow

    public void setIntLastEditedRow(int argIntLastEditedRow)
    Parameters:
    argIntLastEditedRow - the intLastEditedRow to set