Creación de un complemento de IBM Lotus Notes 8.0 y sus versiones posteriores para IBM Multimedia Library

Este artículo explica cómo crear una extensión para IBM® Lotus Notes® 8.0 y sus versiones posteriores que le permita abrir una URL preconfigurada (por ejemplo, Lotus Notes Multimedia Library) en una nueva ventana del navegador mediante la selección de una las opciones del menú Ayuda.

Robert Schneider, IT-Specialist, IBM Software Services for Lotus, IBM Deutschland GmbH, IBM

Robert Schneider trabaja como Especialista en TI para el departamento de servicios de software IBM Lotus en Alemania. Es el arquitecto principal en varios proyectos que se encargan de desarrollar soluciones basadas en Lotus Expeditor y en Lotus Notes 8.0 y sus versiones posteriores para grandes clientes industriales en Alemania. Robert tiene más de 20 años de experiencia en el negocio informático y trabajó para compañías como Digital Research y Novell. Desde que comenzó a trabajar para Lotus en 1993, ocupó diversos cargos (todos relacionados con el soporte técnico de ventas). Actualmente, desempeña sus funciones en el área de organización de servicios y se concentra en las nuevas plataformas de clientes basadas en Java. Para contactarlo, escribir a Robert.Schneider@de.ibm.com.



26-05-2009

Los clientes de Lotus Notes 8.0 y sus versiones posteriores tienen formas muy interesantes de vincular sus interfaces de usuario con las páginas de contenidos; por ejemplo, usan un marcador que aparece en la carpeta de favoritos en la barra de lanzamiento. Pero a veces, es posible que usted desee que su lanzamiento de contenidos esté más "integrado" en el cliente Lotus Notes (por ejemplo, vinculándola a una de las opciones en la barra de menú de Lotus Notes). En el caso de la nueva Lotus Notes Multimedia Library, muchos clientes expresaron sus deseos de contar con una forma así de integrada para iniciar el complemento directamente desde el menú Ayuda del cliente Lotus Notes.

La extensión que usaremos es un complemento creado con el objetivo de ampliar el marco basado en IBM Lotus® Expeditor, que es la base del cliente Lotus Notes 8.0 y sus versiones posteriores. Este complemento también usa el marco denominado Managed Settings, que le permite preconfigurar la URL que se abre y bloquear esas preferencias para que los usuarios no puedan modificarlas. Este artículo incluye el código fuente correspondiente al complemento en cuestión.

Este artículo le muestra cómo hemos desarrollado un complemento que le permite crear una opción de menú en el menú Ayuda de Lotus Notes que le permite abrir una ventana del navegador – tanto en una pestaña nueva como en una ventana nueva – la cual le muestra algunos contenidos configurables (la URL de Lotus Notes Multimedia Library), que se pueden gestionar por medio de las políticas IBM Lotus Domino®.

Muchos artículos en developerWorks® han abordado los puntos básicos relacionados con la creación de complementos para IBM Lotus Expeditor, IBM Lotus Sametime® 8.0 y sus versiones posteriores, y Lotus Notes 8.0 y sus versiones posteriores, todos basados en Lotus Expeditor y, por consiguiente, en Eclipse. Vea los vínculos que aparecen en la sección Recursos de este artículo.

En vez de documentar cada uno de los pasos requeridos para implementar el complemento final, este artículo sólo se concentra en los pasos clave. Las fuentes del complemento se incluyen en la sección denominada Downloads de este artículo, en caso de que prefiera volver a usarlas más adelante en vez de volver a comenzar desde el principio. Éstos son los pasos principales que documentamos:

  1. Ofrecer una página de preferencias que permita ingresar configuraciones; principalmente, se trata de la URL que se va a iniciar.
  2. Crear un comando de interfaz de usuario (UI) en Eclipse para ofrecer una opción de menú que active un manejador de comandos.
  3. Abrir una ventana del navegador, ya sea en una pestaña nueva como en una ventana nueva, para cargar los contenidos de esa URL.
  4. Ofrecer una forma de implementar el complemento para los usuarios de Lotus Notes.

Requisitos previos

Para el trabajo de implementación, usamos IBM Rational® Software Architect en su versión 7.5.1, que contaba con el set de herramientas Lotus Expeditor 6.2. También sirve el Eclipse 3.4+ que cuenta con el set de herramientas Lotus Expeditor 6.2. El complemento se desarrolló específicamente para iniciar Lotus Notes Multimedia Library. No obstante, como éste podía iniciar cualquier URL, le otorgamos un nombre mucho más neutro: com.ibm.notes.Webview.


Creación de un nuevo proyecto de complemento

Para comenzar el trabajo, seleccione File - New - Project (Archivo - Nuevo - Proyecto) y cree un nuevo Client Services Project (Proyecto de Servicios al Cliente) con su configuración favorita. Los nombres y especificadores no tienen mucha importancia. Como ejemplo, llamamos al proyecto com.ibm.notes.Webview; todos los demás valores quedaron predeterminados y sólo deseleccionamos una opción, la de Crear un complemento usando una de las plantillas que aparecen en la última página del asistente del Nuevo Proyecto


Preferencias, página de preferencias, su inicializador y cómo obedecer las configuraciones gestionadas

Los clientes generalmente ponen Lotus Notes Multimedia Library a disposición de sus usuarios de Lotus Notes en sus servidores internos. Por lo tanto, usar una página de preferencias le da la capacidad de editar esta URL.

Luego de crear el proyecto, usamos el asistente de punto de extensión Eclipse, que se observa en la Figura 1, para crear la página de preferencias con su inicializador de preferencias.

Figura 1. Ventana de selección del punto de extensión
The Extension Point Selection window

La Figura 2 muestra una página de preferencias a modo de ejemplo. Ingrese los siguientes valores:

  • En el campo Java Package Name (Nombre del paquete Java), ingrese com.ibm.notes.Webview.
  • En el campo Page Class Name (Nombre de la clase de página), ingrese PreferencePage.
  • En el campo Page Name (Nombre de la página), ingrese Web View.
Figura 2. Ventana de la página de preferencias de muestra
The Sample Preference Page window

Este asistente genera una clase denominada PreferencePage que amplía la clase denominada FieldEditorPreferencePage. Como nos gustaría tener un mayor control de los elementos que aparecen en dicha página, la modificamos para que sea una Página de Preferencias ordinaria y creamos los métodos requeridos para completar la ventana con los controles que necesitamos.

Como es posible que los clientes deseen modificar el nombre de la página de preferencias que se observa en la ventana, luego usamos la función de localización de complementos de Eclipse para enviar el texto que aparece en esa página a un archivo de propiedades. Ahora, usted puede editar el nombre de la página en el archivo plugin.properties en el proyecto de complemento.

[…]
prefpagename=Notes Multimedia Library
[…]

Durante createContents, consultamos el marco de Managed Settings (Configuraciones gestionadas) para determinar si el administrador bloqueó la configuración. Si la configuración no está bloqueada, habilitamos los controles correspondientes. El Listado 1 es un fragmento del código que nos muestra cómo se puede llevar a cabo esta tarea.

Listado 1. Colocación del indicador de activación de una configuración gestionada
[...]    
private ManagedSettingsScope scope = null;  
[...]    
scope = new ManagedSettingsScope();  
[...]    
// check whether this is a locked managed setting and if so,    
// disable the buttons to prevent user input 
if  (scope.isReadOnly(Activator.PLUGIN_ID,       
   PreferenceConstants.P_OPENMODE))    
   {      newTabButton.setEnabled(false);      newWindowButton.setEnabled(false);    }  
   [...]

Implementamos dos configuraciones para el complemento:

  • Un marcador para indicar si el usuario desea abrir los contenidos de la biblioteca en una pestaña nueva o en una ventana nueva.
  • La URL de los contenidos que se deben visualizar.

Si usted usa el código que aparece en el archivo provisto en la sección Downloads (Descargas) de este artículo, su página de preferencias se debería ver como la que se observa en la figura 3.

Figura 3. La página de preferencias
The preference page

Un comando UI de Eclipse

Luego de crear la funcionalidad de preferencias de nuestro complemento, volvimos a la página de extensiones de nuestro archivo plugin.xml y usamos otro asistente, que se observa en la figura 4, para implementar todo lo necesario para contar con una opción de menú que nos permita llamar a nuestro código.

Figura 4. Asistente de punto de extensión
Extension Point Wizard

La Figura 5 muestra una página de contribución de comandos de muestra. Ingrese los siguientes valores:

  • En el campo Java Package Name (Nombre del paquete Java), ingrese com.ibm.notes.Webview.
  • En el campo Handler Class Name (Nombre de la clase de manejador), ingrese CommandHandler.
  • En el campo Message Box Text (Recuadro de Texto), ingrese "Hello, Eclipse world as a placeholder". Es probable que luego termine quitando dicho texto.
Figura 5. La página de contribución de comandos de prueba
The sample command contribution page

Luego de hacer clic en Finish (Finalizar), verá que varios puntos de extensión se completan automáticamente. Vea las figuras 6 y 7 para más información al respecto.

Figura 6. Comparación entre los datos ingresados por el asistente y los datos finales: El asistente crea los puntos de extensión de manera automática
Comparing the wizard entries with the final entries: Extension points being automatically created by the wizard
Figura 7. Comparación entre los datos ingresados por el asistente y los datos finales: Puntos de extensión luego de eliminar todo lo que no era necesario para nuestro complemento
Comparing the wizard entries with the final entries: Extension points after we clean up what wasn't required for our plug-in

Eclipse tiene una forma cautelosa de definir estos comandos. En otras palabras, el proceso de Eclipse se parece a esto:

  • Hay algo que me gustaría hacer. Entonces, llamo a la función do.it (org.eclipse.ui.commands/command).
  • Ésta es la lógica para do.it y el código real (org.eclipse.ui.handlers/handler).
  • Deseo que determinada combinación de teclas llame a la función do.it (org.eclipse.ui.bindings/key).
  • Deseo poder seleccionar do.it desde la UI (org.eclipse.ui.menus/menuContribution) en un lugar determinado dentro del menú (org.eclipse.ui.menus/menu) y / o en un lugar determinado de la barra de herramientas (org.eclipse.ui.menus/toolbar).

Como se puede observar, hemos quitado el ingreso por la barra de herramientas y sólo hemos usado el ingreso por el menú para nuestro comando. Además, también modificamos el lugar en el que aparece la opción en el menú. El asistente genera una URL del menú (menu:org.eclipse.ui.main.menu?after=additions). Esta URL del menú hace que un menú nuevo de alto nivel se muestre antes del menú de Ayuda, que incluye un elemento del menú con nuestro comando de muestra. Luego de modificar ese comando para que sea menu:help?before=additions, el elemento del menú aparece en el menú de Ayuda debajo de la opción Dynamic Help (Ayuda dinámica).

Luego de definir correctamente todos los puntos de extensión, usted deberá concentrarse en el código de la clase CommandHandler en particular, en el cuerpo del método execute(). El Listado 2 muestra el código generado por el asistente en la página de puntos de extensión de la figura 4.

Listado 2. Método execute() de una clase org.eclipse.core.commands.AbstractHandler
 /**   
 * the command has been executed, so extract the needed   
 * information from the application context.   
 */  
 public Object execute(ExecutionEvent event) throws ExecutionException {   
IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindowChecked(event); 
MessageDialog.openInformation(
  window.getShell(),        
 "Webview Plug-in",        
 "Hello, Eclipse world");    
return null;  
}

Apertura de una ventana del navegador para visualizar los contenidos de una URL

Recapitulemos: Hasta ahora, hemos creado una preferencia que contiene la URL que deseamos que nuestros usuarios puedan ver. Además, contamos con una acción seleccionable desde la UI y que hace que se ejecute un método de una de nuestras clases. A continuación, deseamos abrir una pestaña nueva o una ventana nueva y agregar una instancia de un navegador que apunte hacia nuestra URL.

En Eclipse, crearíamos una visualización para la instancia del navegador integrado, la colocaríamos en una perspectiva y llamaríamos a la plataforma para que abra esta perspectiva. Pero existe una diferencia entre Eclipse y Lotus Notes y Lotus Expeditor. Una perspectiva ya está abierta y todo lo que deseamos hacer es abrir una pestaña nueva dentro de ella. Para hacer esto, Lotus Expeditor ofrece un API especial que nos permite hacer exactamente esto: el SwitcherService-API.

Ahora, necesitamos ampliar el alcance de nuestro artículo para crear cierta comprensión sobre los servicios, que se pueden prestar a través del marco OSGi de Eclipse. Si tiene la funcionalidad que desea ofrecerles a los demás, usted puede crear un punto de extensión que se pueda vincular a otro complemento mediante la creación de una extensión del mismo. Este enfoque es la mejor forma conocida de ampliar las capacidades de Eclipse. Por supuesto que hay otras formas de hacer lo mismo. Dependiendo de su plan específico, dichas formas de hacer lo mismo pueden tener ciertas ventajas en comparación con el esquema de puntos de extensión. Una forma alternativa es el marco de servicios de la plataforma OSGi. Este marco ofrece una forma controlada de dar instancias de una clase determinada a otras personas reconociendo que los cargadores de clases dentro de la plataforma están separados entre sí.

Usando los servicios que son parte del marco OSGi, usted podría caracterizar su plan de la siguiente manera: "Tengo algo que puedo ofrecer como servicio y está implementado en una clase denominada a.b.c.MyService". Los usuarios que deseen consumir dicho servicio pueden llamar a otra API y decir lo siguiente: "Necesito un servicio de a.b.c.MyService y quiero que me consigan un instancia del mismo".

Ese enfoque es la forma en la que el equipo de Lotus Expeditor implementó SwitcherService, un servicio que le permite abrir ventanas como pestañas nuevas, pestañas agrupadas o ventanas nuevas. Para conocer las generalidades de las características de este servicio, vea el Javadoc en el paquete com.ibm.rcp.ui.launcher, en especial la interfaz SwitcherService y la clase SwitcherParam.

Para usar el SwitcherService API, usted primero debe conseguir una instancia del servicio. Sólo podrá hacer esto si cuenta con una instancia de BundleContext que se haya pasado al método start() de su clase Activator. Como por lo general la clase Activator es una entidad de servicio de complemento interno, colocamos un método público en nuestro Activator, lo que permite que otras clases de nuestro complemento soliciten una instancia de SwitcherService. El Listado 3 muestra el código para este método en particular.

Listado 3. Código para recuperar una instancia de SwitcherService
/**   
* Obtain an instance of the SwitcherService from the Expeditor platform   
*    
* @return the ss   
*/  
public SwitcherService getSwitcherService()  {  
  if (ss == null)    {     
  ServiceTracker st;       
  // retrieve a SwitcherService instance through    
  // the ServiceTracker      
  st = new ServiceTracker(context,          
  "com.ibm.rcp.ui.launcher.SwitcherService",           
   null);      
  st.open();      
  ss = (SwitcherService) 
  st.getService();      
  st.close();    }    
return ss;  }

Tenga en cuenta que este enfoque puede fallar en determinadas situaciones:

  • En una fase temprana de la inicialización de la plataforma.
  • Si su complemento se ejecutó en Lotus Sametime y no en una versión completa de Lotus Expeditor o Lotus Notes, ya que Lotus Sametime no ofrece ningún servicio SwitcherService.

Asegúrese de controlar el resultado del método y actuar adecuadamente si detecta una devolución nula.

En la clase de manejador de comandos, deberá hacer tres cosas:

  1. Lea sus preferencias para obtener la URL que se va a abrir y el marcador que indica si se trata de una pestaña nueva o de una ventana nueva.
  2. Configure un componente integrado del navegador con su configuración deseada incluyendo la URL inicial).
  3. Abra la venta de la forma que el usuario desee que lo hagamos.

El primer paso, la lectura de las preferencias, se muestra en el listado 4.

Listado 4. Código para recuperar la configuración del marco de preferencias
/**   
* the command has been executed, so extract the needed information   
* from the application context.   
*/  public Object execute(ExecutionEvent event) throws ExecutionException  
 {    
   logger.entering(getClass().getName(), "execute"); 
   
   ManagedSettingsScope scope = new ManagedSettingsScope();    
   IEclipsePreferences prefs = scope.getNode(Activator.PLUGIN_ID); 
   
String url = prefs.get(PreferenceConstants.P_URL, "about:blank"); //$NON-NLS-1$    
boolean isOpenInNewWindow = (prefs.get(PreferenceConstants.P_OPENMODE,        
   null)        
  .compareToIgnoreCase(PreferenceConstants.P_OPENMODE_WINDOW) == 0) ? true        
  : false; //$NON-NLS-1$

El próximo paso consiste en configurar la instancia del navegador integrado de la forma que se observa en el listado 5. Los nombres de las configuraciones y sus valores no deberían necesitar ninguna explicación. Si desea leer sobre todas las configuraciones posibles para dicho componente del navegador, busque sus nombres y configuraciones en el Javadoc de com.ibm.rcp.ui.browser.BrowserPreference-class (vea estevínculo.)

Listado 5. Determinación de la configuración de un navegador integrado
Map<String, String>
configMap = new HashMap<String, String>();   
configMap.put(BrowserPreference.ID, Activator.PLUGIN_ID);   
configMap.put(BrowserPreference.INITIAL_URL, url);   
// TODO We could make all these settings configurable 
configMap.put
(BrowserPreference.ENABLE_BOOKMARKS, "false"); //$NON-NLS-1$  
configMap.put(BrowserPreference.ENABLE_CONTEXT_MENU, "false"); 
//$NON-NLS-1$ 
configMap.put(BrowserPreference.ENABLE_HELP, "false"); 
//$NON-NLS-1$  
configMap.put(BrowserPreference.SHOW_BOOKMARK, "false"); 
//$NON-NLS-1$  
configMap.put(BrowserPreference.SHOW_HISTORY, "false"); 
//$NON-NLS-1$  
configMap.put(BrowserPreference.SHOW_HOME, "false"); 
//$NON-NLS-1$  
configMap.put(BrowserPreference.SHOW_PAGE_CONTROL, "false");
//$NON-NLS-1$  
configMap.put(BrowserPreference.SHOW_PRINT, "false"); 
//$NON-NLS-1$  
configMap.put(BrowserPreference.SHOW_TOOL_BAR, "false"); 
//$NON-NLS-1$  
configMap.put(BrowserPreference.SHOW_URL_ENTRY, "false"); 
//$NON-NLS-1$  
BrowserFactory.setBrowserConfigMap
 (Activator.PLUGIN_ID, configMap);

Por último, deberá hacer que Lotus Expeditor o Lotus Notes abra la ventana. Vea el código que aparece en el listado 6.

Listado 6. Código principal para abrir una visualización en una perspectiva nueva
try  
{    
 SwitcherParam param;    
 SwitcherResult result;    
 IWorkbenchWindow currentWindow = HandlerUtil            
        getActiveWorkbenchWindowChecked(event);
		
	switcherService = Activator.getDefault().getSwitcherService();       
if (switcherService == null)      
{        
   logger            
     .severe("Cannot obtain an instance of the SwitcherService!");        
	 return null;      
	 }  
     
	 logger.fine("About to open URL " + url + " in new "  	 
	 + ((isOpenInNewWindow) ? "window" : "tab"));    
	 
// if you set twoCalls to true, the newly opened window will      
// receive a tab. If you set it to false, the newly opened window      
// will NOT have a tab.      
boolean twoCalls = false;      
if (twoCalls)     
{     
   
 if (isOpenInNewWindow)        
 {          
    param = new SwitcherParam(null);          
	param.setMode(SwitcherParam.NEW_WINDOW);          
	param.setTitle(Messages.WindowTitle);          
	result = switcherService.show(param);    
	     currentWindow = result.getWindow();        
    }   

      param = new SwitcherParam(currentWindow);    
	  param.setViewId(Activator.VIEW_ID);    
	  param.setSecondaryId(Activator.PLUGIN_ID);    
	  param.setTitle(Messages.WindowTitle);    
	  result = switcherService.show(param);        
	 } 
	  else  
	  
	  {        
	  param = new SwitcherParam(currentWindow);        
	  if (isOpenInNewWindow)        
	  {   
      
	  param.setMode(SwitcherParam.NEW_WINDOW);        
	  }        
	  
	  param.setViewId(Activator.VIEW_ID);        
	  param.setSecondaryId(Activator.PLUGIN_ID);        
	  param.setTitle(Messages.WindowTitle);        
	  result = switcherService.show(param);      
	  }    
	   } catch (WorkbenchException e)    
	   {      
	   logger          
	    .log(              
		  Level.SEVERE,              
		  "Error when trying to open 
		  the Web view window in command handler",              
		  e);    
		 }     
		return null;  
	}

Como puede observar, existen dos formas diferentes de abrir una ventana. Puede usar una sola llamada para abrir la ventana y sus contenidos y puede usar una llamada para abrir sólo la ventana y otra llamada para visualizar los contenidos. Cada método cumple tareas diferentes y su funcionalidad no se documenta. Las Figuras 8, 9 y 10 ilustran estas diferencias.

Figura 8. Comparación de los modos diferentes de abrir una visualización: En una pestaña
Comparing the different modes to open a view: In a tab
Figura 9. Comparación de los modos diferentes de abrir una visualización: En una ventana nueva (una llamada)
Comparing the different modes to open a view: In a new window (one call)
Figura 10. Comparación de los modos diferentes de abrir una visualización: En una ventana nueva (dos llamadas)
Comparing the different modes to open a view: In a new window (two calls)

Implementación del complemento en un grupo de usuarios de Lotus Notes

Hasta ahora, usted creó las partes vitales de su complemento y debería estar listo para presentarlo a sus usuarios. Existen muchas formas de distribuir e implementar dicho complemento en diversas comunidades. La forma más básica consiste en crear un sitio de actualización con una función que contenga su complemento y le pregunte al usuario si desea instalarlo desde el sitio de actualización. Este sitio de actualización puede ser un sistema remoto, donde los usuarios pueden acceder a las funciones o a los complementos usando HTTP, o un archivo comprimido que contenga todo lo necesario en un archivo que se pueda instalar de manera local desde una unidad USB, por ejemplo.

Los usuarios de Lotus Notes cuentan con una forma todavía más cómoda de implementar esta función. Ellos pueden usar el marco de widgets del cliente Lotus Notes, que está disponible en Lotus Notes 8.0.1 y sus versiones posteriores. Este enfoque requiere que usted ofrezca la función en un sitio de actualización, que podría ser un sitio de actualización basado en NSF. Para activar la instalación de la función por medio del marco de widgets, puede enviar un archivo XML a sus usuarios para que lo arrastren hacia la barra My Widgets o le asignen categorías de widgets predeterminadas en el catálogo de widgets que se instala automáticamente en los clientes de Lotus Notes por medio de las directivas de Lotus Notes y Lotus Domino. Usted necesitaría configurar un catálogo de widgets en uno de sus servidores Lotus Domino.

En este caso, les ofrecemos un archivo XML pequeño, como se puede observar en el listado 7, que usted les puede enviar a sus usuarios. Ellos sólo tienen que arrastrar el archivo hacia su barra My Widgets.

Listado 7. Datos XML para un manifiesto de implementación de widget
<?xml version="1.0" encoding="UTF-8"?> 
<WebcontextConfiguration version="1.1">  
<palleteItem contributeToSideshelfOnStartup="false"   
id=" lotus.multimedia.library" imageUrl=""      
modified="false" providerId=
"com.ibm.rcp.toolbox.prov.provider.ToolboxProvisioning"      
title="IBM Lotus Notes Multimedia Library"
url=
"http://www.yourhost.com/some/folder/com.ibm.notes.Webview.     
updatesite/site.xml">     
<preferences/>     
 <data>       
 <installManifest>       
  <![CDATA[         
  <install version="1.0.0">           
  <installfeature default="true" id="com.ibm.notes.Webview.feature"              
  name="notes.Webview" required="false" show="true" version="1.0.0">            
  <requirements>               
  <feature download-size="1000" id="com.ibm.notes.Webview.feature"                  
  match="perfect" shared="true" size="1000"
url="http://www.yourhost.com/some/folder/com.ibm.notes.Webview.updatesite/site.xml"
version="1.0.0"/>              
   </requirements>           
   </installfeature>         
   </install>       
  ]]>       
   </installManifest>     
 </data>   
 </palleteItem> 
 </WebcontextConfiguration>

Coloque el código que aparece en el listado 7 en un archivo XML y envíeselo por correo a sus usuarios. Si ellos lo arrastran hacia su barra My Widgets, se activará automáticamente la instalación de su función desde el sitio de actualización. Luego de reiniciar el cliente Lotus Notes, su menú debería aparecer en el lugar correspondiente, según se observa en la figura 11.

Figura 11. Apariencia del menú nuevo
Appearance of the new menu item

El código fuente del complemento, sus características y el sitio de actualización están incluidos en la sección denominada Downloads (Descargas) de este artículo. Si desea cambiar el nombre de su página de preferencias y el menú, sólo tiene que modificar dos líneas en el archivo plugin.properties del complemento.

Este complemento tiene la función de administrar sólo una entrada del menú y desplegar una URL. Si necesita contar con dos o más entradas para que se abran dos o más URL diferentes, puede agregar entradas a los puntos de extensión de los comandos org.eclipse.ui., org.eclipse.ui.bindings y org.eclipse.ui.menus. Usted puede trabajar con un manejador de comandos. Sólo tiene que verificar la ID del comando que se transfiere al manejador de comandos y hacer lo correspondiente. Para poder editar otra URL en la página de preferencias, puede duplicar las líneas que producen el control de edición para la URL y ver dónde se leen y se escriben los valores, luego debe duplicar dicho código con las ID nuevas.


Conclusión

Como puede ver, redactar un código que integre contenidos de manera nativa en un cliente Lotus Notes no lleva mucho trabajo. Saber cómo usar el marco genuino de puntos de extensión del marco subyacente de Eclipse y Lotus Expeditor es probablemente lo más importante. El código de este complemento lo puede ayudar a comprender algunas de estas características, lo que le permitirá comenzar a hacer cosas más importantes con el nuevo cliente Lotus Notes.


Descargas

DescripciónNombretamaño
Código de ejemplocom.ibm.notes.webview.updatesite.zip14KB
Código de ejemplocom.ibm.notes.webview.zip30KB

Recursos

Aprender

Obtener los productos y tecnologías

Comentar

Comentarios

developerWorks: Ingrese

Los campos obligatorios están marcados con un asterisco (*).


¿Necesita un IBM ID?
¿Olvidó su IBM ID?


¿Olvidó su Password?
Cambie su Password

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


La primera vez que inicie sesión en developerWorks, se creará un perfil para usted. La información en su propio perfil (nombre, país/región y nombre de la empresa) se muestra al público y acompañará a cualquier contenido que publique, a menos que opte por la opción de ocultar el nombre de su empresa. Puede actualizar su cuenta de IBM en cualquier momento.

Toda la información enviada es segura.

Elija su nombre para mostrar



La primera vez que inicia sesión en developerWorks se crea un perfil para usted, teniendo que elegir un nombre para mostrar en el mismo. Este nombre acompañará el contenido que usted publique en developerWorks.

Por favor elija un nombre de 3 - 31 caracteres. Su nombre de usuario debe ser único en la comunidad developerWorks y debe ser distinto a su dirección de email por motivos de privacidad.

Los campos obligatorios están marcados con un asterisco (*).

(Por favor elija un nombre de 3 - 31 caracteres.)

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


Toda la información enviada es segura.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=Lotus
ArticleID=398971
ArticleTitle=Creación de un complemento de IBM Lotus Notes 8.0 y sus versiones posteriores para IBM Multimedia Library
publish-date=05262009