diff --git a/mozilla/java/webclient/classes_spec/org/mozilla/webclient/impl/wrapper_native/CurrentPageImpl.java b/mozilla/java/webclient/classes_spec/org/mozilla/webclient/impl/wrapper_native/CurrentPageImpl.java index d58688f978f..cc49cace96e 100644 --- a/mozilla/java/webclient/classes_spec/org/mozilla/webclient/impl/wrapper_native/CurrentPageImpl.java +++ b/mozilla/java/webclient/classes_spec/org/mozilla/webclient/impl/wrapper_native/CurrentPageImpl.java @@ -21,20 +21,21 @@ package org.mozilla.webclient.impl.wrapper_native; +import java.awt.Toolkit; +import java.awt.datatransfer.Clipboard; +import java.awt.datatransfer.ClipboardOwner; +import java.awt.datatransfer.StringSelection; +import java.awt.datatransfer.Transferable; import org.mozilla.util.Assert; -import org.mozilla.util.Log; import org.mozilla.util.ParameterCheck; import org.mozilla.webclient.BrowserControl; import org.mozilla.webclient.CurrentPage2; import org.mozilla.webclient.Selection; -import org.mozilla.webclient.WindowControl; import org.mozilla.webclient.impl.WrapperFactory; import org.mozilla.webclient.impl.DOMTreeDumper; import java.util.Properties; -import java.io.*; -import java.net.*; import org.w3c.dom.Document; import org.w3c.dom.Node; @@ -43,7 +44,8 @@ import org.mozilla.webclient.UnimplementedException; import org.mozilla.dom.DOMAccessor; -public class CurrentPageImpl extends ImplObjectNative implements CurrentPage2 +public class CurrentPageImpl extends ImplObjectNative implements CurrentPage2, + ClipboardOwner { // // Protected Constants @@ -100,7 +102,12 @@ public void copyCurrentSelectionToSystemClipboard() NativeEventThread.instance.pushBlockingWCRunnable(new WCRunnable() { public Object run() { + transferable = null; nativeCopyCurrentSelectionToSystemClipboard(CurrentPageImpl.this.getNativeBrowserControl()); + if (null != transferable) { + Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard(); + clip.setContents(transferable, CurrentPageImpl.this); + } return null; } public String toString() { @@ -336,10 +343,21 @@ public void printPreview(boolean pre) }); } +private Transferable transferable = null; + void addStringToTransferable(String mimeType, String text) { System.out.println("mimeType:" + mimeType + " text:" + text); + if (null == transferable) { + if (mimeType.equals("text/unicode")) { + transferable = new StringSelection(text); + } + } } +public void lostOwnership(Clipboard clipboard, Transferable contents) { +} + + // // Native methods // @@ -372,4 +390,5 @@ native public void nativePrint(int webShellPtr); native public void nativePrintPreview(int webShellPtr, boolean preview); + } // end of class CurrentPageImpl diff --git a/mozilla/java/webclient/test/automated/src/classes/org/mozilla/webclient/CurrentPageTest.java b/mozilla/java/webclient/test/automated/src/classes/org/mozilla/webclient/CurrentPageTest.java index 9042f870ae6..5417b7a007b 100644 --- a/mozilla/java/webclient/test/automated/src/classes/org/mozilla/webclient/CurrentPageTest.java +++ b/mozilla/java/webclient/test/automated/src/classes/org/mozilla/webclient/CurrentPageTest.java @@ -1,5 +1,5 @@ /* - * $Id: CurrentPageTest.java,v 1.13 2007-01-30 18:26:37 edburns%acm.org Exp $ + * $Id: CurrentPageTest.java,v 1.14 2007-02-16 13:29:15 edburns%acm.org Exp $ */ /* @@ -90,7 +90,7 @@ public class CurrentPageTest extends WebclientTestCase implements ClipboardOwner // Testcases // - public void NOT_testCopyCurrentSelectionToSystemClipboard() throws Exception { + public void testCopyCurrentSelectionToSystemClipboard() throws Exception { BrowserControl firstBrowserControl = null; DocumentLoadListenerImpl listener = null; Selection selection = null; @@ -145,15 +145,23 @@ public class CurrentPageTest extends WebclientTestCase implements ClipboardOwner contents = clipboard.getContents(this); assertNotNull(contents); - DataFlavor bestTextFlavor = DataFlavor.getTextPlainUnicodeFlavor(); - BufferedReader clipReader = - new BufferedReader(bestTextFlavor.getReaderForText(contents)); - String contentLine; - StringBuffer buf = new StringBuffer(); - while (null != (contentLine = clipReader.readLine())) { - buf.append(contentLine); - System.out.println(contentLine); - } + DataFlavor bestTextFlavor = DataFlavor.selectBestTextFlavor(clipboard.getAvailableDataFlavors()); + + BufferedReader clipReader = null; + try { + clipReader = new BufferedReader(bestTextFlavor.getReaderForText(contents)); + + } + catch (Throwable e) { + fail("Can't get reader for text: Throwable: " + e.toString() + " " + + e.getMessage()); + } + String contentLine; + StringBuffer buf = new StringBuffer(); + while (null != (contentLine = clipReader.readLine())) { + buf.append(contentLine); + System.out.println(contentLine); + } assertEquals("HistoryTest0This is page 0 of the history test.next", buf.toString());