Vytváření a mazání atributů.
authorFrantišek Kučera <franta-hg@frantovo.cz>
Wed Dec 15 23:29:14 2010 +0100 (2010-12-15)
changeset 10ed2b6ebf138d
parent 9 a2e91b20198b
child 11 9b399cde6a3b
Vytváření a mazání atributů.
java/rozsirene-atributy/src/cz/frantovo/rozsireneAtributy/Atribut.java
java/rozsirene-atributy/src/cz/frantovo/rozsireneAtributy/Model.java
java/rozsirene-atributy/src/cz/frantovo/rozsireneAtributy/gui/Panel.form
java/rozsirene-atributy/src/cz/frantovo/rozsireneAtributy/gui/Panel.java
     1.1 --- a/java/rozsirene-atributy/src/cz/frantovo/rozsireneAtributy/Atribut.java	Wed Dec 15 22:38:03 2010 +0100
     1.2 +++ b/java/rozsirene-atributy/src/cz/frantovo/rozsireneAtributy/Atribut.java	Wed Dec 15 23:29:14 2010 +0100
     1.3 @@ -18,6 +18,9 @@
     1.4  		setHodnota(hodnota);
     1.5  	}
     1.6  
     1.7 +	public Atribut() {
     1.8 +	}
     1.9 +
    1.10  	public String getKlic() {
    1.11  		return klic;
    1.12  	}
    1.13 @@ -48,6 +51,10 @@
    1.14  	}
    1.15  
    1.16  	private static ByteBuffer zakóduj(String text) {
    1.17 -		return Charset.defaultCharset().encode(text);
    1.18 +		if (text == null) {
    1.19 +			return null;
    1.20 +		} else {
    1.21 +			return Charset.defaultCharset().encode(text);
    1.22 +		}
    1.23  	}
    1.24  }
     2.1 --- a/java/rozsirene-atributy/src/cz/frantovo/rozsireneAtributy/Model.java	Wed Dec 15 22:38:03 2010 +0100
     2.2 +++ b/java/rozsirene-atributy/src/cz/frantovo/rozsireneAtributy/Model.java	Wed Dec 15 23:29:14 2010 +0100
     2.3 @@ -69,9 +69,13 @@
     2.4  				/** Měníme klíč – název atributu */
     2.5  				String novýKlíč = String.valueOf(value.toString());
     2.6  				if (!novýKlíč.equals(a.getKlic())) {
     2.7 -					souborovySystem.delete(a.getKlic());
     2.8 +					if (a.getKlic() != null) {
     2.9 +						souborovySystem.delete(a.getKlic());
    2.10 +					}
    2.11  					a.setKlic(novýKlíč);
    2.12 -					souborovySystem.write(a.getKlic(), a.getHodnotaBajty());
    2.13 +					if (a.getHodnotaBajty() != null) {
    2.14 +						souborovySystem.write(a.getKlic(), a.getHodnotaBajty());
    2.15 +					}
    2.16  				}
    2.17  			} else if (n == 1) {
    2.18  				/** Měníme hodnotu atributu */
    2.19 @@ -91,18 +95,28 @@
    2.20  		posluchače.remove(l);
    2.21  	}
    2.22  
    2.23 +	/**
    2.24 +	 * @param m číslo řádku
    2.25 +	 * @return atribut, který se na něm nachází
    2.26 +	 */
    2.27 +	public Atribut getAtribut(int m) {
    2.28 +		return atributy.get(m);
    2.29 +	}
    2.30 +
    2.31  	public void přidejAtribut(Atribut a) {
    2.32  		atributy.add(a);
    2.33  		upozorniPosluchače();
    2.34  	}
    2.35  
    2.36 -	public void odeberAtribut(Atribut a) {
    2.37 +	public void odeberAtribut(Atribut a) throws IOException {
    2.38  		atributy.remove(a);
    2.39 +		souborovySystem.delete(a.getKlic());
    2.40  		upozorniPosluchače();
    2.41  	}
    2.42  
    2.43 -	private void načtiAtributy() throws IOException {
    2.44 +	public final void načtiAtributy() throws IOException {
    2.45  		List<String> jménaAtributů = souborovySystem.list();
    2.46 +		atributy.clear();
    2.47  		for (String jménoAtributu : jménaAtributů) {
    2.48  			ByteBuffer hodnotaAtributu = ByteBuffer.allocate(souborovySystem.size(jménoAtributu));
    2.49  			souborovySystem.read(jménoAtributu, hodnotaAtributu);
     3.1 --- a/java/rozsirene-atributy/src/cz/frantovo/rozsireneAtributy/gui/Panel.form	Wed Dec 15 22:38:03 2010 +0100
     3.2 +++ b/java/rozsirene-atributy/src/cz/frantovo/rozsireneAtributy/gui/Panel.form	Wed Dec 15 23:29:14 2010 +0100
     3.3 @@ -1,6 +1,6 @@
     3.4  <?xml version="1.1" encoding="UTF-8" ?>
     3.5  
     3.6 -<Form version="1.3" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
     3.7 +<Form version="1.6" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
     3.8    <AuxValues>
     3.9      <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
    3.10      <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
    3.11 @@ -16,17 +16,35 @@
    3.12    <Layout>
    3.13      <DimensionLayout dim="0">
    3.14        <Group type="103" groupAlignment="0" attributes="0">
    3.15 -          <Component id="scroll" alignment="0" pref="447" max="32767" attributes="0"/>
    3.16 +          <Group type="102" alignment="0" attributes="0">
    3.17 +              <EmptySpace max="-2" attributes="0"/>
    3.18 +              <Component id="tlačítkoPřidat" min="-2" max="-2" attributes="0"/>
    3.19 +              <EmptySpace max="-2" attributes="0"/>
    3.20 +              <Component id="tlačítkoSmazat" min="-2" max="-2" attributes="0"/>
    3.21 +              <EmptySpace max="-2" attributes="0"/>
    3.22 +              <Component id="tlačítkoZnovuNačíst" min="-2" max="-2" attributes="0"/>
    3.23 +              <EmptySpace pref="90" max="32767" attributes="0"/>
    3.24 +          </Group>
    3.25 +          <Component id="posuvnýPanel" alignment="0" pref="447" max="32767" attributes="0"/>
    3.26        </Group>
    3.27      </DimensionLayout>
    3.28      <DimensionLayout dim="1">
    3.29        <Group type="103" groupAlignment="0" attributes="0">
    3.30 -          <Component id="scroll" alignment="0" pref="316" max="32767" attributes="0"/>
    3.31 +          <Group type="102" alignment="1" attributes="0">
    3.32 +              <Component id="posuvnýPanel" pref="277" max="32767" attributes="0"/>
    3.33 +              <EmptySpace max="-2" attributes="0"/>
    3.34 +              <Group type="103" groupAlignment="3" attributes="0">
    3.35 +                  <Component id="tlačítkoPřidat" alignment="3" min="-2" max="-2" attributes="0"/>
    3.36 +                  <Component id="tlačítkoSmazat" alignment="3" min="-2" max="-2" attributes="0"/>
    3.37 +                  <Component id="tlačítkoZnovuNačíst" alignment="3" min="-2" max="-2" attributes="0"/>
    3.38 +              </Group>
    3.39 +              <EmptySpace max="-2" attributes="0"/>
    3.40 +          </Group>
    3.41        </Group>
    3.42      </DimensionLayout>
    3.43    </Layout>
    3.44    <SubComponents>
    3.45 -    <Container class="javax.swing.JScrollPane" name="scroll">
    3.46 +    <Container class="javax.swing.JScrollPane" name="posuvn&#xfd;Panel">
    3.47  
    3.48        <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
    3.49        <SubComponents>
    3.50 @@ -40,9 +58,37 @@
    3.51                  <Column editable="true" title="Title 4" type="java.lang.Object"/>
    3.52                </Table>
    3.53              </Property>
    3.54 +            <Property name="selectionModel" type="javax.swing.ListSelectionModel" editor="org.netbeans.modules.form.editors2.JTableSelectionModelEditor">
    3.55 +              <JTableSelectionModel selectionMode="0"/>
    3.56 +            </Property>
    3.57            </Properties>
    3.58          </Component>
    3.59        </SubComponents>
    3.60      </Container>
    3.61 +    <Component class="javax.swing.JButton" name="tla&#x10d;&#xed;tkoP&#x159;idat">
    3.62 +      <Properties>
    3.63 +        <Property name="text" type="java.lang.String" value="P&#x159;idat atribut"/>
    3.64 +      </Properties>
    3.65 +      <Events>
    3.66 +        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="tla&#x10d;&#xed;tkoP&#x159;idatActionPerformed"/>
    3.67 +      </Events>
    3.68 +    </Component>
    3.69 +    <Component class="javax.swing.JButton" name="tla&#x10d;&#xed;tkoSmazat">
    3.70 +      <Properties>
    3.71 +        <Property name="text" type="java.lang.String" value="Smazat atribut"/>
    3.72 +        <Property name="enabled" type="boolean" value="false"/>
    3.73 +      </Properties>
    3.74 +      <Events>
    3.75 +        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="tla&#x10d;&#xed;tkoSmazatActionPerformed"/>
    3.76 +      </Events>
    3.77 +    </Component>
    3.78 +    <Component class="javax.swing.JButton" name="tla&#x10d;&#xed;tkoZnovuNa&#x10d;&#xed;st">
    3.79 +      <Properties>
    3.80 +        <Property name="text" type="java.lang.String" value="Znovu na&#x10d;&#xed;st"/>
    3.81 +      </Properties>
    3.82 +      <Events>
    3.83 +        <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="tla&#x10d;&#xed;tkoZnovuNa&#x10d;&#xed;stActionPerformed"/>
    3.84 +      </Events>
    3.85 +    </Component>
    3.86    </SubComponents>
    3.87  </Form>
     4.1 --- a/java/rozsirene-atributy/src/cz/frantovo/rozsireneAtributy/gui/Panel.java	Wed Dec 15 22:38:03 2010 +0100
     4.2 +++ b/java/rozsirene-atributy/src/cz/frantovo/rozsireneAtributy/gui/Panel.java	Wed Dec 15 23:29:14 2010 +0100
     4.3 @@ -1,6 +1,13 @@
     4.4  package cz.frantovo.rozsireneAtributy.gui;
     4.5  
     4.6 -import javax.swing.table.TableModel;
     4.7 +import cz.frantovo.rozsireneAtributy.Atribut;
     4.8 +import cz.frantovo.rozsireneAtributy.Model;
     4.9 +import java.io.IOException;
    4.10 +import java.util.logging.Level;
    4.11 +import java.util.logging.Logger;
    4.12 +import javax.swing.JOptionPane;
    4.13 +import javax.swing.event.ListSelectionEvent;
    4.14 +import javax.swing.event.ListSelectionListener;
    4.15  
    4.16  /**
    4.17   *
    4.18 @@ -8,20 +15,47 @@
    4.19   */
    4.20  public class Panel extends javax.swing.JPanel {
    4.21  
    4.22 -	private TableModel model;
    4.23 +	private static final Logger log = Logger.getLogger(Panel.class.getSimpleName());
    4.24 +	private Model model;
    4.25 +	private Atribut vybranýAtribut;
    4.26  
    4.27 -    public Panel(TableModel model) {
    4.28 +	public Panel(Model model) {
    4.29  		this.model = model;
    4.30 -        initComponents();
    4.31 +		initComponents();
    4.32  		tabulka.setModel(model);
    4.33 -    }
    4.34 +		tabulka.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
    4.35  
    4.36 -    @SuppressWarnings("unchecked")
    4.37 +			public void valueChanged(ListSelectionEvent e) {
    4.38 +				int řádek = tabulka.getSelectedRow();
    4.39 +				if (řádek < 0) {
    4.40 +					vybranýAtribut = null;
    4.41 +					tlačítkoSmazat.setEnabled(false);
    4.42 +				} else {
    4.43 +					vybranýAtribut = getModel().getAtribut(řádek);
    4.44 +					tlačítkoSmazat.setEnabled(true);
    4.45 +				}
    4.46 +			}
    4.47 +		});
    4.48 +	}
    4.49 +
    4.50 +	private Model getModel() {
    4.51 +		return model;
    4.52 +	}
    4.53 +
    4.54 +	private void zobrazChybovouHlášku(String hláška, Throwable chyba) {
    4.55 +		JOptionPane.showMessageDialog(this, hláška, "Chyba", JOptionPane.ERROR_MESSAGE);
    4.56 +		log.log(Level.WARNING, hláška, chyba);
    4.57 +	}
    4.58 +
    4.59 +	@SuppressWarnings("unchecked")
    4.60      // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    4.61      private void initComponents() {
    4.62  
    4.63 -        scroll = new javax.swing.JScrollPane();
    4.64 +        posuvnýPanel = new javax.swing.JScrollPane();
    4.65          tabulka = new javax.swing.JTable();
    4.66 +        tlačítkoPřidat = new javax.swing.JButton();
    4.67 +        tlačítkoSmazat = new javax.swing.JButton();
    4.68 +        tlačítkoZnovuNačíst = new javax.swing.JButton();
    4.69  
    4.70          tabulka.setModel(new javax.swing.table.DefaultTableModel(
    4.71              new Object [][] {
    4.72 @@ -34,24 +68,82 @@
    4.73                  "Title 1", "Title 2", "Title 3", "Title 4"
    4.74              }
    4.75          ));
    4.76 -        scroll.setViewportView(tabulka);
    4.77 +        tabulka.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
    4.78 +        posuvnýPanel.setViewportView(tabulka);
    4.79 +
    4.80 +        tlačítkoPřidat.setText("Přidat atribut");
    4.81 +        tlačítkoPřidat.addActionListener(new java.awt.event.ActionListener() {
    4.82 +            public void actionPerformed(java.awt.event.ActionEvent evt) {
    4.83 +                tlačítkoPřidatActionPerformed(evt);
    4.84 +            }
    4.85 +        });
    4.86 +
    4.87 +        tlačítkoSmazat.setText("Smazat atribut");
    4.88 +        tlačítkoSmazat.setEnabled(false);
    4.89 +        tlačítkoSmazat.addActionListener(new java.awt.event.ActionListener() {
    4.90 +            public void actionPerformed(java.awt.event.ActionEvent evt) {
    4.91 +                tlačítkoSmazatActionPerformed(evt);
    4.92 +            }
    4.93 +        });
    4.94 +
    4.95 +        tlačítkoZnovuNačíst.setText("Znovu načíst");
    4.96 +        tlačítkoZnovuNačíst.addActionListener(new java.awt.event.ActionListener() {
    4.97 +            public void actionPerformed(java.awt.event.ActionEvent evt) {
    4.98 +                tlačítkoZnovuNačístActionPerformed(evt);
    4.99 +            }
   4.100 +        });
   4.101  
   4.102          javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
   4.103          this.setLayout(layout);
   4.104          layout.setHorizontalGroup(
   4.105              layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
   4.106 -            .addComponent(scroll, javax.swing.GroupLayout.DEFAULT_SIZE, 447, Short.MAX_VALUE)
   4.107 +            .addGroup(layout.createSequentialGroup()
   4.108 +                .addContainerGap()
   4.109 +                .addComponent(tlačítkoPřidat)
   4.110 +                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
   4.111 +                .addComponent(tlačítkoSmazat)
   4.112 +                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
   4.113 +                .addComponent(tlačítkoZnovuNačíst)
   4.114 +                .addContainerGap(90, Short.MAX_VALUE))
   4.115 +            .addComponent(posuvnýPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 447, Short.MAX_VALUE)
   4.116          );
   4.117          layout.setVerticalGroup(
   4.118              layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
   4.119 -            .addComponent(scroll, javax.swing.GroupLayout.DEFAULT_SIZE, 316, Short.MAX_VALUE)
   4.120 +            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
   4.121 +                .addComponent(posuvnýPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 277, Short.MAX_VALUE)
   4.122 +                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
   4.123 +                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
   4.124 +                    .addComponent(tlačítkoPřidat)
   4.125 +                    .addComponent(tlačítkoSmazat)
   4.126 +                    .addComponent(tlačítkoZnovuNačíst))
   4.127 +                .addContainerGap())
   4.128          );
   4.129      }// </editor-fold>//GEN-END:initComponents
   4.130  
   4.131 +	private void tlačítkoPřidatActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tlačítkoPřidatActionPerformed
   4.132 +		model.přidejAtribut(new Atribut());
   4.133 +	}//GEN-LAST:event_tlačítkoPřidatActionPerformed
   4.134  
   4.135 +	private void tlačítkoSmazatActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tlačítkoSmazatActionPerformed
   4.136 +		try {
   4.137 +			model.odeberAtribut(vybranýAtribut);
   4.138 +		} catch (IOException e) {
   4.139 +			zobrazChybovouHlášku("Nepodařilo se smazat atribut.", e);
   4.140 +		}
   4.141 +	}//GEN-LAST:event_tlačítkoSmazatActionPerformed
   4.142 +
   4.143 +	private void tlačítkoZnovuNačístActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tlačítkoZnovuNačístActionPerformed
   4.144 +		try {
   4.145 +			model.načtiAtributy();
   4.146 +		} catch (IOException e) {
   4.147 +			zobrazChybovouHlášku("Nepodařilo se načíst atributy", e);
   4.148 +		}
   4.149 +	}//GEN-LAST:event_tlačítkoZnovuNačístActionPerformed
   4.150      // Variables declaration - do not modify//GEN-BEGIN:variables
   4.151 -    private javax.swing.JScrollPane scroll;
   4.152 +    private javax.swing.JScrollPane posuvnýPanel;
   4.153      private javax.swing.JTable tabulka;
   4.154 +    private javax.swing.JButton tlačítkoPřidat;
   4.155 +    private javax.swing.JButton tlačítkoSmazat;
   4.156 +    private javax.swing.JButton tlačítkoZnovuNačíst;
   4.157      // End of variables declaration//GEN-END:variables
   4.158 -
   4.159  }