package org.csdgn.maru.listener; import java.lang.reflect.Method; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.text.Document; /** * I suppose this means I was feeling rather lazy one day. * * @author Chase */ public class MagicDocumentAdapter implements DocumentListener { private Method fun; private Object obj; /** Method should take a single string element. */ public MagicDocumentAdapter(Object obj, String methodName) { try { this.obj = obj; this.fun = obj.getClass().getMethod(methodName, String.class); } catch (Exception e) { e.printStackTrace(); } } /** Method should take a single string element. */ public MagicDocumentAdapter(Class<?> clz, String methodName) { try { this.fun = clz.getMethod(methodName, String.class); } catch (Exception e) { e.printStackTrace(); } } /** Method should take a single string element. */ public MagicDocumentAdapter(Object obj, Method m) { this.obj = obj; this.fun = m; } public void setObject(Object obj) { this.obj = obj; } private void invoke(DocumentEvent e) { try { Document doc = e.getDocument(); String text = doc.getText(0, doc.getLength()); fun.invoke(obj, text); } catch(Exception ex) { ex.printStackTrace(); } } @Override public void insertUpdate(DocumentEvent e) { invoke(e); } @Override public void removeUpdate(DocumentEvent e) { invoke(e); } @Override public void changedUpdate(DocumentEvent e) { } }