diff options
| author | bbokowski | 2005-12-07 03:53:15 +0000 |
|---|---|---|
| committer | bbokowski | 2005-12-07 03:53:15 +0000 |
| commit | 69e117b061970b12cfbecad6621d640856581e70 (patch) | |
| tree | 69b1be86be83989b2db98590fefa4ea9dbae7818 | |
| parent | 6af539a8d1510c6bb4f3e44c3f6e4065634799a9 (diff) | |
| download | org.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
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; + } + } |
