SWT Browser(内嵌浏览器)

32 篇文章 0 订阅

browser浏览器swtbuttonurlstring

 

原文地址:http://blog.csdn.net/hemingwang0902/article/details/4405310

[java] view plaincopy

  1. import java.util.ArrayList;  
  2. import java.util.List;  
  3.   
  4. import org.apache.commons.lang.StringUtils;  
  5. import org.eclipse.swt.SWT;  
  6. import org.eclipse.swt.browser.Browser;  
  7. import org.eclipse.swt.browser.CloseWindowListener;  
  8. import org.eclipse.swt.browser.LocationAdapter;  
  9. import org.eclipse.swt.browser.LocationEvent;  
  10. import org.eclipse.swt.browser.OpenWindowListener;  
  11. import org.eclipse.swt.browser.ProgressEvent;  
  12. import org.eclipse.swt.browser.ProgressListener;  
  13. import org.eclipse.swt.browser.StatusTextEvent;  
  14. import org.eclipse.swt.browser.StatusTextListener;  
  15. import org.eclipse.swt.browser.TitleEvent;  
  16. import org.eclipse.swt.browser.TitleListener;  
  17. import org.eclipse.swt.browser.WindowEvent;  
  18. import org.eclipse.swt.custom.CLabel;  
  19. import org.eclipse.swt.custom.CTabFolder;  
  20. import org.eclipse.swt.custom.CTabItem;  
  21. import org.eclipse.swt.events.KeyAdapter;  
  22. import org.eclipse.swt.events.KeyEvent;  
  23. import org.eclipse.swt.events.MouseAdapter;  
  24. import org.eclipse.swt.events.MouseEvent;  
  25. import org.eclipse.swt.events.SelectionAdapter;  
  26. import org.eclipse.swt.events.SelectionEvent;  
  27. import org.eclipse.swt.graphics.Point;  
  28. import org.eclipse.swt.layout.FormAttachment;  
  29. import org.eclipse.swt.layout.FormData;  
  30. import org.eclipse.swt.layout.FormLayout;  
  31. import org.eclipse.swt.layout.GridData;  
  32. import org.eclipse.swt.layout.GridLayout;  
  33. import org.eclipse.swt.widgets.Button;  
  34. import org.eclipse.swt.widgets.Combo;  
  35. import org.eclipse.swt.widgets.Composite;  
  36. import org.eclipse.swt.widgets.Display;  
  37. import org.eclipse.swt.widgets.Label;  
  38. import org.eclipse.swt.widgets.ProgressBar;  
  39. import org.eclipse.ui.forms.widgets.FormToolkit;  
  40.   
  41. import com.sinosoft.media360.server.domain.News_Document;  
  42. import com.sinosoft.media360.util.NewActionMenu;  
  43. import com.swtdesigner.SWTResourceManager;  
  44.   
  45. public class BrowserComposite extends Composite {  
  46.     private static final String DEFAULT_BLANK_URL = "about:blank";  
  47.     private static final String BROWSER_DATA_STATUS = "status";  
  48.     private List<String> invalidTitleList = new ArrayList<String>();  
  49.       
  50.     private final static FormToolkit toolkit = new FormToolkit(Display.getCurrent());  
  51.     private static Combo combUrl;  
  52.     private CTabFolder browserFolder;  
  53.     private CTabItem newTab;  
  54.     private CLabel statusLabel;  
  55.     private ProgressBar progressBar;  
  56.       
  57.     {  
  58.         invalidTitleList.add(DEFAULT_BLANK_URL);  
  59.         invalidTitleList.add("503 Service Unavailable");  
  60.         invalidTitleList.add("导航已取消");  
  61.         invalidTitleList.add("Internet Explorer 无法显示该网页");  
  62.         invalidTitleList.add("无法显示此页");  
  63.     }  
  64.       
  65.   
  66.     /** 
  67.      * Create the composite 
  68.      *  
  69.      * @param parent 
  70.      * @param style 
  71.      */  
  72.     public BrowserComposite(Composite parent, int style) {  
  73.         super(parent, style);  
  74.         setLayout(new FormLayout());  
  75.         toolkit.adapt(this);  
  76.         toolkit.paintBordersFor(this);  
  77.   
  78.         final Composite composite = toolkit.createComposite(this, SWT.NO_TRIM | SWT.RESIZE);  
  79.         final GridLayout gridLayout = new GridLayout();  
  80.         gridLayout.horizontalSpacing = 2;  
  81.         gridLayout.numColumns = 7;  
  82.         composite.setLayout(gridLayout);  
  83.         final FormData fd_composite = new FormData();  
  84.         fd_composite.right = new FormAttachment(100, -5);  
  85.         fd_composite.bottom = new FormAttachment(040);  
  86.         fd_composite.top = new FormAttachment(00);  
  87.         fd_composite.left = new FormAttachment(05);  
  88.         composite.setLayoutData(fd_composite);  
  89.         toolkit.paintBordersFor(composite);  
  90.   
  91.         final Button newBt = new Button(composite, SWT.NONE);  
  92.         newBt.setToolTipText("新建浏览器");  
  93.         newBt.setImage(SWTResourceManager.getImage(BrowserComposite.class"/tool_new.gif"));  
  94.         newBt.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, falsefalse));  
  95.         // 打开新的浏览器窗口  
  96.         newBt.addSelectionListener(new SelectionAdapter() {  
  97.             public void widgetSelected(final SelectionEvent e) {  
  98.                 openNewBrowserTab();  
  99.             }  
  100.         });  
  101.         toolkit.adapt(newBt, truetrue);  
  102.   
  103.         final Label label_1 = new Label(composite, SWT.SEPARATOR);  
  104.         label_1.setLayoutData(new GridData(SWT.DEFAULT, 35));  
  105.         toolkit.adapt(label_1, truetrue);  
  106.   
  107.         ButtonSelectionListener listener = new ButtonSelectionListener();  
  108.           
  109.         final Button backBt = new Button(composite, SWT.NONE);  
  110.         backBt.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, falsefalse));  
  111.         backBt.setImage(SWTResourceManager.getImage(BrowserComposite.class"/back.gif"));  
  112.         backBt.addSelectionListener(listener);  
  113.         backBt.setToolTipText("后退");  
  114.         toolkit.adapt(backBt, truetrue);  
  115.   
  116.         final Button forwardBt = new Button(composite, SWT.NONE);  
  117.         forwardBt.setImage(SWTResourceManager.getImage(BrowserComposite.class"/forward.gif"));  
  118.         forwardBt.addSelectionListener(listener);  
  119.         forwardBt.setToolTipText("前进");  
  120.         forwardBt.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, falsefalse));  
  121.         toolkit.adapt(forwardBt, truetrue);  
  122.   
  123.         combUrl = new Combo(composite, SWT.BORDER);  
  124.         combUrl.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, truefalse));  
  125.         combUrl.setVisibleItemCount(25);  
  126.         combUrl.addSelectionListener(new SelectionAdapter() {  
  127.             @Override  
  128.             public void widgetSelected(SelectionEvent e) {  
  129.                 openEnteredUrl(false);  
  130.             }  
  131.         });  
  132.         combUrl.addKeyListener(new KeyAdapter() {  
  133.             // 按回车或数字键盘的Enter则浏览内容  
  134.             public void keyPressed(final KeyEvent e) {  
  135.                 if(e.keyCode == SWT.CR || e.keyCode ==SWT.KEYPAD_CR){  
  136.                     openEnteredUrl(true);  
  137.                 }  
  138.             }  
  139.         });  
  140.         toolkit.adapt(combUrl, truetrue);  
  141.           
  142.         final Button refreshBt = new Button(composite, SWT.NONE);  
  143.         refreshBt.setImage(SWTResourceManager.getImage(BrowserComposite.class"/tool_refresh.gif"));  
  144.         refreshBt.addSelectionListener(listener);  
  145.         refreshBt.setToolTipText("刷新");  
  146.         refreshBt.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, falsefalse));  
  147.         toolkit.adapt(refreshBt, truetrue);  
  148.           
  149.         final Button stopBt = new Button(composite, SWT.NONE);  
  150.         stopBt.setImage(SWTResourceManager.getImage(BrowserComposite.class"/stop.gif"));  
  151.         stopBt.addSelectionListener(listener);  
  152.         stopBt.setToolTipText("停止");  
  153.         stopBt.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, falsefalse));  
  154.         toolkit.adapt(stopBt, truetrue);  
  155.   
  156.         browserFolder = new CTabFolder(this, SWT.BORDER);  
  157.         browserFolder.setMinimumCharacters(8);  
  158.         browserFolder.setSelectionBackground(SWTResourceManager.getColor(227,238,251));  
  159.         browserFolder.setTabHeight(25);  
  160.         browserFolder.addSelectionListener(new SelectionAdapter() {  
  161.             public void widgetSelected(final SelectionEvent e) {  
  162.                 if(e.item == newTab){  
  163.                     openNewBrowserTab();    //新选项卡  
  164.                 }else{  
  165.                     Browser browser = (Browser) ((CTabItem) e.item).getControl();  
  166.                     if (browser != null ) {  
  167.                         String url = browser.getUrl();  
  168.                         if("".equals(url)){  
  169.                             url = DEFAULT_BLANK_URL;  
  170.                         }  
  171.                         combUrl.setText(url);  
  172.                         if (url.equals(DEFAULT_BLANK_URL)) {  
  173.                             combUrl.setFocus();  
  174.                         }  
  175.                           
  176.                         String status = (String) browser.getData(BROWSER_DATA_STATUS);  
  177.                         if (status != null) {  
  178.                             statusLabel.setText(status);  
  179.                         }  
  180.                           
  181.                         progressBar.setVisible(false);  
  182.                     }  
  183.                 }  
  184.             }  
  185.         });  
  186.   
  187.         browserFolder.addMouseListener(new MouseAdapter() {  
  188.             // 双击关闭选中的浏览器窗口  
  189.             public void mouseDoubleClick(final MouseEvent e) {  
  190.                 CTabItem tab = browserFolder.getItem(new Point(e.x, e.y));  
  191.                 if (tab != null && tab != newTab) {  
  192.                     tab.dispose();  
  193.                     if (browserFolder.getItemCount() == 1) {  
  194.                         openNewBrowserTab();  
  195.                     }  
  196.                 } else {  
  197.                     openNewBrowserTab();  
  198.                 }  
  199.             }  
  200.         });  
  201.         final FormData fd_tabFolder = new FormData();  
  202.         fd_tabFolder.left = new FormAttachment(composite, 0, SWT.LEFT);  
  203.         fd_tabFolder.right = new FormAttachment(composite, 0, SWT.RIGHT);  
  204.         fd_tabFolder.top = new FormAttachment(composite, 5, SWT.BOTTOM);  
  205.         browserFolder.setLayoutData(fd_tabFolder);  
  206.         toolkit.adapt(browserFolder, truetrue);  
  207.           
  208.         newTab = new CTabItem(browserFolder, SWT.NONE);  
  209. //      newTab.setText("    ");  
  210.         newTab.setImage(SWTResourceManager.getImage(BrowserComposite.class"/newTab.jpg"));  
  211.         newTab.setToolTipText("新选项卡");  
  212.           
  213.         statusLabel = new CLabel(this, SWT.NONE);  
  214.         fd_tabFolder.bottom = new FormAttachment(statusLabel, -5, SWT.TOP);  
  215.         final FormData fd_statusLabel = new FormData();  
  216.         fd_statusLabel.left = new FormAttachment(browserFolder, 0, SWT.LEFT);  
  217.         fd_statusLabel.right = new FormAttachment(100, -210);  
  218.         fd_statusLabel.bottom = new FormAttachment(100, -5);  
  219.         statusLabel.setLayoutData(fd_statusLabel);  
  220.         toolkit.adapt(statusLabel, truetrue);  
  221.         statusLabel.setText("状态栏");  
  222.   
  223.         progressBar = new ProgressBar(this, SWT.NONE);  
  224.         final FormData fd_progressBar = new FormData();  
  225.         fd_progressBar.bottom = new FormAttachment(statusLabel, 0, SWT.BOTTOM);  
  226.         fd_progressBar.left = new FormAttachment(100, -200);  
  227.         fd_progressBar.right = new FormAttachment(browserFolder, 0, SWT.RIGHT);  
  228.         progressBar.setLayoutData(fd_progressBar);  
  229.         toolkit.adapt(progressBar, truetrue);  
  230.           
  231.         openNewBrowserTab();  
  232.     }  
  233.       
  234.     private void addUrlToCombo(String url){  
  235.         if(!DEFAULT_BLANK_URL.equals(url)){  
  236.             int index = combUrl.indexOf(url);  
  237.             if(index > 0){  
  238.                 combUrl.remove(index);  
  239.             }  
  240.             if(index != 0){  
  241.                 combUrl.add(url, 0);  
  242.             }  
  243.             combUrl.select(0);  
  244.             if(combUrl.getItemCount() > 50){  
  245.                 combUrl.remove(50, combUrl.getItemCount()-1);  
  246.             }  
  247.         }  
  248.     }  
  249.       
  250.     /** 
  251.      * 打开网页 
  252.      * @param newTabItem 是否在新选项卡中打开 
  253.      */  
  254.     private void openEnteredUrl(boolean newTabItem) {  
  255.         String url = combUrl.getText();  
  256.         if (!("".equals(url) || DEFAULT_BLANK_URL.equals(url))) {  
  257.             Browser browser = null;  
  258.             CTabItem tabItem = browserFolder.getSelection();  
  259.             String itemTitle = tabItem.getToolTipText();  
  260.             if(newTabItem && !invalidTitleList.contains(itemTitle)){  
  261.                 browser = openNewBrowserTab();  
  262.             }else{  
  263.                 browser = (Browser) tabItem.getControl();  
  264.             }  
  265.             browser.setUrl(url);  
  266.             CTabItem item = ((CTabFolder)browser.getParent()).getSelection();  
  267.             item.setText(StringUtils.abbreviate(url, 20));  
  268.             item.setToolTipText(url);  
  269.             addUrlToCombo(url);  
  270.         }  
  271.     }  
  272.   
  273.     /** 
  274.      * 打开一个新选项卡 
  275.      * @return 新选项卡中的Broser对象 
  276.      */  
  277.     private Browser openNewBrowserTab() {  
  278.         final CTabItem browserTab = new CTabItem(browserFolder, SWT.NONE, browserFolder.getItemCount()-1);  
  279.         browserTab.setShowClose(true);  
  280.         browserTab.setImage(SWTResourceManager.getImage(BrowserComposite.class"/ie.gif"));  
  281.         browserFolder.setSelection(browserTab);  
  282.           
  283.         final Browser browser = new Browser(browserFolder, SWT.NONE);  
  284.         initialize(browser);  
  285.         browserTab.setText(DEFAULT_BLANK_URL);  
  286.         browserTab.setToolTipText(DEFAULT_BLANK_URL);  
  287.         combUrl.setText(DEFAULT_BLANK_URL);  
  288.         combUrl.setFocus();  
  289.         toolkit.adapt(browser, truetrue);  
  290.         browserTab.setControl(browser);  
  291.         return browser;  
  292.     }  
  293.   
  294.     /** register WindowEvent listeners */  
  295.     private void initialize(final Browser browser) {  
  296.         browser.addOpenWindowListener(new OpenWindowListener() {    //打开一个新的浏览器窗口事件  
  297.             public void open(WindowEvent event) {  
  298.                 event.browser = openNewBrowserTab();  
  299.             }  
  300.         });  
  301.   
  302.         browser.addCloseWindowListener(new CloseWindowListener() {  //关闭浏览器事件  
  303.             public void close(WindowEvent event) {  
  304.                 Browser browser = (Browser) event.widget;  
  305.                 ((CTabFolder)browser.getParent()).getSelection().dispose();  
  306.             }  
  307.         });  
  308.         browser.addProgressListener(new ProgressListener() {    //装载网页事件  
  309.             public void changed(ProgressEvent event) {  
  310.                 if (browserFolder.getSelection().getControl() == browser) {  
  311.                     if (!progressBar.isVisible()) {  
  312.                         progressBar.setVisible(true);  
  313.                     }  
  314.                     if (event.current < event.total) {  
  315.                         progressBar.setMaximum(event.total);  
  316.                         progressBar.setSelection(event.current);  
  317.                     } else {  
  318.                         progressBar.setVisible(false);  
  319.                     }  
  320.                 }  
  321.             }  
  322.   
  323.             public void completed(ProgressEvent event) {  
  324.                 if (browserFolder.getSelection().getControl() == browser)  
  325.                     progressBar.setVisible(false);  
  326.             }  
  327.         });  
  328.         browser.addStatusTextListener(new StatusTextListener() {    //状态栏改变事件  
  329.             public void changed(StatusTextEvent event) {  
  330.                 browser.setData(BROWSER_DATA_STATUS, event.text);  
  331.                 if (browserFolder.getSelection().getControl() == browser) {  
  332.                     statusLabel.setText(event.text);  
  333.                 }  
  334.             }  
  335.         });  
  336.         browser.addTitleListener(new TitleListener() {  //标题改变事件  
  337.             public void changed(TitleEvent event) {  
  338.                 CTabItem item = ((CTabFolder)browser.getParent()).getSelection();  
  339.                 item.setText(StringUtils.abbreviate(event.title, 20));  
  340.                 item.setToolTipText(event.title);  
  341.             }  
  342.         });  
  343.           
  344.           
  345.         browser.addLocationListener(new LocationAdapter() { //为浏览器注册地址改变事件   
  346.             @Override   
  347.             public void changed(LocationEvent e) {  
  348.                 if(e.top){  
  349.                     addUrlToCombo(e.location);  
  350.                 }  
  351.             }   
  352.         });  
  353.           
  354.           
  355.         News_Document doc = new News_Document();  
  356.         new NewActionMenu(browser, doc, true);  //设置右键  
  357.     }  
  358.       
  359.     class ButtonSelectionListener extends SelectionAdapter{  
  360.         @Override  
  361.         public void widgetSelected(SelectionEvent e) {  
  362.             String operationName = ((Button)e.widget).getToolTipText();  
  363.             Browser browser = (Browser)browserFolder.getSelection().getControl();  
  364.             if(browser != null){  
  365.                 if("后退".equals(operationName)){  
  366.                     if(browser.isBackEnabled()){  
  367.                         browser.back();  
  368.                     }  
  369.                 }else if("前进".equals(operationName)){  
  370.                     if(browser.isForwardEnabled()){  
  371.                         browser.forward();  
  372.                     }  
  373.                 }else if("刷新".equals(operationName)){  
  374.                     browser.refresh();  
  375.                 }else if("停止".equals(operationName)){  
  376.                     browser.stop();  
  377.                 }  
  378.             }  
  379.         }  
  380.     }  
  381. }  

 

SWT Broser

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值