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