View Javadoc
1 package org.cyberiantiger.mudclient; 2 3 import java.util.*; 4 import java.io.*; 5 import org.cyberiantiger.console.*; 6 import org.cyberiantiger.mudclient.config.*; 7 import org.cyberiantiger.mudclient.parser.*; 8 import org.cyberiantiger.mudclient.net.*; 9 import org.cyberiantiger.mudclient.ui.ControlWindow; 10 import org.cyberiantiger.mudclient.ui.Connection; 11 12 public class ElephantMudClient implements Display, Connection { 13 14 private boolean echo = true; 15 private ControlWindow control; 16 private MudConnection connection; 17 private ConsoleWriter writer; 18 19 private ClientConfiguration config; 20 21 public ElephantMudClient(ClientConfiguration config) { 22 this.config = config; 23 writer = new ElephantConsoleWriter(); 24 connection = new MudConnection(this); 25 control = new ControlWindow(this); 26 control.show(); 27 } 28 29 public void exit() { 30 connection.disconnect(); 31 connection.stop(); // Deprecated. 32 control.hide(); 33 System.exit(0); // Don't like using this method. 34 } 35 36 public void connect() { 37 connection.setParser(new ANSIParser()); 38 connection.connect(); 39 } 40 41 public void disconnect() { 42 connection.disconnect(); 43 } 44 45 46 public void command(String sourceId, String msg) { 47 connection.command(msg); 48 if(echo) { 49 ConsoleWriter ui = control.getCurrentView(); 50 ui.consoleAction( 51 new StringConsoleAction(msg.toCharArray(),0,msg.length()) 52 ); 53 ui.consoleAction( 54 new SetCursorXConsoleAction(0) 55 ); 56 ui.consoleAction( 57 new MoveCursorYConsoleAction(1) 58 ); 59 } 60 } 61 62 public void setWindowSize(int w, int h) { 63 connection.setWindowSize(w,h); 64 } 65 66 public void connectionStatusChanged(int newStatus) { 67 control.connectionStatusChanged(newStatus); 68 } 69 70 public void connectionDoLocalEcho(boolean echo) { 71 this.echo = echo; 72 } 73 74 public ClientConfiguration getConfiguration() { 75 return config; 76 } 77 78 public ConsoleWriter getConsoleWriter() { 79 return writer; 80 } 81 82 private class ElephantConsoleWriter implements ConsoleWriter { 83 84 protected ConsoleWriter getView(String name) { 85 if(name.equals(ClientConfiguration.DEFAULT_VIEW)) { 86 return control.getDefaultView(); 87 } else if(name.equals(ClientConfiguration.CURRENT_VIEW)) { 88 return control.getCurrentView(); 89 } else { 90 return control.getView(name); 91 } 92 } 93 94 public void consoleAction(ConsoleAction action) { 95 if(action instanceof ElephantMUDConsoleAction) { 96 ElephantMUDConsoleAction eAction = 97 (ElephantMUDConsoleAction) action; 98 99 String pClass = eAction.getPrimaryClass(); 100 101 Set dests = config.getOutputFor(pClass); 102 103 104 if(dests == null) { 105 control.getDefaultView().consoleAction(action); 106 } else { 107 Set tmp = new HashSet(); 108 Iterator i = dests.iterator(); 109 while(i.hasNext()) { 110 tmp.add(getView((String)i.next())); 111 } 112 113 tmp.remove(null); 114 115 i = tmp.iterator(); 116 while(i.hasNext()) { 117 ((ConsoleWriter)i.next()).consoleAction(action); 118 } 119 } 120 121 } else { 122 control.getDefaultView().consoleAction(action); 123 } 124 } 125 } 126 127 public static void main(String[] args) { 128 if(args.length == 1) { 129 try { 130 ClientConfiguration config = new ClientConfiguration(); 131 config.load(new FileInputStream(args[0])); 132 new ElephantMudClient(config); 133 } catch (IOException ioe) { 134 ioe.printStackTrace(); 135 } 136 } else { 137 try { 138 ClientConfiguration config = new ClientConfiguration(); 139 config.load( 140 ElephantMudClient.class.getResourceAsStream( 141 "/org/cyberiantiger/mudclient/config.properties" 142 ) 143 ); 144 new ElephantMudClient(config); 145 } catch (IOException ioe) { 146 ioe.printStackTrace(); 147 } 148 } 149 } 150 }

This page was automatically generated by Maven