diff options
| author | kgilmer | 2005-09-02 18:47:15 +0000 |
|---|---|---|
| committer | kgilmer | 2005-09-02 18:47:15 +0000 |
| commit | 99402961bc36740a3de745200a42259a6049bd76 (patch) | |
| tree | 6621288bef4a3f87932d1c6b7babcc65710b9e82 | |
| parent | 45cafe24a6fdbdbf2d4ed8849825be1241fed95e (diff) | |
| download | org.eclipse.ecf-99402961bc36740a3de745200a42259a6049bd76.tar.gz org.eclipse.ecf-99402961bc36740a3de745200a42259a6049bd76.tar.xz org.eclipse.ecf-99402961bc36740a3de745200a42259a6049bd76.zip | |
Added chat room view and connected it to the SelectRoomDialog.
4 files changed, 290 insertions, 30 deletions
diff --git a/framework/bundles/org.eclipse.ecf.ui/plugin.xml b/framework/bundles/org.eclipse.ecf.ui/plugin.xml index c174ddc18..487d2de22 100644 --- a/framework/bundles/org.eclipse.ecf.ui/plugin.xml +++ b/framework/bundles/org.eclipse.ecf.ui/plugin.xml @@ -21,5 +21,12 @@ icon="icons/person.gif" id="org.eclipse.ecf.ui.view.discoveryview" name="ECF Service Discovery"/> + <view + allowMultiple="true" + category="org.eclipse.ecf.ui.viewcategory" + class="org.eclipse.ecf.ui.views.ChatRoomView" + icon="icons/person.gif" + id="org.eclipse.ecf.ui.views.ChatRoomView" + name="Chat Room"/> </extension> </plugin> diff --git a/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/dialogs/ChatRoomSelectionDialog.java b/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/dialogs/ChatRoomSelectionDialog.java index 84c84f1e3..d132fbd88 100644 --- a/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/dialogs/ChatRoomSelectionDialog.java +++ b/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/dialogs/ChatRoomSelectionDialog.java @@ -7,11 +7,14 @@ import org.eclipse.ecf.presence.chat.IChatRoomManager; import org.eclipse.ecf.presence.chat.IRoomInfo; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.TitleAreaDialog; +import org.eclipse.jface.viewers.DoubleClickEvent; +import org.eclipse.jface.viewers.IDoubleClickListener; import org.eclipse.jface.viewers.ILabelProviderListener; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.IStructuredContentProvider; import org.eclipse.jface.viewers.ITableLabelProvider; import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.Viewer; import org.eclipse.swt.SWT; @@ -26,6 +29,8 @@ import org.eclipse.swt.widgets.TableColumn; public class ChatRoomSelectionDialog extends TitleAreaDialog { IChatRoomManager [] managers = null; + + private IRoomInfo selectedRoom = null; public ChatRoomSelectionDialog(Shell parentShell, IChatRoomManager [] managers) { super(parentShell); @@ -87,6 +92,26 @@ public class ChatRoomSelectionDialog extends TitleAreaDialog { this.setTitle("Chatroom Selection"); this.setMessage("Select a chatroom to enter"); + + viewer.addSelectionChangedListener(new ISelectionChangedListener() { + public void selectionChanged(SelectionChangedEvent event) { + StructuredSelection s = (StructuredSelection) event.getSelection(); + if (s.getFirstElement() instanceof IRoomInfo) { + selectedRoom = (IRoomInfo) s.getFirstElement(); + } + } + + }); + + viewer.addDoubleClickListener(new IDoubleClickListener() { + + public void doubleClick(DoubleClickEvent event) { + if (selectedRoom != null) { + ChatRoomSelectionDialog.this.okPressed(); + } + } + + }); return parent; } @@ -167,4 +192,8 @@ public class ChatRoomSelectionDialog extends TitleAreaDialog { this.getButton(Dialog.OK).setEnabled(false); return bar; } + + public IRoomInfo getSelectedRoom() { + return selectedRoom; + } } diff --git a/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/ChatRoomView.java b/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/ChatRoomView.java new file mode 100644 index 000000000..0c79c8da9 --- /dev/null +++ b/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/ChatRoomView.java @@ -0,0 +1,74 @@ +package org.eclipse.ecf.ui.views; + +import org.eclipse.ecf.presence.chat.IRoomInfo; +import org.eclipse.jface.viewers.ListViewer; +import org.eclipse.swt.SWT; +import org.eclipse.swt.custom.SashForm; +import org.eclipse.swt.layout.FillLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Text; +import org.eclipse.ui.IViewSite; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.part.ViewPart; + +public class ChatRoomView extends ViewPart { + private Composite mainComp = null; + private IRoomInfo roomInfo = null; + private Text writeText = null; + private Text readText = null; + + public void createPartControl(Composite parent) { + mainComp = new Composite(parent, SWT.NONE); + mainComp.setLayout(new FillLayout()); + + SashForm form = new SashForm(mainComp,SWT.HORIZONTAL); + form.setLayout(new FillLayout()); + + + Composite memberComp = new Composite(form,SWT.NONE); + memberComp.setLayout(new FillLayout()); + ListViewer memberViewer = new ListViewer(memberComp, SWT.BORDER); + + Composite rightComp = new Composite(form, SWT.NONE); + rightComp.setLayout(new FillLayout()); + + SashForm rightSash = new SashForm(rightComp, SWT.VERTICAL); + rightSash.setLayout(new FillLayout()); + + + Composite readComp = new Composite(rightSash, SWT.NONE); + readComp.setLayout(new FillLayout()); + readText = new Text(readComp, SWT.BORDER); + readText.setEditable(false); + + Composite writeComp = new Composite(rightSash, SWT.NONE); + writeComp.setLayout(new FillLayout()); + writeText = new Text(writeComp, SWT.BORDER | SWT.MULTI); + + form.setWeights(new int[] {30, 70}); + rightSash.setWeights(new int[] {70, 30}); + } + + public void setFocus() { + writeText.setFocus(); + } + + public IRoomInfo getRoomInfo() { + return roomInfo; + } + + public void setRoomInfo(IRoomInfo roomInfo) { + this.roomInfo = roomInfo; + } + + public void initialize() { + if (roomInfo == null) { + return; + } + + this.setPartName(roomInfo.getName()); + + //Setup container + } + +} diff --git a/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/RosterView.java b/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/RosterView.java index 9d540342a..0881feaa7 100644 --- a/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/RosterView.java +++ b/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/RosterView.java @@ -64,65 +64,96 @@ import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Menu; import org.eclipse.ui.IActionBars; import org.eclipse.ui.ISharedImages; +import org.eclipse.ui.IViewPart; import org.eclipse.ui.IWorkbenchActionConstants; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.PartInitException; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.part.ViewPart; public class RosterView extends ViewPart { public static final String DISCONNECT_ICON_DISABLED = "icons/disabled/terminate_co.gif"; + public static final String DISCONNECT_ICON_ENABLED = "icons/enabled/terminate_co.gif"; + public static final String INSTANT_MESSAGE_ICON = "icons/enabled/message.gif"; + public static final String ADDGROUP_ICON = "icons/enabled/addgroup.gif"; + public static final String ADDBUDDY_ICON = "icons/enabled/addbuddy.gif"; + public static final String ADDCHAT_ICON = "icons/enabled/addchat.gif"; - + public static final String UNFILED_GROUP_NAME = "Buddies"; + protected static final int TREE_EXPANSION_LEVELS = 2; + private TreeViewer viewer; + // private Action chatAction; private Action selectedChatAction; + private Action selectedDoubleClickAction; + private Action disconnectAction; + private Action openChatRoomAction; + // private Action addGroupAction; // private Action addBuddyAction; protected Hashtable chatThreads = new Hashtable(); + protected Hashtable accounts = new Hashtable(); + protected void addAccount(UserAccount account) { if (account == null) return; accounts.put(account.getServiceID(), account); } + protected UserAccount getAccount(ID serviceID) { return (UserAccount) accounts.get(serviceID); } + protected void removeAccount(ID serviceID) { accounts.remove(serviceID); } + class UserAccount { ID serviceID; + IUser user; + ILocalInputHandler inputHandler; + IPresenceContainer container; - public UserAccount(ID serviceID, IUser user, ILocalInputHandler handler, IPresenceContainer container) { + + public UserAccount(ID serviceID, IUser user, + ILocalInputHandler handler, IPresenceContainer container) { this.serviceID = serviceID; this.user = user; this.inputHandler = handler; this.container = container; } + public ID getServiceID() { return serviceID; } + public IUser getUser() { return user; } + public ILocalInputHandler getInputHandler() { return inputHandler; } + public IPresenceContainer getContainer() { return container; } } + protected String getUserNameFromID(ID userID) { if (userID == null) return ""; @@ -137,6 +168,7 @@ public class RosterView extends ViewPart { } else return username; } + public void dispose() { for (Iterator i = accounts.keySet().iterator(); i.hasNext();) { ID serviceID = (ID) i.next(); @@ -151,57 +183,75 @@ public class RosterView extends ViewPart { accounts.clear(); super.dispose(); } + class TreeObject implements IAdaptable { private String name; + private TreeParent parent; + private ID userID; + public TreeObject(String name, ID userID) { this.name = name; this.userID = userID; } + public TreeObject(String name) { this(name, null); } + public String getName() { return name; } + public void setName(String name) { this.name = name; } + public ID getUserID() { return userID; } + public void setParent(TreeParent parent) { this.parent = parent; } + public TreeParent getParent() { return parent; } + public String toString() { return getName(); } + public Object getAdapter(Class key) { return null; } } + class TreeParent extends TreeObject { private ArrayList children; + public TreeParent(String name) { super(name); children = new ArrayList(); } + public TreeParent(String name, ID userID) { super(name, userID); children = new ArrayList(); } + public void addChild(TreeObject child) { children.add(child); child.setParent(this); } + public void removeChild(TreeObject child) { children.remove(child); child.setParent(null); } + public void removeChildren() { for (Iterator i = children.iterator(); i.hasNext();) { TreeObject obj = (TreeObject) i.next(); @@ -209,20 +259,25 @@ public class RosterView extends ViewPart { } children.clear(); } + public TreeObject[] getChildren() { return (TreeObject[]) children.toArray(new TreeObject[children .size()]); } + public boolean hasChildren() { return children.size() > 0; } } + class TreeGroup extends TreeParent { ID svcID; + public TreeGroup(ID svcID, String name) { super(name); this.svcID = svcID; } + public int getActiveCount() { TreeObject[] childs = getChildren(); int totCount = 0; @@ -236,30 +291,39 @@ public class RosterView extends ViewPart { } return totCount; } + public int getTotalCount() { return getChildren().length; } + public ID getServiceID() { return svcID; } } + class TreeBuddy extends TreeParent { IPresence presence = null; + ID svcID = null; + public TreeBuddy(ID svcID, String name, ID id, IPresence p) { super(name, id); this.svcID = svcID; this.presence = p; } + public IPresence getPresence() { return presence; } + public void setPresence(IPresence p) { this.presence = p; } + public ID getServiceID() { return svcID; } + public boolean isActive() { IPresence p = getPresence(); if (p == null) @@ -267,17 +331,23 @@ public class RosterView extends ViewPart { return presence.getType().equals(IPresence.Type.AVAILABLE); } } + class ViewContentProvider implements IStructuredContentProvider, ITreeContentProvider { private TreeParent invisibleRoot; + private TreeParent root; + public void inputChanged(Viewer v, Object oldInput, Object newInput) { } + public void dispose() { } + public TreeBuddy findBuddyWithUserID(ID userID) { return findBuddy(root, userID); } + public Object[] getElements(Object parent) { if (parent.equals(getViewSite())) { if (root == null) @@ -286,23 +356,27 @@ public class RosterView extends ViewPart { } return getChildren(parent); } + public Object getParent(Object child) { if (child instanceof TreeObject) { return ((TreeObject) child).getParent(); } return null; } + public Object[] getChildren(Object parent) { if (parent instanceof TreeParent) { return ((TreeParent) parent).getChildren(); } return new Object[0]; } + public boolean hasChildren(Object parent) { if (parent instanceof TreeParent) return ((TreeParent) parent).hasChildren(); return false; } + public TreeBuddy fillPresence(TreeBuddy obj, IPresence presence) { obj.setPresence(presence); obj.removeChildren(); @@ -327,6 +401,7 @@ public class RosterView extends ViewPart { } return obj; } + public TreeBuddy createBuddy(TreeBuddy oldBuddy, IRosterEntry entry) { String name = entry.getName(); if (name == null) @@ -348,6 +423,7 @@ public class RosterView extends ViewPart { + newBuddy.getServiceID().getName())); return newBuddy; } + public TreeGroup findGroup(TreeParent parent, String name) { TreeObject[] objs = parent.getChildren(); if (objs != null) { @@ -359,6 +435,7 @@ public class RosterView extends ViewPart { } return null; } + public String[] getAllGroupNames() { TreeObject[] objs = root.getChildren(); if (objs != null) { @@ -373,9 +450,11 @@ public class RosterView extends ViewPart { } else return new String[0]; } + public TreeBuddy findBuddy(TreeParent parent, IRosterEntry entry) { return findBuddy(parent, entry.getUserID()); } + public TreeBuddy findBuddy(TreeParent parent, ID entryID) { TreeObject[] objs = parent.getChildren(); if (objs == null) @@ -395,6 +474,7 @@ public class RosterView extends ViewPart { } return null; } + public void addEntry(TreeParent parent, IRosterEntry entry) { TreeBuddy tb = findBuddy(parent, entry); TreeBuddy newBuddy = createBuddy(tb, entry); @@ -435,6 +515,7 @@ public class RosterView extends ViewPart { } } } + public void replaceEntry(TreeParent parent, IRosterEntry entry) { TreeBuddy tb = findBuddy(parent, entry); // If entry already in tree, remove it from current position @@ -477,11 +558,13 @@ public class RosterView extends ViewPart { } } } + public void addGroup(ID svcID, String name) { if (name == null) return; addGroup(svcID, root, name); } + public void addGroup(ID svcID, TreeParent parent, String name) { TreeGroup oldgrp = findGroup(parent, name); if (oldgrp != null) { @@ -492,6 +575,7 @@ public class RosterView extends ViewPart { TreeGroup newgrp = new TreeGroup(svcID, name); parent.addChild(newgrp); } + public void removeGroup(TreeParent parent, String name) { TreeGroup oldgrp = findGroup(parent, name); if (oldgrp == null) { @@ -501,20 +585,25 @@ public class RosterView extends ViewPart { // Else it is there...and we remove it parent.removeChild(oldgrp); } + public void removeGroup(String name) { if (name == null) return; removeGroup(root, name); } + public void addEntry(IRosterEntry entry) { addEntry(root, entry); } + public void replaceEntry(IRosterEntry entry) { replaceEntry(root, entry); } + public void removeRosterEntry(ID entry) { removeEntry(root, entry); } + public void removeEntry(TreeParent parent, ID entry) { TreeBuddy buddy = findBuddy(parent, entry); if (buddy == null) @@ -525,6 +614,7 @@ public class RosterView extends ViewPart { refreshView(); } } + protected void removeChildren(TreeParent parent, ID svcID) { TreeObject[] childs = parent.getChildren(); for (int i = 0; i < childs.length; i++) { @@ -546,6 +636,7 @@ public class RosterView extends ViewPart { } } } + public void removeAllEntriesForAccount(UserAccount account) { if (account == null) { root = null; @@ -553,12 +644,14 @@ public class RosterView extends ViewPart { removeChildren(root, account.getServiceID()); } } + private void initialize() { root = new TreeParent("Buddy List"); invisibleRoot = new TreeParent(""); invisibleRoot.addChild(root); } } + class ViewLabelProvider extends LabelProvider { public String getText(Object obj) { String label = null; @@ -570,6 +663,7 @@ public class RosterView extends ViewPart { } else return obj.toString(); } + public Image getImage(Object obj) { Image image = null; // By default, no image exists for obj, but if // found to be a specific instance, load from @@ -593,10 +687,13 @@ public class RosterView extends ViewPart { return image; } } + class NameSorter extends ViewerSorter { } + public RosterView() { } + protected void refreshView() { Display.getDefault().asyncExec(new Runnable() { public void run() { @@ -608,9 +705,11 @@ public class RosterView extends ViewPart { } }); } + protected void expandAll() { viewer.expandToLevel(TREE_EXPANSION_LEVELS); } + public void createPartControl(Composite parent) { viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL); viewer.setContentProvider(new ViewContentProvider()); @@ -623,6 +722,7 @@ public class RosterView extends ViewPart { hookDoubleClickAction(); contributeToActionBars(); } + private void hookContextMenu() { MenuManager menuMgr = new MenuManager("#PopupMenu"); menuMgr.setRemoveAllWhenShown(true); @@ -635,11 +735,13 @@ public class RosterView extends ViewPart { viewer.getControl().setMenu(menu); getSite().registerContextMenu(menuMgr, viewer); } + private void contributeToActionBars() { IActionBars bars = getViewSite().getActionBars(); fillLocalPullDown(bars.getMenuManager()); fillLocalToolBar(bars.getToolBarManager()); } + private void fillLocalPullDown(IMenuManager manager) { // manager.add(addBuddyAction); // manager.add(new Separator()); @@ -650,6 +752,7 @@ public class RosterView extends ViewPart { manager.add(disconnectAction); manager.add(openChatRoomAction); } + private void fillContextMenu(IMenuManager manager) { final TreeObject treeObject = getSelectedTreeObject(); final ID targetID = treeObject.getUserID(); @@ -698,25 +801,21 @@ public class RosterView extends ViewPart { final TreeGroup treeGroup = (TreeGroup) treeObject; final String groupName = treeGroup.getName(); /* - Action addUserAction = new Action() { - public void run() { - addUserToGroup(treeGroup.getServiceID(), groupName); - } - }; - - addUserAction.setText("Add buddy to " + treeObject.getName() - + " for account " + treeGroup.getServiceID().getName()); - addUserAction.setImageDescriptor(ImageDescriptor - .createFromURL(UiPlugin.getDefault().find( - new Path(ADDBUDDY_ICON)))); - manager.add(addUserAction); - */ + * Action addUserAction = new Action() { public void run() { + * addUserToGroup(treeGroup.getServiceID(), groupName); } }; + * + * addUserAction.setText("Add buddy to " + treeObject.getName() + " + * for account " + treeGroup.getServiceID().getName()); + * addUserAction.setImageDescriptor(ImageDescriptor + * .createFromURL(UiPlugin.getDefault().find( new + * Path(ADDBUDDY_ICON)))); manager.add(addUserAction); + */ Action removeGroupAction = new Action() { public void run() { removeGroup(groupName); } }; - + String accountName = treeGroup.getServiceID().getName(); removeGroupAction.setText("Remove " + treeObject.getName() + " for account " + accountName); @@ -732,6 +831,7 @@ public class RosterView extends ViewPart { // Other plug-ins can contribute there actions here manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); } + protected void openDialogAndSendRequest(ID svcID, String name, String groupName) { String[] groupNames = this.getGroupNames(); @@ -756,6 +856,7 @@ public class RosterView extends ViewPart { inputHandler.sendRosterAdd(user, nickname, sendGroups); } } + protected void requestAuthFrom(TreeBuddy buddy, TreeGroup tg) { if (buddy == null) return; @@ -764,9 +865,11 @@ public class RosterView extends ViewPart { String groupName = (tg == null) ? null : tg.getName(); openDialogAndSendRequest(buddy.getServiceID(), name, groupName); } + protected void addUserToGroup(ID serviceID, String groupName) { openDialogAndSendRequest(serviceID, null, groupName); } + protected void removeUserFromGroup(TreeBuddy buddy, TreeGroup group) { UserAccount account = getAccount(buddy.getServiceID()); if (account != null) { @@ -774,12 +877,14 @@ public class RosterView extends ViewPart { handler.sendRosterRemove(buddy.getUserID()); } } + protected TreeObject getSelectedTreeObject() { ISelection selection = viewer.getSelection(); Object obj = ((IStructuredSelection) selection).getFirstElement(); TreeObject treeObject = (TreeObject) obj; return treeObject; } + private void fillLocalToolBar(IToolBarManager manager) { // manager.add(addBuddyAction); // manager.add(new Separator()); @@ -790,6 +895,7 @@ public class RosterView extends ViewPart { manager.add(disconnectAction); manager.add(openChatRoomAction); } + protected ID inputIMTarget() { InputDialog dlg = new InputDialog(getSite().getShell(), "Send IM", "Please enter the XMPP ID of the person you would like to IM", @@ -812,6 +918,7 @@ public class RosterView extends ViewPart { } return null; } + private void makeActions() { /* * chatAction = new Action() { public void run() { ID targetID = @@ -854,16 +961,31 @@ public class RosterView extends ViewPart { new Path(DISCONNECT_ICON_DISABLED)))); openChatRoomAction = new Action() { public void run() { - IChatRoomManager managers[] = new IChatRoomManager[accounts.size()]; + IChatRoomManager managers[] = new IChatRoomManager[accounts + .size()]; int j = 0; - for(Iterator i=accounts.values().iterator(); i.hasNext(); ) { + for (Iterator i = accounts.values().iterator(); i.hasNext();) { UserAccount ua = (UserAccount) i.next(); managers[j++] = ua.getContainer().getChatRoomManager(); } ChatRoomSelectionDialog dialog = new ChatRoomSelectionDialog( - RosterView.this.getViewSite().getShell(), managers); - dialog.setBlockOnOpen(true); - dialog.open(); + RosterView.this.getViewSite().getShell(), managers); + dialog.setBlockOnOpen(true); + dialog.open(); + + IWorkbenchWindow ww = PlatformUI.getWorkbench() + .getActiveWorkbenchWindow(); + IWorkbenchPage wp = ww.getActivePage(); + try { + IViewPart view = wp + .showView("org.eclipse.ecf.ui.views.ChatRoomView"); + + ((ChatRoomView)view).setRoomInfo(dialog.getSelectedRoom()); + ((ChatRoomView)view).initialize(); + } catch (PartInitException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } } }; openChatRoomAction.setText("Enter Chatroom"); @@ -902,6 +1024,7 @@ public class RosterView extends ViewPart { * Path(ADDBUDDY_ICON)))); */ } + protected ChatWindow openChatWindowForTarget(ID targetID) { if (targetID == null) return null; @@ -922,6 +1045,7 @@ public class RosterView extends ViewPart { } return window; } + protected ChatWindow makeChatWindowForTarget(ID targetID) { UserAccount account = getAccountForUser(targetID); if (account == null) @@ -933,6 +1057,7 @@ public class RosterView extends ViewPart { chatThreads.put(targetID, window); return window; } + private void hookDoubleClickAction() { viewer.addDoubleClickListener(new IDoubleClickListener() { public void doubleClick(DoubleClickEvent event) { @@ -940,12 +1065,14 @@ public class RosterView extends ViewPart { } }); } + /** * Passing the focus request to the viewer's control. */ public void setFocus() { viewer.getControl().setFocus(); } + public void handleRosterEntry(ID groupID, IRosterEntry entry) { if (entry == null) return; @@ -960,10 +1087,12 @@ public class RosterView extends ViewPart { refreshView(); } } + public void handlePresence(ID groupID, ID userID, IPresence presence) { IRosterEntry entry = new RosterEntry(groupID, userID, null, presence); handleRosterEntry(groupID, entry); } + protected UserAccount getAccountForUser(ID userID) { ViewContentProvider vcp = (ViewContentProvider) viewer .getContentProvider(); @@ -975,6 +1104,7 @@ public class RosterView extends ViewPart { UserAccount account = getAccount(buddy.getServiceID()); return account; } + protected ILocalInputHandler getHandlerForUser(ID userID) { UserAccount account = getAccountForUser(userID); if (account == null) @@ -982,6 +1112,7 @@ public class RosterView extends ViewPart { else return account.getInputHandler(); } + public Object getAdapter(Class clazz) { if (clazz != null && clazz.equals(ILocalInputHandler.class)) { return new ILocalInputHandler() { @@ -992,6 +1123,7 @@ public class RosterView extends ViewPart { } else System.err.println("handleTextLine(" + text + ")"); } + public void startTyping(ID userID) { ILocalInputHandler inputHandler = getHandlerForUser(userID); if (inputHandler != null) { @@ -999,9 +1131,11 @@ public class RosterView extends ViewPart { } else System.err.println("handleStartTyping()"); } + public void disconnect() { disconnect(); } + public void updatePresence(ID userID, IPresence presence) { ILocalInputHandler inputHandler = getHandlerForUser(userID); if (inputHandler != null) { @@ -1010,9 +1144,11 @@ public class RosterView extends ViewPart { System.err.println("updatePresence(" + userID + "," + presence + ")"); } + public void sendRosterAdd(String user, String name, String[] groups) { } + public void sendRosterRemove(ID userID) { ILocalInputHandler inputHandler = getHandlerForUser(userID); if (inputHandler != null) { @@ -1028,15 +1164,18 @@ public class RosterView extends ViewPart { } else return null; } + protected String getWindowInitText(ID targetID) { String result = "chat with " + targetID.getName() + " started " + getDateAndTime() + "\n\n"; return result; } + protected String getDateAndTime() { SimpleDateFormat sdf = new SimpleDateFormat("MM:dd hh:mm:ss"); return sdf.format(new Date()); } + public void handleMessage(ID groupID, ID fromID, ID toID, IMessageListener.Type type, String subject, String message) { ChatWindow window = openChatWindowForTarget(fromID); @@ -1047,12 +1186,15 @@ public class RosterView extends ViewPart { + (new SimpleDateFormat("hh:mm:ss").format(new Date()))); } } - public void addAccount(ID account, IUser user, ILocalInputHandler handler, IPresenceContainer container) { + + public void addAccount(ID account, IUser user, ILocalInputHandler handler, + IPresenceContainer container) { if (account != null) { addAccount(new UserAccount(account, user, handler, container)); setToolbarEnabled(true); } } + protected void setToolbarEnabled(boolean enabled) { disconnectAction.setEnabled(enabled); openChatRoomAction.setEnabled(enabled); @@ -1060,12 +1202,14 @@ public class RosterView extends ViewPart { // addGroupAction.setEnabled(enabled); // addBuddyAction.setEnabled(enabled); } + public void accountDeparted(ID serviceID) { UserAccount account = getAccount(serviceID); if (account != null) { handleAccountDeparted(account); } } + protected void disposeAllChatWindowsForAccount(UserAccount account, String status) { synchronized (chatThreads) { @@ -1083,6 +1227,7 @@ public class RosterView extends ViewPart { } } } + protected void removeAllRosterEntriesForAccount(UserAccount account) { ViewContentProvider vcp = (ViewContentProvider) viewer .getContentProvider(); @@ -1091,6 +1236,7 @@ public class RosterView extends ViewPart { refreshView(); } } + public String[] getGroupNames() { ViewContentProvider vcp = (ViewContentProvider) viewer .getContentProvider(); @@ -1099,6 +1245,7 @@ public class RosterView extends ViewPart { } else return new String[0]; } + public String getSelectedGroupName() { TreeObject to = getSelectedTreeObject(); if (to == null) @@ -1109,6 +1256,7 @@ public class RosterView extends ViewPart { } return null; } + public void addGroup(ID svcID, String name) { ViewContentProvider vcp = (ViewContentProvider) viewer .getContentProvider(); @@ -1117,6 +1265,7 @@ public class RosterView extends ViewPart { refreshView(); } } + public void removeGroup(String name) { ViewContentProvider vcp = (ViewContentProvider) viewer .getContentProvider(); @@ -1125,6 +1274,7 @@ public class RosterView extends ViewPart { refreshView(); } } + public void removeRosterEntry(ID id) { ViewContentProvider vcp = (ViewContentProvider) viewer .getContentProvider(); @@ -1133,6 +1283,7 @@ public class RosterView extends ViewPart { refreshView(); } } + protected void handleAccountDeparted(UserAccount account) { removeAllRosterEntriesForAccount(account); disposeAllChatWindowsForAccount(account, @@ -1141,6 +1292,7 @@ public class RosterView extends ViewPart { if (accounts.size() == 0) setToolbarEnabled(false); } + public void handleSetRosterEntry(ID groupID, IRosterEntry entry) { if (entry == null) return; @@ -1156,13 +1308,11 @@ public class RosterView extends ViewPart { } } /* - public IPresenceContainer getPresenceContainer() { - return presenceContainer; - } - */ + * public IPresenceContainer getPresenceContainer() { return + * presenceContainer; } + */ /* - public void setPresenceContainer(IPresenceContainer presenceContainer) { - this.presenceContainer = presenceContainer; - } - */ + * public void setPresenceContainer(IPresenceContainer presenceContainer) { + * this.presenceContainer = presenceContainer; } + */ }
\ No newline at end of file |
