# HG changeset patch # User František Kučera # Date 1292452154 -3600 # Node ID ed2b6ebf138d8fbbdf08b15cd3c03add7b910a8d # Parent a2e91b20198b4cbc4763264bfb03c3dde4f79a97 Vytváření a mazání atributů. diff -r a2e91b20198b -r ed2b6ebf138d java/rozsirene-atributy/src/cz/frantovo/rozsireneAtributy/Atribut.java --- a/java/rozsirene-atributy/src/cz/frantovo/rozsireneAtributy/Atribut.java Wed Dec 15 22:38:03 2010 +0100 +++ b/java/rozsirene-atributy/src/cz/frantovo/rozsireneAtributy/Atribut.java Wed Dec 15 23:29:14 2010 +0100 @@ -18,6 +18,9 @@ setHodnota(hodnota); } + public Atribut() { + } + public String getKlic() { return klic; } @@ -48,6 +51,10 @@ } private static ByteBuffer zakóduj(String text) { - return Charset.defaultCharset().encode(text); + if (text == null) { + return null; + } else { + return Charset.defaultCharset().encode(text); + } } } diff -r a2e91b20198b -r ed2b6ebf138d java/rozsirene-atributy/src/cz/frantovo/rozsireneAtributy/Model.java --- a/java/rozsirene-atributy/src/cz/frantovo/rozsireneAtributy/Model.java Wed Dec 15 22:38:03 2010 +0100 +++ b/java/rozsirene-atributy/src/cz/frantovo/rozsireneAtributy/Model.java Wed Dec 15 23:29:14 2010 +0100 @@ -69,9 +69,13 @@ /** Měníme klíč – název atributu */ String novýKlíč = String.valueOf(value.toString()); if (!novýKlíč.equals(a.getKlic())) { - souborovySystem.delete(a.getKlic()); + if (a.getKlic() != null) { + souborovySystem.delete(a.getKlic()); + } a.setKlic(novýKlíč); - souborovySystem.write(a.getKlic(), a.getHodnotaBajty()); + if (a.getHodnotaBajty() != null) { + souborovySystem.write(a.getKlic(), a.getHodnotaBajty()); + } } } else if (n == 1) { /** Měníme hodnotu atributu */ @@ -91,18 +95,28 @@ posluchače.remove(l); } + /** + * @param m číslo řádku + * @return atribut, který se na něm nachází + */ + public Atribut getAtribut(int m) { + return atributy.get(m); + } + public void přidejAtribut(Atribut a) { atributy.add(a); upozorniPosluchače(); } - public void odeberAtribut(Atribut a) { + public void odeberAtribut(Atribut a) throws IOException { atributy.remove(a); + souborovySystem.delete(a.getKlic()); upozorniPosluchače(); } - private void načtiAtributy() throws IOException { + public final void načtiAtributy() throws IOException { List jménaAtributů = souborovySystem.list(); + atributy.clear(); for (String jménoAtributu : jménaAtributů) { ByteBuffer hodnotaAtributu = ByteBuffer.allocate(souborovySystem.size(jménoAtributu)); souborovySystem.read(jménoAtributu, hodnotaAtributu); diff -r a2e91b20198b -r ed2b6ebf138d java/rozsirene-atributy/src/cz/frantovo/rozsireneAtributy/gui/Panel.form --- a/java/rozsirene-atributy/src/cz/frantovo/rozsireneAtributy/gui/Panel.form Wed Dec 15 22:38:03 2010 +0100 +++ b/java/rozsirene-atributy/src/cz/frantovo/rozsireneAtributy/gui/Panel.form Wed Dec 15 23:29:14 2010 +0100 @@ -1,6 +1,6 @@ -
+ @@ -16,17 +16,35 @@ - + + + + + + + + + + - + + + + + + + + + + - + @@ -40,9 +58,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r a2e91b20198b -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 22:38:03 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 - }