Java browser - problema com o copiar

0 respostas
O
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");
  }
}

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 :/.

Criado 27 de abril de 2012
Respostas 0
Participantes 1