// See comment in createericlist regarding HandleViewParams private /*synchronized*/ String HandleViewParams( String tempString, LinkedList tempList, StringTokenizer st) throws VisualizerLoadException { while (tempString.toUpperCase().startsWith("VIEW")) { StringTokenizer t = new StringTokenizer(tempString, " \t"); String s1 = t.nextToken().toUpperCase(); String s2 = t.nextToken().toUpperCase(); String s3 = t.nextToken(); // HERE PROCESS URL's AS YOU DID QUESTIONS if (s2.compareTo("ALGO") == 0) { add_a_pseudocode_URL(s3); // System.out.println("Adding to urls: "+Snaps+":"+s3); // urlList.append(Snaps+1 +":"+s3); } else if (s2.compareTo("DOCS") == 0) { add_a_documentation_URL(s3); // System.out.println("Adding to urls: "+Snaps+":"+s3); // if (debug) System.out.println("Adding to urlList: "+Snaps+1+":"+s3); // urlList.append(Snaps+1 +":"+s3); } else if (s2.compareTo("SCALE") == 0) { GKS.scale(Format.atof(s3.toUpperCase()), tempList, this); } else if (s2.compareTo("WINDOWS") == 0) { GKS.windows(Format.atoi(s3.toUpperCase()), tempList, this); } else if (s2.compareTo("JUMP") == 0) { GKS.jump(Format.atoi(s3.toUpperCase()), tempList, this); } else throw (new VisualizerLoadException(s2 + " is invalid VIEW parameter")); tempString = st.nextToken(); } // if (urlList.size() == 0) // urlList.append("**"); return (tempString); }
// createericlist with a String signature is used to process a String // containing a sequence of GAIGS structures // createericlist creates the list of graphics primitives for these snapshot(s). // After creating these lists, that are then appended to l, the list of snapshots, // Also must return the number of snapshots loaded from the string public /*synchronized*/ int createericlist(String structString) { int numsnaps = 0; if (debug) System.out.println("In create eric " + structString); StringTokenizer st = new StringTokenizer(structString, "\r\n"); while (st.hasMoreTokens()) { numsnaps++; // ?? String tempString; LinkedList tempList = new LinkedList(); StructureType strct; tempString = st.nextToken(); try { boolean headers = true; while (headers) { headers = false; if (tempString.toUpperCase().startsWith("VIEW")) { tempString = HandleViewParams(tempString, tempList, st); headers = true; } if (tempString.toUpperCase().startsWith("FIBQUESTION ") || tempString.toUpperCase().startsWith("MCQUESTION ") || tempString.toUpperCase().startsWith("MSQUESTION ") || tempString.toUpperCase().startsWith("TFQUESTION ")) { tempString = add_a_question(tempString, st); headers = true; } } if (tempString.toUpperCase().equals("STARTQUESTIONS")) { numsnaps--; // questions don't count as snapshots readQuestions(st); break; } // After returning from HandleViewParams, tempString should now contain // the line with the structure type and possible additional text height info StringTokenizer structLine = new StringTokenizer(tempString, " \t"); String structType = structLine.nextToken(); if (debug) System.out.println("About to assign structure" + structType); strct = assignStructureType(structType); strct.loadTextHeights(structLine, tempList, this); strct.loadLinesPerNodeInfo(st, tempList, this); strct.loadTitle(st, tempList, this); strct.loadStructure(st, tempList, this); strct.calcDimsAndStartPts(tempList, this); strct.drawTitle(tempList, this); strct.drawStructure(tempList, this); } catch (VisualizerLoadException e) { System.out.println(e.toString()); } // // You've just created a snapshot. Need to insure that "**" is appended // // to the URLList for this snapshot IF no VIEW ALGO line was parsed in the // // string for the snapshot. This could probably best be done in the // // HandleViewParams method list_of_snapshots.append(tempList); Snaps++; } return (numsnaps); } // createericlist(string)
private /*synchronized*/ String add_a_question(String tmpStr, StringTokenizer st) throws VisualizerLoadException { try { StringTokenizer tokzer = new StringTokenizer(tmpStr); String idTok = tokzer.nextToken(); idTok = tokzer.nextToken(); // what we really want is the id // FIBQuestion q = new FIBQuestion(idTok); // qTable.put(idTok, q); //add map id -> q GaigsAV.qCtlTable.put(new Integer(Snaps), idTok); // add map snap -> q (assumes <= 1 q/snap) if (debug) System.out.println("Adding question for snap " + Snaps); return st.nextToken(); } catch (Exception e) { throw new VisualizerLoadException("Aieee... bad SHO file"); } }
public /*synchronized*/ Color colorSet(String values) { String temp; int x; Color c = Color.black; StringTokenizer st = new StringTokenizer(values); x = Format.atoi(st.nextToken()); if (x == 1) c = Color.black; else if (x == 2) c = Color.blue; else if (x == 6) c = Color.cyan; else if (x == 13) c = Color.darkGray; else if (x == 11) c = Color.gray; else if (x == 3) c = Color.green; else if (x == 9) c = Color.lightGray; else if (x == 5) c = Color.magenta; else if (x == 10) c = Color.orange; else if (x == 12) c = Color.pink; else if (x == 4) c = Color.red; else if (x == 8) c = Color.white; else if (x == 7) c = Color.yellow; else if (x < 0) c = new Color(-x); return c; }
private /*synchronized*/ void readQuestions(StringTokenizer st) throws VisualizerLoadException { String tmpStr = "STARTQUESTIONS\n"; // When CG's QuestionFactory parses from a string, it looks for // a line with STARTQUESTIONS -- hence we add it artificially here try { // Build the string for the QuestionFactory while (st.hasMoreTokens()) { tmpStr += st.nextToken() + "\n"; } } catch (Exception e) { e.printStackTrace(); throw new VisualizerLoadException("Ooof! bad question format"); } try { // System.out.println(tmpStr); // Problem -- must make this be line oriented GaigsAV.questionCollection = QuestionFactory.parseScript(tmpStr); } catch (QuestionParseException e) { e.printStackTrace(); System.out.println("Error parsing questions."); throw new VisualizerLoadException("Ooof! bad question format"); // throw new IOException(); } } // readQuestions(st)
// creates the list of snapshots public /*synchronized*/ obj dothis(String inputString) { /* Snapshot codes 29 - rectangle draw 2 - oval draw 5 - fill oval 6 - string 7 - line & text color 8 - fill color 9 - text color (possible to ignore) 10 - text height 11 - polydraw 4 - fill poly 14 - arc draw 30 - fill arc 12 - text style, centered horizontal/vertical ???? 45 - url. Note, when bring up multiple algorithms, the URL's for the most recently run algorithm are posted in the upper browser frame THE CODE BELOW WOULD INDICATE THIS IS 54, NOT 45 ???? 20 - number of windows. For static algorithms, 1, 2, 3, 4 have the obvious meaning. 21 - scale factor 22 - jump factor For 20, 21, 22, the last factor loaded is the one that will affect all snapshots in the show */ obj temp = new rectDraw("0 0 0 0", lineC); Object urlTest; String arrg; int graphic_obj_code = Format.atoi(inputString.substring(0, 3)); StringTokenizer tmp = null; switch (graphic_obj_code) { case 29: temp = new rectDraw(inputString.substring(3, (inputString.length())), lineC); break; case 2: temp = new ovalDraw(inputString.substring(3, (inputString.length())), lineC); break; case 5: temp = new fillOvalDraw(inputString.substring(3, (inputString.length())), fillC); break; case 6: temp = new stringDraw( inputString.substring(3, (inputString.length())), textC, LineH, LineV, fontMult); // System.out.println(" printing " + inputString); break; case 7: lineC = colorSet(inputString.substring(3, (inputString.length()))); textC = lineC; break; case 8: tmp = new StringTokenizer(inputString.substring(2, (inputString.length()))); fillC = colorSet(tmp.nextToken()); break; case 9: textC = colorSet(inputString.substring(3, (inputString.length()))); break; case 10: StringTokenizer st = new StringTokenizer(inputString.substring(3, (inputString.length()))); fontMult = Format.atof(st.nextToken()); // System.out.println("setting fontMult= " + fontMult); break; // TLN changed on 10/14/97 to accomodate condensed prm files // temp=new textHeight(inputString.substring(3,(inputString.length()))); case 11: temp = new polyDraw(inputString.substring(3, (inputString.length())), lineC); break; case 4: temp = new fillPolyDraw(inputString.substring(3, (inputString.length())), fillC); break; case 64: temp = new animated_fillPolyDraw(inputString.substring(3, (inputString.length())), fillC); break; case 14: temp = new arcDraw(inputString.substring(3, (inputString.length())), lineC); break; case 30: temp = new fillArcDraw(inputString.substring(3, (inputString.length())), fillC); break; case 12: tmp = new StringTokenizer(inputString.substring(3, (inputString.length()))); LineH = Format.atoi(tmp.nextToken()); LineV = Format.atoi(tmp.nextToken()); break; case 20: tmp = new StringTokenizer(inputString.substring(3, (inputString.length()))); // graphWin.setNumViews(Format.atoi(tmp.nextToken())); // multiTrigger=true; break; case 21: tmp = new StringTokenizer(inputString.substring(3, (inputString.length()))); double tempFloat = Format.atof(tmp.nextToken()); zoom = tempFloat; break; case 22: tmp = new StringTokenizer(inputString.substring(3, (inputString.length()))); // graphWin.setJump(Format.atoi(tmp.nextToken())); // This is now a noop in // gaigs2 break; case 54: tmp = new StringTokenizer(inputString.substring(3, (inputString.length()))); // if (tmp.hasMoreElements()){ // urlTest=tmp.nextToken(); // urlList.append(urlTest); // } // else{ // tmp=new StringTokenizer("**"); // urlTest=tmp.nextToken(); // urlList.append(urlTest); // } break; } // end switch return (temp); }