/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package com.eas.client.forms.events; import com.eas.client.events.PublishedSourcedEvent; import com.eas.script.HasPublished; import com.eas.script.ScriptFunction; import java.util.EventObject; import javax.swing.JComponent; /** * Base class for any GUI event. * * @author mg * @param <E> */ public abstract class Event<E extends EventObject> extends PublishedSourcedEvent { protected E delegate; protected Event(E aDelegate) { super(null); delegate = aDelegate; } @ScriptFunction(jsDoc = SOURCE_JS_DOC) @Override public HasPublished getSource() { Object oSource = delegate.getSource(); if (oSource instanceof JComponent) { return lookupApiComponent((JComponent) oSource); } else if (oSource instanceof HasPublished) { return (HasPublished) oSource; } else { return null; } } @Override public String toString() { return String.format("%s on %s", getClass().getSimpleName(), getSource() != null ? getSource().toString() : ""); } public static HasPublished lookupApiComponent(JComponent aComp) { JComponent comp = aComp; while (comp.getParent() != null && !(comp instanceof HasPublished)) { comp = (JComponent) comp.getParent(); } return comp instanceof HasPublished ? (HasPublished) comp : null; } }