Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouFábio Angelim Bugalho Alterado mais de 8 anos atrás
1
Eclipse RCP Felype Santiago
2
Rich Client Um RCP é um software que consiste dos seguintes componentes: –Core, gerenciador do ciclo de vida; –Um framework padrão para construção; –Um toolkit de desenvolvimento portável; –Manipulação de arquivos, gerenciamento e edição de texto; –Workbench (views, editores, perspectivas, wizards); –Gerenciador de atualizações
3
Eclipse Rich Client Plataform Components Middleware and infrastructure Native user experience Portability Intelligent install and update Disconnected operation Development tooling support Component librarires
4
Uses of Eclipse RCP IBM Lotus Workspace Maestro
5
Uses of Eclipse RCP TAFPlus2 TaRGeT
6
Perspectivas, Views e Editores O usuário pode organizar o conteúdo das perspectivas das seguintes formas: –Pilha de editores com outros editores; –Pilha de views com outras views; –Desencaixar views da janela principal do Workbench; –Redimensionar views e editores e minimizar/maximizar pilhas de views e editores
7
Application Java Application -> main() Eclipse Application -> Application public class Application implements IPlatformRunnable { public Object run(Object args) throws Exception { Display display = PlatformUI.createDisplay();... int returnCode = PlatformUI.createAndRunWorkbench(display, new ApplicationWorkbenchAdvisor()); } Cria um display e inicia um Workbench Eclipse, que ficará em loop manuseando eventos. O loop só é encerrado quando a última janela é fechada. Precisa implementar
8
Workbench Advisor Diz ao Workbench como se comportar –O que desenhar –Como desenhar public String getInitialWindowPerspectiveId() { return PERSPECTIVE_ID; } Informa a perspectiva inicial que será mostrada
9
Perspective A classe precisa implementar IPerspectiveFactory
10
WorkbenchWindowAdvisor Toda janela da aplicação tem um advisor que é consultado durante vários pontos do ciclo de vida dela; public void preWindowOpen() { IWorkbenchWindowConfigurer configurer = getWindowConfigurer(); configurer.setInitialSize(new Point(250, 300)); configurer.setShowCoolBar(false); configurer.setShowStatusLine(false); configurer.setTitle("Hyperbola"); }
11
ActionBarAdvisor Cria e posiciona ações no MenuBar da janela; É instanciado no WorkbenchWindowAdvisor; public class ApplicationActionBarAdvisor extends ActionBarAdvisor {... protected void makeActions(IWorkbenchWindow window) { } protected void fillMenuBar(IMenuManager menuBar) { }... }
12
Criando uma aplicação
13
Hello RCP
15
Save and Restore public class ApplicationWorkbenchAdvisor extends WorkbenchAdvisor {... @Override public void initialize(IWorkbenchConfigurer configurer) { configurer.setSaveAndRestore(true); }... } O método inicialize marca o início de ciclo de vida do advisor.
16
Adicionando uma View
19
public class ContactsView extends ViewPart { public static final String ID = "org.eclipsercp.hyperbola.views.contacts"; }
20
Adicionando uma View public class Perspective implements IPerspectiveFactory {... public void createInitialLayout(IPageLayout layout) { layout.setEditorAreaVisible(false); layout.addView(ContactsView.ID, IPageLayout.LEFT, 1.0f, layout.getEditorArea()); }... }
21
View adicionada! :D
22
Mas e se... Nada acontecer?
23
Save and Restore, lembra?
24
Somente uma view...
25
Pra que tab? public class Perspective implements IPerspectiveFactory {... public void createInitialLayout(IPageLayout layout) { layout.setEditorAreaVisible(false); layout.addStandaloneView(ContactsView.ID, false, IPageLayout.LEFT, 1.0f, layout.getEditorArea()); }... }
26
Adicionando Menus e ToolBar public void ApplicationWorkbenchWindowAdvisor.preWindowOpen() {... configurer.setShowMenuBar(true); configurer.setShowCoolBar(true);... }
27
Criando ações protected void ApplicationActionBarAdvisor.makeActions(IWorkbenchWindow window) { exitAction = ActionFactory.QUIT.create(window); register(exitAction); aboutAction = ActionFactory.ABOUT.create(window); register(aboutAction); } Na seqüência de chamada do ActionBarAdvisor, o makeActions() é chamado antes do fillMenuBar(), o que permite que uma mesma ação seja colocada em vários locais diferentes.
28
Populando o MenuBar protected void ApplicationActionBarAdvisor.fillMenuBar(IMenuManager menuBar) { MenuManager hyperbolaMenu = new MenuManager("&Hyperbola", "hyperbola"); hyperbolaMenu.add(exitAction); MenuManager helpMenu = new MenuManager("&Help", "help"); helpMenu.add(aboutAction); menuBar.add(hyperbolaMenu); menuBar.add(helpMenu); }
29
Resultado
30
Adicionando actions à ToolBar public class AddContactAction extends Action implements ISelectionListener, ActionFactory.IWorkbenchAction {... public void run() { AddContactDialog d = new AddContactDialog(window.getShell()); int code = d.open(); if (code == Window.OK) { Object item = selection.getFirstElement(); ContactsGroup group = (ContactsGroup) item; ContactsEntry entry = new ContactsEntry(group, d.getUserId(), d.getNickname(), d.getServer()); group.addEntry(entry); }... }
31
Adicionando actions à ToolBar protected void makeActions(IWorkbenchWindow window) {... addContactAction = new AddContactAction(window); register(addContactAction);... }
32
Adicionando actions à ToolBar protected void fillCoolBar(ICoolBarManager coolBar) { IToolBarManager toolbar = new ToolBarManager(coolBar.getStyle()); coolBar.add(toolbar); toolbar.add(addContactAction); }
33
Reusando um action protected void fillMenuBar(IMenuManager menuBar) {... hyperbolaMenu.add(addContactAction);... } Uma mesma ação pode ser colocada em vários locais diferentes.
34
Adicionando barra de status public void preWindowOpen() {... configurer.setShowStatusLine(true);... }
35
Adicionando barra de status public void postWindowOpen() {... statusImage = AbstractUIPlugin.imageDescriptorFromPlugin( "org.eclipsercp.hyperbola", IImageKeys.ONLINE).createImage(); IStatusLineManager statusline = getWindowConfigurer().getActionBarConfigurer(). getStatusLineManager(); statusline.setMessage(statusImage, "Online"); } public void dispose() {statusImage.dispose();}
36
Barra de status IStatusLineManagers: Manager específico para barra de status –setMessage(Image, String); –setErrorMessage(Image, String); –getProgressMonitor; Esses métodos só podem ser chamados após a criação dos controles da barra de status. Uma vez que ActionBarAdvisor.fillStatusLine() é chamado antes da criação da barra de status, esses métodos não podem ser usados nele; Um bom local para efetuar essas chamadas é WorkbenchWindowAdvisor.postWindowOpen()
37
Integração com a bandeja do sistema (system tray) public class ApplicationWorkbenchWindowAdvisor extends WorkbenchWindowAdvisor {... private TrayItem initTaskItem(IWorkbenchWindow window) { final Tray tray = window.getShell().getDisplay().getSystemTray(); if (tray == null) return null; trayItem = new TrayItem(tray, SWT.NONE); trayImage = AbstractUIPlugin.imageDescriptorFromPlugin( "org.eclipsercp.hyperbola", IImageKeys.ONLINE).createImage(); trayItem.setImage(trayImage); trayItem.setToolTipText("Hyperbola"); return trayItem; }... } O SO não dá suporte a system tray.
38
Adicionando funcionalidade ao tray item public class ApplicationWorkbenchWindowAdvisor extends WorkbenchWindowAdvisor {... public void postWindowOpen() { … final IWorkbenchWindow window = getWindowConfigurer().getWindow(); trayItem = initTaskItem(window); if (trayItem != null) { hookPopupMenu(window); hookMinimize(window); } Adiciona listener ao popup. Adiciona ação para minimizar.
39
Adicionando listener ao popup do menu private void hookPopupMenu(final IWorkbenchWindow window) { // Add listener for menu pop-up trayItem.addListener(SWT.MenuDetect, new Listener() { public void handleEvent(Event event) { MenuManager trayMenu = new MenuManager(); Menu menu = trayMenu.createContextMenu( window.getShell()); actionBarAdvisor.fillTrayItem(trayMenu); menu.setVisible(true); } }); } protected void ApplicationActionBarAdvisor. fillTrayItem(IMenuManager trayItem) {trayItem.add(aboutAction);trayItem.add(exitAction);}
40
Ação para maximizar private void hookMinimize(final IWorkbenchWindow window) { window.getShell().addShellListener(new ShellAdapter() { public void shellIconified(ShellEvent e) { window.getShell().setVisible(false); } }); trayItem.addListener(SWT.DefaultSelection, new Listener() { public void handleEvent(Event event) { Shell shell = window.getShell(); if (!shell.isVisible()) { shell.setVisible(true); window.getShell().setMinimized(false); } }); }
41
Views e Editores Editores focam na função principal da aplicação; Views provêem suporte a uma dada tarefa; Editores são compartilhados por múltiplas perspectivas em uma mesma janela; Editores e views não podem ser misturados em uma mesma pilha; Views podem ser extraídas da janela do Workbench; Views podem ser mostradas sem título;
42
Adicionando um Editor
43
public class ChatEditor extends EditorPart { public static String ID = "org.eclipsercp.hyperbola.editors.chat"; }
44
Criando o produto Configurações do produto; Splash screen; Informações no About Dialog; etc
45
Configuração do produto File -> New -> Other...
46
Configuração do produto Especifica a aplicação e o nome que será mostrado na barra de título dela.
47
Program Launcher
48
Referências "Eclipse Rich Client Platform - Designing, Coding and Packaging Java Applications" by Jeff McAffer and Jean-Michel Lemieux."Eclipse Rich Client Platform - Designing, Coding and Packaging Java Applications" http://en.wikipedia.org/wiki/Rich_Client_Pl atformhttp://en.wikipedia.org/wiki/Rich_Client_Pl atform http://wiki.eclipse.org/images/d/d9/Eclipse Con_RCP_Tutorial_2006.pdfhttp://wiki.eclipse.org/images/d/d9/Eclipse Con_RCP_Tutorial_2006.pdf
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.