Title: IRIS Chat Design
1IRIS Chat Design
- CALO Chat, Group Chat, Individual Chat, and
Journal
2Contents
- User Interface
- Architecture
- Tasks/Timeline
3User Experience
4Navigation Tree
5Architecture
- Com.sri.iris.apps.chatapp.ChatApp
- Toplevel, controls chat UI and services
- Com.sri.iris.apps.chatapp.viewers
- ChatViewer, ChatTree, DefaultChatView
- Com.sri.iris.svcs.chatsvc
- Base classes for chat and chat services
- IChat, IChatService, IChatServiceListener,
DefaultChat, ChatDB - Com.sri.iris.svcs.chatsvc.people
- PeopleChatService, group and individual
implementations of IChat - Com.sri.iris.svcs.chatsvc.calo
- Com.sri.iris.svcs.chatsvc.journal
- Com.sri.iris.svcs.chatsvc.conn
- Low-level jabber connection support
- IConnection, IGroupChat, ChatConnectionService
6IChat
public interface IChat JComponent getView()
IChatService getService() / A UI-viewable
string. May be displayed in the treeview for
ChatApp. / String toString() / A
UI-viewable string. Displayed in the treeview
for ChatApp. / String getCategory() /
Can this chat instance be closed. E.g. the
single JournalChat is always open. / boolean
canClose() / Do nothing if canClose() is
false. Do nothing if chat already closed. /
void close() / Can we call addMessage. /
boolean readOnly() / Add a messge to the
chat from the iris user. _at_throws
ReadOnlyException if readOnly() is true. /
void addMessage(String msg) throws
ReadOnlyException, ChatException /
Person/group/thing we are chatting with. UI
visible. / String getName() / Uniquely
identify this chat for all time. / String
getUri() / When did this chat start. /
Date getStartTime() / When chat completed,
or null if still active. / Date
getCompletionTime()
7IChatService
public interface IChatService void
addListener(IChatServiceListener l) / Hack
for now. Called from ChatApp install(). /
void install(IViewerHost h) / ChatService
provides its own toolbar buttons to ChatApp
toolbar. / void addToolbarButtons(JToolBar
tb) //int getViewingOrder() / Purple
number support. URI can be for open or stored
chat. Will scroll IChat's viewer to
document location if specified in uri.
_at_return the IChat object of the open chat, or
create a new active (read-only) chat
loading in the data from the previous chat.
Return null if does not correspond to open
or stored chat. / IChat showURI(String
uri) / Return the IChat for the given uri,
open a previously completed chat if necessary.
Or, return null if uri does not correspond to
any known chat. / IChat chatForUri(String
uri) / Same as calling IChat.close() on all
open chats from this service. / void
closeAllChats() / Can there be more than one
chat per day. / boolean getMultiDate() /
_at_return All the possible categories for IChat
objects created by this service. /
String getCategories()
8Database Layout
app//chat/chat-category/date OR
app//chat/chat-category/chat-name/start-time
3/20/2004
app//chat/journal app//chat/journal/03-20-2004
message 1 message
2 app//chat/group app//chat/group/mark
eting/098098 message 1
message 2 app//chat/group/finance/0923804
CHAT_LIST
AIR
CHAT_LIST
CHAT_LIST
AIR
9 Basic Tasks (for 1.3)
- Merge existing ChatApp, CALOGUI, and Journal
- HTML viewer
- Jena/RN relational data store
- Record chat sessions and messages with URI
linking - View previously recorded chats
- Add Jabber individual chat (and instant
messaging?) - Notifications of incoming chats
- Save chat text
- Chat while other IRIS App is visible
- Requires IRIS multi-app display
10 Advanced Tasks
- ContactsApp integration
- Shared UI
- Shared ontology
- Calendar integration
- Chats appear in calendar
- DataApp integration?
- Browse completed chats w/ dataapp viewer?
- UI for using arbitrary jabber server
(preferences) - Jabber gateways for AIM, ICQ, MSN, and Yahoo
- Integrate Jabber roster with IRIS address book
- Jabber chatroom configuration/administration?
- UI for advanced HTML markup, e.g. dragging
images, text styles - Wiki
- Vodoo journal
- Edit journal in place