package com.cari.voip.keyboard.soft.views;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.IStatusLineManager;
import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.swt.SWT;
import org.eclipse.swt.SWTError;
import org.eclipse.swt.browser.Browser;
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.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.CoolBar;
import org.eclipse.swt.widgets.CoolItem;
import org.eclipse.ui.IActionBars;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.IWorkbenchActionConstants;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.part.ViewPart;
import com.cari.voip.keyboard.soft.Activator;
public class WebBrowserView extends ViewPart {
public static final String ID_VIEW =
WebBrowserView.class.getName();
//View widgets
private Combo urlCombo;
private Browser browser;
//Local view actions
private Action actionBack;
private Action actionForward;
private Action actionHome;
private Action actionAddBookmark;
private String startUrl =
"http://www.google.com";
public static ImageDescriptor ICON_HOME =
Activator.getImageDescriptor("icons/e_home.gif");
private IStatusLineManager statusLine;
public WebBrowserView() {
super();
}
@Override
public void createPartControl(Composite parent) {
// TODO Auto-generated method stub
Composite comp= new Composite(parent, SWT.NONE);
comp.setLayout(new GridLayout(1,true));
CoolBar coolbar = new CoolBar(comp, SWT.NONE);
coolbar.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
CoolItem item = new CoolItem(coolbar, SWT.NONE);
item.setControl(createComboView(coolbar,new GridData(
GridData.FILL_HORIZONTAL)));
calcSize(item);
//web browser
try{
browser = new Browser(comp, SWT.BORDER);
}catch(SWTError e){
return;
}
browser.setLayoutData(new GridData(GridData.FILL_BOTH));
browser.setUrl(startUrl);
browser.addLocationListener(new LocationListener(){
public void changed(LocationEvent event){
locChanged(event);
}
public void changing(LocationEvent event){
locChanging(event);
}
});
browser.addProgressListener(new ProgressListener(){
public void changed(ProgressEvent event){
onProgress(event);
}
public void completed(ProgressEvent event){
}
});
makeActions();
contributeToActionBars();
statusLine = getViewSite().getActionBars().getStatusLineManager();
}
protected void onProgress(ProgressEvent event) {
if(event.total == 0){
return;
}
int ratio = event.current*100/event.total;
statusLine.getProgressMonitor().worked(ratio);
}
protected void locChanging(LocationEvent event) {
// TODO Auto-generated method stub
}
protected void locChanged(LocationEvent event) {
urlCombo.setText(event.location);
}
@Override
public void setFocus() {
browser.setFocus();
}
private Control createComboView(Composite parent, Object layoutData){
urlCombo = new Combo(parent, SWT.NONE);
urlCombo.setLayoutData(layoutData);
urlCombo.addSelectionListener(new SelectionListener(){
public void widgetDefaultSelected(SelectionEvent e){
final String url = ((Combo) e.getSource()).getText();
browser.setUrl(url);
urlCombo.add(url);
}
public void widgetSelected(SelectionEvent e){
browser.setUrl(((Combo)e.getSource()).getText());
}
});
return urlCombo;
}
private void calcSize(CoolItem item){
Control control = item.getControl();
Point pt = control.computeSize(SWT.DEFAULT, SWT.DEFAULT);
pt = item.computeSize(pt.x, pt.y);
item.setSize(pt);
}
private void makeActions(){
actionBack = new Action(){
public void run(){
browser.back();
}
};
actionBack.setText("����");
actionBack.setToolTipText("����");
actionBack.setImageDescriptor(PlatformUI.getWorkbench()
.getSharedImages()
.getImageDescriptor(ISharedImages.IMG_TOOL_BACK));
actionForward = new Action(){
public void run(){
browser.forward();
}
};
actionForward.setText("ǰ��");
actionForward.setToolTipText("ǰ��");
actionForward.setImageDescriptor(PlatformUI.getWorkbench()
.getSharedImages()
.getImageDescriptor(
ISharedImages.IMG_TOOL_FORWARD));
actionHome = new Action(){
public void run(){
browser.setUrl(startUrl);
}
};
actionHome.setText("��ҳ");
actionHome.setToolTipText("��ҳ");
actionHome.setImageDescriptor(ICON_HOME);
actionAddBookmark = new Action(){
public void run(){
addBookmark(urlCombo.getText());
}
};
actionAddBookmark.setText("��ǩ");
actionAddBookmark.setToolTipText("��Ϊ��ǩ");
actionAddBookmark.setImageDescriptor(PlatformUI.getWorkbench()
.getSharedImages().getImageDescriptor(ISharedImages.IMG_OBJ_FILE));
}
private void contributeToActionBars(){
IActionBars bars = getViewSite().getActionBars();
fillLocalPullDown(bars.getMenuManager());
fillLocalToolBar(bars.getToolBarManager());
}
private void fillLocalToolBar(IToolBarManager manager){
manager.add(actionHome);
manager.add(actionBack);
manager.add(actionForward);
manager.add(actionAddBookmark);
manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
}
private void fillLocalPullDown(IMenuManager manager){
manager.add(actionAddBookmark);
manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
}
private void addBookmark(final String url){
BookMarksView v = (BookMarksView)Activator.getView(getViewSite().getWorkbenchWindow(),BookMarksView.ID_VIEW);
if(v != null){
v.addBookmark(url);
}
}
public void navigateTo(String url){
browser.setUrl(url);
}
public void dispose() {
browser.dispose();
super.dispose();
}
}