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");
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();
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("_", "");
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 }