Desenvolvimento de Plugins para Eclipse - SAADS 2015

Preview:

Citation preview

Minicurso de Eclipse para o Desenvolvimento de Plugins

Gabriel Bronzatti Morogabrielbronzattimoro.es@gmail.com

Bacharel em Engenharia de Software

Rafhael Rodrigues Cunharafhael.cunha@iffarroupilha.edu.br

Bacharel em Engenharia de SoftwareMestrando em Engenharia de Computação

V Semana Acadêmica de ADSAnálise e Desenvolvimento de Sistemas

Parte I

Roteiro

1. Plataforma Eclipse2. Ambiente de Desenvolvimento de Plugin3. Conhecendo o Primeiro Template de Plugin4. Primeiro Projeto em Eclipse Rich Client Application (RCP)5. Links Úteis

Roteiro

1. Plataforma Eclipse2. Ambiente de Desenvolvimento de Plugin3. Conhecendo o Primeiro Template de Plugin4. Primeiro Projeto em Eclipse Rich Client Application (RCP)5. Links Úteis

Plataforma Eclipse

➔ O que é?É um ambiente que fornece recursos da sua arquitetura

para a construção de plugins.

Plataforma Eclipse

Plataforma Eclipse

Ambiente principal da plataforma, fornece todos os recursos.

Plataforma Eclipse

Biblioteca de interface gráfica da plataforma Eclipse.

Plataforma Eclipse

Conjunto de ferramentas de interface gráfica da plataforma.

Plataforma Eclipse

Espaço de trabalho do usuário, sistema de diretório que contém seus arquivos.

Plataforma Eclipse

Recurso de manual de ajuda ao usuário.

Plataforma Eclipse

Recurso oferecido pela plataforma para versionamento de itens do workspace do usuário.

Plataforma Eclipse

Componente da plataforma utilizado para acionar os plugins do ambiente e interpretar seus arquivos de configuração

Plataforma EclipseO que é um plugin?

O que é um plugin?

O que é um plugin?

Plugin

➔ O que é?É uma parte de software que

utiliza recursos de um ambiente software para sua execução.

Arquitetura de um Plugin Eclipse

Arquitetura de um Plugin Eclipse

Arquitetura de um Plugin Eclipse

Define as bibliotecas utilizadas pelo plugin (suas dependências).

Arquitetura de um Plugin Eclipse

Define as informações necessárias para que o plugin possa ser executado.

Roteiro

1. Plataforma Eclipse2. Ambiente de Desenvolvimento de Plugin3. Conhecendo o Primeiro Template de Plugin4. Primeiro Projeto em Eclipse Rich Client Application (RCP)5. Links Úteis

Roteiro

1. Plataforma Eclipse2. Ambiente de Desenvolvimento de Plugin3. Conhecendo o Primeiro Template de Plugin4. Primeiro Projeto em Eclipse Rich Client Application (RCP)5. Links Úteis

Ambiente de Desenvolvimento de Plugin➔ Pré-Requisitos:

- JDK 8:http://www.oracle.

com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

- Eclipse Mars: https://eclipse.org/mars/

- Rich Client Application Eclipse- WindowBuilder

Instalando o Eclipse Mars

Instalando o Eclipse Mars

Instalando o E4 Tools

Instalando o E4 Tools

Instalando o E4 Tools

Instalando o E4 Tools

Instalando o WindowBuilder

Roteiro

1. Plataforma Eclipse2. Ambiente de Desenvolvimento de Plugin3. Conhecendo o Primeiro Template de Plugin4. Primeiro Projeto em Eclipse Rich Client Application (RCP)5. Links Úteis

Roteiro

1. Plataforma Eclipse2. Ambiente de Desenvolvimento de Plugin3. Conhecendo o Primeiro Template de Plugin4. Primeiro Projeto em Eclipse Rich Client Application (RCP)5. Links Úteis

Conhecendo o Primeiro Template de Plugin

Se você quiser criar um aplicativo plugin marque YES, nesse exemplo vamos criar apenas um plugin componente.

O assistente de criação disponibiliza templates para criar o seu plugin.

Extensões indicam recursos utilizados da plataforma Eclipse.

Arquivo responsável por definir as configurações necessárias para que o ambiente Eclipse possa executá-lo.

Dependências (bibliotecas) que o Plugin utiliza.

Primeira instância de execução do plugin, define também seu ciclo de vida.

Define um treinador (handler), abstração de listener.

plugin.xml

plugin.xml

Execute o plugin por aqui:

Resultado da Execução

plugin.xml

Dependências utilizadas pelo plugin.

plugin.xml

Extensões é quando um plugin utiliza a funcionalidade de outro plguin.

Testem outros templates...

Roteiro1. Plataforma Eclipse2. Ambiente de Desenvolvimento de Plugin3. Conhecendo o Primeiro Template de Plugin4. Primeiro Projeto em Eclipse Rich Client Application (RCP)5. Links Úteis

Roteiro1. Plataforma Eclipse2. Ambiente de Desenvolvimento de Plugin3. Conhecendo o Primeiro Template de Plugin4. Primeiro Projeto em Eclipse Rich Client Application (RCP)5. Links Úteis

Eclipse Rich Client Application (RCP)

➔ O que é?É uma plataforma para o

desenvolvimento de aplicações plugins.

Essas aplicações podem ser utilizadas de duas formas:● acopladas na IDE Eclipse;● como executável, o qual utilizará

os recursos empacotados da IDE Eclipse.

Primeiro Projeto em Eclipse RCP

O OSGI fornece componentes para que a aplicação possa ser executada independente da plataforma Eclipse, como executável.

Através dele é possível projetar quais recursos de interface gráfica que serão utilizados. Esses recursos podem ser: menus, painéis, controladores, assistentes, botões e o layout base das interfaces.

Dependências (bibliotecas) que o Plugin utiliza.

Define as propriedades básicas do plugin.

Estilo padrão para plugins Eclipse

plugin.xml é o mesmo que o anterior

Investigue um pouco sobre esses arquivos:

1. Application.e4xmi2. PrimeiroProjetoEmRCP.product

Executando nosso primeiro projeto RCP:

Executando nosso primeiro projeto RCP:

Executando nosso primeiro projeto RCP:

Continuação do Primeiro Projeto em RCP

➔ Problema Alvo:Um professor de matemática precisa de

uma ferramenta de software que calcule a área total das principais figuras (quadrado, triângulo,

retângulo, losângulo, etc) da geometria plana. Esse software será utilizado por alunos e deve

ter uma interface simples, para que eles possam através da inserção de parâmetros

calcular seus exercícios de geometria.

➔ Sua Tarefa:Construir um plugin executável para

resolver essa problemática.

Primeiro PassoVamos construir a interface gráfica do nosso software, para isso vamos utilizar o plugin WindowBuilder...

O Arquivo SimplePart define aquela interface que visualizamos quando executamos o nosso projeto.Agora vamos abrir esse arquivo com um editor de interface gráfica...

Se caso ocorrer algum erro, vocês atualizem o ambiente em Help-> Check for Updates e instalem as dependências

Utilizem a paleta de elementos para chegar a essa interface...

Vamos criar uma classe responsável para calcular a área do nosso quadrado. Sabemos que a área de um quadrado pode ser calculada por lado².

Vamos criar agora o código para o evento do nosso botão…Basta adicionar esse trecho de código em nossa classe SamplePart.

Nosso primeiro resultado…Tente você agora, você pode consultar mais fórmulas, vamos ver…

Link:http://acessibilidade.bento.ifrs.edu.br/oa-03-html.php

Primeiro Projeto em Eclipse RCP

https://github.com/tido4410/pluginExemploMinicursoEclipse.git

Primeiro Projeto em Eclipse RCP

Vamos agora exportar um executável do nosso software...

Primeiro Projeto em Eclipse RCP

Primeiro Projeto em Eclipse RCP

https://www.sendspace.com/file/dry8n1

Roteiro1. Plataforma Eclipse2. Ambiente de Desenvolvimento de Plugin3. Conhecendo o Primeiro Template de Plugin4. Primeiro Projeto em Eclipse Rich Client Application (RCP)5. Links Úteis

Roteiro1. Plataforma Eclipse2. Ambiente de Desenvolvimento de Plugin3. Conhecendo o Primeiro Template de Plugin4. Primeiro Projeto em Eclipse Rich Client Application (RCP)5. Links Úteis

Links Úteis

http://www.vogella.com

http://www.eclipse.org/documentation/

http://www.ibm.com/developerworks/br/library/os-ecplug/

Parte II

Evolução da Programa● Programação Assembler - x86

● Programação Estruturada - Pascal, C

● Programação Orientada a Objetos - C ++, Java

● Componentes de Software - J2EE, .NET

● Orientada a Aspectos - AspectJ, Spring Framework AOP

● Arquiteturas Orientadas a Serviços - WSDL, SOAP

Modelos● Até agora, a programação é sempre o centro das atenções..

● Como em outras obras de engenharia .. precisamos elevar o nível

de abstração.

● Modelos nos ajudam a construir sistemas mais complexos.

● Modelo: Descrição ou especificação (parte) de um sistema de

software a partir de um certo ponto de vista.

Model-Driven Engineering● MDE ou Engenharia de Software Dirigida a Modelos é o “novo”

enfoque da área de ES.

● Utilização de modelos como artefatos de software.

● Pode-se ter editores, otimizadores, validadores e compiladores

baseados em modelos.

● objetivo do modelo é facilitar o trabalho e reduzir o tempo de

desenvolvimento e o número de erros do software.

Aplicações MDE● Model-Driven Development (MDD)

● Engenharia Reversa

● Software Process Engineering (SPE)

● Domain Specific Language (DSL)

● Model-Driven Integration (MDI)

Domain Specific Languages (DSL)● Desenvolvimento de linguagens visuais e textuais

Domain Specific Languages (DSL)● Modelos gráficos, como UML, também podem ser representados

de forma textual.

Domain Specific Languages (DSL)● DSL classificasse da seguinte forma:

○ Representação■ Visual■ Textual

○ Implementação■ Interno■ Externo

Domain Specific Languages (DSL)● DSL textuais Internos:

○ Usam a infra-estrutura de uma linguagem de programação existente.

○ Na maioria dos casos, são implementados como bibliotecas na linguagem de programação.

○ Exemplo: Rails - Construido sobre a base da linguagem Ruby.

Domain Specific Languages (DSL)● DSL textuais externos:

○ Não utilizam como base nenhuma linguagem de programação já existente.

○ Desenvolvidos a partir do zero.○ Necessitam ser construídos com os estágios básicos de um

compilador.○ No entanto, não precisam de toda a complexidade envolvida

em uma linguagem de uso geral.

Domain Specific Languages (DSL)● DSL visuais internos:

○ Muitos problemas de engenharia de software são analisados e interpretados utilizando modelos gráficos melhores.

○ UML oferece um mecanismo de extensão (perfis) para personalizar modelos para domínios e plataformas específicas.

○ Os perfils não mudam a semântica da UML, e sim estendêm-a.○ São implementados usando estereótipos e restrições de

definição tag.

Domain Specific Languages (DSL)● DSL visuais externos:

○ Linguagens visuais são mais fáceis de analisar do que a textual.

○ No entanto, a UML e os perfils baseados nela, não são tão intuitivos para usuários não-técnicos.

○ Portanto, as linguagens gráficas devem ser adequadas ao tipo de modelagem semântica que se pretende resolver.

○ O desenvolvimento desse tipo de linguagem é muitas vezes mais complexo do que um texto.

Ferramentas de Desenvolvimento de DSL● Para apoiar as fases de desenvolvimento de um DSL, precisamos

de ferramentas para nos ajudar neste processo.

● Enfoque Tradicional○ Flex, BISON, ANTLR, etc.

● Enfoque model-driven○ Eclipse (Modeling Project)○ MS Visual Studio (DSL Tools)○ MetaEdit +, etc

Ferramentas de Desenvolvimento de DSL● Eclipse: Editor Textual

○ Eclipse é um ambiente de programação para Java, embora tenha de trabalhar com outras extensões de linguagens como PHP, XML, etc. Também permite trabalhar com DSLs criados pelo usuário.

Ferramentas de Desenvolvimento de DSL● Eclipse: Editor Visual

○ Eclipse permite trabalhar com modelos visuais baseados em UML ou DSLs criadas pelos usuários.

E como podemos desenvolver DSLs

usando MDE?

Desenvolvimento DSL com enfoque MDE

Construção do Editor

Projeto do Metamodelo

Desenvolvimento de um formato de representação

Geração das Transformações

Desenvolvimento DSL com enfoque MDE

Construção do Editor

Projeto do Metamodelo

Desenvolvimento de um formato de representação

Geração das Transformações

Desenvolvimento DSL com enfoque MDE

Projeto do Metamodelo:

● Metamodelagem é a análise, concepção e construção da meta necessária para cobrir um certo tipo de problema, bem como as suas regras e restrições.

● Metamodelo: um conjunto de conceitos de domínio para modelar (metaclasses) e as relações entre eles (metaassociações).

Desenvolvimento DSL com enfoque MDE

Projeto do Metamodelo:

● O objetivo é definir os conceitos e relações do domínio do problema que queremos abordar através de um diagrama de classes.

● Se define o metamodelo de forma abstrata, independentemente do formato de representação desejado.

● Metamodelos definem a sintaxe abstrata da linguagem a ser utilizada.

Desenvolvimento DSL com enfoque MDE

Construção do Editor

Projeto do Metamodelo

Desenvolvimento de um formato de representação

Geração das Transformações

Desenvolvimento DSL com enfoque MDE

Desenvolvimento de uma forma de representação:

● Como irá ser representado os elementos do metamodelo? Qual é o formato mais adequado para presentar nosso DSL?

● Qual é o tipo de problema que deseja-se modelar? Quem serão os usuários da linguagem?

● Linguagens visuais são mais fáceis de interpretar, mas as textuais geralmente são mais expressivas.

Desenvolvimento DSL com enfoque MDE

Desenvolvimento de uma forma de representação:

● Tem que se definir a sintaxe concreta para a nossa “nova linguagem”:

○ Textual: Baseada em uma gramática (tipo EBNF)○ Visual: Baseada em um mapeamento entre elementos

gráficos e o nosso metamodelo.

Desenvolvimento DSL com enfoque MDE

Construção do Editor

Projeto do Metamodelo

Desenvolvimento de um formato de representação

Geração das Transformações

Desenvolvimento DSL com enfoque MDE

Geração das Transformações:

● DSLs são projetados para preencher uma necessidade e automatizar tarefas.

● Os modelos criados com a nossa DSL devem ser compilados.● Motores de processamento MDE serão nossos processadores de

linguagem.● As transformações são definidas por um conjunto de regras.

Desenvolvimento DSL com enfoque MDE

Geração das Transformações:● As mudanças permitem ‘evoluir’ os modelos:

○ Modelo a Modelo (M2M)

■ Mesmo modelo:

● Refatoração ou aplicação de um padrão de projeto

■ Modelo diferente:

● Derivação de um diagrama de classes para um

framework J2EE a partir de um modelo E/R.

Desenvolvimento DSL com enfoque MDE

Geração das Transformações:● As mudanças permitem ‘evoluir’ os modelos:

○ Modelo a a texto (M2T)

■ Transformação de um diagrama de classes de um projeto

MVC em um conjunto de classes na linguagem Java.

Desenvolvimento DSL com enfoque MDE

Construção do Editor

Projeto do Metamodelo

Desenvolvimento de um formato de representação

Geração das Transformações

Desenvolvimento DSL com enfoque MDE

Construção do editor:● Precisa-se de uma abordagem integrada que nos permita fazer

modelos, usando o nosso idioma de ambiente.

● Existem diferentes tipos de editores:○ Editores baseados em árvores○ Editores visuais○ Editores textuais

Desenvolvimento DSL com enfoque MDE

Construção do editor:● Como podemos fazer uso de uma DSL sem levar em consideração

o formato de representação?○ Editores baseados em árvores

● Como utilizar nossos DSL visuais?● Não nos serve somente um programa de desenhos. E processar

imagens digitais é um processo complicado..● Precisamos de um ambiente de projeto que nos ofereça, entre

outros:○ Paleta de componentes visuais○ Área de desenho○ Validação automática de modelos

Conhecendo o GMF e colocando a mão na massa..

Graphical Modeling Framework (GMF)

➔ O que é?É um plugin que permite a construção de editores

gráficos de modelagem para a plataforma Eclipse.

Graphical Modeling Framework

Graphical Modeling Framework

Depois da instalação, o Eclipse

irá reiniciar o

ambiente...

Primeiro Projeto em GMF

Continuação do Primeiro Projeto em RCP

➔ Problema Alvo:Um professor de computação quer mostrar

aos seus alunos o princípio básico de um grafo orientado.

➔ Sua Tarefa:Construir um editor de modelagem que

permita a construção de um diagrama simples de grafo orientado. O qual contém um tipo de

nó e um tipo de relacionamento.

Primeiro Projeto em GMF

Primeiro Projeto em GMF

Primeiro Projeto em GMF

Primeiro Projeto em GMF

Primeiro Projeto em GMFO Dashboard orienta a construção do nosso editor de modelagem...

Primeiro Projeto em GMF1º Passo: vamos criar nosso ecore

Primeiro Projeto em GMF

Primeiro Projeto em GMF

Selecione o item que está em baixo do platform://res..E abra a aba Properties do Eclipse, para definir por ela as propriedades.

Primeiro Projeto em GMF

Aqui criamos um EClass e atribuimos a ele um nome.

Primeiro Projeto em GMF

Em nosso projeto, precisamos de três EClass...

Primeiro Projeto em GMF

Um EReference define um tipo de relacionamento… A propriedade Containment define se esse é uma agregação, já o Upper Bound quando está em -1, define uma multiplicidade para muitos (n).

Primeiro Projeto em GMF

Primeiro Projeto em GMF

Primeiro Projeto em GMF

Primeiro Projeto em GMF

Um EAttribute define um tipo de atributo que o nó do diagrama irá conter…

Primeiro Projeto em GMF

Vamos gerar uma representação gráfica do nosso ecore...

Primeiro Projeto em GMF

Primeiro Projeto em GMF

Primeiro Projeto em GMF

Primeiro Projeto em GMF

Primeiro Projeto em GMF

Primeiro Projeto em GMF

Primeiro Projeto em GMF

Primeiro Projeto em GMF

Agora já temos o código base do nosso editor de modelagem...

Primeiro Projeto em GMF

Primeiro Projeto em GMF

Primeiro Projeto em GMF

Primeiro Projeto em GMF

Primeiro Projeto em GMF

NóRelacionamento

Primeiro Projeto em GMF

Aqui definimos a paleta de elementos gráficos do nosso editor.

Primeiro Projeto em GMF

Vocês podem criar no paint ícones para a palieta. Essas imagens devem estar em formato ‘GIF’ e elas tem que ter no máximo 16px de largura e altura.

Primeiro Projeto em GMF

Primeiramente apague os itens Default Image dos menus e acrescente os Bundles.

Primeiro Projeto em GMF

Primeiro Projeto em GMF

Primeiro Projeto em GMF

Primeiro Projeto em GMF

Façam a mesma coisa para o Creation Tool Edge, só que aponte o camingo do ícone respectivo.

Primeiro Projeto em GMF

Primeiro Projeto em GMF

Primeiro Projeto em GMF

Primeiro Projeto em GMF

Atributo

Primeiro Projeto em GMF

Vamos agora apagar o Rectangle NodeFigure, pois é uma elipse o nó do nosso grafo.

Primeiro Projeto em GMF

Primeiro Projeto em GMF

Primeiro Projeto em GMF

Primeiro Projeto em GMF

Primeiro Projeto em GMF

Primeiro Projeto em GMF

Primeiro Projeto em GMF

Dentro do Polygon Decoration, vamos ter que definir três Template Points, para moldar a ponta da nossa seta de relacionamento.

Primeiro Projeto em GMF

Primeiro Projeto em GMF

Primeiro Projeto em GMF

Primeiro Projeto em GMF

Primeiro Projeto em GMF

Primeiro Projeto em GMF

Primeiro Projeto em GMF

Primeiro Projeto em GMF

Primeiro Projeto em GMF

Primeiro Projeto em GMF

Primeiro Projeto em GMF

Primeiro Projeto em GMF

Primeiro Projeto em GMF

Primeiro Projeto em GMF

Primeiro Projeto em GMF

Primeiro Projeto em GMF

Primeiro Projeto em GMF

Primeiro Projeto em GMFAqui está nosso editor, vamos agora executar ele...

Primeiro Projeto em GMF

Primeiro Projeto em GMF

Primeiro Projeto em GMF

Primeiro Projeto em GMF

Primeiro Projeto em GMF

Primeiro Projeto em GMF

https://github.com/tido4410/pluginExemploMinicursoEclipse.git

Primeiro Projeto em GMF

Obrigado pela atenção de todos!

Gabriel Morogabrielbronzattimoro.es@gmail.com

Rafhael Cunharafhael.cunha@iffarroupilha.edu.br