Vytváření a mazání atributů.
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ý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čítkoPřidat">
3.62 + <Properties>
3.63 + <Property name="text" type="java.lang.String" value="Př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čítkoPřidatActionPerformed"/>
3.67 + </Events>
3.68 + </Component>
3.69 + <Component class="javax.swing.JButton" name="tlačí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čítkoSmazatActionPerformed"/>
3.76 + </Events>
3.77 + </Component>
3.78 + <Component class="javax.swing.JButton" name="tlačítkoZnovuNačíst">
3.79 + <Properties>
3.80 + <Property name="text" type="java.lang.String" value="Znovu načíst"/>
3.81 + </Properties>
3.82 + <Events>
3.83 + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="tlačítkoZnovuNačí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 }