## Comunicarse con el Navegador

Muchos de los métodos de Applet y AppletContext envuelven alguna pequeña comunicación con el navegador o el visualizador de applets. Por ejemplo, los métodos getDocumentBase() y getbBase() de la clase Applet obtienen información del navegador o el visualizador de applet sobre el applet y la página HTML de la que éste viene. El método showStatus() de la clase Applet le dice al navegador o visualizador que muestre un mensaje de estado. El método getParameterInfo() puede darle al nevegador una lista con los parámetros que entiende el applet. Y por supuesto, el navegador o el visualizador pueden llamar a los método init(), start(), stop(), y destroy() del applet para informale sobre los cambios de su estado.

También son interesantes los métodos showDocument de AppletContext. Con estos métodos, un applet puede controlar la dirección URL que mostrará el navegador, y en que ventana del navegador. (Por supuesto, el Applet Viewer ignora estos métodos, ya que no es un navegador de Web). Aquí tienes dos formas de showDocument():

    public void showDocument(java.net.URL url)
    public void showDocument(java.net.URL url, String targetWindow)

La forma de un sólo argumento de showDocument() sólo le dice al navegador que muestre la URL especificada, sin especificar la ventana en la que se mostrará el documento.

La forma de dos argumentos de showDocument() le permite especifar la ventana o marco HTML se mostrará el documento. El segundo argumento debe ser uno de los valores mostrados abajo.

Nota de Terminología: En está explicación, marco no se refiere a un marco del AWT sino a un marco HTML dentro de una ventana den navegador.

"_blank"
  Muestra el documento en una nueva ventana sin nombre.
"windowName"
  Muestra el documento en una ventana llamada windowName. Esta ventana se creará si es necesario.
"_self"
  Muestra el documento en la ventana y marco que contiene el applet.
"_parent"
  Muestra el documento en la ventana del applet en el marco padre del marco del applet. Si el marco del applet no tiene padre, esto tiene el mismo efecto que "_self".
"_top"
  Muestra el documento en la ventana del appler pero en el marcho de más alto nivel. Si el marco del applet tiene el nivel más alto, esto actúa igual que "_self".

Abajo hay un applet que te permite probar cada opción de las dos formas de showDocument(). Trae una ventana que le permite teclear una URL y elegir una de las opciones de showDocument(). Cuando pulses la tecla return o el botón Show document, el applet llama al método showDocument().

Abajo tienes el código del applet que llama a showDocument(). (Aquí tienes el programa completo)

    ...//En una subclase de Applet:
            urlWindow = new URLWindow(getAppletContext());
            . . .

    class URLWindow extends Frame {
        . . .
        public URLWindow(AppletContext appletContext) {
            . . .
            this.appletContext = appletContext;
            . . .
        }
        . . .
        public boolean action(Event event, Object o) {
            . . .
                String urlString = /* Cadena introducida por el usuario */;
                URL url = null;
                try {
                    url = new URL(urlString);
                } catch (MalformedURLException e) {
                    ...//Informa al usuario y retorna...
                }

                if (url != null) {
                    if (/* el usuario no quiere especificar una ventana */) {
                        appletContext.showDocument(url);
                    } else {
                        appletContext.showDocument(url, /* user-specified window */);
                    }
                }
            . . .

Ozito