brtabbed.java

来自「java调用ie浏览器demo源码,可以用在windows或者linux」· Java 代码 · 共 587 行 · 第 1/2 页

JAVA
587
字号
        brComponent.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
            public void propertyChange(java.beans.PropertyChangeEvent evt) {
                String stPN = evt.getPropertyName();
                if(stPN.equals("windowTitle")) {
                    String stNV = (String)evt.getNewValue();
                    if(null==stNV)
                        stNV = "";
                    String st[] = stNV.split(",");
                    lb.lbAddress.setText( st[0] );
                    lb.pbDownloadDoc.setString( st[0] );
                } else if(stPN.equals("progressBar")) {
                    String stNV = (String)evt.getNewValue();
                    if(null==stNV)
                        stNV = "";
                    String st[] = stNV.split(",");
                    int iMax = Integer.parseInt(st[0]),
                        iPos = Integer.parseInt(st[1]);
                    if(0==iMax){
                        lb.pbDownloadDoc.setVisible(false);
                        lb.lbAddress.setVisible(true);
                        if(brComponent.isDocumentReady()){
                            //bnRefreshActionPerformed(null);
                        }
                    } else {
                        lb.pbDownloadDoc.setMaximum(iMax);
                        lb.pbDownloadDoc.setValue(iPos);
                        lb.pbDownloadDoc.setVisible(true);
                        lb.lbAddress.setVisible(false);
                    }
                }
                if(brComponent==brCurrentPage){
                    propertyChangeSupport.firePropertyChange(
                            evt.getPropertyName(), 
                            evt.getOldValue(), 
                            evt.getNewValue());                
                }
            }
        });     
        brComponent.addBrComponentListener(this);        
        int iPos = jTabbedPane.indexOfComponent(brComponent);
        jTabbedPane.setTabComponentAt(iPos, lb );
        SwingUtilities.invokeLater(new Runnable() {public void run() {
                jTabbedPane.setSelectedComponent(brComponent);
        }});
    }
   
    /**
     * Opens a new tab with URL content. 
     * @param stUrl the String object with URL address
     * @return new browser component 
     */
    public BrComponent openInNewBrowserPanel(String stUrl)
    {
        //System.out.println("{openInNewBrowserPanel: " + stUrl);
        BrComponent brComponent = new BrComponent(stUrl);
        javax.swing.GroupLayout brComponentLayout = new javax.swing.GroupLayout(brComponent);
        brComponent.setLayout(brComponentLayout);
        brComponentLayout.setHorizontalGroup(
            brComponentLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 64, Short.MAX_VALUE)
        );
        brComponentLayout.setVerticalGroup(
            brComponentLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 64, Short.MAX_VALUE)
        );
        jTabbedPane.addTab(brComponent.getURL(), brComponent);
        setupTabLabel(brComponent, stUrl);
        //System.out.println("}openInNewBrowserPanel: " + stUrl);
        return brComponent;
    }
    
    /**
     * Checks the last browser in tab set.
     * @return <code>true</code> for single tab configuration 
     * else - <code>false</code> 
     */
    public boolean isLastTab()
    {
        return jTabbedPane.getTabCount() <= 1;
    }
    /**
     * Getter for Tabbed container
     * @return the JTabbedPane object
     */
    public JTabbedPane getTabbedPane() {
        return jTabbedPane;
    }
    
    /**
     * Getter for current browser
     * @return the BrComponent object from visible plane
     */
    public BrComponent getVisibleBrowser() {
        try{
            return (BrComponent)getTabbedPane().getSelectedComponent();
        }catch(ClassCastException e){
            //that is OK
        }        
        return null;        
    }

    /**
     * Implementation of the <code>ChangeListener</code> interface
     * @param e the event about changed page 
     */
    public void stateChanged(ChangeEvent e) {
        setCurrentPage(getVisibleBrowser());
    }

    
    //{BrComponentListener
    /**
     * The listener for notifications callbacks.
     */    
    transient BrComponentListener ieListener; //TODO: make it stackable.   
    
    /**
     * Implementation of <code>BrComponentListener</code> interface
     * @param e
     */
    public String sync(BrComponentEvent e) {
        final String[] res = new String[1];
        if(null!=ieListener){
            res[0] = ieListener.sync(e);
        }
        if(null==res[0]){
                switch (e.getID()) {
                    case BrComponentEvent.DISPID_NEWWINDOW2:
                        final BrComponent sbr = (BrComponent)e.getSource();
                        sbr.setActionFiler(0, true);
                        try {
                            SwingUtilities.invokeAndWait(new Runnable() { public void run() {
                                    BrComponent br = openInNewBrowserPanel(null);
                                    if (null != br) {
                                        res[0] = "0," + br.getNativeHandle();
                                    }
                                    sbr.setActionFiler(0, false);
                            }});
                        } catch (Exception ex) {
                            Logger.getLogger(BrTabbed.class.getName()).log(Level.SEVERE, null, ex);
                        }
                        break;
                }
        }    
        return res[0];
    }

    public void addBrComponentListener(BrComponentListener l) {
        ieListener = l;
    }

    public void removeBrComponentListener(BrComponentListener l) {
        if( ieListener == l ) {
            ieListener = null;
        }
    }
    //}BrComponentListener
    
    //{Delagates to current page object...  
    public void stop() {
        brCurrentPage.stop();
    }

    public  void setURL(URL url) throws FileNotFoundException {
        brCurrentPage.setURL(url);
    }

    public  void setURL(String _stURL) {
        brCurrentPage.setURL(_stURL);
    }

    public  void setHTML(String stHTML) {
        brCurrentPage.setHTML(stHTML);
    }

    public  void setHTML(InputStream _isHTMLSrc, String _stURL) {
        brCurrentPage.setHTML(_isHTMLSrc, _stURL);
    }

    public  void setEditable(boolean b) {
        brCurrentPage.setEditable(b);
    }

    public void setDebugDrawBorder(boolean debugDrawBorder) {
        brCurrentPage.setDebugDrawBorder(debugDrawBorder);
    }

    public void save(String stHTMLPath) {
        brCurrentPage.save(stHTMLPath);
    }

    public void save() {
        brCurrentPage.save();
    }

    public void refresh() {
        brCurrentPage.refresh();
    }

    public void open(String stHTMLPath) {
        brCurrentPage.open(stHTMLPath);
    }

    public void open() {
        brCurrentPage.open();
    }

    public boolean isToolbarChanged() {
        return brCurrentPage.isToolbarChanged();
    }

    public boolean isGoForwardEnable() {
        return brCurrentPage.isGoForwardEnable();
    }

    public boolean isGoBackEnable() {
        return brCurrentPage.isGoBackEnable();
    }

    public boolean isEditable() {
        return brCurrentPage.isEditable();
    }

    public boolean isDocumentReady() {
        return brCurrentPage.isDocumentReady();
    }

    public boolean isDebugDrawBorder() {
        return brCurrentPage.isDebugDrawBorder();
    }

    public  String getHTML() {
        return brCurrentPage.getHTML();
    }

    public void forward() {
        brCurrentPage.forward();
    }

    public void execJSLater(String code) {
        brCurrentPage.execJSLater(code);
    }

    public  String execJS(String code) {
        return brCurrentPage.execJS(code);
    }

    public void back() {
        brCurrentPage.back();
    }

    public void print() {
        brCurrentPage.print();
    }

    public  String getXHTML(boolean bWithUniqueID) {
        return brCurrentPage.getXHTML(bWithUniqueID);
    }

    public  String getXHTML() {
        return brCurrentPage.getXHTML();
    }

    public String getWindowTitle() {
        return brCurrentPage.getWindowTitle();
    }

    public  String getURL() {
        return brCurrentPage.getURL();
    }

    public String getStatusText() {
        return brCurrentPage.getStatusText();
    }

    public List getSprites() {
        return brCurrentPage.getSprites();
    }

    public String getSecurityIcon() {
        return brCurrentPage.getSecurityIcon();
    }

    public String getProgressBar() {
        return brCurrentPage.getProgressBar();
    }

    public String getNavigatedURL() {
        return brCurrentPage.getNavigatedURL();
    }
    //}Delagates to current page object...  
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?