GUI look We can inspire ourselves from xchat or another gui and start with that and later improve it [[[Using mohadib]]] sdoc project and IRCDocument class we can print the irc events with syntax coloring and stuff like that We can all code parts of the GUI or just some of us Caching Events Using [[[r0bbys]]] experience we can know which events are fired and how to deal with it Using Gracenotes, r0bby and Mohadib experience with IRC, we can know which event can cause problems like flooding, etc. Events handling [[[gracenotes]]] can write the event handling stuff ------------------------------------ MVC architecture [[[I can write the basis of it]]] ------------------------------------ * Registering actions A configuration file(a properties file or xml file) holding event handlers. We can use an IOC container for that(spring, nanocontainer) or write it. example : action.sandirc.connect.(class)=net.sourceforge.sandirc.mvc.actions.ConnectAction action.sandirc.disconnect.(class)=net.sourceforge.sandirc.mvc.actions.DisconnectAction * Creating a view mypanel = new window() * binding event handlers mypanel.button.setAction(IOCContainer.getAction("action.sandirc.connect")); ------------------------------------ Plugins architecture ------------------------------------ We can use JPF to add some plugins capabilities to sandirc. A simple way to add plugins is to add them to menus. Using jpf we can have a plugin implement some menubarplugin interface(defined in the sandirc main project) Example of a directory structure of the plugin project in idea or eclipse myplugin -- src\ -- plugin.xml (the plugin descriptor : author, version, description, etc.) -- mypackage\ -- MyPlugin.java (the plugin class) -- MyPluginMenuBarImpl.java (the menubar plugin implementation) -- MyPluginAction.java (the class which does the job, receive irc events or perform other tasks) -- classes\ -- build.xml (the ant build file to compile) -- dist\ (The directory holding the jar file of the plugin)