All pastes #901818 Raw Edit

Miscellany

public text v1 · immutable
·published 2008-02-12 23:16 UTC
rendered paste body
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)