2 * Rozšířené atributy – program na správu rozšířených atributů souborů
3 * Copyright © 2012 František Kučera (frantovo.cz)
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 3 of the License.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 package cz.frantovo.rozsireneatributy.gui;
19 import cz.frantovo.rozsireneatributy.Atribut;
20 import java.io.IOException;
21 import java.util.ResourceBundle;
22 import java.util.logging.Level;
23 import java.util.logging.Logger;
24 import javax.swing.JOptionPane;
25 import javax.swing.JTable;
26 import javax.swing.ListSelectionModel;
27 import javax.swing.event.ListSelectionEvent;
28 import javax.swing.event.ListSelectionListener;
34 public class Panel extends javax.swing.JPanel {
36 private static final int SLOUPEC_NÁZVU = 0;
37 private static final Logger log = Logger
38 .getLogger(Panel.class.getSimpleName());
39 private static final ResourceBundle překlady = ResourceBundle
40 .getBundle(Atribut.class.getPackageName() + ".Překlady");
42 private Atribut vybranýAtribut;
43 private JTable tabulka;
45 public Panel(Model model) {
49 tabulka = new JTable(model);
51 tabulka.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
52 posuvnýPanel.setViewportView(tabulka);
54 /** Výběr aktuálního atributu v tabulce */
55 tabulka.getSelectionModel().addListSelectionListener(
56 new ListSelectionListener() {
59 public void valueChanged(ListSelectionEvent e) {
60 int řádek = tabulka.getSelectedRow();
62 vybranýAtribut = null;
63 tlačítkoSmazat.setEnabled(false);
65 vybranýAtribut = getModel().getAtribut(řádek);
66 tlačítkoSmazat.setEnabled(true);
72 private void nastavEditor() {
73 tabulka.getColumnModel().getColumn(SLOUPEC_NÁZVU)
74 .setCellEditor(new EditorNázvůAtributů());
77 private Model getModel() {
81 public void setModel(Model model) {
83 tabulka.setModel(model);
87 private void zobrazChybovouHlášku(String hláška, Throwable chyba) {
88 JOptionPane.showMessageDialog(this, hláška,
89 překlady.getString("chyba"), JOptionPane.ERROR_MESSAGE);
90 log.log(Level.WARNING, hláška, chyba);
93 @SuppressWarnings("unchecked")
94 // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
95 private void initComponents() {
97 posuvnýPanel = new javax.swing.JScrollPane();
98 tlačítkoPřidat = new javax.swing.JButton();
99 tlačítkoSmazat = new javax.swing.JButton();
100 tlačítkoZnovuNačíst = new javax.swing.JButton();
102 tlačítkoPřidat.setMnemonic('p');
103 java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("cz/frantovo/rozsireneatributy/Překlady"); // NOI18N
104 tlačítkoPřidat.setText(bundle.getString("přidatAtribut")); // NOI18N
105 tlačítkoPřidat.addActionListener(new java.awt.event.ActionListener() {
106 public void actionPerformed(java.awt.event.ActionEvent evt) {
107 tlačítkoPřidatActionPerformed(evt);
111 tlačítkoSmazat.setMnemonic('s');
112 tlačítkoSmazat.setText(bundle.getString("smazatAtribut")); // NOI18N
113 tlačítkoSmazat.setEnabled(false);
114 tlačítkoSmazat.addActionListener(new java.awt.event.ActionListener() {
115 public void actionPerformed(java.awt.event.ActionEvent evt) {
116 tlačítkoSmazatActionPerformed(evt);
120 tlačítkoZnovuNačíst.setMnemonic('z');
121 tlačítkoZnovuNačíst.setText(bundle.getString("znovuNačíst")); // NOI18N
122 tlačítkoZnovuNačíst.addActionListener(new java.awt.event.ActionListener() {
123 public void actionPerformed(java.awt.event.ActionEvent evt) {
124 tlačítkoZnovuNačístActionPerformed(evt);
128 javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
129 this.setLayout(layout);
130 layout.setHorizontalGroup(
131 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
132 .addGroup(layout.createSequentialGroup()
134 .addComponent(tlačítkoPřidat)
135 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
136 .addComponent(tlačítkoSmazat)
137 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
138 .addComponent(tlačítkoZnovuNačíst)
139 .addContainerGap(222, Short.MAX_VALUE))
140 .addComponent(posuvnýPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 543, Short.MAX_VALUE)
142 layout.setVerticalGroup(
143 layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
144 .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
145 .addComponent(posuvnýPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 277, Short.MAX_VALUE)
146 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
147 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
148 .addComponent(tlačítkoPřidat)
149 .addComponent(tlačítkoSmazat)
150 .addComponent(tlačítkoZnovuNačíst))
153 }// </editor-fold>//GEN-END:initComponents
155 private void tlačítkoPřidatActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tlačítkoPřidatActionPerformed
156 model.přidejAtribut(new Atribut());
157 }//GEN-LAST:event_tlačítkoPřidatActionPerformed
159 private void tlačítkoSmazatActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tlačítkoSmazatActionPerformed
161 model.odeberAtribut(vybranýAtribut);
162 } catch (IOException e) {
163 zobrazChybovouHlášku(překlady
164 .getString("chyba.nepodařiloSeSmazat"), e);
166 }//GEN-LAST:event_tlačítkoSmazatActionPerformed
168 private void tlačítkoZnovuNačístActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tlačítkoZnovuNačístActionPerformed
170 model.načtiAtributy();
171 } catch (IOException e) {
172 zobrazChybovouHlášku(překlady
173 .getString("chyba.nepodařiloSeNačíst"), e);
175 }//GEN-LAST:event_tlačítkoZnovuNačístActionPerformed
176 // Variables declaration - do not modify//GEN-BEGIN:variables
177 private javax.swing.JScrollPane posuvnýPanel;
178 private javax.swing.JButton tlačítkoPřidat;
179 private javax.swing.JButton tlačítkoSmazat;
180 private javax.swing.JButton tlačítkoZnovuNačíst;
181 // End of variables declaration//GEN-END:variables