CodeGenerator.java

00001 package edu.stanford.hci.r3.tools.develop;
00002 
00003 import java.util.List;
00004 
00005 import edu.stanford.hci.r3.paper.Region;
00006 import edu.stanford.hci.r3.paper.Sheet;
00007 import edu.stanford.hci.r3.paper.sheets.PDFSheet;
00008 
00020 public class CodeGenerator {
00021 
00025         private int indent = 0;
00026 
00027         private StringBuilder stringBuilder;
00028 
00029         public CodeGenerator() {
00030         }
00031 
00035         private void addLine(String line) {
00036                 for (int i = 0; i < indent; i++) {
00037                         stringBuilder.append("\t"); // indent!
00038                 }
00039                 stringBuilder.append(line + "\n");
00040         }
00041 
00045         private void decreaseIndent() {
00046                 if (indent == 0) {
00047                         return;
00048                 }
00049                 indent--;
00050         }
00051 
00058         public void generateInitializePaperUI(Sheet sheet) {
00059                 stringBuilder = new StringBuilder();
00060                 List<Region> regions = sheet.getRegions();
00061                 addLine("private void initializePaperUI() {");
00062                 increaseIndent();
00063                 for (Region r : regions) {
00064                         String regionName = r.getName(); // remove underscores
00065                         String regionNameNoUnderscores = regionName.replace("_", "");
00066                         final String regionIdentifier = "region" + regionNameNoUnderscores;
00067                         addLine("Region " + regionIdentifier + " = sheet.getRegion(\"" + regionName + "\");");
00068                         addLine("setup" + regionNameNoUnderscores + "(" + regionIdentifier + ");");
00069                         addLine("");
00070                 }
00071                 decreaseIndent();
00072                 addLine("}");
00073                 System.out.println("Code for Generating a Paper UI");
00074                 System.out.println("------------------------------");
00075                 System.out.print(stringBuilder);
00076                 System.out.println("------------------------------");
00077         }
00078 
00082         public void generateSetupRegionMethods(PDFSheet sheet) {
00083                 stringBuilder = new StringBuilder();
00084                 List<Region> regions = sheet.getRegions();
00085                 for (Region r : regions) {
00086                         String regionName = r.getName().replace("_", ""); // remove underscores
00087                         addLine("private void setup" + regionName + "(Region region) {");
00088                         increaseIndent();
00089                         addLine("region.addEventHandler(new ClickAdapter() {");
00090                         increaseIndent();
00091                         addLine("@Override");
00092                         addLine("public void clicked(PenEvent e) {");
00093                         increaseIndent();
00094                         addLine("DebugUtils.println(\"You clicked on " + regionName + ".\");");
00095                         decreaseIndent();
00096                         addLine("}");
00097                         decreaseIndent();
00098                         addLine("});");
00099                         decreaseIndent();
00100                         addLine("}");
00101                 }
00102 
00103                 System.out.println("Code for Setting up Regions with Event Handlers");
00104                 System.out.println("------------------------------");
00105                 System.out.print(stringBuilder);
00106                 System.out.println("------------------------------");
00107         }
00108 
00112         private void increaseIndent() {
00113                 indent++;
00114         }
00115 }

Generated on Sat Apr 14 18:21:33 2007 for R3 Paper Toolkit by  doxygen 1.4.7