Se sabe qué aspecto tiene "Hello World" en la versión antigua y menos compleja de Java sin utilizar ninguna interfaz de usuario ni otra infraestructura.
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
¿Qué le sucede a este estándar antiguo en el contexto de la plataforma Eclipse? En lugar de considerar que Hello World es un programa autónomo, debe considerarse que es una extensión de la plataforma. Puesto que queremos saludar al mundo, es preciso descubrir cómo ampliar el entorno de trabajo para incluir nuestro saludo.
Al profundizar en los componentes de la interfaz de usuario de la plataforma, se efectúa una revisión exhaustiva de las maneras en las que se puede ampliar y personalizar la UI del entorno de trabajo. De momento, se empezará con una de las extensiones de entorno de trabajo más simples: una vista.
Puede considerar que la ventana del entorno de trabajo es un marco que representa distintas partes visuales. Estas partes se agrupan en dos categorías principales: vistas y editores. Más adelante se hablará de los editores. Las vistas proporcionan información sobre algún objeto que el usuario está utilizando en el entorno de trabajo. Las vistas suelen cambiar su contenido a medida que le usuario selecciona diferentes objetos en el entorno de trabajo.
En relación al conector de Hello World, se implementará una vista para saludar al usuario con "Hello World."
El paquete org.eclipse.ui y sus subpaquetes contienen las interfaces públicas que definen la API de la interfaz de usuario (UI) del entorno de trabajo. La mayoría de estas interfaces tienen clases de implementación por omisión que puede ampliar para proporcionar modificaciones simples al sistema. En el ejemplo de Hello World, se ampliará una vista de entorno de trabajo para proporcionar una etiqueta en la que figure la palabra hola.
La interfaz adecuada es IViewPart, que define los métodos que deben implementarse para contribuir con una vista al entorno de trabajo. La clase ViewPart proporciona una implementación por omisión de esta interfaz. En pocas palabras, la función de la parte de una vista es crear los widgets necesarios para mostrar la vista.
Las vistas estándar del entorno de trabajo suelen visualizar información sobre un objeto que el usuario ha seleccionado o por el que está navegando. Las vistas actualizan su contenido según las acciones que tienen lugar en el entorno de trabajo. En este caso, sólo se pretende manifestar un saludo, por lo que la vista es bastante simple.
package org.eclipse.examples.helloworld;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.SWT;
import org.eclipse.ui.part.ViewPart;
public class HelloWorldView extends ViewPart {
Label label;
public HelloWorldView() {
}
public void createPartControl(Composite parent) {
label = new Label(parent, SWT.WRAP);
label.setText("Hello World");
}
public void setFocus() {
// hacer que el widget sea el centro de interés. En el caso de una etiqueta no es necesario
// dar más sentido, pero para conjuntos de widgets más complejos
// debe decidirse cuál es el centro de interés.
}
}
La parte de la vista crea los widgets que la representarán en el método createPartControl. En este ejemplo, se crea una etiqueta de SWT y se establece el texto "Hello World" en ella.
¡Ha finalizado la parte correspondiente a la codificación! Se puede compilar la nueva clase (es preciso asegurarse de que los archivos JAR de la plataforma se ven en el IDE o en el entorno del compilador para poder compilar el conector), pero aún se ha de averiguar cómo se ejecuta la nueva vista.
La nueva vista debe tener un aspecto parecido a este:
¿Cómo añadir esta vista a la plataforma?
Es preciso informar a la plataforma de que se desea contribuir con una vista. Para ello, se amplía el punto de extensión org.eclipse.ui.views. Se registra la extensión proporcionando una archivo de manifiesto, plugin.xml, que describe el conector, incluido el lugar donde se encuentra su código, y la extensión que se está anadiendo.
<?xml version="1.0" ?>
<plugin
name="Hello World Example"
id="org.eclipse.examples.helloworld"
version="1.0"
provider-name="Object Technology International, Inc.">
<requires>
<import plugin="org.eclipse.ui" />
</requires>
<runtime>
<library name="helloworld.jar" />
</runtime>
<extension point="org.eclipse.ui.views">
<category
id="org.eclipse.examples.helloworld.hello"
name="Hello" />
<view
id="org.eclipse.examples.helloworld.helloworldview"
name="Hello Greetings"
category="org.eclipse.examples.helloworld.hello"
class="org.eclipse.examples.helloworld.HelloWorldView" />
</extension>
</plugin>
En este ejemplo, se define el nombre, el id, la versión y el nombre del proveedor para el conector.
También se listan los conectores necesarios. Puesto que en el conector se utiliza la API de entorno de trabajo y de SWP, debe listarse org.eclipse.ui. También se debe indicar en qué lugar se encuentra el código ejecutabe. En este caso, se empaquetará el código en helloworld.jar.
Por último, se declara con qué punto de extensión contribuye el conector. La extensión org.eclipse.ui.views tiene varios parámetros de configuración diferentes. A continuación, deben revisarse los parámetros que se han especificado en el manifiesto.
En primer lugar, se declara una categoría para la extensión de vista. Las categorías pueden utilizarse para agrupar vistas relacionadas en el diálogo Mostrar vista del entorno de trabajo. Se define la categoría, "Hello," para que se visualice en su propio grupo.
Se declara un identificador exclusivo para la vista y se especifica el nombre de la clase que proporciona la implementación de la vista. También se especifica un nombre para la vista, "Hello Greetings", que aparecerá en el diálogo Mostrar vista y en la barra de título de la vista.
Existen muchos identificadores en un archivo de manifiesto de conectores. A menudo, puntos de extensión concretos definen parámetros de configuración que requieren identificadores (como el identificador de categoría utilizado anteriormente para el punto de extensión de vistas). También debe definirse un identificador de conector. Generalmente, se deben utilizar prefijos de nombres de paquetes Java para todos los identificadores al objeto de garantizar la exclusividad para todos los conectores instalados.
Usted decide el nombre concreto que se especifica a continuación del prefijo. Sin embargo, si el prefijo del identificador del conector coincide exactamente con el nombre de los paquetes, no debe utilizar nombres de clase que se deriven de ese paquete. De lo contrario, resultará difícil saber si está haciendo referencia a un nombre de identificador o a un nombre de clase.
Tampoco debe utilizar el mismo identificador para parámetros de configuración de extensión distintos. En el manifiesto anterior, se ha utilizado un prefijo de identificador común (org.eclipse.examples.helloworld), pero todos los identificadores son exclusivos. Este planteamiento para asignar un nombre resulta de ayuda para leer el archivo y ver qué identificadores están relacionados.