Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorslewis2005-04-13 05:09:56 +0000
committerslewis2005-04-13 05:09:56 +0000
commitc60ceea0e94b3a5208c8a9c2c4070b67fb8b75d8 (patch)
tree1c017b1d4c4b0a83e46150d81f06af5805bc25ac
parent7dbb59afa4852d655b454fc0804855599ab7596d (diff)
downloadorg.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.java19
-rw-r--r--framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/dialogs/SelectGroup.java79
-rw-r--r--framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/ChatWindow.java12
-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.java55
-rw-r--r--framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/TextChatComposite.java8
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.xmpp/src/org/eclipse/ecf/provider/xmpp/container/XMPPSharedObject.java4
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();
}

Back to the top