diff options
| author | slewis | 2005-04-13 05:09:56 +0000 |
|---|---|---|
| committer | slewis | 2005-04-13 05:09:56 +0000 |
| commit | c60ceea0e94b3a5208c8a9c2c4070b67fb8b75d8 (patch) | |
| tree | 1c017b1d4c4b0a83e46150d81f06af5805bc25ac | |
| parent | 7dbb59afa4852d655b454fc0804855599ab7596d (diff) | |
| download | org.eclipse.ecf-c60ceea0e94b3a5208c8a9c2c4070b67fb8b75d8.tar.gz org.eclipse.ecf-c60ceea0e94b3a5208c8a9c2c4070b67fb8b75d8.tar.xz org.eclipse.ecf-c60ceea0e94b3a5208c8a9c2c4070b67fb8b75d8.zip | |
Improvements to UI
| -rw-r--r-- | examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/Client.java | 19 | ||||
| -rw-r--r-- | framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/dialogs/SelectGroup.java | 79 | ||||
| -rw-r--r-- | framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/ChatWindow.java | 12 | ||||
| -rw-r--r-- | framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/ILocalInputHandler.java (renamed from framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/ITextInputHandler.java) | 8 | ||||
| -rw-r--r-- | framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/RosterView.java | 55 | ||||
| -rw-r--r-- | framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/TextChatComposite.java | 8 | ||||
| -rw-r--r-- | providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/provider/xmpp/container/XMPPSharedObject.java | 4 |
7 files changed, 145 insertions, 40 deletions
diff --git a/examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/Client.java b/examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/Client.java index 6c07b9d0a..b7bba52ab 100644 --- a/examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/Client.java +++ b/examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/Client.java @@ -48,7 +48,7 @@ import org.eclipse.ecf.presence.IRosterEntry; import org.eclipse.ecf.presence.ISubscribeListener; import org.eclipse.ecf.presence.impl.Presence; import org.eclipse.ecf.ui.dialogs.AuthorizeRequest; -import org.eclipse.ecf.ui.views.ITextInputHandler; +import org.eclipse.ecf.ui.views.ILocalInputHandler; import org.eclipse.ecf.ui.views.RosterView; import org.eclipse.swt.widgets.Display; import org.eclipse.ui.IViewPart; @@ -339,19 +339,23 @@ public class Client { String name = localUser.getName(); nickname = name.substring(0,name.indexOf("@")); } - rosterView.setLocalUser(new org.eclipse.ecf.core.user.User(localUser,nickname),new ITextInputHandler() { + rosterView.setLocalUser(new org.eclipse.ecf.core.user.User(localUser,nickname),new ILocalInputHandler() { - public void handleTextLine(ID userID, String text) { + public void inputText(ID userID, String text) { messageSender.sendMessage(localUser,userID,null,null,text); } - public void handleStartTyping(ID userID) { + public void startTyping(ID userID) { //System.out.println("handleStartTyping("+userID+")"); } public void disconnect() { container.leaveGroup(); } + + public void updatePresence(ID userID, IPresence presence) { + presenceSender.sendPresenceUpdate(localUser,userID,presence); + } }); } catch (Exception e) { @@ -429,9 +433,14 @@ public class Client { AuthorizeRequest authRequest = new AuthorizeRequest(ww.getShell(),fromID.getName(),localUser.getName()); authRequest.open(); int res = authRequest.getButtonPressed(); - if (res == AuthorizeRequest.AUTHORIZE_AND_ADD) { + if (res == AuthorizeRequest.AUTHORIZE_AND_ADD) { if (presenceSender != null) { presenceSender.sendPresenceUpdate(localUser,fromID,new Presence(IPresence.Type.SUBSCRIBED)); + // Get group info here + if (rosterView != null) { + String [] groupNames = rosterView.getGroupNames(); + // XXX TODO + } presenceSender.sendPresenceUpdate(localUser,fromID,new Presence(IPresence.Type.SUBSCRIBE)); } } else if (res == AuthorizeRequest.AUTHORIZE_ID) { diff --git a/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/dialogs/SelectGroup.java b/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/dialogs/SelectGroup.java new file mode 100644 index 000000000..6a3813392 --- /dev/null +++ b/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/dialogs/SelectGroup.java @@ -0,0 +1,79 @@ +package org.eclipse.ecf.ui.dialogs; + +import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.dialogs.IDialogConstants; +import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.Point; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Shell; + +public class SelectGroup extends Dialog { + + private Label username; + private Combo groups; + + private String user = null; + private String [] existing = null; + + private int result; + + public SelectGroup(Shell parentShell,String username, String [] existing) { + super(parentShell); + this.user = username; + this.existing = existing; + } + protected Control createDialogArea(Composite parent) { + Composite container = (Composite) super.createDialogArea(parent); + final GridLayout gridLayout = new GridLayout(); + gridLayout.horizontalSpacing = 0; + container.setLayout(gridLayout); + + final Composite composite_1 = new Composite(container, SWT.NONE); + final GridLayout gridLayout_1 = new GridLayout(); + gridLayout_1.horizontalSpacing = 0; + gridLayout_1.numColumns = 2; + composite_1.setLayout(gridLayout_1); + + final Label label = new Label(composite_1, SWT.NONE); + label.setText("Please select a group for"); + + username = new Label(composite_1, SWT.NONE); + username.setText(" user"); + + final Composite composite = new Composite(container, SWT.NONE); + composite.setLayoutData(new GridData(GridData.FILL_BOTH)); + composite.setLayout(new GridLayout()); + + groups = new Combo(composite, SWT.NONE); + groups.setToolTipText("Select group or enter new group"); + final GridData gridData = new GridData(GridData.GRAB_HORIZONTAL); + gridData.widthHint = 141; + groups.setLayoutData(gridData); + // + return container; + } + + protected void createButtonsForButtonBar(Composite parent) { + createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, + true); + createButton(parent, IDialogConstants.CANCEL_ID, + IDialogConstants.CANCEL_LABEL, false); + } + + public String getGroup() { + return groups.getText(); + } + protected Point getInitialSize() { + return new Point(292, 141); + } + protected void configureShell(Shell newShell) { + super.configureShell(newShell); + newShell.setText("Select Group"); + } + +} diff --git a/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/ChatWindow.java b/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/ChatWindow.java index 6c55e69ff..e5bd7fdfd 100644 --- a/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/ChatWindow.java +++ b/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/ChatWindow.java @@ -198,13 +198,13 @@ public class ChatWindow extends ApplicationWindow implements IMessageListener { */ protected Control createContents(Composite parent) { if (view == null) throw new NullPointerException("view cannot be null"); - // Get ITextInputHandler from view - ITextInputHandler inputHandler = null; - Object obj = view.getAdapter(ITextInputHandler.class); + // Get ILocalInputHandler from view + ILocalInputHandler inputHandler = null; + Object obj = view.getAdapter(ILocalInputHandler.class); if (obj == null) { - throw new NullPointerException("view "+view+" did not provide ITextInputHandler adapter"); - } else if (obj instanceof ITextInputHandler) { - inputHandler = (ITextInputHandler) obj; + throw new NullPointerException("view "+view+" did not provide ILocalInputHandler adapter"); + } else if (obj instanceof ILocalInputHandler) { + inputHandler = (ILocalInputHandler) obj; } chat = new TextChatComposite(parent, SWT.NORMAL, initText, inputHandler,getLocalUser(),getRemoteUser()); chat.setLayoutData(new GridData(GridData.FILL_BOTH)); diff --git a/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/ITextInputHandler.java b/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/ILocalInputHandler.java index 97201908e..35c43cb46 100644 --- a/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/ITextInputHandler.java +++ b/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/ILocalInputHandler.java @@ -12,9 +12,11 @@ package org.eclipse.ecf.ui.views; import org.eclipse.ecf.core.identity.ID; +import org.eclipse.ecf.presence.IPresence; -public interface ITextInputHandler { - public void handleTextLine(ID userID, String text); - public void handleStartTyping(ID userID); +public interface ILocalInputHandler { + public void inputText(ID userID, String text); + public void startTyping(ID userID); + public void updatePresence(ID userID, IPresence presence); public void disconnect(); } 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 4dee7e952..be7f24402 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 @@ -80,13 +80,22 @@ public class RosterView extends ViewPart implements IPresenceListener, IMessageL private Action addGroupAction; protected IUser localUser; - protected ITextInputHandler textInputHandler; + protected ILocalInputHandler textInputHandler; protected Hashtable chatThreads = new Hashtable(); protected ID groupID; protected IUser getLocalUser() { return localUser; } + + protected String getUserNameFromID(ID userID) { + if (userID == null) return ""; + String uname = userID.getName(); + String username = uname.substring(0,uname.indexOf("@")); + if (username.equals("")) { + return uname; + } else return username; + } public void dispose() { if (textInputHandler != null) { textInputHandler.disconnect(); @@ -257,15 +266,13 @@ public class RosterView extends ViewPart implements IPresenceListener, IMessageL } public TreeBuddy fillPresence(TreeBuddy obj, IPresence presence) { - if (presence == null) - return obj; - obj.removeChildren(); + obj.setPresence(presence); TreeObject type = new TreeObject("Status: " + presence.getType().toString()); obj.addChild(type); String status = presence.getStatus(); if (status != null && !status.equals("")) { - TreeObject stat = new TreeObject("Status Details: " + status); + TreeObject stat = new TreeObject("Details: " + status); obj.addChild(stat); } Map props = presence.getProperties(); @@ -281,13 +288,14 @@ public class RosterView extends ViewPart implements IPresenceListener, IMessageL } public TreeBuddy createBuddy(TreeBuddy oldBuddy, IRosterEntry entry) { - TreeBuddy newBuddy = (oldBuddy==null)?new TreeBuddy(entry.getUserID().getName(),entry.getUserID(),entry.getPresenceState()):oldBuddy; + String name = entry.getName(); + if (name == null) name = getUserNameFromID(entry.getUserID()); IPresence presence = entry.getPresenceState(); - if (presence != null) { - newBuddy.setPresence(presence); - newBuddy.addChild(new TreeObject("Name: "+entry.getName())); - fillPresence(newBuddy, presence); - } + TreeBuddy newBuddy = null; + if (oldBuddy==null) newBuddy = new TreeBuddy(name,entry.getUserID(),presence); + else newBuddy = oldBuddy; + if (presence != null) fillPresence(newBuddy, presence); + else if (oldBuddy == null) newBuddy.addChild(new TreeObject("Account: "+newBuddy.getUserID().getName())); return newBuddy; } @@ -574,7 +582,7 @@ public class RosterView extends ViewPart implements IPresenceListener, IMessageL } protected ID inputIMTarget() { - InputDialog dlg = new InputDialog(getSite().getShell(),"Send IM","Please enter the Jabber ID of the person you would like to IM","",null); + InputDialog dlg = new InputDialog(getSite().getShell(),"Send IM","Please enter the XMPP ID of the person you would like to IM","",null); dlg.setBlockOnOpen(true); int res = dlg.open(); if (res == InputDialog.OK) { @@ -601,7 +609,7 @@ public class RosterView extends ViewPart implements IPresenceListener, IMessageL } }; chatAction.setText("Send Instant Message..."); - chatAction.setToolTipText("Send Instant Message"); + chatAction.setToolTipText("Send instant message to arbitrary user"); chatAction.setImageDescriptor(ImageDescriptor.createFromURL( UiPlugin.getDefault().find(new Path(INSTANT_MESSAGE_ICON)))); chatAction.setEnabled(false); @@ -736,24 +744,24 @@ public class RosterView extends ViewPart implements IPresenceListener, IMessageL * * @see org.eclipse.ecf.ui.views.IConfigViewer#setUser(org.eclipse.ecf.core.user.IUser) */ - public void setLocalUser(IUser user, ITextInputHandler textInputHandler) { + public void setLocalUser(IUser user, ILocalInputHandler textInputHandler) { this.localUser = user; this.textInputHandler = textInputHandler; } public Object getAdapter(Class clazz) { - if (clazz != null && clazz.equals(ITextInputHandler.class)) { - return new ITextInputHandler() { - public void handleTextLine(ID userID, String text) { + if (clazz != null && clazz.equals(ILocalInputHandler.class)) { + return new ILocalInputHandler() { + public void inputText(ID userID, String text) { if (textInputHandler != null) { - textInputHandler.handleTextLine(userID, text); + textInputHandler.inputText(userID, text); } else System.out.println("handleTextLine(" + text + ")"); } - public void handleStartTyping(ID userID) { + public void startTyping(ID userID) { if (textInputHandler != null) { - textInputHandler.handleStartTyping(userID); + textInputHandler.startTyping(userID); } else System.out.println("handleStartTyping()"); } @@ -763,6 +771,13 @@ public class RosterView extends ViewPart implements IPresenceListener, IMessageL } else System.out.println("disconnect()"); } + + public void updatePresence(ID userID, IPresence presence) { + if (textInputHandler != null) { + textInputHandler.updatePresence(userID,presence); + } else + System.out.println("disconnect()"); + } }; } else if (clazz.equals(IPresenceListener.class)) { return this; diff --git a/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/TextChatComposite.java b/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/TextChatComposite.java index dae0d0b3a..6b3c3563e 100644 --- a/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/TextChatComposite.java +++ b/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/TextChatComposite.java @@ -71,7 +71,7 @@ public class TextChatComposite extends Composite { protected ChatLayout cl = null; protected boolean isTyping; protected String initText; - protected ITextInputHandler inputHandler; + protected ILocalInputHandler inputHandler; SimpleDateFormat df = new SimpleDateFormat("hh:mm a"); protected IUser localUser; protected IUser remoteUser; @@ -82,7 +82,7 @@ public class TextChatComposite extends Composite { private Action outputPaste = null; private Action outputSelectAll = null; - public TextChatComposite(Composite parent, int style, String initText, ITextInputHandler handler, IUser localUser, IUser remoteUser) { + public TextChatComposite(Composite parent, int style, String initText, ILocalInputHandler handler, IUser localUser, IUser remoteUser) { super(parent, style); this.initText = initText; @@ -364,7 +364,7 @@ public class TextChatComposite extends Composite { IUser localUser = getLocalUser(); IUser remoteUser = getRemoteUser(); if (localUser != null && remoteUser != null) { - inputHandler.handleTextLine(remoteUser.getID(),text); + inputHandler.inputText(remoteUser.getID(),text); appendText(new ChatLine(text,localUser)); } else { UiPlugin.getDefault().getLog().log(new Status(Status.ERROR,UiPlugin.PLUGIN_ID,100,"Null localUser or remoteUser for textchatcomposite",new NullPointerException())); @@ -379,7 +379,7 @@ public class TextChatComposite extends Composite { IUser localUser = getLocalUser(); IUser remoteUser = getRemoteUser(); if (localUser != null && remoteUser != null) { - inputHandler.handleStartTyping(remoteUser.getID()); + inputHandler.startTyping(remoteUser.getID()); } else { UiPlugin.getDefault().getLog().log(new Status(Status.ERROR,UiPlugin.PLUGIN_ID,100,"Null localUser or remoteUser for textchatcomposite",new NullPointerException())); } diff --git a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/provider/xmpp/container/XMPPSharedObject.java b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/provider/xmpp/container/XMPPSharedObject.java index c199ecd5c..90e782489 100644 --- a/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/provider/xmpp/container/XMPPSharedObject.java +++ b/providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/provider/xmpp/container/XMPPSharedObject.java @@ -130,8 +130,8 @@ public class XMPPSharedObject implements ISharedObject { }; } - protected ITextInputHandler getTextInputHandler() { - return new ITextInputHandler() { + protected ILocalInputHandler getTextInputHandler() { + return new ILocalInputHandler() { public void disconnect() { XMPPSharedObject.this.disconnect(); } |
