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

venerdì 23 ottobre 2009

Fare il debug dei test avviati con maven

Nel caso in cui si presenti la necessità di fare il debug di test avviati tramite maven è sufficiente aggiungere il flag -Dmaven.surefire.debug.
Da console:
mvn test -Dmaven.surefire.debug
questo fa in modo che i test, subito dopo l'avvio, si mettano in pausa in attesa che un debugger remoto si colleghi alla porta 5005 (valore di default eventualmente modificabile).

Se volessimo connettere Eclipse in debug non dovremmo fare altro che creare una nuova Debug Configuration (menù Run > Debug Configuration...), selezionare il tipo "Remote Java Application" e impostare nel campo Port il valore 5005. Cliccando su Debug, Eclipse si collegherà ai test, precedentemente entrati in pausa, facendoli immediatamente ripartire. L'esecuzione si fermerà su tutti breakpoint che avremo impostato permettendo il normale debug all'interno di Eclipse.

Vedi anche:
Maven Surefire Plugin > Examples > Debugging Tests

Mappa caratteri in Linux

Come in windows esiste il comando per aprire la Mappa Caratteri (charmap), anche in Linux esiste un comando equivalente che apre la finestra della mappa caratteri:
gucharmap.

Se si vuole visualizzare l'elenco dei caratteri speciali direttamente da console senza utilizzare l'ambiente grafico si può digitare il comando:
man ascii.

How to configure a port-forwarding in Virtualbox

I want that the oracle installed in to my virtualbox VM can be accessed from outsite.
The idea is to mount the port 1521 in to 127.0.0.1

You have to execute the following command on console when the VM is stopped:
VBoxManage setextradata "VMNAME" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/oracle/Protocol" TCP
VBoxManage setextradata "VMNAME" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/oracle/HostPort" 1521
VBoxManage setextradata "VMNAME" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/oracle/GuestPort" 1521

To check if all is fine:
netstat -na | grep 1521
You'll see that the 1521 on your host (127.0.0.1) is listening

martedì 13 ottobre 2009

Come inserire caratteri speciali in Linux

A volte capita di dover scrivere dei caratteri particolari non presenti nel layout della nostra tastiera. Una soluzione un po' artigianale potrebbe essere quella di andare a copiare il carattere da qualche testo in cui è presente per poi incollarlo dove ci serve.

Ma Gnome ci viene incontro mettendo a disposizione un comodo shortcut: tenendo premuti CTRL+SHIFT e digitando la lettera "u" seguita dal codice Unicode del carattere desiderato, al rilascio di CTRL e SHIFT il carattare magicamente(!) apparirà nel nostro testo.

Ad esempio il carattere tilde "~", non presente nelle tastiere con layout italiano, può essere inserito con CTRL+SHIFT+u7e.

Vedi anche:
Wikipedia - List of Unicode characters

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.

Howto open a Shell in a folder

Follow this 2 steps:

1) in the install/upgrade menu of Cygwin select the chere package under the “Shells” category

2) inside a shell exec the command chere -i

Here details and screenshots.