### Eclipse Workspace Patch 1.0 #P org.eclipse.ecf.presence.ui Index: src/org/eclipse/ecf/presence/ui/chatroom/ChatRoomManagerView.java =================================================================== RCS file: /cvsroot/technology/org.eclipse.ecf/plugins/org.eclipse.ecf.presence.ui/src/org/eclipse/ecf/presence/ui/chatroom/ChatRoomManagerView.java,v retrieving revision 1.13 diff -u -r1.13 ChatRoomManagerView.java --- src/org/eclipse/ecf/presence/ui/chatroom/ChatRoomManagerView.java 21 Jul 2007 22:43:55 -0000 1.13 +++ src/org/eclipse/ecf/presence/ui/chatroom/ChatRoomManagerView.java 22 Jul 2007 23:08:26 -0000 @@ -44,6 +44,7 @@ import org.eclipse.ecf.presence.chatroom.IChatRoomParticipantListener; import org.eclipse.ecf.presence.im.IChatID; import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; import org.eclipse.jface.action.IMenuListener; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.MenuManager; @@ -58,7 +59,9 @@ import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.ListViewer; +import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.ViewerSorter; import org.eclipse.osgi.util.NLS; import org.eclipse.swt.SWT; @@ -84,6 +87,7 @@ import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.List; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.ScrollBar; import org.eclipse.swt.widgets.Text; @@ -236,6 +240,9 @@ makeActions(); hookContextMenu(); + if (withParticipants) { + hookParticipantsContextMenu(); + } } private StyledText createStyledTextWidget(Composite parent) { @@ -331,7 +338,64 @@ }; getSite().registerContextMenu(menuMgr, selectionProvider); } + + private void fillParticipantsContextMenu(IMenuManager manager) { + IAction action = new Action() { + + public void run() { + if (commandListener == null) { + return; + } + ISelection selection = listViewer.getSelection(); + if (selection instanceof IStructuredSelection) { + IUser user = (IUser) ((IStructuredSelection)selection).getFirstElement(); + handleTextInput("/kick "+user.getNickname()); + } + } + + }; + action.setText("Run Forest!"); + manager.add(action); + manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); + } + + private void hookParticipantsContextMenu() { + MenuManager menuMgr = new MenuManager(); + menuMgr.setRemoveAllWhenShown(true); + menuMgr.addMenuListener(new IMenuListener() { + public void menuAboutToShow(IMenuManager manager) { + fillParticipantsContextMenu(manager); + } + }); + + final List list = (List) listViewer.getControl(); + + Menu menu = menuMgr.createContextMenu(list); + list.setMenu(menu); + ISelectionProvider selectionProvider = new ISelectionProvider() { + + public void addSelectionChangedListener( + ISelectionChangedListener listener) { + } + public ISelection getSelection() { + ISelection selection = new StructuredSelection(list.getSelectionIndices()); + + return selection; + } + + public void removeSelectionChangedListener( + ISelectionChangedListener listener) { + } + + public void setSelection(ISelection selection) { + listViewer.setSelection(selection); + } + + }; + getSite().registerContextMenu(menuMgr, selectionProvider); + } + private void makeActions() { tabSelectAll = new Action() { public void run() {