# HG changeset patch # User Jaroslav Tulach # Date 1358781390 -3600 # Node ID 1c3fda8898a1447f27f80cb34f7733ef4175c84a # Parent b26510e3e1054e63eb31e03f0115309d26dea4f9 Use just one innerclass diff -r b26510e3e105 -r 1c3fda8898a1 javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/PageProcessor.java --- a/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/PageProcessor.java Mon Jan 21 16:04:25 2013 +0100 +++ b/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/PageProcessor.java Mon Jan 21 16:16:30 2013 +0100 @@ -96,11 +96,9 @@ w.append("import org.apidesign.bck2brwsr.htmlpage.api.*;\n"); w.append("final class ").append(className).append(" {\n"); w.append(" private static boolean locked;\n"); - w.append(" public ").append(className).append("() {\n"); if (!initializeOnClick(className, (TypeElement) e, w, pp)) { return false; } - w.append(" }\n"); for (String id : pp.ids()) { String tag = pp.tagNameForId(id); String type = type(tag); @@ -177,6 +175,9 @@ // if (clazz.getKind() != ElementKind.CLASS) { // continue; // } + w.append(" public ").append(className).append("() {\n"); + StringBuilder dispatch = new StringBuilder(); + int dispatchCnt = 0; for (Element method : type.getEnclosedElements()) { On oc = method.getAnnotation(On.class); if (oc != null) { @@ -218,15 +219,33 @@ return false; } w.append(" OnEvent." + oc.event()).append(".of(").append(cnstnt(id)). - append(").perform(new Runnable() { public void run() {\n"); - w.append(" ").append(type.getSimpleName().toString()). - append('.').append(ee.getSimpleName()).append("("); - w.append(params); - w.append(");\n"); - w.append(" }});\n"); - } + append(").perform(new OnDispatch(" + dispatchCnt + "));\n"); + + dispatch. + append(" case ").append(dispatchCnt).append(": "). + append(type.getSimpleName().toString()). + append('.').append(ee.getSimpleName()).append("("). + append(params). + append("); break;\n"); + + dispatchCnt++; + } } } + w.append(" }\n"); + if (dispatchCnt > 0) { + w.append("class OnDispatch implements Runnable {\n"); + w.append(" private final int dispatch;\n"); + w.append(" OnDispatch(int d) { dispatch = d; }\n"); + w.append(" public void run() {\n"); + w.append(" switch (dispatch) {\n"); + w.append(dispatch); + w.append(" }\n"); + w.append(" }\n"); + w.append("}\n"); + } + + } return true; }