src/main/java/cz/frantovo/rozsireneatributy/gui/Panel.java
branchv_0
changeset 42 d2414701ce09
parent 41 64e564c2f069
     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