FlashWhiteboard.java

00001 package edu.stanford.hci.r3.flash.whiteboard;
00002 
00003 import java.awt.Color;
00004 import java.awt.Desktop;
00005 import java.io.File;
00006 import java.io.IOException;
00007 import java.net.URI;
00008 import java.net.URISyntaxException;
00009 import java.net.URL;
00010 import java.util.ArrayList;
00011 import java.util.List;
00012 
00013 import net.sf.wraplog.SystemLogger;
00014 
00015 import edu.stanford.ejalbert.BrowserLauncher;
00016 import edu.stanford.ejalbert.exception.BrowserLaunchingExecutionException;
00017 import edu.stanford.ejalbert.exception.BrowserLaunchingInitializingException;
00018 import edu.stanford.ejalbert.exception.UnsupportedOperatingSystemException;
00019 import edu.stanford.hci.r3.PaperToolkit;
00020 import edu.stanford.hci.r3.actions.types.OpenURL2Action;
00021 import edu.stanford.hci.r3.flash.FlashCommunicationServer;
00022 import edu.stanford.hci.r3.flash.FlashListener;
00023 import edu.stanford.hci.r3.pen.Pen;
00024 import edu.stanford.hci.r3.pen.PenSample;
00025 import edu.stanford.hci.r3.pen.streaming.listeners.PenListener;
00026 import edu.stanford.hci.r3.util.DebugUtils;
00027 import edu.stanford.hci.r3.util.files.FileUtils;
00028 
00040 public class FlashWhiteboard {
00041 
00042         private FlashCommunicationServer flash;
00043 
00044         private List<Pen> pens = new ArrayList<Pen>();
00045 
00046         private int port;
00047 
00048         private Color swatchColor;
00049 
00050         private String title;
00051 
00052         public FlashWhiteboard(int portNum) {
00053                 port = portNum;
00054         }
00055 
00056         public void load() {
00057                 // start the local server for sending ink over to the Flash client app
00058                 flash = new FlashCommunicationServer(port);
00059                 flash.addFlashClientListener(new FlashListener() {
00060                         @Override
00061                         public void messageReceived(String command) {
00062                                 if (command.equals("Flash Client Connected")) {
00063                                         DebugUtils.println("Connected!");
00064                                         flash.sendMessage("<swatchColor r='" + swatchColor.getRed() + "' g='"
00065                                                         + swatchColor.getGreen() + "' b='" + swatchColor.getBlue() + "'/>");
00066                                         flash.sendMessage("<title value='" + title + "'/>");
00067                                 } else {
00068                                         DebugUtils.println("Unhandled command: " + command);
00069                                 }
00070                         }
00071 
00072                 });
00073 
00074                 File r3RootPath = PaperToolkit.getToolkitRootPath();
00075                 File whiteBoardHTML = new File(r3RootPath, "flash/bin/Whiteboard.html");
00076                 String fileStr = FileUtils.readFileIntoStringBuffer(whiteBoardHTML, true).toString();
00077                 fileStr = fileStr.replace("PORT_NUM", port + "");
00078                 whiteBoardHTML = new File(r3RootPath, "flash/bin/Whiteboard_" + port + ".html");
00079                 FileUtils.writeStringToFile(fileStr, whiteBoardHTML);
00080                 URI uri = whiteBoardHTML.toURI();
00081                 try {
00082                         DebugUtils.println("Loading the Flash GUI...");
00083                         Desktop.getDesktop().browse(uri);
00084                 } catch (IOException e) {
00085                         e.printStackTrace();
00086                 }
00087         }
00088 
00089         public void addPen(Pen pen) {
00090                 pens.add(pen);
00091                 pen.startLiveMode();
00092                 pen.addLivePenListener(new PenListener() {
00093 
00094                         @Override
00095                         public void penDown(PenSample sample) {
00096                                 flash.sendMessage("<penDownEvent/>");
00097                                 flash.sendMessage(sample.toXMLString());
00098                         }
00099 
00100                         @Override
00101                         public void penUp(PenSample sample) {
00102                                 flash.sendMessage(sample.toXMLString());
00103                         }
00104 
00105                         @Override
00106                         public void sample(PenSample sample) {
00107                                 flash.sendMessage(sample.toXMLString());
00108                         }
00109 
00110                 });
00111         }
00112 
00113         public void setSwatchColor(Color color) {
00114                 swatchColor = color;
00115         }
00116 
00117         public void setTitle(String titleStr) {
00118                 title = titleStr;
00119         }
00120 }

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