Changeset 7048 for lang/scala

Show
Ignore:
Timestamp:
02/23/08 00:45:35 (9 months ago)
Author:
keisuken
Message:

ClipBoard? utility updated.

Location:
lang/scala/sandbox
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • lang/scala/sandbox/src/jp/ne/cappuccino/keisuken/scl/awt/ClipBoard.scala

    r7035 r7048  
    11package jp.ne.cappuccino.keisuken.scl.awt 
    22 
     3import java.awt.{Toolkit} 
     4import java.io._ 
    35import java.awt.datatransfer._ 
    46 
     
    1517  } 
    1618 
    17   def flavorListener(proc: FlavorEvent => Unit): FlavorListener = 
    18     new FlavorAdapter(proc) 
     19  def copy( 
     20    clipboard: Clipboard, 
     21    contents: Transferable, owner: ClipboardOwner): Unit = 
     22    clipboard.setContents(contents, owner) 
    1923 
    20   def flavorsChanged( 
    21     clipboard: Clipboard, proc: FlavorEvent => Unit): Unit = 
    22     clipboard.addFlavorListener(flavorListener(proc)) 
     24  def copy(contents: Transferable, owner: ClipboardOwner): Unit = 
     25    copy(systemClipboard, contents, owner) 
     26 
     27  @throws(classOf[UnsupportedFlavorException]) 
     28  @throws(classOf[IOException]) 
     29  def paste(clipboard: Clipboard, flavor: DataFlavor): java.lang.Object = 
     30    clipboard.getData(flavor) 
     31 
     32  @throws(classOf[UnsupportedFlavorException]) 
     33  @throws(classOf[IOException]) 
     34  def paste(flavor: DataFlavor): java.lang.Object = 
     35    paste(systemClipboard, flavor) 
     36 
     37  def systemClipboard = Toolkit.getDefaultToolkit().getSystemClipboard() 
     38  def systemSelection = Toolkit.getDefaultToolkit().getSystemSelection() 
     39 
     40  def stringFlavor: DataFlavor = DataFlavor.stringFlavor 
     41  def imageFlavor: DataFlavor = DataFlavor.imageFlavor 
     42  def fileListFlavor: DataFlavor = DataFlavor.javaFileListFlavor 
     43 
     44  def add( 
     45    clipboard: Clipboard, listener: FlavorListener): FlavorListener = { 
     46    clipboard.addFlavorListener(listener) 
     47    listener 
     48  } 
     49 
     50  def add( 
     51    clipboard: Clipboard, proc: FlavorEvent => Unit): FlavorListener = 
     52    add(clipboard, new FlavorAdapter(proc)) 
     53 
     54  def add(proc: FlavorEvent => Unit): FlavorListener = 
     55    add(systemClipboard, proc) 
     56 
     57  def remove( 
     58    clipboard: Clipboard, listener: FlavorListener): Unit = 
     59    clipboard.removeFlavorListener(listener) 
     60 
     61  def remove(listener: FlavorListener): Unit = 
     62    remove(systemClipboard, listener) 
    2363 
    2464  def clipboardOwner( 
     
    2666    new ClipboardOwnerAdapter(proc) 
    2767 
     68  /** 
     69   * Sample codes. 
     70   */ 
    2871  def main(args: Array[String]) { 
    29     val clipboard = new Clipboard("foo") 
    30     val textPlainFlavor = DataFlavor.getTextPlainUnicodeFlavor() 
    31     flavorsChanged(clipboard, e => println(e)) 
    32     clipboard.setContents( 
     72    val listener = add(e => println("flavors changed: " + e)) 
     73    val lock = "abc" 
     74    copy( 
    3375      new StringSelection("Hello, world!"), 
    34       clipboardOwner((clipboard, contents) => 
    35         println("clipboard=" + clipboard + ",contents=" + contents)) 
    36       ) 
    37     Thread.sleep(10000) 
     76      clipboardOwner({(clipboard, contents) => 
     77        println("clipboard=" + clipboard + ",contents=" + contents) 
     78        remove(listener) 
     79        lock.notify 
     80      }) 
     81    ) 
     82    try { 
     83      lock.wait 
     84    } catch { 
     85      case e: Exception => {} 
     86    } 
     87    try { 
     88      println("data=" + paste(stringFlavor)) 
     89    } catch { 
     90      case e: Exception => println(e) 
     91    } 
    3892  } 
    3993}