java/rozsirene-atributy/src/cz/frantovo/rozsireneatributy/gui/Panel.java
author František Kučera <franta-hg@frantovo.cz>
Mon, 11 Dec 2023 00:49:59 +0100
branchv_0
changeset 29 8d42303538ed
parent 28 c2ffda907125
child 30 d511e4bf7d8f
permissions -rw-r--r--
zalomení (editovatelného) kódu na 80 znaků
     1 /**
     2  * Rozšířené atributy – program na správu rozšířených atributů souborů
     3  * Copyright © 2012 František Kučera (frantovo.cz)
     4  *
     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.
     8  *
     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.
    13  *
    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/>.
    16  */
    17 package cz.frantovo.rozsireneatributy.gui;
    18 
    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;
    29 
    30 /**
    31  *
    32  * @author fiki
    33  */
    34 public class Panel extends javax.swing.JPanel {
    35 
    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");
    41 	private Model model;
    42 	private Atribut vybranýAtribut;
    43 	private JTable tabulka;
    44 
    45 	public Panel(Model model) {
    46 		this.model = model;
    47 		initComponents();
    48 
    49 		tabulka = new JTable(model);
    50 		nastavEditor();
    51 		tabulka.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    52 		posuvnýPanel.setViewportView(tabulka);
    53 
    54 		/** Výběr aktuálního atributu v tabulce */
    55 		tabulka.getSelectionModel().addListSelectionListener(
    56 			new ListSelectionListener() {
    57 
    58 			@Override
    59 			public void valueChanged(ListSelectionEvent e) {
    60 				int řádek = tabulka.getSelectedRow();
    61 				if (řádek < 0) {
    62 					vybranýAtribut = null;
    63 					tlačítkoSmazat.setEnabled(false);
    64 				} else {
    65 					vybranýAtribut = getModel().getAtribut(řádek);
    66 					tlačítkoSmazat.setEnabled(true);
    67 				}
    68 			}
    69 		});
    70 	}
    71 
    72 	private void nastavEditor() {
    73 		tabulka.getColumnModel().getColumn(SLOUPEC_NÁZVU)
    74 			.setCellEditor(new EditorNázvůAtributů());
    75 	}
    76 
    77 	private Model getModel() {
    78 		return model;
    79 	}
    80 
    81 	public void setModel(Model model) {
    82 		this.model = model;
    83 		tabulka.setModel(model);
    84 		nastavEditor();
    85 	}
    86 
    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);
    91 	}
    92 
    93 	@SuppressWarnings("unchecked")
    94     // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    95     private void initComponents() {
    96 
    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();
   101 
   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);
   108             }
   109         });
   110 
   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);
   117             }
   118         });
   119 
   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);
   125             }
   126         });
   127 
   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()
   133                 .addContainerGap()
   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)
   141         );
   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))
   151                 .addContainerGap())
   152         );
   153     }// </editor-fold>//GEN-END:initComponents
   154 
   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
   158 
   159 	private void tlačítkoSmazatActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tlačítkoSmazatActionPerformed
   160 		try {
   161 			model.odeberAtribut(vybranýAtribut);
   162 		} catch (IOException e) {
   163 			zobrazChybovouHlášku(překlady
   164 				.getString("chyba.nepodařiloSeSmazat"), e);
   165 		}
   166 	}//GEN-LAST:event_tlačítkoSmazatActionPerformed
   167 
   168 	private void tlačítkoZnovuNačístActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tlačítkoZnovuNačístActionPerformed
   169 		try {
   170 			model.načtiAtributy();
   171 		} catch (IOException e) {
   172 			zobrazChybovouHlášku(překlady
   173 				.getString("chyba.nepodařiloSeNačíst"), e);
   174 		}
   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
   182 }