franta-hg@18: package cz.frantovo.rozsireneAtributy.jedit; franta-hg@18: franta-hg@18: import java.util.logging.Level; franta-hg@18: import java.util.logging.Logger; franta-hg@18: import javax.swing.JPanel; franta-hg@18: import javax.swing.JTextArea; franta-hg@18: import org.gjt.sp.jedit.Buffer; franta-hg@18: import org.gjt.sp.jedit.EBComponent; franta-hg@18: import org.gjt.sp.jedit.EBMessage; franta-hg@18: import org.gjt.sp.jedit.EditBus; franta-hg@18: import org.gjt.sp.jedit.View; franta-hg@18: import org.gjt.sp.jedit.msg.EditPaneUpdate; franta-hg@18: franta-hg@18: /** franta-hg@18: * franta-hg@18: * @author Ing. František Kučera (frantovo.cz) franta-hg@18: */ franta-hg@18: public class DokovatelnyPanel extends JPanel implements EBComponent { franta-hg@18: franta-hg@18: private static final Logger log = Logger.getLogger(DokovatelnyPanel.class.getName()); franta-hg@18: private JTextArea pokus = new JTextArea("..."); franta-hg@18: private View view; franta-hg@18: franta-hg@18: public DokovatelnyPanel(final View view, final String position) { franta-hg@18: this.view = view; franta-hg@18: add(pokus); franta-hg@18: } franta-hg@18: franta-hg@18: /** franta-hg@18: * Zaregistrujeme se, aby nám chodily události editoru. franta-hg@18: */ franta-hg@18: @Override franta-hg@18: public void addNotify() { franta-hg@18: super.addNotify(); franta-hg@18: EditBus.addToBus(this); franta-hg@18: } franta-hg@18: franta-hg@18: /** franta-hg@18: * @see #addNotify() franta-hg@18: */ franta-hg@18: @Override franta-hg@18: public void removeNotify() { franta-hg@18: super.removeNotify(); franta-hg@18: EditBus.removeFromBus(this); franta-hg@18: } franta-hg@18: franta-hg@18: /** franta-hg@18: * Zpracujeme události editoru. franta-hg@18: * Zajímá nás přepnutí na jiný soubor – abychom pro něj zobrazili atributy. franta-hg@18: * franta-hg@18: * @param událost událost editoru franta-hg@18: */ franta-hg@18: @Override franta-hg@18: public void handleMessage(EBMessage událost) { franta-hg@18: try { franta-hg@18: if (událost instanceof EditPaneUpdate) { franta-hg@18: EditPaneUpdate epu = (EditPaneUpdate) událost; franta-hg@18: // Chodí nám všechny události – potřebujeme filtrovat jen ty pro naše okno. franta-hg@18: if (view == epu.getEditPane().getView()) { franta-hg@18: změňSoubor(view.getBuffer()); franta-hg@18: } franta-hg@18: } franta-hg@18: // událost instanceof BufferUpdate franta-hg@18: // událost instanceof PropertiesChanged franta-hg@18: } catch (Exception e) { franta-hg@18: log.log(Level.WARNING, "Chyba při zpracování události: " + událost, e); franta-hg@18: } franta-hg@18: franta-hg@18: } franta-hg@18: franta-hg@18: private void změňSoubor(Buffer b) { franta-hg@18: pokus.setText(b.getPath()); franta-hg@18: } franta-hg@18: }