Ordeal’s Movie Manager RCP(Part2)

9 ottobre 2008

Vediamo come affrontare il problema delle “Viste”.
Secondo l’articolo di Eclipse Corner
In the Eclipse Platform a view is typically used to navigate a hierarchy of information, open an editor, or display properties for the active editor”.
Nel nostro caso ci serve per implementare una struttura a tab, un tab folder, che ci offrirà un tab per la ricerca dei titoli, un altro tab per il loro inserimento e cancellazione.
Per creare la vista dobbiamo usare il file plugin.xml, andare su extensions ed aggiungere un’estensione all’RCP, ovvero un set di plug-ins che estendono la funzionalità dell’applicativo, nel nostro caso org.eclipse.ui.views.
Aggiungete una vista, datele un nome, un id,nel caso mio myMovieManager.view1, e opzionalmente un’icona, cosa importante, ricordatevi di associargli la classe da generare attraverso il form *class, che conterrà tutte le componenti grafiche in essa contenute.
Una volta fatto ciò dovete mettere mano alla classe Perspective.

	layout.setEditorAreaVisible(false);
		layout.addStandaloneView(FilmListView.ID,false, IPageLayout.TOP, 0.90f, layout.getEditorArea());
		layout.addShowViewShortcut(FilmListView.ID);
		IViewLayout filmlist_layout = layout.getViewLayout(FilmListView.ID);
		filmlist_layout.setCloseable(false);
		filmlist_layout.setMoveable(false);

il metodo per aggiungere la vista è addStandaloneView, gli altri servono solo per sistemare il layout e le proprietà della vista.
La nostra vista servirà per contenere un oggetto di tipo Tab folder.

	@Override
	public void createPartControl(Composite parentWindow) {

		tabFolder = new TabFolder(parentWindow, SWT.BORDER);
		TabItem sbttabItem = new TabItem(tabFolder, SWT.NONE);
	      sbttabItem.setText("Search By Title ");
	      sbttabItem.setImage(new Image(parentWindow.getDisplay(), this.getClass().getResourceAsStream("/icons/search_16x16.png")));
	    sbttabItem.setControl(searchByTitleContent(tabFolder));

			      TabItem inmtabItem = new TabItem(tabFolder, SWT.NULL);
			      inmtabItem.setText("Insert/Delete Movie ");
			      inmtabItem.setControl(insertDeleteMovie(tabFolder));
			      inmtabItem.setImage(new Image(parentWindow.getDisplay(), this.getClass().getResourceAsStream("/icons/insert_16x16.gif")));

	}

Il codice in questione è appartenente al metodo createPartControl della vista contenuta nel sorgente FilmListView.java, appartenente al package dell’RCP.
Potete usare tale metodo in ogni vista per “piazzare” i widgets SWT che intendete disporre nella vista.
Nel nostro caso un TabFolder, e due TabItem comprensivi di immagine in esso contenuti.
Il mio consiglio è quello di usare questo sito assiduamente come un vero e proprio catalogo delle componenti grafiche SWT, da poter piazzare come e dove vi pare.
Leggi il seguito di questo post »