java/rozsirene-atributy-jedit/src/cz/frantovo/rozsireneAtributy/jedit/DokovatelnyPanel.java
branchv_0
changeset 18 6864cc4e6027
child 19 adea235f456a
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/java/rozsirene-atributy-jedit/src/cz/frantovo/rozsireneAtributy/jedit/DokovatelnyPanel.java	Sat Aug 18 13:22:45 2012 +0200
     1.3 @@ -0,0 +1,74 @@
     1.4 +package cz.frantovo.rozsireneAtributy.jedit;
     1.5 +
     1.6 +import java.util.logging.Level;
     1.7 +import java.util.logging.Logger;
     1.8 +import javax.swing.JPanel;
     1.9 +import javax.swing.JTextArea;
    1.10 +import org.gjt.sp.jedit.Buffer;
    1.11 +import org.gjt.sp.jedit.EBComponent;
    1.12 +import org.gjt.sp.jedit.EBMessage;
    1.13 +import org.gjt.sp.jedit.EditBus;
    1.14 +import org.gjt.sp.jedit.View;
    1.15 +import org.gjt.sp.jedit.msg.EditPaneUpdate;
    1.16 +
    1.17 +/**
    1.18 + *
    1.19 + * @author Ing. František Kučera (frantovo.cz)
    1.20 + */
    1.21 +public class DokovatelnyPanel extends JPanel implements EBComponent {
    1.22 +
    1.23 +	private static final Logger log = Logger.getLogger(DokovatelnyPanel.class.getName());
    1.24 +	private JTextArea pokus = new JTextArea("...");
    1.25 +	private View view;
    1.26 +
    1.27 +	public DokovatelnyPanel(final View view, final String position) {
    1.28 +		this.view = view;
    1.29 +		add(pokus);
    1.30 +	}
    1.31 +
    1.32 +	/**
    1.33 +	 * Zaregistrujeme se, aby nám chodily události editoru.
    1.34 +	 */
    1.35 +	@Override
    1.36 +	public void addNotify() {
    1.37 +		super.addNotify();
    1.38 +		EditBus.addToBus(this);
    1.39 +	}
    1.40 +
    1.41 +	/**
    1.42 +	 * @see #addNotify()
    1.43 +	 */
    1.44 +	@Override
    1.45 +	public void removeNotify() {
    1.46 +		super.removeNotify();
    1.47 +		EditBus.removeFromBus(this);
    1.48 +	}
    1.49 +
    1.50 +	/**
    1.51 +	 * Zpracujeme události editoru.
    1.52 +	 * Zajímá nás přepnutí na jiný soubor – abychom pro něj zobrazili atributy.
    1.53 +	 *
    1.54 +	 * @param událost událost editoru
    1.55 +	 */
    1.56 +	@Override
    1.57 +	public void handleMessage(EBMessage událost) {
    1.58 +		try {
    1.59 +			if (událost instanceof EditPaneUpdate) {
    1.60 +				EditPaneUpdate epu = (EditPaneUpdate) událost;
    1.61 +				// Chodí nám všechny události – potřebujeme filtrovat jen ty pro naše okno.
    1.62 +				if (view == epu.getEditPane().getView()) {
    1.63 +					změňSoubor(view.getBuffer());
    1.64 +				}
    1.65 +			}
    1.66 +			// událost instanceof BufferUpdate
    1.67 +			// událost instanceof PropertiesChanged
    1.68 +		} catch (Exception e) {
    1.69 +			log.log(Level.WARNING, "Chyba při zpracování události: " + událost, e);
    1.70 +		}
    1.71 +
    1.72 +	}
    1.73 +
    1.74 +	private void změňSoubor(Buffer b) {
    1.75 +		pokus.setText(b.getPath());
    1.76 +	}
    1.77 +}