diff -r 734f104f2869 -r ed2b6ebf138d java/rozsirene-atributy/src/cz/frantovo/rozsireneAtributy/gui/Panel.java --- a/java/rozsirene-atributy/src/cz/frantovo/rozsireneAtributy/gui/Panel.java Wed Dec 15 20:07:14 2010 +0100 +++ b/java/rozsirene-atributy/src/cz/frantovo/rozsireneAtributy/gui/Panel.java Wed Dec 15 23:29:14 2010 +0100 @@ -1,6 +1,13 @@ package cz.frantovo.rozsireneAtributy.gui; -import javax.swing.table.TableModel; +import cz.frantovo.rozsireneAtributy.Atribut; +import cz.frantovo.rozsireneAtributy.Model; +import java.io.IOException; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.swing.JOptionPane; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; /** * @@ -8,20 +15,47 @@ */ public class Panel extends javax.swing.JPanel { - private TableModel model; + private static final Logger log = Logger.getLogger(Panel.class.getSimpleName()); + private Model model; + private Atribut vybranýAtribut; - public Panel(TableModel model) { + public Panel(Model model) { this.model = model; - initComponents(); + initComponents(); tabulka.setModel(model); - } + tabulka.getSelectionModel().addListSelectionListener(new ListSelectionListener() { - @SuppressWarnings("unchecked") + public void valueChanged(ListSelectionEvent e) { + int řádek = tabulka.getSelectedRow(); + if (řádek < 0) { + vybranýAtribut = null; + tlačítkoSmazat.setEnabled(false); + } else { + vybranýAtribut = getModel().getAtribut(řádek); + tlačítkoSmazat.setEnabled(true); + } + } + }); + } + + private Model getModel() { + return model; + } + + private void zobrazChybovouHlášku(String hláška, Throwable chyba) { + JOptionPane.showMessageDialog(this, hláška, "Chyba", JOptionPane.ERROR_MESSAGE); + log.log(Level.WARNING, hláška, chyba); + } + + @SuppressWarnings("unchecked") // //GEN-BEGIN:initComponents private void initComponents() { - scroll = new javax.swing.JScrollPane(); + posuvnýPanel = new javax.swing.JScrollPane(); tabulka = new javax.swing.JTable(); + tlačítkoPřidat = new javax.swing.JButton(); + tlačítkoSmazat = new javax.swing.JButton(); + tlačítkoZnovuNačíst = new javax.swing.JButton(); tabulka.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { @@ -34,24 +68,82 @@ "Title 1", "Title 2", "Title 3", "Title 4" } )); - scroll.setViewportView(tabulka); + tabulka.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); + posuvnýPanel.setViewportView(tabulka); + + tlačítkoPřidat.setText("Přidat atribut"); + tlačítkoPřidat.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + tlačítkoPřidatActionPerformed(evt); + } + }); + + tlačítkoSmazat.setText("Smazat atribut"); + tlačítkoSmazat.setEnabled(false); + tlačítkoSmazat.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + tlačítkoSmazatActionPerformed(evt); + } + }); + + tlačítkoZnovuNačíst.setText("Znovu načíst"); + tlačítkoZnovuNačíst.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + tlačítkoZnovuNačístActionPerformed(evt); + } + }); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(scroll, javax.swing.GroupLayout.DEFAULT_SIZE, 447, Short.MAX_VALUE) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addComponent(tlačítkoPřidat) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(tlačítkoSmazat) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(tlačítkoZnovuNačíst) + .addContainerGap(90, Short.MAX_VALUE)) + .addComponent(posuvnýPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 447, Short.MAX_VALUE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(scroll, javax.swing.GroupLayout.DEFAULT_SIZE, 316, Short.MAX_VALUE) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addComponent(posuvnýPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 277, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(tlačítkoPřidat) + .addComponent(tlačítkoSmazat) + .addComponent(tlačítkoZnovuNačíst)) + .addContainerGap()) ); }// //GEN-END:initComponents + private void tlačítkoPřidatActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tlačítkoPřidatActionPerformed + model.přidejAtribut(new Atribut()); + }//GEN-LAST:event_tlačítkoPřidatActionPerformed + private void tlačítkoSmazatActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tlačítkoSmazatActionPerformed + try { + model.odeberAtribut(vybranýAtribut); + } catch (IOException e) { + zobrazChybovouHlášku("Nepodařilo se smazat atribut.", e); + } + }//GEN-LAST:event_tlačítkoSmazatActionPerformed + + private void tlačítkoZnovuNačístActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tlačítkoZnovuNačístActionPerformed + try { + model.načtiAtributy(); + } catch (IOException e) { + zobrazChybovouHlášku("Nepodařilo se načíst atributy", e); + } + }//GEN-LAST:event_tlačítkoZnovuNačístActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables - private javax.swing.JScrollPane scroll; + private javax.swing.JScrollPane posuvnýPanel; private javax.swing.JTable tabulka; + private javax.swing.JButton tlačítkoPřidat; + private javax.swing.JButton tlačítkoSmazat; + private javax.swing.JButton tlačítkoZnovuNačíst; // End of variables declaration//GEN-END:variables - }