Categorías
Rich Client Platform(RCP)

Aprenda el marco de trabajo de Eclipse RCP mediante el uso de proyectos de código abierto

El código abierto no es un concepto nuevo y puede encontrar proyectos de código abierto para casi todos los marcos de uso común. En 2010, UCI publicó su corpus de proyectos que contiene alrededor de 18.000 proyectos de código abierto de Java. Podemos buscar y encontrar fácilmente proyectos que utilizan frameworks populares como Eclipse RCP, Struts 2, Spring, Android, etc.

Es de sentido común que el marco es difícil de aprender, especialmente aquellos marcos grandes que tienen miles de clases / interfaces. La investigación ha demostrado que una barrera es la falta de ejemplos. Con esos proyectos de código abierto, no creo que la falta de ejemplos sea tan crítica como lo era antes, porque no es difícil encontrar ejemplos. A continuación, mostraré cómo usar proyectos de código abierto para aprender el marco Eclipse RCP.

Los desarrolladores que utilizan Eclipse RCP pueden seguir la regla «El mono ve, el mono hace». Es decir, busque un proyecto existente que use Eclipse RCP y haga algo similar. Este enfoque es muy eficaz. Básicamente, necesitamos dos cosas: un proyecto Eclipse RCP decente y Eclipse Java API Doc. Comenzamos leyendo el código y revisamos el Doc cada vez que vemos alguna clase / interfaz / método que no es obvio de entender.

Aquí hay una lista de proyectos que utilizan el marco Eclipse RCP. Esas se pueden llamar aplicaciones cliente Eclipse RCP y todas son del código de Google. Podemos examinar el diseño de archivos de esos proyectos RCP y el código fuente de cada clase. He verificado su accesibilidad y aquí están los enlaces:

Proyectos de código abierto de Eclipse RCP:

  • http://code.google.com/p/localizedproperties/
  • http://code.google.com/p/audiotageditor/
  • http://code.google.com/p/pluralism/
  • http://code.google.com/p/eclipse-plugin-ftp-server/
  • http://code.google.com/p/change-impact-analysis/
  • http://code.google.com/p/eclipsender/
  • http://code.google.com/p/humiee/
  • http://code.google.com/p/zeusatlas/
  • http://code.google.com/p/i18n-mead-properties-plugin/
  • http://code.google.com/p/overtureeditor/
  Referencias de los widgets de Eclipse SWT y JFace

También puede explorar clases o interfaces de uso común y leer directamente su código mediante ejemplos de API.

Lo primero que aprendemos es el diseño de un proyecto típico, es decir, una perspectiva, una vista, etc.

Excepto el código específico del dominio, también podemos encontrar el uso de la API de marco.

Por ejemplo, desde esta clase de vista: http://code.google.com/p/eclipse-plugin-ftp-server/source/browse/trunk/plugin/src/com/holmconsulting/ftp/server/plugin/views/ FTPServerView.java, tiene el siguiente método createPartControl.

public void createPartControl(Composite parent) {
       viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL
                               | SWT.V_SCROLL | SWT.FULL_SELECTION);
       createColumns(viewer, parent);
 
       File rootDir = Activator.getDefault().getStateLocation().toFile();
       List<File> files = new ArrayList<File>();
       FileUtils.getInstance().loadFiles(rootDir, files);
       viewer.setContentProvider(new ViewContentProvider(files));
       viewer.setLabelProvider(new ViewLabelProvider());
       viewer.setInput(getViewSite());
       getSite().setSelectionProvider(viewer);
 
       FileWrapperSorter sorter = new FileWrapperSorter();
       viewer.setSorter(sorter);
 
       // Initial sort
       sorter.setColumnName(COL_RECEIVED);
       viewer.getTable().setSortDirection(SWT.UP);
       viewer.getTable().setSortColumn(
                        viewer.getTable().getColumn(
                        viewer.getTable().getColumnCount() - 1));
       viewer.refresh();
 
       // Create the help context id for the viewer's control
       PlatformUI.getWorkbench().getHelpSystem()
                 .setHelp(viewer.getControl(), "viewer.context.help");
       makeActions();
       hookContextMenu();
       hookDoubleClickAction();
       contributeToActionBars();
 
       //IContextService contextService = (IContextService) getSite()
       //              .getService(IContextService.class);
       //contextService.activateContext("viewer.context.help");
       PlatformUI.getWorkbench().getHelpSystem().setHelp(viewer.getControl(), "com.holmconsulting.ftp.server.plugin.viewer");
 
}
  Haga una nube de etiquetas en Java utilizando el dibujo SWT

Podemos captar fácilmente cómo usar un TableViewer, desde el fragmento de código:

viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION);
 viewer.setContentProvider(new ViewContentProvider(files));
 viewer.setLabelProvider(new ViewLabelProvider());
 viewer.setInput(getViewSite());

A diferencia de Eclipse RCP, es posible que otros marcos no tengan un diseño y una jerarquía de clases tan obvios; exploraré cómo usar proyectos de código abierto para aprender otros marcos más adelante.

Por Programación.Click

Más de 20 años programando en diferentes lenguajes de programación. Apasionado del code clean y el terminar lo que se empieza. ¿Programamos de verdad?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *