A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Eclipse RCP Felype Santiago. Rich Client Um RCP é um software que consiste dos seguintes componentes: –Core, gerenciador do ciclo de vida; –Um framework.

Apresentações semelhantes


Apresentação em tema: "Eclipse RCP Felype Santiago. Rich Client Um RCP é um software que consiste dos seguintes componentes: –Core, gerenciador do ciclo de vida; –Um framework."— Transcrição da apresentação:

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

14

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

17

18

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


Carregar ppt "Eclipse RCP Felype Santiago. Rich Client Um RCP é um software que consiste dos seguintes componentes: –Core, gerenciador do ciclo de vida; –Um framework."

Apresentações semelhantes


Anúncios Google