Visualizzazione post con etichetta rcp. Mostra tutti i post
Visualizzazione post con etichetta rcp. Mostra tutti i post

giovedì 29 ottobre 2009

Handler di Eclipse RCP
Classicamente, la definizione di un command per un plugin RCP prevede una classe handler di default, che definisca il comportamento dell'applicazione quando viene attivato il command.

id="it.sinossi.SinossiCommand"
categoryid="it.sinossi.command.SinossiCommandsCategory"
defaulthandler="it.sinossi.handlers.DefaultSinossiHandler"
name="SinossiCommand">



In questo caso, quando viene attivato il SinossiCommand, viene automaticamente eseguito il metodo execute(ExecutionEvent evt) della classe DefaultSinossiHandler.

Supponiamo ora che un plugin esterno abbia la necessità di personalizzare il comportamento dell'applicazione all'attivazione del SinossiCommand, cioè di definire un handler custom per tale command.
E' sufficiente inserire nel plugin.xml del progetto esterno un'extension di org.eclipse.ui.handler come la seguente:


commandid="it.sinossi.command.SinossiCommandsCategory">









L'handler CustomSinossiHandler viene utilizzato al posto del default handler se l'activePartId corrisponde a quello della vista SinossiView. Infatti, la porzione di xml compresa all'interno del tag "activeWhen" è una core expressione e permette di definire quali sono le condizioni in cui l'handler è attivato. Analogamente, si può definire quando l'handler è abilitato definendo una core expression all'interno del tag "enableWhen".
Per saperne di più..
Help - Eclipse SDK - Handlers
Eclipse wiki - Command Core Expressions

giovedì 8 ottobre 2009

StackLayout

Lo StackLayout appartiene a eclipse.swt.widgets.Layout e serve per sovrapporre elementi grafici, consentendo di switchare tra essi agevolmente portando in primo piano l'oggetto che si desidera.

Un esempio molto semplice è il seguente. Ho un Composite container che contiene due altri Composite compositeOne e compositeTwo, solo uno dei due voglio che sia in primo piano:

Composite container = new Composite(compositeParent, SWT.NONE);
container.setLayoutData(new GridData(GridData.FILL_BOTH));
final StackLayout stackLayout = new StackLayout();
container.setLayout(stackLayout);

Composite compositeOne = new Composite(container, SWT.NONE);
compositeOne.setLayout(new FillLayout());

Composite compositeTwo = new Composite(container, SWT.NONE);
compositeTwo.setLayout(new FillLayout());

// se si vuole rendere visibile il compositeOne
stackLayout.topControl = compositeOne;
container.layout();

// se si vuole rendere visibile il compositeTwo
stackLayout.topControl = compositeTwo;
container.layout();


Grazie al set topControl dello stackLayout e richiamando il metodo layout() ottengo lo switch tra i due oggetti.

martedì 29 settembre 2009

[LINK] I Layout di SWT
Su Eclipse Corner Article, un articolo piuttosto approfondito che svela molte delle caratteristiche dei layout di SWT.

Understanding Layouts in SWT..


giovedì 17 settembre 2009

[Link] Back to the basics: Display, Shell, Window ...

Un articolo interessante su alcuni aspetti (a volte oscuri) di Eclipse RCP:

Back to the basics: Display, Shell, Window ...

marco