log.debug("process event '" + name + "' by " + gl.getClass() + "(" + gl.getLowLevelEventId() + ")"); gl.processLowLevelEvent(name, values); result = true;
if (isIE) {  boolean isButton = (gl.getClass().equals(SButton.class) || gl.getClass().equals(SToggleButton.class)); if (isButton) {  boolean isFormEvent = isButton && ((SComponent)gl).getResidesInForm() && ((SComponent)gl).getShowAsFormComponent(); if (isFormEvent) { log.debug("circumventing IE bug, not processing event '" + name + "' by " + gl.getClass() + "(" + gl.getLowLevelEventId() + ")"); } else { log.debug("process button event outside form '" + name + "' by " + gl.getClass() + "(" + gl.getLowLevelEventId() + ")"); gl.processLowLevelEvent(name, values); result = true; } } else { log.debug("process event '" + name + "' by " + gl.getClass() + "(" + gl.getLowLevelEventId() + ")"); gl.processLowLevelEvent(name, values); result = true; } } else { log.debug("process event '" + name + "' by " + gl.getClass() + "(" + gl.getLowLevelEventId() + ")"); gl.processLowLevelEvent(name, values); result = true; }
    public boolean dispatch(String name, String[] values) {        if (log.isDebugEnabled())            log.debug("dispatch " + name + " = " + Arrays.asList(values));        boolean result = false;        int dividerIndex = name.indexOf(SConstants.UID_DIVIDER);        String epoch = null;        // no Alias        if (dividerIndex > 0) {            epoch = name.substring(0, dividerIndex);            name = name.substring(dividerIndex + 1);        }        // make ImageButtons work in Forms .. browsers return        // the click position as .x and .y suffix of the name        if (name.endsWith(".x") || name.endsWith(".X")) {            name = name.substring(0, name.length() - 2);        } else if (name.endsWith(".y") || name.endsWith(".Y")) {            // .. but don't process the same event twice.            log.debug("discard '.y' part of image event");            return false;        }                // is value encoded in name ? Then append it to the values we have.        int p = name.indexOf(SConstants.UID_DIVIDER);        if (p > -1) {            String v = name.substring(p + 1);            name = name.substring(0, p);            String[] va = new String[values.length + 1];            System.arraycopy(values, 0, va, 0, values.length);            va[values.length] = v;            values = va;        }        List l = (List) listeners.get(name);        if (l != null && l.size() > 0) {            log.debug("process event '" + epoch + SConstants.UID_DIVIDER + name + "'");            for (int i = 0; i < l.size(); ++i) {                LowLevelEventListener gl = (LowLevelEventListener) l.get(i);                if (gl.isEnabled()) {                    if (checkEpoch(epoch, name, gl)) {                        log.debug("process event '" + name + "' by " +                                gl.getClass() + "(" + gl.getLowLevelEventId() +                                ")");                        gl.processLowLevelEvent(name, values);                        result = true;                    }                }            }        }        return result;    }