VAS - Verificação de Arquiteturas de Software
CBDT – CBabel Development Tools
Integração do compilador CBabel e do Repository
Explorer ao Eclipse
Julio Heitor Silva Nóbrega
Bolsista ITI - UERJ
19 de Março de 2004
UFF/Niterói
1o Seminário do Projeto VAS – Verificação de Arquiteturas de Software
Integração do compilador Cbabel para a
plataforma Eclipse
Objetivo
Visão geral de um plugin no Eclipse
Migração (swing  SWT + JFace + plugin)
Ferramentas e Técnicas usadas
1o Seminário do Projeto VAS – Verificação de Arquiteturas de Software
Objetivo
Fase 1
 Mapear a ferramenta Repository Explorer de CBabel para a plataforma
Eclipse
 Swing -> SWT + Jface + plugin
 Implementar um editor highlight syntax para CBabel
 Integrar o compilador CBabel
Fase 2
 Com o resultado da fase 1, propor a migração do repositório de CBabel
para EMF (Eclipse Modeling Framework)
 Modelo de CBabel -> EMF
 Arquiteturas descritas -> XML / XMI
Fase 3
 Preparar a tradução dos modelos de CBabel para Maude e vice-versa
 Preparar a geração de código Java a partir do modelo de CBabel em EMF
Visão geral de um plugin no Eclipse
<plugin
id= “org.eclipse.Cbabel”
name= “Cbabel Example”
class=
“org.eclipse.Cbabel.CBabelPlugin”>
<requires
<import plugin=
“org.eclipse.core.resources”/>
<import plugin= “org.eclipse.ui”/>
</requires>
<runtime>
<library name= “Cbabel.jar”
</runtime>
</plugin>
Projeto Eclipse
Plataforma Eclipse
WorkBench
Outras
Ferramentas
JFace
Compilador
SWT
CBabel
Workspace
Ferramenta
Platform Runtime
XPTO
Migração (swing  SWT + JFace + plugin)
 Processo de transferência do Repository
Explorer CBabel/Swing para Eclipse.
1. Nova interface gráfica
2. O arquivo de Manifest
3. Plugins contribuídos
1. Conteúdo
2. Classes herdadas e métodos sobrescritos de outros
plugins (contribuição)
3. Declaração dos plugins no arquivo XML
4. Adaptações do código original
Nova interface gráfica
 A interface gráfica do Repository Explorer foi modificada
para se adaptar ao ambiente do Eclipse. As modificações
principais foram:
Barra de tools substituída por um menu na View;
As tables foram colocadas uma ao lado da outra, diferente da
interface original;
A maioria dos ícones foram removidos já que a barra de tools foi
eliminada.
Interface original do Repository Explorer
Interface preliminar do Repository Explorer
O arquivo de Manifest do novo plugin
 Parte do arquivo de Manifest (em XML)
 Uma view
 Ponto de extensão
<extension
point="org.eclipse.ui.views">
<category
name="Compiladores"
id="org.eclipse.CBabel">
</category>
<view
name="CBabel Repository Explorer"
icon="icons/tree20.gif"
category="org.eclipse.CBabel"
class="org.eclipse.Arvores.TDCB"
id="org.eclipse.Arvores.TDCB">
</view>
</extension>
Plugins contribuídos
 Plugins utilizados
 Classes utilizadas de cada plugin
 Indicação no Manifest
 Org.eclipse.ui;
- ViewPart Class
 Org.eclipse.jface
- Actions Package
- IMenuManager Class
- Action Class
- Viewers Package
- TableViewer Class
 Org.eclipse.swt
- Widgets Package
- Custon Package
- Layout Package
Declaração dos Plugins no arquivo de
Manifest
<requires>
<import plugin=“org.eclipse.core.swt” />
<import plugin=“org.eclipse.resources”/>
<import plugin=“org.eclipse.jface” />
<import plugin=“org.eclipse.ui” />
</requires
A Classe TDCB
 Arquivo principal da view org.eclipse.CBabel.TDCB
public class TDCB extends ViewPart {
private CBabelAPI cbapi;
.
.// declarações de variáveis
.
public void createPartControl(Composite parent) {
.
.
createActions();
createMenus();
createInterface(parent);
.
.
}
}
Os Métodos createActions(), createMenu() e
createInterface()
protected void createMenus() {
IMenuManager rootMenuManager =
getViewSite().getActionBars().getMenuManager();
rootMenuManager.setRemoveAllWhenShown(true);
rootMenuManager.addMenuListener(new IMenuListener() {
public void menuAboutToShow(IMenuManager mgr) {
fillMenu(mgr);
}
});
fillMenu(rootMenuManager);
}
protected void fillMenu(IMenuManager rootMenuManager) {
IMenuManager filterSubmenu = new MenuManager("File");
rootMenuManager.add(filterSubmenu);
filterSubmenu.add(openRepository);
filterSubmenu.add(save);
filterSubmenu.add(close);
}
Os Métodos createActions(), createMenu() e
createInterface()
protected void createActions() {
openRepository = new Action("Open Repository") {
public void run() {
String arquivo;
FileDialog dialog = new FileDialog (shell,SWT.OPEN);
dialog.setFilterNames (new String [] {"CBO Files", "All Files (*.*)"});
dialog.setFilterExtensions (new String [] {"*.cbo", "*.*"});
dialog.setFilterPath ("c:\\"); //Windows path
dialog.setFileName ("pc5.cbo");
arquivo=dialog.open();
if(arquivo.length() != 0){
MessageDialog.openInformation(shell,"arquivo",arquivo);
}
}
};
openRepository.setChecked(false);
Os Métodos createActions(), createMenu() e
createInterface()
save = new Action("Save") {
public void run() {
String arquivo;
FileDialog dialog = new FileDialog (shell,SWT.SAVE);
dialog.setFilterNames (new String [] {"CBO Files", "All Files (*.*)"});
dialog.setFilterExtensions (new String [] {"*.cbo", "*.*"});
dialog.setFilterPath ("c:\\"); //Windows path
dialog.setFileName ("pc5.cbo");
arquivo=dialog.open();
if(arquivo.length() != 0){
try{
FileOutputStream fos = new FileOutputStream(arquivo);
PrintWriter pw = new PrintWriter(fos,true);
pw.close(); // se nao colocar isto - nao grava...
fos.close();
}//end try
catch(Exception ex)
{
System.out.println(ex);
}
}
};
save.setChecked(false);
Os Métodos createActions(), createMenu() e
createInterface()
close=new Action("Close"){
public void run(){
}
};
close.setChecked(false);
}
Conclusão
 Pesquisa em interface gráfica, tanto em Swing como em Swt, bem como o
aprendizado na plataforma Eclipse de desenvolvimento.
 Noções de descrição de arquitetura (mais especificamente a linguagem
CBabel) para realizar o trabalho.
 A implementação da interface gráfica em SWT no Eclipse ainda esta em
andamento.
 A maior dificuldade está em substituir a arvore de repositório de Swing para
SWT, já que a forma de construção da mesma no Eclipse é incompatível.
 Após a transferência do Repository Explorer, o próximo passo será colocar
o próprio compilador CBabel no Eclipse com um editor de texto highlight
syntax.
Referências
 www-106.ibm.com/developerworks/opensource/library/os-ecgui1/
 www.swt-designer.com/
 www.eclipse.org/TreeViewerArticle.htm+MovingBox+plugin&hl=pt&ie=UTF-8
Download

Transferência do compilador Cbabel para a plataforma Eclipse