Tutoriel Eclipse RCP 4 pour débutants - Application e4 Workbench

View more Tutorials:

1- Introduction

This document is based on:
  • Eclipse 4.5 (MARS)

  • Eclipse e4 RCP  (RCP 4)

2- Les installations avant de commencer

2.1- Installer WindowBuilder

Installez Plugin WindowBuilder,  il s'agit d'un  Plugin qui vous permet concevoir l'interface d'application  SWT  par glisser-déplacer des commodités.
Voir les instructions d'installation sur  : 

2.2- Installer e4 Tools Developer Sources

Vous pouvez voir les instructions d'installation sur :
  • TODO Link!

3- Créer nouveau Java Workspace

Pour la programmation d'applications de RCP, vous devez créer un nouvel  Java Workspace:
  • File/Switch Workspace/Other..
Entrez:
  • F:\ECLIPSE_TUTORIAL\RCP

4- Créer Eclipse 4 RCP Project vide

Dans ce document, je vais vous guider pour créer une application  RCP dès le début (Ne pas suivre le modèle disponible), donc je vais créer une application d' Eclipse  RCP vide
Sur Eclipse sélectionne:
  • File/New/Other...
  1. Cochez la case sélectionnée sur le (1)
  2.  Dans la zone (2) sélectionner "Oui" pour créer RCP Project (Fonctionne Desktop), au contraire, il va créer RAP Project (Courir sur le Web)
Choisir  "Eclipse 4 RCP Application"
Entrez:
  • Java package name: org.o7planning.tutorial.rcp
Project a été créé:
Testez l'application:
Faites un clic droit sur  EclipseRCPTutorial.product Sélectionne  Run As/Eclipse Application

5- Structure de l'application Eclipse 4 RCP vide

L'application d' Eclipse 4 RCP vide a été créée par  Eclipse , voyez sa structure. Ouvrir le fichier Application.e4xmi:  Application.e4xmi:
Modifier le titre de l'application à "Eclipse E4 RCP Application" par exemple ci-dessous.
Et redémarrer l'application  :
 

6- Handler et Command

RCP Framework  construit un grand nombre de commandes, par exemple quatre commandes avec l'ID suivante : 
  1. org.eclipse.ui.file.exit
    • Commande pour quitter l'application
    org.eclipse.ui.file.open
    • La commande ouvrir le fichier.
    org.eclipse.ui.file.save
    • La commande save editor
  2. org.eclipse.ui.help.aboutAction
    • La commande qui s'ouvre la fenêtre About.

Vous pouvez voir une liste de la commande a été construite de RCP Framework à:

Créer un nouveau Command nommé  quiteCommand , appeler la sortie de la commande des applications ont été construites de  RCP Framework.
De même, nous créons à trois autres commandes :
 
Appelle l'éditeur ouvert le fichier sélectionné.
  • ID: org.eclipse.ui.file.open
  • Name: openCommand
Exécutez la commande pour enregistrer le contenu sur l'Éditeur (Editor).
  • ID: org.eclipse.ui.file.save
  • Name: saveCommand
AboutCommand:
  • ID: org.eclipse.ui.help.aboutAction
  • Name: aboutCommand
Handler est la gestion de classe pour les commandes (commande) de Menu ou  Toolbar. Lorsque vous cliquez sur  MenuItem ou  ToolItem signifie pour exécuter une commande, avant que la commande soit exécutée  Handler sera exécutée avant, vous pouvez annuler (annuler) la commande est exécutée dans le gestionnaire.

Handler est la classe qui, une fois mis en œuvre, il exécutera la tâche est écrite dans la méthode annotée par @ Execute.
 
Je vais créer quatre classe  Handler:
 
AboutHandler.java
package org.o7planning.tutorial.rcp.handler;

import org.eclipse.e4.core.di.annotations.Execute;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.widgets.Shell;

public class AboutHandler {
   
   @Execute
   public void execute(Shell shell) {
       MessageDialog.openInformation(shell, "About", "Eclipse 4 RCP Application");
   }
}
OpenHandler.java
package org.o7planning.tutorial.rcp.handler;

import org.eclipse.e4.core.di.annotations.Execute;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Shell;

public class OpenHandler {

   @Execute
   public void execute(Shell shell){
       FileDialog dialog = new FileDialog(shell);
       dialog.open();
   }
}
QuitHandler.java
package org.o7planning.tutorial.rcp.handler;

import org.eclipse.e4.core.di.annotations.Execute;
import org.eclipse.e4.ui.workbench.IWorkbench;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.widgets.Shell;


public class QuitHandler {
   @Execute
   public void execute(IWorkbench workbench, Shell shell){
       if (MessageDialog.openConfirm(shell, "Confirmation",
               "Do you want to exit?")) {
           workbench.close();
       }
   }
}
SaveHandler.java
package org.o7planning.tutorial.rcp.handler;

import org.eclipse.e4.core.di.annotations.CanExecute;
import org.eclipse.e4.core.di.annotations.Execute;
import org.eclipse.e4.ui.workbench.modeling.EPartService;

public class SaveHandler {

   @CanExecute
   public boolean canExecute(EPartService partService) {
       if (partService != null) {
           return !partService.getDirtyParts().isEmpty();
       }
       return false;
   }

   @Execute
   public void execute(EPartService partService) {
       partService.saveAll(false);
   }
}
Déclarez la classe  Handler avec l'application.
Pour déclarer un  Handler avec l'Application, vous devez en déclarer l'ID,  Handler classe et  Comand. 

Par exemple, l'utilisateur ferme l'application en cliquant sur  menuItem Exit, ce  menuItem associé à  quiteCommand,  QuiteHandler est la classe pour traiter cette commande ( comme déclaré ci-dessus), classe  QuiteHandler demande aux utilisateurs veulent fermer l'application, s'il n'y a aucun  quiteCommand commande sera exécutée.
De même déclarer les autres Handler.

7- Déclarez Menus

Créer le menu principal (menu principal) (Main menu) de l'application
Entrez l'ID du menu principal, il est nécessaire d'être: menu:org.eclipse.ui.main.menu
Ajouter trois  sous-menu:
  • File, Function, Help
Déclarer le sous-menu au menu File
  • Open
  • Save
  • Exit
Vous pouvez exécuter votre application :
 

8- Create Toolbar

Créer Main Toolbar, avec ID:
  • ID: toolbar:org.eclipse.ui.main.toolbar
Ajouter deux Toolitem: open & save
Relancez votre application :
 

9- Part

SamplePart.java
/*******************************************************************************
 * Copyright (c) 2010 - 2013 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *     Lars Vogel <[email protected]> - Bug 419770
 *******************************************************************************/
package org.o7planning.tutorial.rcp.part;

import javax.annotation.PostConstruct;
import javax.inject.Inject;

import org.eclipse.e4.ui.di.Focus;
import org.eclipse.e4.ui.di.Persist;
import org.eclipse.e4.ui.model.application.ui.MDirtyable;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Text;

public class SamplePart {

    private Text txtInput;
    private TableViewer tableViewer;

    @Inject
    private MDirtyable dirty;

    @PostConstruct
    public void createComposite(Composite parent) {
        parent.setLayout(new GridLayout(1, false));

        txtInput = new Text(parent, SWT.BORDER);
        txtInput.setMessage("Enter text to mark part as dirty");
        txtInput.addModifyListener(new ModifyListener() {
            @Override
            public void modifyText(ModifyEvent e) {
                dirty.setDirty(true);
            }
        });
        txtInput.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

        tableViewer = new TableViewer(parent);

        tableViewer.add("Sample item 1");
        tableViewer.add("Sample item 2");
        tableViewer.add("Sample item 3");
        tableViewer.add("Sample item 4");
        tableViewer.add("Sample item 5");
        tableViewer.getTable().setLayoutData(new GridData(GridData.FILL_BOTH));
    }

    @Focus
    public void setFocus() {
        tableViewer.getTable().setFocus();
    }

    @Persist
    public void save() {
        dirty.setDirty(false);
    }
}
Ajouter un nouveau  PerspectiveStack . Ceci est une pile (Stack ) contient des vues (Perspective).
Ajouter une nouvelle fenêtre (Perspective) :
 
Exécutez l'application  :
 
Les changements sur Part  pourraient le bouton  Save clair 

View more Tutorials: