1 21 22 package org.armedbear.j; 23 24 import java.io.BufferedReader ; 25 import java.io.InputStreamReader ; 26 import java.io.OutputStream ; 27 import java.net.ServerSocket ; 28 import java.net.Socket ; 29 import java.net.SocketException ; 30 import java.util.Vector ; 31 import javax.swing.SwingUtilities ; 32 33 public class Server implements Runnable 34 { 35 private static Server server; 36 37 private ServerSocket socket; 38 private Thread thread; 39 40 public static void startServer() 41 { 42 try { 43 server = new Server(); 44 server.socket = new ServerSocket (0); 45 int port = server.socket.getLocalPort(); 46 OutputStream out = Editor.portfile.getOutputStream(); 47 out.write(String.valueOf(port).getBytes()); 48 out.close(); 49 server.thread = new Thread (server); 50 server.thread.setName("server"); 51 server.thread.setPriority(Thread.MIN_PRIORITY); 52 server.thread.setDaemon(true); 53 server.thread.start(); 54 } 55 catch (Exception e) { 56 Log.error(e); 57 } 58 } 59 60 public static void stopServer() 61 { 62 Editor.portfile.delete(); 63 } 64 65 public void run() 66 { 67 while (true) { 68 try { 69 Socket sock = socket.accept(); BufferedReader in = new BufferedReader (new InputStreamReader (sock.getInputStream())); 72 Vector v = null; 73 while (true) { 74 String s = in.readLine(); 75 if (s == null) 76 break; 77 if (v == null) 78 v = new Vector (); 79 v.add(s); 80 } 81 in.close(); 82 sock.close(); 83 SwingUtilities.invokeLater(new Messenger(v)); 84 } 85 catch (SocketException e) { 86 return; 87 } 88 catch (Exception e) { 89 Log.error(e); 90 } 91 } 92 } 93 94 class Messenger implements Runnable 95 { 96 Vector v = null; 97 98 Messenger(Vector v) 100 { 101 this.v = v; 102 } 103 104 public void run() 105 { 106 Editor editor = Editor.currentEditor(); 107 if (v != null && v.size() > 0) { 108 Editor other = editor.getOtherEditor(); 109 if (other != null && editor.getBuffer().isSecondary()) 110 editor = other; 111 if (!editor.getBuffer().isPrimary()) 112 Debug.bug(); 113 Buffer toBeActivated = editor.openFiles(v); 114 if (toBeActivated != null) { 115 editor.makeNext(toBeActivated); 116 editor.switchToBuffer(toBeActivated); 117 if (!Editor.getEditorList().contains(editor)) 118 Debug.bug(); 119 editor.updateDisplay(); 120 } 121 } 122 editor.getFrame().toFront(); 123 editor.requestFocus(); 124 } 125 } 126 } 127 | Popular Tags |