BlackBerry Forums Support Community

BlackBerry Forums Support Community (http://www.blackberryforums.com/index.php)
-   Developer Forum (http://www.blackberryforums.com/forumdisplay.php?f=15)
-   -   Display web contents in a field (http://www.blackberryforums.com/showthread.php?t=60956)

balaji6969 01-11-2007 04:02 AM

Display web contents in a field
 
hi
I want to create a screen having a field for displaying web contents.Means that field should display the page of the url i passed.I am trying by using BrowserContentBaseImpl ,but it is not displaying.No error ocuured.Can any one give solution.
Regards,
Balaji.K

jfisher 01-11-2007 04:58 AM

i seem to remember there was an implementation of the browserfield in the samples of one of the jde release. i could be wrong though, it's been a while.

balaji6969 01-11-2007 06:21 AM

ya i hav seen it just now and its working.Thanks for ur suggestion.

Regards,
Balaji.K

EZboy 01-12-2007 12:10 PM

Can somebody post the code for that demo, i cant find it in the JDE samples.
Thanks.

EZboy 01-12-2007 12:22 PM

Dont mind, found it!

Code:

/*
 * BrowserFieldSampleApplication.java
 *
 * Copyright ¬ 1998-2006 Research In Motion Ltd.
 */

package com.rim.samples.device.blackberry.browser;

import java.io.IOException;

import javax.microedition.io.HttpConnection;

import net.rim.device.api.browser.field.*;
import net.rim.device.api.io.http.HttpHeaders;
import net.rim.device.api.system.Application;
import net.rim.device.api.ui.*;
import net.rim.device.api.ui.component.Status;
import net.rim.device.api.ui.container.MainScreen;

/**
 *
 */
final public class BrowserFieldSampleApplication extends UiApplication implements RenderingApplication {
 
    private static final String REFERER = "referer"; 
 
    private RenderingSession _renderingSession; 

    private MainScreen _mainScreen;
 
    private HttpConnection  _currentConnection;
 
    /***************************************************************************
    * Main.
    **************************************************************************/
    public static void main(String[] args) {
        BrowserFieldSampleApplication app = new BrowserFieldSampleApplication();
        app.enterEventDispatcher();
    }
 
    private BrowserFieldSampleApplication() {     
     
        _mainScreen = new MainScreen();     
        pushScreen(_mainScreen);
        _renderingSession = RenderingSession.getNewInstance();
     
        // enable javascript
        //_renderingSession.getRenderingOptions().setProperty(RenderingOptions.CORE_OPTIONS_GUID, RenderingOptions.JAVASCRIPT_ENABLED, true);                     

     
        PrimaryResourceFetchThread thread = new PrimaryResourceFetchThread("http://www.google.com", null, null, null, this);

        thread.start();                     
           
    }
       
    public void processConnection(HttpConnection connection, Event e) {
       
        // cancel previous request
        if (_currentConnection != null) {
            try {
                _currentConnection.close();
            } catch (IOException e1) {
            }
        }
     
        _currentConnection = connection;
     
        BrowserContent browserContent = null;
     
        try {
            browserContent = _renderingSession.getBrowserContent(connection, this, e);
         
            if (browserContent != null) {
             
                Field field = browserContent.getDisplayableContent();
             
                if (field != null) {
                    synchronized (Application.getEventLock()) {
                        _mainScreen.deleteAll();
                        _mainScreen.add(field);
                    }
                }
             
                browserContent.finishLoading();
            }
                                                       
        } catch (RenderingException re) {

        } finally {
            SecondaryResourceFetchThread.doneAddingImages();
        }
     
    }

    /**
    * @see net.rim.device.api.browser.RenderingApplication#eventOccurred(net.rim.device.api.browser.Event)
    */
    public Object eventOccurred(Event event) {

        int eventId = event.getUID();

        switch (eventId) {

            case Event.EVENT_URL_REQUESTED : {

                UrlRequestedEvent urlRequestedEvent = (UrlRequestedEvent) event; 
                String absoluteUrl = urlRequestedEvent.getURL();
 
                HttpConnection conn = null;
                PrimaryResourceFetchThread thread = new PrimaryResourceFetchThread(urlRequestedEvent.getURL(),
                                                                                        urlRequestedEvent.getHeaders(),

                                                                                        urlRequestedEvent.getPostData(),

                                                                                        event, this);
                thread.start();
 
                break;

            } case Event.EVENT_BROWSER_CONTENT_CHANGED: {             
                 
                // browser field title might have changed update title
                BrowserContentChangedEvent browserContentChangedEvent = (BrowserContentChangedEvent) event;
         
                if (browserContentChangedEvent.getSource() instanceof BrowserContent) {
                    BrowserContent browserField = (BrowserContent) browserContentChangedEvent.getSource();
                    String newTitle = browserField.getTitle();
                    if (newTitle != null) {
                        _mainScreen.setTitle(newTitle);
                    }
                }                 

                break;             

            } case Event.EVENT_REDIRECT : {

                    RedirectEvent e = (RedirectEvent) event;
                    String referrer = e.getSourceURL();
                                     
                    switch (e.getType()) {

                        case RedirectEvent.TYPE_SINGLE_FRAME_REDIRECT :
                            // show redirect message
                            Application.getApplication().invokeAndWait(new Runnable() {
                                public void run() {
                                    Status.show("You are being redirected to a different page...");
                                }
                            });

                            break;

                        case RedirectEvent.TYPE_JAVASCRIPT :
                            break;
                        case RedirectEvent.TYPE_META :
                            // MSIE and Mozilla don't send a Referer for META Refresh.
                            referrer = null;   
                            break;
                        case RedirectEvent.TYPE_300_REDIRECT :
                            // MSIE, Mozilla, and Opera all send the original
                            // request's Referer as the Referer for the new
                            // request.
                            Object eventSource = e.getSource();
                            if (eventSource instanceof HttpConnection) {
                                referrer = ((HttpConnection)eventSource).getRequestProperty(REFERER);
                            }
                            break;

                    }
                 
                    HttpHeaders requestHeaders = new HttpHeaders();
                    requestHeaders.setProperty(REFERER, referrer);
                    PrimaryResourceFetchThread thread = new PrimaryResourceFetchThread(e.getLocation(), requestHeaders,null, event, this);

                    thread.start();
                    break;

            } case Event.EVENT_CLOSE :
                // TODO: close the appication
                break;
         
            case Event.EVENT_SET_HEADER :        // no cache support
            case Event.EVENT_SET_HTTP_COOKIE :  // no cookie support
            case Event.EVENT_HISTORY :          // no history support         
            case Event.EVENT_EXECUTING_SCRIPT :  // no progress bar is supported
            case Event.EVENT_FULL_WINDOW :      // no full window support
            case Event.EVENT_STOP :              // no stop loading support
            default :
        }

        return null;
    }

    /**
    * @see net.rim.device.api.browser.RenderingApplication#getAvailableHeight(net.rim.device.api.browser.BrowserContent)

    */
    public int getAvailableHeight(BrowserContent browserField) {
        // field has full screen
        return Graphics.getScreenHeight();
    }

    /**
    * @see net.rim.device.api.browser.RenderingApplication#getAvailableWidth(net.rim.device.api.browser.BrowserContent)

    */
    public int getAvailableWidth(BrowserContent browserField) {
        // field has full screen
        return Graphics.getScreenWidth();
    }

    /**
    * @see net.rim.device.api.browser.RenderingApplication#getHistoryPosition(net.rim.device.api.browser.BrowserContent)

    */
    public int getHistoryPosition(BrowserContent browserField) {
        // no history support
        return 0;
    }

    /**
    * @see net.rim.device.api.browser.RenderingApplication#getHTTPCookie(java.lang.String)
    */
    public String getHTTPCookie(String url) {
        // no cookie support
        return null;
    }

    /**
    * @see net.rim.device.api.browser.RenderingApplication#getResource(net.rim.device.api.browser.RequestedResource,
    *      net.rim.device.api.browser.BrowserContent)
    */
    public HttpConnection getResource( RequestedResource resource, BrowserContent referrer) {

        if (resource == null) {
            return null;
        }

        // check if this is cache-only request
        if (resource.isCacheOnly()) {
            // no cache support
            return null;
        }

        String url = resource.getUrl();

        if (url == null) {
            return null;
        }

        // if referrer is null we must return the connection
        if (referrer == null) {
            HttpConnection connection = Utilities.makeConnection(resource.getUrl(), resource.getRequestHeaders(), null);

            return connection;
         
        } else {
         
            // if referrer is provided we can set up the connection on a separate thread
            SecondaryResourceFetchThread.enqueue(resource, referrer);
         
        }

        return null;
    }

    /**
    * @see net.rim.device.api.browser.RenderingApplication#invokeRunnable(java.lang.Runnable)
    */
    public void invokeRunnable(Runnable runnable) {
        (new Thread(runnable)).run();
    }
 
}

class PrimaryResourceFetchThread extends Thread {
 
    private BrowserFieldSampleApplication _application;
 
    private Event _event;

    private byte[] _postData;

    private HttpHeaders _requestHeaders;

    private String _url;
 
    PrimaryResourceFetchThread(String url, HttpHeaders requestHeaders, byte[] postData,
                                  Event event, BrowserFieldSampleApplication application) {
     
        _url = url;
        _requestHeaders = requestHeaders;
        _postData = postData;
        _application = application;
        _event = event;
    }

    public void run() {
        HttpConnection connection = Utilities.makeConnection(_url, _requestHeaders, _postData);
        _application.processConnection(connection, _event);     
    }
}



All times are GMT -5. The time now is 03:22 PM.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.