Para construir interfaces de usuario complejas existe un amplio conjunto de clases e interfaces. Afortunadamente, no es necesario que las conozca todas para realizar cosas simples. A continuación se mostrarán algunos conceptos que se han expuesto en la interfaz de usuario del entorno de trabajo y su correspondiente estructura interna.
Se ha estado utilizando el término entorno de trabajo de manera genérica para hacer referencia a "esa ventana que se abre cuando inicia la plataforma." Ahora se hablará de este término de manera más específica y se mostrarán los componentes visuales que constituyen el entorno de trabajo.
Aparte de este enfoque, cuando se utilice el término entorno de trabajo será para hacer referencia a la ventana de entorno de trabajo (IWorkbenchWindow). La ventana de entorno de trabajo es la ventana de nivel superior en 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 rápidos y las páginas. Normalmente, no tiene que programar la ventana de entorno de trabajo. Sólo debe saber que está ahí.
Nota: Se pueden abrir varias ventanas de entorno de trabajo mediante Perspectiva->Abrir. Por omisión, las perspectivas nuevas se abren en la misma ventana de entorno de trabajo. Hay otras opciones disponibles (vea la página de preferencias del entorno de trabajo para obtener información más detallada). Cada ventana de entorno de trabajo es una amalgama de vistas y editores autónomos, por lo que únicamente se tratará una sola ventana de entorno de trabajo.
Desde el punto de vista del usuario, un entorno de trabajo contiene vistas y editores. Existen otras clases para implementar la ventana de entorno de trabajo.
Dentro de la ventana de entorno de trabajo hay una o más páginas (IWorkbenchPage) que, a su vez, se componen de diferentes partes. Las páginas son un procedimiento de implementación para agrupar partes. Normalmente, no es necesario que programe las páginas, pero las verá en el contexto de programación y depuración.
Nota: Las páginas se utilizan en la implementación de perspectivas. Permiten colocar a las partes del entorno de trabajo en un contenedor externo independientemente de si la perspectiva está abierta en la misma ventana de entorno de trabajo o en otra.
Las vistas y los editores son los lugares a los que se desplaza después de los detalles de implementación en alguna programación de 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 editor de acuerdo a un ciclo de vida común.
Para crear los widgets de SWT que representan el componente visual, implemente el método createPartControl. Debe determinar qué widgets desea utilizar y asignar todos los recursos de UI relacionados que se necesiten para visualizar la vista o el editor.
Cuando se haya centrado la vista o el editor, recibirá la notificación setFocus para que puede centrar el widget correcto.
Cuando se cierra la vista o el editor, recibirá un mensaje de desecho para indicar que la vista o el editor se están cerrando. En este momento, los controles asignados a createPartControl ya han sido desechados, pero usted debe desechar cualquier recurso gráfico (como cursores, iconos o fonts) que asignó cuando creó los controles o respondió a los eventos de widget.
A lo largo de este ciclo de vida, se activarán eventos de la página de entorno de trabajo que los contiene para notificar a las partes interesadas la apertura, activación, desactivación y cierre de las vistas y los editores.
Parece bastante simple. Esta es la ventaja de las vistas y los editores del entorno de trabajo. Tan sólo son soportes para widgets y pueden ser tan simples o complejos como se desee. La vista de Hello World que se construyó anteriormente es un ejemplo de la vista más simple. Ahora que se han explicado nuevos conceptos, se muestra de nuevo.
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.
}
}
Observe que no se tuvo que implementar un método dispose() ya que lo único que se hizo fue crear una etiqueta en el método createPartControl(parent). Si se hubiera asignado algún recurso de UI, como imágenes o fonts, habríamos tenido que desecharlo aquí. Puesto que se amplió la clase ViewPart, se heredó al implementación "do nothing" de dispose().