Java browser - problema com o copiar

[code]
import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.browser.CloseWindowListener;
import org.eclipse.swt.browser.LocationEvent;
import org.eclipse.swt.browser.LocationListener;
import org.eclipse.swt.browser.ProgressEvent;
import org.eclipse.swt.browser.ProgressListener;
import org.eclipse.swt.browser.StatusTextEvent;
import org.eclipse.swt.browser.StatusTextListener;
import org.eclipse.swt.browser.WindowEvent;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.FormAttachment;
import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.layout.FormLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.printing.PrintDialog;
import org.eclipse.swt.printing.Printer;
import org.eclipse.swt.printing.PrinterData;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Layout;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.Widget;

public class AdvancedBrowser {
private static final String AT_REST = “Ready”;

public AdvancedBrowser(String location) {
Display display = new Display();
final Shell s = new Shell(display);
s.setText(“Proinov Browser”);
s.setLayout(new FormLayout());

Menu m = new Menu(s, SWT.BAR);
// Criando o menu Ficheiro
final MenuItem file = new MenuItem(m, SWT.CASCADE);
file.setText("&Ficheiro");   
final Menu filemenu = new Menu(s, SWT.DROP_DOWN);
file.setMenu(filemenu);
// Submenu
final MenuItem openItem = new MenuItem(filemenu, SWT.CASCADE);
openItem.setText("&Novo separador\tCtrl+T");
openItem.setAccelerator(SWT.CTRL + 'T');
openItem.setEnabled(false);
final MenuItem openItem1 = new MenuItem(filemenu, SWT.CASCADE);
openItem1.setText("No&va janela\tCtrl+N");
openItem1.setAccelerator(SWT.CTRL + 'N');
final MenuItem openItem8 = new MenuItem(filemenu, SWT.CASCADE);
openItem8.setText("&Abrir arquivo...\tCtrl+O");
openItem8.setAccelerator(SWT.CTRL + 'O');
//add separador
final MenuItem separator = new MenuItem(filemenu, SWT.SEPARATOR);
final MenuItem openItem7 = new MenuItem(filemenu, SWT.CASCADE);
openItem7.setText("Salvar &como...\tCtrl+S");
openItem7.setAccelerator(SWT.CTRL + 'S');
final MenuItem openItem2 = new MenuItem(filemenu, SWT.CASCADE);
openItem2.setText("Enviar en&dereço");
final MenuItem separator1 = new MenuItem(filemenu, SWT.SEPARATOR);
final MenuItem openItem3 = new MenuItem(filemenu, SWT.CASCADE);
openItem3.setText("Con&figurar página...");
final MenuItem openItem4 = new MenuItem(filemenu, SWT.CASCADE);
openItem4.setText("Visua&lizar impressão");
final MenuItem openItem15 = new MenuItem(filemenu, SWT.CASCADE);
openItem15.setText("Im&primir...\tCtrl+P");
openItem15.setAccelerator(SWT.CTRL + 'P');
final MenuItem separator2 = new MenuItem(filemenu, SWT.SEPARATOR);
final MenuItem openItem6 = new MenuItem(filemenu, SWT.CASCADE);
openItem6.setText("&Modo offiline");
final MenuItem exitItem = new MenuItem(filemenu, SWT.PUSH);
exitItem.setText("S&air\tCtrl+K");
exitItem.setAccelerator(SWT.CTRL + 'K');

//menu editar
final MenuItem e = new MenuItem(m, SWT.CASCADE);
e.setText("&Editar");
final Menu ed = new Menu(s, SWT.DROP_DOWN);
e.setMenu(ed);
//submenu
final MenuItem editar = new MenuItem(ed, SWT.CASCADE);
editar.setText("&Desfazer\tCtrl+Z");
editar.setAccelerator(SWT.CTRL + 'Z');
final MenuItem editar1 = new MenuItem(ed, SWT.CASCADE);
editar1.setText("Ref&azer\tCtrl+Y");
editar1.setAccelerator(SWT.CTRL + 'Y');
final MenuItem separator4 = new MenuItem(ed, SWT.SEPARATOR);
final MenuItem editar2 = new MenuItem(ed, SWT.CASCADE);
editar2.setText("R&ecortar\tCtrl+X");
editar2.setAccelerator(SWT.CTRL + 'X');
final MenuItem editar3 = new MenuItem(ed, SWT.CASCADE);
editar3.setText("&Copiar\tCtrl+C");
editar3.setAccelerator(SWT.CTRL + 'C');
final MenuItem editar4 = new MenuItem(ed, SWT.CASCADE);
editar4.setText("Co&lar\tCtrl+V");
editar4.setAccelerator(SWT.CTRL + 'V');
final MenuItem editar5 = new MenuItem(ed, SWT.CASCADE);
editar5.setText("E&xcluir\tDel");
editar5.setAccelerator(SWT.DEL);
final MenuItem separator5 = new MenuItem(ed, SWT.SEPARATOR);
final MenuItem editar6 = new MenuItem(ed, SWT.CASCADE);
editar6.setText("&Selecionar tudo\tCtrl+A");
editar6.setAccelerator(SWT.CTRL + 'A');
final MenuItem separator6 = new MenuItem(ed, SWT.SEPARATOR);
final MenuItem editar7 = new MenuItem(ed, SWT.CASCADE);
editar7.setText("Locali&zar...\tCtrl+F");
editar7.setAccelerator(SWT.CTRL + 'F');

//menu exibir
final MenuItem ex = new MenuItem(m, SWT.CASCADE);
ex.setText("&Exibir");
final Menu exi = new Menu(s, SWT.DROP_DOWN);
ex.setMenu(exi);
final MenuItem exibir = new MenuItem(exi, SWT.CASCADE);
exibir.setText("&Barra de ferramentas");   
//adicionar o submenu da barra de ferramentas
final Menu submenu = new Menu(s, SWT.DROP_DOWN);
exibir.setMenu(submenu);
final MenuItem childItem = new MenuItem(submenu, SWT.PUSH);
childItem.setText("Ba&rra de menus");
final MenuItem childItem1 = new MenuItem(submenu, SWT.PUSH);
childItem1.setText("Barra de &navegação");
final MenuItem childItem2 = new MenuItem(submenu, SWT.PUSH);
childItem2.setText("&Barra dos favoritos");
final MenuItem childItem3 = new MenuItem(submenu, SWT.PUSH);
childItem3.setText("Barra &de extensões\tCtrl+N");
childItem3.setAccelerator(SWT.CTRL + 'N');
final MenuItem separator9 = new MenuItem(submenu, SWT.SEPARATOR);
final MenuItem childItem4 = new MenuItem(submenu, SWT.PUSH);
childItem4.setText("Abas em ci&ma");
final MenuItem separator10 = new MenuItem(submenu, SWT.SEPARATOR);
final MenuItem childItem5 = new MenuItem(submenu, SWT.PUSH);
childItem5.setText("&Personalizar");

final MenuItem exibir5 = new MenuItem(exi, SWT.CASCADE);
exibir5.setText("&Painel");
//submenu painel
final Menu submenu1 = new Menu(s, SWT.DROP_DOWN);
exibir5.setMenu(submenu1);
final MenuItem painel = new MenuItem(submenu1, SWT.PUSH);
painel.setText("Favori&tos\tCtrl+B");
painel.setAccelerator(SWT.CTRL + 'B');
final MenuItem painel1 = new MenuItem(submenu1, SWT.PUSH);
painel1.setText("His&tórico\tCtrl+H");
painel1.setAccelerator(SWT.CTRL + 'H');

final MenuItem separator7 = new MenuItem(exi, SWT.SEPARATOR);
final MenuItem exibir4 = new MenuItem(exi, SWT.CASCADE);
exibir4.setText("&Zoom");
//submenu zoom
final Menu submenu2 = new Menu(s, SWT.DROP_DOWN);
exibir4.setMenu(submenu2);
final MenuItem zoom = new MenuItem(submenu2, SWT.PUSH);
zoom.setText("Aum&entar\tCtrl++");
zoom.setAccelerator(SWT.CTRL + '+');
final MenuItem zoom1 = new MenuItem(submenu2, SWT.PUSH);
zoom1.setText("&Diminuir\tCtrl+-");
zoom1.setAccelerator(SWT.CTRL + '-');
final MenuItem separator11 = new MenuItem(submenu2, SWT.SEPARATOR);
final MenuItem zoom2 = new MenuItem(submenu2, SWT.PUSH);
zoom2.setText("Norm&al\tCtrl+0");
zoom2.setAccelerator(SWT.CTRL + '0');
final MenuItem separator12 = new MenuItem(submenu2, SWT.SEPARATOR);
final MenuItem zoom3 = new MenuItem(submenu2, SWT.PUSH);
zoom3.setText("Somen&te do texto");
final MenuItem separator8 = new MenuItem(exi, SWT.SEPARATOR);
final MenuItem exibir2 = new MenuItem(exi, SWT.CASCADE);
exibir2.setText("Ma&ximizar\tShit++");
exibir2.setAccelerator(SWT.SHIFT + '+');
final MenuItem exibir3 = new MenuItem(exi, SWT.CASCADE);
exibir3.setText("Minimi&zar\tShift+-");
exibir3.setAccelerator(SWT.SHIFT + '-');
final MenuItem separator30 = new MenuItem(exi, SWT.SEPARATOR);
final MenuItem exibir1 = new MenuItem(exi, SWT.CASCADE);
exibir1.setText("&Tela inteira\tF11");
exibir1.setAccelerator(SWT.F11);
final MenuItem exibir17 = new MenuItem(exi, SWT.CASCADE);
exibir17.setText("&Tela normal\tF12");
exibir17.setAccelerator(SWT.F12);

   
s.setMenuBar(m);

//menu historico
final MenuItem h = new MenuItem(m, SWT.CASCADE);
h.setText("&Histórico");
final Menu hi = new Menu(s, SWT.DROP_DOWN);
h.setMenu(hi);
//submenu 
final MenuItem h1 = new MenuItem(hi, SWT.CASCADE);
h1.setText("Ex&ibir todo o histórico\tShift+H");
h1.setAccelerator(SWT.SHIFT + 'H');
final MenuItem separator13 = new MenuItem(hi, SWT.SEPARATOR);
final MenuItem h2 = new MenuItem(hi, SWT.CASCADE);
h2.setText("&Restaurar sessão anterior");

//menu Favoritos
final MenuItem f = new MenuItem(m, SWT.CASCADE);
f.setText("&Favoritos");
final Menu fa = new Menu(s, SWT.DROP_DOWN);
f.setMenu(fa);
//submenu
final MenuItem f1 = new MenuItem(fa, SWT.CASCADE);
f1.setText(“Exibir t&odos os favoritos\tShift+B”);
f1.setAccelerator(SWT.SHIFT + ‘B’);
final MenuItem separator14 = new MenuItem(fa, SWT.SEPARATOR);
final MenuItem f2 = new MenuItem(fa, SWT.CASCADE);
f2.setText("&Adicionar página\tCtrl+D");
f2.setAccelerator(SWT.SHIFT + ‘D’);

//menu Ferramentas
final MenuItem fe = new MenuItem(m, SWT.CASCADE);
fe.setText("&Ferramentas");
final Menu fer = new Menu(s, SWT.DROP_DOWN);
fe.setMenu(fer);
//submenu 
final MenuItem fe1 = new MenuItem(fer, SWT.CASCADE);
fe1.setText("Down&loads\tCtrl+J");
fe1.setAccelerator(SWT.CTRL + 'J');
final MenuItem separator15 = new MenuItem(fer, SWT.SEPARATOR);
final MenuItem fe2 = new MenuItem(fer, SWT.CASCADE);
fe2.setText("Pr&opriedades da página");
final MenuItem fe3 = new MenuItem(fer, SWT.CASCADE);
fe3.setText("Limpar da&dos pessoais...\tShift+D");
fe3.setAccelerator(SWT.SHIFT + 'D');
final MenuItem separator16 = new MenuItem(fer, SWT.SEPARATOR);
final MenuItem fe4 = new MenuItem(fer, SWT.CASCADE);
fe4.setText("Opçõ&es");

//menu Ajuda
final MenuItem aj = new MenuItem(m, SWT.CASCADE);
aj.setText("&Ajuda");
final Menu aju = new Menu(s, SWT.DROP_DOWN);
aj.setMenu(aju);
//submenu 
final MenuItem aj1 = new MenuItem(aju, SWT.CASCADE);
aj1.setText("A&juda do Browser");
final MenuItem separator17 = new MenuItem(aju, SWT.SEPARATOR);
final MenuItem aj2 = new MenuItem(aju, SWT.CASCADE);
aj2.setText("Envia&r minha opinião...");
final MenuItem aj3 = new MenuItem(aju, SWT.CASCADE);
aj3.setText("De&nunciar este site como falso...");
final MenuItem separator18 = new MenuItem(aju, SWT.SEPARATOR);
final MenuItem aj4 = new MenuItem(aju, SWT.CASCADE);
aj4.setText("Sobr&e a Proinov Browser");


s.setMenuBar(m);

Composite controls = new Composite(s, SWT.NONE);
FormData data = new FormData();
data.top = new FormAttachment(0, 0);
data.left = new FormAttachment(0, 0);
data.right = new FormAttachment(100, 0);
controls.setLayoutData(data);

Label status = new Label(s, SWT.NONE);
data = new FormData();
data.left = new FormAttachment(0, 0);
data.right = new FormAttachment(100, 0);
data.bottom = new FormAttachment(100, 0);
status.setLayoutData(data);

final Browser browser = new Browser(s, SWT.BORDER);
data = new FormData();
data.top = new FormAttachment(controls);
data.bottom = new FormAttachment(status);
data.left = new FormAttachment(0, 0);
data.right = new FormAttachment(100, 0);
browser.setLayoutData(data);

controls.setLayout(new GridLayout(7, false));

Image image = new Image(display, "imagens/back.png");
Button button = new Button(controls, SWT.PUSH);
button.setImage(image);
button.addSelectionListener(new SelectionAdapter() {
  public void widgetSelected(SelectionEvent event) {
    browser.back();
  }
});

Image image1= new Image(display, "imagens/go_next_black.png");
button = new Button(controls, SWT.PUSH);
button.setImage(image1);
button.addSelectionListener(new SelectionAdapter() {
  public void widgetSelected(SelectionEvent event) {
    browser.forward();
  }
});
Image image2=new Image(display, "imagens/view_refresh.png");
button = new Button(controls, SWT.PUSH);
button.setImage(image2);
button.addSelectionListener(new SelectionAdapter() {
  public void widgetSelected(SelectionEvent event) {
    browser.refresh();
  }
});
Image image3=new Image(display, "imagens/dialog_close.png");
button = new Button(controls, SWT.PUSH);
button.setImage(image3);
button.addSelectionListener(new SelectionAdapter() {
  public void widgetSelected(SelectionEvent event) {
    browser.stop();
  }
});

Image image6=new Image(display, "imagens/image6.png");
final Text url = new Text(controls, SWT.BORDER);
url.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
url.setBackgroundImage(image6);
url.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_WHITE));
url.setFocus();


Image image4=new Image(display, "imagens/media_playback_start.png");
button = new Button(controls, SWT.PUSH);
button.setImage(image4);
button.addSelectionListener(new SelectionAdapter() {
  public void widgetSelected(SelectionEvent event) {
    browser.setUrl(url.getText());
  }
});



//Acção tela inteira
exibir1.addSelectionListener(new SelectionAdapter() {
    public void widgetSelected(SelectionEvent event) {
      s.setFullScreen(true);
    }
  });

//Acção tela normal
exibir17.addSelectionListener(new SelectionAdapter() {
    public void widgetSelected(SelectionEvent event) {
      s.setFullScreen(false);
    }
  });

//Acção Guardar
openItem7.addSelectionListener(new SelectionAdapter() {
    public void widgetSelected(SelectionEvent e) {
      FileDialog fd = new FileDialog(s, SWT.SAVE);
      fd.setText("Save");
      fd.setFilterPath("C:/");
      String[] filterExt = { "*.txt", "*.doc", ".rtf", "*.*" };
      fd.setFilterExtensions(filterExt);
      String selected = fd.open();
      System.out.println(selected);
    }
   });

//Acção Abrir arquivo
openItem8.addSelectionListener(new SelectionAdapter() {
    public void widgetSelected(SelectionEvent e) {

      FileDialog fd = new FileDialog(s, SWT.OPEN);
      fd.setText("Open");
      fd.setFilterPath("C:/");
      String[] filterExt = { "*.txt", "*.doc", ".rtf", "*.*" };
      fd.setFilterExtensions(filterExt);
      String selected = fd.open();
      System.out.println(selected);
    }
});

//Acção Imprimir
openItem15.addSelectionListener(new SelectionAdapter() {
    public void widgetSelected(SelectionEvent e) {
      PrintDialog printDialog = new PrintDialog(s, SWT.NONE);
      printDialog.setText("Print");
      PrinterData printerData = printDialog.open();
      if (!(printerData == null)) {
        Printer p = new Printer(printerData);
        p.startJob("PrintJob");
        p.startPage();
        Rectangle trim = p.computeTrim(0, 0, 0, 0);
        Point dpi = p.getDPI();
        int leftMargin = dpi.x + trim.x;
        int topMargin = dpi.y / 2 + trim.y;
        GC gc = new GC(p);
        Font font = gc.getFont();
        Browser t = null;
		String printText = t.getText();
        Point extent = gc.stringExtent(printText);
        gc.drawString(printText, leftMargin, topMargin
            + font.getFontData()[0].getHeight());
        p.endPage();
        gc.dispose();
        p.endJob();
        p.dispose();
      }

    }
  });


//Accao Sair
exitItem.addSelectionListener(new SelectionAdapter() {
    public void widgetSelected(SelectionEvent e) {
      MessageBox messageBox = new MessageBox(s, SWT.ICON_QUESTION
          | SWT.YES | SWT.NO);
      messageBox.setMessage("Deseja sair?");
      messageBox.setText("Exiting Application");
      int response = messageBox.open();
      if (response == SWT.YES)
        System.exit(0);
    }
  });

exibir2.addSelectionListener(new SelectionListener() {
    public void widgetSelected(SelectionEvent e) {
      Shell parent = (Shell) exibir2.getParent().getParent();
      parent.setMaximized(true);
    }

    public void widgetDefaultSelected(SelectionEvent e) {
    }
  });

exibir3.addSelectionListener(new SelectionListener() {
    public void widgetSelected(SelectionEvent e) {
      Shell parent = (Shell) exibir3.getParent().getParent();
      parent.setMaximized(false);
    }

    public void widgetDefaultSelected(SelectionEvent e) {
    }
  });
	
s.setDefaultButton(button);


browser.addCloseWindowListener(new AdvancedCloseWindowListener());
browser.addLocationListener(new AdvancedLocationListener(url));
browser.addStatusTextListener(new AdvancedStatusTextListener(status));


// Go to the initial URL
if (location != null) {
  browser.setUrl(location);
  
}


s.open();
while (!s.isDisposed()) {
  if (!display.readAndDispatch()) {
    display.sleep();
  }
}
display.dispose();

}
class AdvancedCloseWindowListener implements CloseWindowListener {
public void close(WindowEvent event) {
((Browser) event.widget).getShell().close();
}
}

class AdvancedLocationListener implements LocationListener {
private Text location;

public AdvancedLocationListener(Text text) {
  location = text;
}

public void changing(LocationEvent event) {
  location.setText("Loading " + event.location + "...");
}

public void changed(LocationEvent event) {
  location.setText(event.location);
}

}

class AdvancedProgressListener implements ProgressListener {
private Label progress;

public AdvancedProgressListener(Label label) {
  progress = label;
}

public void changed(ProgressEvent event) {
  if (event.total != 0) {
    int percent = (int) (event.current / event.total);
    progress.setText(percent + "%");
  } else {
    progress.setText("");
  }
}

public void completed(ProgressEvent event) {
  progress.setText(AT_REST);
}

}

class AdvancedStatusTextListener implements StatusTextListener {
private Label status;

public AdvancedStatusTextListener(Label label) {
  status = label;
}

public void changed(StatusTextEvent event) {
  status.setText(event.text);
}

}

public static void main(String[] args) {
new AdvancedBrowser(“http://www.google.com”);
}
} [/code]

Boas tou a criar um browser e tou com dificuldades de fazer funcionar o menu editar onde contem o copiar o colar etc… alguem sabe como posso fazer o copiar ja estive a pesquisar mas nao encontro nada :/.