El entorno de trabajo proporciona un extenso conjunto de clases e interfaces que permite construir interfaces de usuario complejas. Afortunadamente, no hace falta que las comprenda todas cuando se disponga a hacer algo sencillo. Empezaremos por ver algunos conceptos que se han expuesto en la interfaz de usuario del entorno de trabajo y su correspondiente estructura interna.
Hemos estado utilizando el término entorno de trabajo de manera genérica para referirnos a "esa ventana que se abre al iniciar la plataforma". Hablemos de este término de manera más específica y veamos los componentes visuales que constituyen el entorno de trabajo.
En lo que queda de este tema, cuando utilicemos el término entorno de trabajo será para referirnos a la ventana Entorno de trabajo (IWorkbenchWindow). La ventana Entorno de trabajo es la de nivel superior de un entorno de trabajo. Es el marco que contiene la barra de menús, la barra de herramientas, la línea de estado, la barra de accesos directos y las páginas. Normalmente, no hace falta que programe la ventana Entorno de trabajo. Basta con que sepa que existe.
Nota: puede abrir múltiples ventanas Entorno de trabajo; no obstante, cada una de ellas es un mundo autocontenido de editores y vistas, por lo que nos limitaremos a centrarnos en una sola.
Desde el punto de vista del usuario, un entorno de trabajo contiene vistas y editores. Existen otras clases utilizadas para implementar la ventana Entorno de trabajo.
Dentro de la ventana Entorno de trabajo, hallará una página (IWorkbenchPage) que a su vez contiene componentes. Las páginas son un mecanismo de implementación para agrupar componentes. Normalmente, no es necesario que programe la página, pero la verá en el contexto de programación y depuración.
Las perspectivas proporcionan una capa de organización adicional dentro de la página del entorno de trabajo. Una perspectiva define una colección adecuada de vistas, su diseño y las acciones aplicables a una tarea de usuario determinada. Los usuarios pueden conmutar entre perspectivas a medida que realizan las tareas. Desde el punto de vista de la implementación, la perspectiva activa del usuario controla qué vistas se muestran en la página del entorno de trabajo y sus posiciones y tamaños. Los editores no resultan afectados por el cambio de perspectiva.
Las vistas y los editores son los lugares a los que nos trasladamos, más allá de los detalles de la implementación, para pasar a la programación de algún conector común. Cuando añade un componente visual al entorno de trabajo, debe decidir si desea implementar una vista o un editor. ¿Cómo decidirlo?
En cualquier caso, deberá construir su vista o su editor de acuerdo con un ciclo de vida común.
A lo largo de este ciclo de vida, se dispararán eventos desde la página de entorno de trabajo continente para notificar a las partes interesadas la apertura, la activación, la desactivación y el cierre de las vistas y los editores.
¿Parece sencillo? Puede serlo. Este es el atractivo de las vistas y los editores del entorno de trabajo.Tan solo son soportes para los widgets y pueden ser tan simples o complejos como se desee.La vista de Hello World que construimos anteriormente es un ejemplo de la vista más sencilla de todas. Veámosla de nuevo, ahora que ya hemos explicado más detalles sobre las vistas.
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() { // Establecer el foco en mi widget. En el caso de una etiqueta, ello // no tiene mucho sentido, pero para conjuntos de widgets más complejos, // hay que decidir cuál de ellos obtendrá el foco. } }
Observe que no tuvimos que implementar un método dispose(), porque lo único que hicimos fue crear una etiqueta en el método createPartControl(parent). Si hubiéramos asignado recursos de la UI, como imágenes o fonts, habríamos tenido que desecharlos aquí. Puesto que ampliamos la clase ViewPart, heredamos la implementación de no hacer nada ("do nothing") de dispose().