Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbbokowski2005-12-07 03:53:15 +0000
committerbbokowski2005-12-07 03:53:15 +0000
commit69e117b061970b12cfbecad6621d640856581e70 (patch)
tree69b1be86be83989b2db98590fefa4ea9dbae7818
parent6af539a8d1510c6bb4f3e44c3f6e4065634799a9 (diff)
downloadorg.eclipse.ecf-69e117b061970b12cfbecad6621d640856581e70.tar.gz
org.eclipse.ecf-69e117b061970b12cfbecad6621d640856581e70.tar.xz
org.eclipse.ecf-69e117b061970b12cfbecad6621d640856581e70.zip
First cut at Bug 119206 Add 'event history' as hyperlinks to collab text chat output
-rw-r--r--examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/share/EclipseCollabSharedObject.java2
-rw-r--r--examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/ui/ChatComposite.java70
-rw-r--r--examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/ui/ChatLine.java35
-rw-r--r--framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/SimpleLinkTextViewer.java4
4 files changed, 74 insertions, 37 deletions
diff --git a/examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/share/EclipseCollabSharedObject.java b/examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/share/EclipseCollabSharedObject.java
index 6087fc28a..c86eba456 100644
--- a/examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/share/EclipseCollabSharedObject.java
+++ b/examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/share/EclipseCollabSharedObject.java
@@ -937,7 +937,7 @@ public class EclipseCollabSharedObject extends GenericSharedObject implements
projectName = projectName + "/";
}
// XXX construct string for output
- final StringBuffer se = new StringBuffer("Share my selection on ");
+ final StringBuffer se = new StringBuffer("Shared selection on ");
se.append(projectName).append(resourceName);
if (marker != null) {
se.append(" (");
diff --git a/examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/ui/ChatComposite.java b/examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/ui/ChatComposite.java
index 6339487a7..6e15339f0 100644
--- a/examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/ui/ChatComposite.java
+++ b/examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/ui/ChatComposite.java
@@ -28,6 +28,7 @@ import org.eclipse.ecf.core.identity.IDFactory;
import org.eclipse.ecf.example.collab.ClientPlugin;
import org.eclipse.ecf.example.collab.share.User;
import org.eclipse.ecf.example.collab.share.io.FileTransferParams;
+import org.eclipse.ecf.ui.views.SimpleLinkTextViewer;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IMenuListener;
import org.eclipse.jface.action.IMenuManager;
@@ -119,7 +120,7 @@ public class ChatComposite extends Composite {
protected static final int DEFAULT_INPUT_SEPARATOR = 5;
Text textinput = null;
- TextViewer textoutput = null;
+ SimpleLinkTextViewer textoutput = null;
ChatTreeViewer treeView = null;
ChatDropTarget chatDropTarget = null;
TreeDropTarget treeDropTarget = null;
@@ -164,8 +165,7 @@ public class ChatComposite extends Composite {
cl = new ChatLayout(DEFAULT_INPUT_HEIGHT, DEFAULT_INPUT_SEPARATOR);
setLayout(cl);
treeView = tree;
- textoutput = new TextViewer(this, SWT.V_SCROLL | SWT.H_SCROLL
- | SWT.WRAP | SWT.BORDER);
+ textoutput = new SimpleLinkTextViewer(this);
String fontName = ClientPlugin.getDefault().getPluginPreferences().getString(ClientPlugin.PREF_CHAT_FONT);
if (!(fontName == null) && !(fontName.equals(""))) {
FontRegistry fr = ClientPlugin.getDefault().getFontRegistry();
@@ -177,8 +177,7 @@ public class ChatComposite extends Composite {
ClientPlugin.getDefault().getPluginPreferences().addPropertyChangeListener(new FontPropertyChangeListener());
- textoutput.setDocument(new Document(initText));
- textoutput.setEditable(false);
+ textoutput.append(initText);
textinput = new Text(this, SWT.SINGLE | SWT.BORDER);
cl.setInputTextHeight(textinput.getFont().getFontData()[0]
@@ -245,42 +244,47 @@ public class ChatComposite extends Composite {
StyledText st = textoutput.getTextWidget();
- if (text == null || textoutput == null || st == null)
+ if (text == null || textoutput == null || st == null || st.isDisposed())
return;
- int startRange = st.getText().length();
+// int startRange = st.getText().length();
StringBuffer sb = new StringBuffer();
if (text.getOriginator() != null) {
sb.append(text.getOriginator().getNickname() + ": ");
- StyleRange sr = new StyleRange();
- sr.start = startRange;
- sr.length = sb.length();
- if (view.userdata.getUserID().equals(text.getOriginator().getUserID())) {
- sr.foreground = meColor;
- } else {
- sr.foreground = otherColor;
- }
- st.append(sb.toString());
- st.setStyleRange(sr);
+// StyleRange sr = new StyleRange();
+// sr.start = startRange;
+// sr.length = sb.length();
+// if (view.userdata.getUserID().equals(text.getOriginator().getUserID())) {
+// sr.foreground = meColor;
+// } else {
+// sr.foreground = otherColor;
+// }
+// st.append(sb.toString());
+// st.setStyleRange(sr);
+ textoutput.append(sb.toString());
}
- int beforeMessageIndex = st.getText().length();
+// int beforeMessageIndex = st.getText().length();
- st.append(text.getText());
+ if(text.getOnClick()==null)
+ textoutput.append(text.getText());
+ else
+ textoutput.appendLink(text.getText(), text.getOnClick());
- if (text.getOriginator() == null) {
- StyleRange sr = new StyleRange();
- sr.start = beforeMessageIndex;
- sr.length = text.getText().length();
- sr.foreground = systemColor;
- st.setStyleRange(sr);
- }
+// if (text.getOriginator() == null) {
+// StyleRange sr = new StyleRange();
+// sr.start = beforeMessageIndex;
+// sr.length = text.getText().length();
+// sr.foreground = systemColor;
+// st.setStyleRange(sr);
+// }
if (!text.isNoCRLF()) {
- st.append("\n");
+ textoutput.append("\n");
}
-
+
+ // scroll to end
String t = st.getText();
if (t == null)
return;
@@ -622,9 +626,9 @@ public class ChatComposite extends Composite {
fillContextMenu(manager);
}
});
- Menu menu = menuMgr.createContextMenu(textoutput.getControl());
- textoutput.getControl().setMenu(menu);
- this.view.view.getSite().registerContextMenu(menuMgr, textoutput);
+ Menu menu = menuMgr.createContextMenu(textoutput.getTextWidget());
+ textoutput.getTextWidget().setMenu(menu);
+ // TODO this.view.view.getSite().registerContextMenu(menuMgr, textoutput);
MenuManager treeMenuMgr = new MenuManager("#PopupMenu");
treeMenuMgr.setRemoveAllWhenShown(true);
@@ -644,7 +648,7 @@ public class ChatComposite extends Composite {
}
protected Control getTextControl() {
- return textoutput.getControl();
+ return textoutput.getTextWidget();
}
protected void makeActions() {
@@ -1359,7 +1363,7 @@ public class ChatComposite extends Composite {
}
protected void initializeDropTargets() {
- chatDropTarget = new ChatDropTarget(view,textoutput.getControl(), this);
+ chatDropTarget = new ChatDropTarget(view,textoutput.getTextWidget(), this);
treeDropTarget = new TreeDropTarget(view,treeView.getControl(), this);
}
diff --git a/examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/ui/ChatLine.java b/examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/ui/ChatLine.java
index aae25236f..0c8b96b56 100644
--- a/examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/ui/ChatLine.java
+++ b/examples/bundles/org.eclipse.ecf.example.collab/src/org/eclipse/ecf/example/collab/ui/ChatLine.java
@@ -27,19 +27,32 @@ public class ChatLine {
private boolean isPrivate = false;
private boolean isRaw = false;
private boolean noCRLF = false;
+ private Runnable onClick = null;
public ChatLine() {
-
+ this(null);
}
public ChatLine(String text) {
- this.text = text;
-
+ this(text, null);
}
public ChatLine(String text, User user) {
+ this(text, user, null);
+ }
+
+ /**
+ * Creates a chat line. If a non-null <code>onClick</code> runnable is given,
+ * this chat line has an associated handler that should be called when the
+ * user clicks on the chat line.
+ * @param text
+ * @param user
+ * @param onClick
+ */
+ public ChatLine(String text, User user, Runnable onClick) {
this.text = text;
this.originator = user;
+ this.onClick = onClick;
}
/**
* @return Returns the originator.
@@ -101,4 +114,20 @@ public class ChatLine {
public void setNoCRLF(boolean noCRLF) {
this.noCRLF = noCRLF;
}
+
+ /**
+ *
+ * @return the runnable
+ */
+ public Runnable getOnClick() {
+ return onClick;
+ }
+
+ /**
+ *
+ * @param onClick
+ */
+ public void setOnClick(Runnable onClick) {
+ this.onClick = onClick;
+ }
}
diff --git a/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/SimpleLinkTextViewer.java b/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/SimpleLinkTextViewer.java
index 441b78432..be76d8364 100644
--- a/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/SimpleLinkTextViewer.java
+++ b/framework/bundles/org.eclipse.ecf.ui/src/org/eclipse/ecf/ui/views/SimpleLinkTextViewer.java
@@ -230,4 +230,8 @@ public class SimpleLinkTextViewer {
}
}
+ public StyledText getTextWidget() {
+ return styledText;
+ }
+
}

Back to the top