1.1 --- a/src/main/java/cz/frantovo/rozsireneatributy/gui/Panel.java Tue Dec 19 00:47:41 2023 +0100
1.2 +++ b/src/main/java/cz/frantovo/rozsireneatributy/gui/Panel.java Sun Dec 24 00:38:41 2023 +0100
1.3 @@ -18,6 +18,7 @@
1.4
1.5 import cz.frantovo.rozsireneatributy.Atribut;
1.6 import cz.frantovo.rozsireneatributy.CSV;
1.7 +import cz.frantovo.rozsireneatributy.Konfigurace;
1.8 import java.awt.Toolkit;
1.9 import java.awt.datatransfer.StringSelection;
1.10 import java.awt.event.KeyEvent;
1.11 @@ -32,6 +33,7 @@
1.12 import javax.swing.ListSelectionModel;
1.13 import javax.swing.event.ListSelectionEvent;
1.14 import javax.swing.event.ListSelectionListener;
1.15 +import javax.swing.table.TableCellEditor;
1.16
1.17 /**
1.18 * @author Ing. František Kučera (frantovo.cz)
1.19 @@ -71,19 +73,50 @@
1.20 @Override
1.21 public void valueChanged(ListSelectionEvent e) {
1.22 int řádek = tabulka.getSelectedRow();
1.23 - if (řádek < 0) {
1.24 - vybranýAtribut = null;
1.25 - tlačítkoSmazat.setEnabled(false);
1.26 - } else {
1.27 - vybranýAtribut = getModel().getAtribut(řádek);
1.28 - tlačítkoSmazat.setEnabled(true);
1.29 - }
1.30 + if (řádek < 0) vybranýAtribut = null;
1.31 + else vybranýAtribut = getModel().getAtribut(řádek);
1.32 + aktualizujPovolenéÚpravy();
1.33 }
1.34 });
1.35
1.36 // Buňky tabulky editovatelné po stisku mezerníku:
1.37 tabulka.getInputMap()
1.38 .put(KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, 0), "startEditing");
1.39 +
1.40 + aktualizujPovolenéÚpravy();
1.41 +
1.42 + // TODO: Provádět IO operace v jiném vlákně
1.43 + // SwingWorker.doInBackground() + SwingUtilities.invokeLater()
1.44 + }
1.45 +
1.46 + private void aktualizujPovolenéÚpravy() {
1.47 + Konfigurace k = model.getKonfigurace();
1.48 + switch (k.getRežimZamykání()) {
1.49 + case VYPNUTÉ:
1.50 + tlačítkoZamknout.setVisible(false);
1.51 + setPovolenéÚpravy(true);
1.52 + break;
1.53 + case VOLITELNÉ:
1.54 + setPovolenéÚpravy(true);
1.55 + break;
1.56 + case POVINNÉ:
1.57 + setPovolenéÚpravy(tlačítkoZamknout.isSelected());
1.58 + break;
1.59 + default:
1.60 + break;
1.61 + }
1.62 + }
1.63 +
1.64 + private void setPovolenéÚpravy(boolean povolené) {
1.65 + if (!povolené) {
1.66 + TableCellEditor ce = tabulka.getCellEditor();
1.67 + if (ce != null) ce.cancelCellEditing();
1.68 + tabulka.clearSelection();
1.69 + }
1.70 +
1.71 + tabulka.setEnabled(povolené);
1.72 + tlačítkoPřidat.setEnabled(povolené);
1.73 + tlačítkoSmazat.setEnabled(povolené && tabulka.getSelectedRow() > -1);
1.74 }
1.75
1.76 private void nastavEditor() {
1.77 @@ -109,7 +142,7 @@
1.78 překlady.getString("chyba.titulek"), JOptionPane.ERROR_MESSAGE);
1.79 log.log(Level.WARNING, hláška, chyba);
1.80 }
1.81 -
1.82 +
1.83 private void kopírujDoSchránky() {
1.84 try {
1.85 StringWriter výstup = new StringWriter();
1.86 @@ -243,6 +276,7 @@
1.87
1.88 private void tlačítkoZamknoutActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tlačítkoZamknoutActionPerformed
1.89 try {
1.90 + aktualizujPovolenéÚpravy();
1.91 model.nastavZámek(tlačítkoZamknout.isSelected());
1.92 } catch (Exception e) {
1.93 zobrazChybovouHlášku(překlady